gpt4 book ai didi

c - 在 MPI 程序中转换参数时出错

转载 作者:行者123 更新时间:2023-11-30 17:02:57 24 4
gpt4 key购买 nike

我现在正在做 MPI 练习。在我的工作中,我想计算 N 的阶乘,所以我通过命令行中的第二个参数传递了 N,除了我尝试从 char* 转换为 int 的行(这适用于一个进程)之外,我的所有代码都运行良好),请在这种情况下给我一些建议,这是我的代码:

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

if(argc != 2){
fprintf(stderr, "\nYou must follow this format to run the program: [Program's name] [N]");
exit(0);
MPI_Finalize();
}

long int n = 1;

n = strtol(argv[1], NULL, 10); // <-- problem happens here

// Initialize MPI
MPI_Init(&argc, &argv);

// Receive the whole size and id of each rank
MPI_Comm_size(MPI_COMM_WORLD, &size);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);

if(rank == 0){
// Process for master
master(n);
}
else{
// Process for slaves
slave();
}


// Finish MPI
MPI_Finalize();

return 1;

}

感谢大家阅读我的帖子,如有任何答案,我们将不胜感激。

最佳答案

在调用 MPI_Init 之前,不应对 argvargc 执行任何操作。事实上,您应该尽快调用MPI_Init。最肯定的是不要在 MPI_Init 之前调用 MPI_Finalize

引用标准:

Certain implementations use the (inout) argc, argv arguments of the C version of MPI_INIT in order to propagate values for argc and argv to all executing processes.

只需将您的 MPI_Init 调用移至 main 的开头即可。

关于c - 在 MPI 程序中转换参数时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36324186/

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