Это задание требует, чтобы я разработал программу MPI для параллельной сортировки нечетных и четных и объединяет три функции:
MPI_Compare_exchange()
для операции сравнения и обмена P2P
MPI_Sort()
для параллельной нечетно-четной операции сортировки
MPI_Is_sorted()
проверка выполнения сортировки параллельного массива
Я получаю эти ошибки при компиляции
OddEvenSort.c:102: error: invalid operands to binary / (have ‘int *’ and ‘int’)
OddEvenSort.c:102: error: subscripted value is neither array nor pointer
OddEvenSort.c:104: error: subscripted value is neither array nor pointer
OddEvenSort.c:112: error: subscripted value is neither array nor pointer
OddEvenSort.c:116: error: subscripted value is neither array nor pointer
OddEvenSort.c:123: error: subscripted value is neither array nor pointer
Это код:
int MPI_Sort(int n,double * array, int root, MPI_Comm comm){
int rank, x, m, size, a, i;
if( rank == 0 )
{
array = (double *) calloc( n, sizeof(double) );
srand( ((unsigned)time(NULL)+rank) );
for( x = 0; x < n; x++ ) array[x]=((double)rand()/RAND_MAX)*m;
}
MPI_Scatter(array, n/size, MPI_DOUBLE, &a[0], n/size, MPI_DOUBLE, 0, comm );
merge_sort(n/size,&a[0]);
for(i=0;i<size;i++){
if( (i+rank)%2 ==0 ){
if( rank < size-1 )
exchange(n/size,&a[0],rank,rank+1,comm);
} else{
if( rank > 0 ) exchange(n/size,&a[0],rank-1,rank,comm);
}
MPI_Barrier(comm);
}
MPI_Gather(&a[0], n/size, MPI_DOUBLE, array, n/size, MPI_DOUBLE, 0, comm);
if( rank == 0 )
{
for( x = 0; x < n; x++ ) printf( "Output : %f\n", array[x] );
}
}
Я думаю, это относится к этому: &a[0]
, но я не знаю, как это исправить. Есть идеи?