gpt4 book ai didi

c++ - 使用并行编程时调用函数

转载 作者:搜寻专家 更新时间:2023-10-31 02:07:01 25 4
gpt4 key购买 nike

<分区>

我只是有一个关于在 C++ 程序中使用 MPI 的相当简单的问题。事实上,让我们举个例子:

#include <iostream>
#include <sstream>
#include <cblas.h>
#include <cmath>

using namespace std;

#include <mpi.h>

void multiply(double* x,double* y,int tai,double dot){
for(int i=0; i<tai;i=i+1){
dot=dot+x[i]*y[i];
}
}

int main(int argc, char* argv[]) {
const int n=32;
int rank;
int size;

MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_size(MPI_COMM_WORLD, &size);

int tai=n/size;
double* x=new double[tai];
double* y=new double[tai];
srand(time(0)+rank);

for(int i=0;i<tai;i=i+1){
x[i]=(double)rand()/RAND_MAX*10;
y[i]=(double)rand()/RAND_MAX*10;
}
double dot=0;
multiply(x,y,tai,dot);
double ddot;
MPI_Reduce(&dot, &ddot, 1, MPI_DOUBLE, MPI_SUM,0, MPI_COMM_WORLD);
if(rank==0){
cout<<"product:"<<ddot<<endl;
}
MPI_Finalize();
return 0;
}

然后,我在我的程序中调用函数“multiply”来将两个 vector 相乘,但不幸的是它返回初始值“dot”(基本上是 0)。

我只是想知道我们在并行编程的时候调用一个函数有没有什么特别的。

PS:我知道整个程序都在工作,因为当我在“主”函数中直接乘以我的 2 个 vector 时,它给了我很好的结果

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com