Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.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语言中使用MPICH2的TeraSort算法_C_Algorithm_Mpi_Terasort - Fatal编程技术网

在C语言中使用MPICH2的TeraSort算法

在C语言中使用MPICH2的TeraSort算法,c,algorithm,mpi,terasort,C,Algorithm,Mpi,Terasort,我正试图用MPICH2在C中实现TeraSort算法。目前,我正在使用论文中给出的值的小型数据集,并使用4个处理器 int main(int argc, char** argv) { /********** Create and populate the array *********/ FILE *file = fopen("data.txt","r"); int n; //number of data values fscanf(file,"%d",&n); printf("%d"

我正试图用MPICH2在C中实现TeraSort算法。目前,我正在使用论文中给出的值的小型数据集,并使用4个处理器

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

/********** Create and populate the array *********/
FILE *file = fopen("data.txt","r");
int n; //number of data values
fscanf(file,"%d",&n);
printf("%d",n);
int *original_array = malloc(n * sizeof(int));

int num,c;
int i=0;
while (fscanf(file, "%d", &num) == 1){
    original_array[i] = num;
    i++;
}
fclose(file);

/********* Finding max and min values ************/
int max = -32768;    //change if "int" is changed
int min = 32767;
for(i=0; i<n; i++){
    if(max < original_array[i]){
        max = original_array[i];
    }
    if(min > original_array[i]){
        min = original_array[i];
    }
}
printf("%d", min);
printf("\n");
printf("%d", max);
/********** Initialize MPI **********/

int world_rank;
int world_size;

MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &world_rank);
MPI_Comm_size(MPI_COMM_WORLD, &world_size);

/********** FILE PLACEMENT **********/

int nodeDataSize = n/world_size;
printf("%d",nodeDataSize);
printf("\n");
MPI_Finalize();
int main(int argc,char**argv){
/**********创建并填充数组*********/
FILE*FILE=fopen(“data.txt”、“r”);
int n;//数据值的数目
fscanf(文件“%d”和(&n);
printf(“%d”,n);
int*原始数组=malloc(n*sizeof(int));
int num,c;
int i=0;
而(fscanf(文件“%d”,&num)==1){
原始_数组[i]=num;
i++;
}
fclose(文件);
/*********查找最大值和最小值************/
int max=-32768;//如果更改了“int”,则更改
int-min=32767;
对于(i=0;i原始_数组[i]){
min=原始_数组[i];
}
}
printf(“%d”,最小值);
printf(“\n”);
printf(“%d”,最大值);
/**********初始化MPI**********/
国际世界排名;
国际大世界;
MPI_Init(&argc,&argv);
MPI通信等级(MPI通信世界级和世界级);
MPI_Comm_大小(MPI_Comm_WORLD和WORLD_大小);
/**********文件放置**********/
int nodeDataSize=n/世界大小;
printf(“%d”,nodeDataSize);
printf(“\n”);
MPI_Finalize();
打印的所有值(n、最小值、最大值、nodeDataSize)都不正确。文件data.txt包含空格分隔的整数,其中第一个整数给出值的数目。谁能告诉我怎么了?
这是data.txt文件的样子:

中使用prototype测试(大多数)函数的返回值<代码>fopen()。。。如果(NULL)/*错误*/<代码>如果(scanf()!=预期的_分配)/*错误*/。。。单处理器的程序运行情况如何?您也可以发布/链接您的数据。TXT请提供-这包括再现问题所需的最小输入数据。还要详细说明到目前为止您自己的调试问题。@Evert这些值对于单处理器也是不正确的。