我在MPI中编写了一个程序,我希望在3个或更多核心(或计算机)下执行它,我想在每个处理器中写入一些文件,对于两个核心,我创建了两个不同的文件,但是我不知道我应该为更多内核做些什么,是否有必要为每个处理器创建单独的文件?如果是,那么我应该如何根据我的代码进行操作呢?对于多台计算机它是不同的?
void main()////it is just for 2 cores,what should I do if I use
more cores or more computers?
{
FILE*fp=fopen("C:\\a.txt","w");
FILE*fp1=fopen("C:\\b.txt","w");
if(Id==0)
{
here I write in "fp"
}
else
{
here I write in "fp1"
}
}
答案 0 :(得分:0)
如果您使用的是此模型,则需要为每个进程创建一个文件。原因是如果你有两个进程写入同一个文件,他们很可能最终会覆盖彼此,除非你用MPI做一些事情来确保他们自己序列化。
根据您尝试编写的数据,您可以查看MPI的I / O部分。并行I / O有功能,但可能有点棘手。
答案 1 :(得分:0)
void main() {
int me;
char filename[1000];
MPI_Comm_rank(MPI_COMM_WORLD, &me);
sprintf(filename,"C:\\a%05d.txt",me);
FILE *fp=fopen(filename,"w");
here I write in "fp"
}
这可能是您需要的提示,但通常正确的方法之一是: