我正在尝试MPI中的一个实现,我在同一台机器(localhost)上调用多个从站(最多4个)并在从站之间分配我的for循环的计算。 MPI适合我当前的应用程序,我不能采用openMP路由。 涉及的变量大约为50,并且都是单维数组。 将50个变量发送到主进程的最佳方法是什么?我应该发送和接收所有变量还是应该将它们打包在一个2D阵列中并将此阵列发送给主站? 我正在寻找一种高效且计算成本低廉的方法。
谢谢
答案 0 :(得分:0)
经常:这取决于。如果您的单个阵列足够大,使得延迟变得微不足道,那么单独发送每个阵列就可以了。否则,最好通过将所有这些数组收集到一个数组中来增加消息的大小。 如果您的变量属于不同类型,则可以使用MPI数据类型来描述数据的布局。
此外,如果您需要从多个进程收集此数据,最好使用MPI_Gather或其中一个变体。 也可能是,您的方案中可行的选择是利用MPI提供的片面通信设施。