如何使用MPI c ++并行化函数

时间:2016-11-10 16:10:21

标签: c++ function parallel-processing mpi

我是MPI的新手,在研究了基础知识之后,我仍然不明白如何利用mpi来并行执行两个函数,一个用于元素的第一部分,第二个用于第二部分。 例如:

for(int i = 0; i < argc/2; i++){
  function(el[i]);
 }

for(int i = 0; i < argc-1; i++){
  function(el[i]);
 }

我如何使用MPI_Send,MPI_recv ecc。?

1 个答案:

答案 0 :(得分:0)

MPI是一个多处理器库,而不是多线程库。因此,数据被分割,不能被视为核心可以处理其中一部分的单个阵列。

这里,为了处理数据,每个核心需要有一个包含一半数据的数组。使用MPI_SEND和MPI_RECV,它看起来像这样

Get rank and number of proc
Create subarray
Pass parts of initial array from proc 0 to other procs (With MPI_SEND for proc 0 and MPI_RECV for others)
Each proc do the calculation 
Reunite the results with a new set of send/recv

之后,它还存在一些功能,使数据传播和重新统一更容易

祝你好运