因为我主要使用多核 CPU,如48核、64核等,因此想咨询一下 Taichi 的 cpu 后端并行能自动将所有 cpu 都利用起来么?以及和 MPI4Py 有对比过么?
谢谢
单颗多核 CPU 的话 Taichi 会自动调用 CPU 核心进行并行;多颗 CPU 的话就需要 MPI 解决了,这方面相关的前期工作可以参考这片知乎文章:如何同时实现高性能并行+分布式计算?| Taichi x MPI4Py - 知乎
谢谢
想继续请教一下,两个CPU,每颗24核,总共48核。在使用时,单独执行Taichi时是会自动调用24个核进行并行么?然后如果使用 MPI + Taichi,怎样确定MPI调用的是两个不同的物理CPU?十分感谢
是的,应该会自动调用核心,可以用系统自带的监测工具观察一下 CPU 资源使用情况,Linux 常用的是 htop,Mac 和 Windows 应该也都有对应的图形界面工具
两个CPU如果是单机双socket那么是操作系统自动调度的,线程数量足够就能全部用起来。
单机单任务情况下,直接用Taichi就可以,是有自动多线程的。用MPI4Py一般都是为了多机多卡,非常少的情况下单机多任务MPI会有一些性能收益,通常不太明显。
单独执行Taichi任务的时候应该是48线程都会调用的,如果是24线程怀疑是个bug。好奇一下你是怎么确定是24个线程的呢?
多机双CPU的情况下要处理的事情还是挺多的,最重要的是需要将MPI通信开销掩盖掉。另外如果需要观测大规模集群的MPI分布,可以利用hwloc → 参考 How to know the which core a process is running on in MPI? - Stack Overflow
当然最简单的就是每台机器开一个终端看进程,MPI是进程并行的所以可以直接在top和htop里面看见。反正就两台机器对吧~
1 个赞