在C中使用MPICH2的TeraSort算法

时间:2017-07-01 06:31:34

标签: c algorithm mpi terasort

我正在尝试使用MPICH2在C中根据此paper实现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();

打印的所有值(n,min,max,nodeDataSize)都不正确。文件data.txt包含空格分隔的整数,其中第一个整数给出值的数量。谁能告诉我什么是错的? 这就是data.txt文件的样子:enter image description here

0 个答案:

没有答案