并行计算
多年以前,计算机的主频还是MHz级别制程还是微米级别的时候,CPU每次更新换代都会带来巨大提升,可以通过提升电子工艺的方式以及提升主频的方式提高计算速度。单机计算能力在那个时代大刀阔斧向前走。科学计算的规模也随着计算能力的提升逐渐升级。计算能力的提升也带来了很多学科的兴起和繁荣,比如计算物理。
直到主频到了GHz量级,传统工艺已经触碰到经典物理的天花板,再提高主频缩小原件的话就会出现无法预料的不确定性。
然而,科学计算的需求还在日渐提升。对计算能力的强烈需求让学者找到了另外一个突破口:大规模并行。
这就提到了MPI
MPI
MPI (Message Passing Interface)是一套标准,在很长一段时间里我都错误地以为它是一个软件,或者是一个语言(因为总听学长同事说装MPI编MPI程序)。事实上它是一套并行运算中信息传递和处理的标准,在这个标准之上,编程者可以很方便地组织自己的并行程序。
这套标准有很多种实现,比如C++,Fortran,Python的mpi4py,Matlab-MPI等等。在这些程序中调用响应的库来实现程序的并行化。
这其中,Fortran,C++ 开发效率太低,Python我个人非常喜欢
以及在我所在的天文领域,Python正在占领全局。
开发迅速,可以很快速的把算法转化成程序,并投入计算。带上Numba,pycuda,pytorch等工具的加速,速度也很快。
这里试图用集群并行的方法加速并行化在单机优化了很久的Pyth