在C中使用带有MPI的第二个BCast获取错误

时间:2016-03-02 02:07:09

标签: c linux mpi

我遇到以下代码的麻烦

- (void)updateSearchResultsForSearchController:(UISearchController *)searchController {

// filter the search results
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF contains [cd] %@", self.controller.searchBar.text];
self.results = [self.data filteredArrayUsingPredicate:predicate];

// NSLog(@"Search Results are: %@", [self.results description]);

没有什么特别的,我只想尝试Bcast两个整数数组(现在我尝试使用4长度的整数字符串,这就是为什么最后的printfs是静态的)。

无论如何,我首先尝试使用“capa”字符串并且它有效,但是当我用两个字符串尝试它时,我得到了分段错误但我不知道为什么,两个字符串都是相同的大小,唯一的区别是他们的价值观。

修改

刚刚将代码更改为此并且有效:

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

//1 mostrar lista
//2 borrar elementos
//3 ordenar lista
//4 añadir elemento

int main(int argc,char**argv){
    int rank;
    int *list;  //Lista
    int *liste; //Lista encargados
    int *perm;  //Permutaciones
    int *capa;  //Capacidad
    int size;
    int i;
    int aux;
    const int root = 0;
    MPI_Init(&argc,&argv);
    MPI_Comm_rank(MPI_COMM_WORLD,&rank);
    MPI_Comm_size(MPI_COMM_WORLD,&size);
    if(rank==root){
        perm = (int*)malloc(size*sizeof(int));
        capa = (int*)malloc(size*sizeof(int));

        for(i=0;i<size;i++){
            scanf("%d",&aux);
            capa[i]=aux;
        }

        for(i=0;i<size;i++){
            scanf("%d",&aux);
            perm[i]=aux;
        }   

    }

    //printf("\n[%d]: Antes de Bcast: %d %d %d %d\n",rank,capa[0],capa[1],capa[2],capa[4]);

    MPI_Bcast(&capa[0],size,MPI_INT,root,MPI_COMM_WORLD);
    MPI_Bcast(&perm[0],size,MPI_INT,root,MPI_COMM_WORLD);
    //MPI_Bcast(&aux,1,MPI_INT,root,MPI_COMM_WORLD);



    printf("\n[%d]: Despues de Bcast capa: %d %d %d %d\n",rank,capa[0],capa[1],capa[2],capa[3]);


    printf("\n[%d]: Despues de Bcast perm: %d %d %d %d\n",rank,perm[0],perm[1],perm[2],perm[3]);

    MPI_Finalize();
    return 0;


}

0 个答案:

没有答案