Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 使用标准Unix I/O函数写入多个文件并附加MPI列组_C_File_Io_Mpi - Fatal编程技术网

C 使用标准Unix I/O函数写入多个文件并附加MPI列组

C 使用标准Unix I/O函数写入多个文件并附加MPI列组,c,file,io,mpi,C,File,Io,Mpi,以下函数在运行任意数量的进程时产生错误。有人能告诉我为什么吗。我正在使用MPICH3.1。这不是一个理想的方法,但我试图理解MPI I/O的基础知识——只是说这个示例应该可以工作 #include<stdio.h> #include<mpi.h> #define BUF 100 void main(int argc, char *argv[]) { int buf[BUF], rank, loop_i ; FILE *fp ; char filename[BUF];

以下函数在运行任意数量的进程时产生错误。有人能告诉我为什么吗。我正在使用MPICH3.1。这不是一个理想的方法,但我试图理解MPI I/O的基础知识——只是说这个示例应该可以工作

#include<stdio.h>
#include<mpi.h>

#define BUF 100

void main(int argc, char *argv[])
{
int buf[BUF], rank, loop_i ;
FILE *fp ; 
char filename[BUF];  


MPI_Init(&argc, &argv);

MPI_Comm_rank(MPI_COMM_WORLD, &rank);

for(loop_i = 0 ; loop_i <= BUF - 1 ; loop_i++)
    buf[loop_i] = rank * BUF + loop_i ; 

sprintf(filename, "testfile.%d", rank);
fp = fopen(filename, "w");
fwrite(buf, sizeof(int), BUF, fp);
fclose(fp); 

MPI_Finalize();
}
使用4个进程运行时:


您最好检查fopen和fclose函数的返回值是否不正确。您的问题是什么?您的编译器告诉您main的返回类型不是预期的int,并且运行时告诉您main正在返回一个意外的值。将这两个信息组合成有意义的内容应该不会太难……这很奇怪,但当我将返回类型更改为int时,代码开始运行。[我仍然不明白为什么,因为我已经用void main运行了几个代码]。[事实上,它工作并不意味着它是正确的,事实上,现在它已经在你的脸上爆炸了。int main是正确的方式。void main不正确-只有MS允许它。不知道他们是否仍然允许点击思考]
mpiio_2.c: In function ‘main’:
mpiio_2.c:11: warning: return type of ‘main’ is not ‘int’
ld: warning: duplicate dylib /usr/lib/libgcc_s.1.dylib
=   BAD TERMINATION OF ONE OF YOUR APPLICATION PROCESSES
=   PID 4584 RUNNING AT sepultrite7432.local
=   EXIT CODE: 224
=   CLEANING UP REMAINING PROCESSES
=   YOU CAN IGNORE THE BELOW CLEANUP MESSAGES