MPI一个计数器用于所有进程
MPI one counter for all the process
我正在试验MPI,到目前为止,我有一个小程序可以计算一个简单的和:
#include <mpi.h>
#include <stdio.h>
int main(int argc, char *argv[]){
int i=0, myid, nproc,N=5;
double result=0.0,res;
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &myid);
MPI_Comm_size(MPI_COMM_WORLD, &nproc);
MPI_Bcast(&N, 1, MPI_INT, 0, MPI_COMM_WORLD);
while (i<N) {
result += i;
i++;
printf("process %d i %dn",myid,i);
MPI_Reduce(&result, &res, 1, MPI_DOUBLE,MPI_SUM, 0, MPI_COMM_WORLD);
}
if (myid == 0)
{
printf("result = %lfn", res);
}
MPI_Finalize();
}
根据打印的结果,我可以看到i
在每个过程中都达到了极限(5)。如何将其配置为保留类似全局计数器的东西,以便所有进程的i
只达到一次限制?
MPI没有自动全局计数器。我认为您将不得不手动将增量传达给计数器。
相关文章:
- 1d 智能指针不适用于语法 (*)++
- MPI一个计数器用于所有进程
- 使用C++将CPU专用于在1个核心上运行进程
- WIN 32 用于检测已启动和终止的应用程序/进程的 API
- Boost:是否存在用于仅线程通信的进程间消息队列机制
- QProcess::terminate() 不适用于简单的 Qt 应用程序作为 Windows XP 下的子进程
- Dll 注入器不适用于 x64 进程
- 文件重定向运算符">"不适用于创建进程() API
- GetModuleHandle(),用于另一个进程中的DLL
- C/C++标准函数,用于检查文件是否被其他进程使用
- Mac OS X等效于CreateEvent(),带有用于进程间通信的命名对象
- 用于启动和重新启动用户进程的Windows服务(带有GUI)
- 使用重定向输入和输出的c++进程间通信不适用于发布版本
- c++中有用于远程进程间通信的API吗?
- 用于后端c++进程的FastCGI或HTTP
- Boost::range用于处理容器的内容,并将映射中的值管道到下一个进程
- 是否有一种方法在试图写入文件的进程中生成错误?(用于测试目的)
- Boost进程间file_lock不能用于多个进程
- 更好的设计模式用于读取其他进程内存
- 创建进程不适用于所有应用程序