gpt4 book ai didi

c++ - 使用 MPI 的 C++ 代码中每个进程的相同随机数

转载 作者:太空宇宙 更新时间:2023-11-04 14:57:28 25 4
gpt4 key购买 nike

我有可用的 C++ MPI 代码,因为它可以编译并确实在指定数量的处理器 (n) 上启动。问题在于它只是将相同的计算 n 次,而不是将一次计算快 n 倍。

我已经破解了很多我在各种网站上找到的例子,看起来我错过了 MPI_Send 和 MPI_Receive 的正确使用,但我找不到这些命令的实例,这些命令将函数作为输入(并且我对为什么这些 MPI 命令对函数以外的任何东西都有用感到困惑。

我的代码如下。本质上,它调用我编写的 C++ 函数来获取 Fisher 精确检验 p 值。随机数位只是我用来测试速度的东西。

我想让这个程序做的是用每组随机变量(即,ABFisher.TwoTailed>、CD) 到不同的处理器,而不是在多个处理器上执行完全相同的计算。提前感谢您的任何见解 - 干杯!

代码如下:

int 
main (int argc, char* argv[])
{

int id;
int p;
//
// Initialize MPI.
//
MPI::Init ( argc, argv );
//
// Get the number of processors.
//
p = MPI::COMM_WORLD.Get_size ( );
//
// Get the rank of this processor.
//
id = MPI::COMM_WORLD.Get_rank ( );

FishersExactTest Fishers;

int i = 0;
while (i < 10) {
int A = 0 + rand() % (100 - 0);
int B = 0 + rand() % (100 - 0);
int C = 0 + rand() % (100 - 0);
int D = 0 + rand() % (100 - 0);
cout << Fishers.TwoTailed(A, B, C, D) << endl;
i += 1;
}

MPI::Finalize ( );
return 0;
}

最佳答案

您应该查看有关并行计算和 MPI 的一些基本培训。一个很好的教我基础知识的资源是 a free set of online courses put up by the National Center for Supercomputing Applications (NCSA) .

关于c++ - 使用 MPI 的 C++ 代码中每个进程的相同随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6301183/

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