我想通過拆分節點上的工作(第二部分與matricies)使用OPENmpi處理數組中的數據來運行一些測試。我現在遇到了一些問題,因爲數據數組每次都被初始化,我不知道如何防止這種情況發生。使用openmpi初始化一個數組一次
如何使用ANSI C創建可變長度數組,使用OPENmpi一次?我試圖讓它靜態和全局,但沒有。
#define NUM_THREADS 4
#define NUM_DATA 1000
static int *list = NULL;
int main(int argc, char *argv[]) {
int numprocs, rank, namelen;
char processor_name[MPI_MAX_PROCESSOR_NAME];
int n = NUM_DATA*NUM_DATA;
printf("hi\n");
int i;
if(list == NULL)
{
printf("ho\n");
list = malloc(n*sizeof(int));
for(i = 0 ; i < n; i++)
{
list[i] = rand() % 1000;
}
}
int position;
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &numprocs);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Get_processor_name(processor_name, &namelen);
printf("Process %d on %s out of %d\n", rank,processor_name, numprocs);
clock_t start = clock();
position = n/NUM_THREADS * rank;
search(list,position, n/NUM_THREADS * (rank + 1));
printf("Time elapsed: %f seconds\n", ((double)clock() - (double)start) /(double) CLOCKS_PER_SEC);
free(list);
MPI_Finalize();
return 0;
}
而不是給我們這樣一個冗長的代碼,請你更好的描述你的目標是什麼,你如何嘗試實現它們,以及你遇到的問題是什麼? – 2010-09-26 12:43:38