X-Git-Url: https://git.donarmstrong.com/?p=mothur.git;a=blobdiff_plain;f=chimeraccodecommand.cpp;h=45f7f545f78d3d239592ccc60c12b2561393e869;hp=cc046ea3dcd44c5443434d84493025791ab2910e;hb=725a3d4ff2442c79bfde0a75ed3e0904edcf03b7;hpb=cfe70bbc94980a0177af465d3464db754673bd56 diff --git a/chimeraccodecommand.cpp b/chimeraccodecommand.cpp index cc046ea..45f7f54 100644 --- a/chimeraccodecommand.cpp +++ b/chimeraccodecommand.cpp @@ -233,8 +233,10 @@ int ChimeraCcodeCommand::execute(){ MPIPos = setFilePosFasta(fastafile, numSeqs); //fills MPIPos, returns numSeqs //send file positions to all processes - MPI_Bcast(&numSeqs, 1, MPI_INT, 0, MPI_COMM_WORLD); //send numSeqs - MPI_Bcast(&MPIPos[0], (numSeqs+1), MPI_LONG, 0, MPI_COMM_WORLD); //send file pos + for(int i = 1; i < processors; i++) { + MPI_Send(&numSeqs, 1, MPI_INT, i, tag, MPI_COMM_WORLD); + MPI_Send(&MPIPos[0], (numSeqs+1), MPI_LONG, i, tag, MPI_COMM_WORLD); + } //figure out how many sequences you have to align numSeqsPerProcessor = numSeqs / processors; @@ -253,9 +255,9 @@ int ChimeraCcodeCommand::execute(){ if (tempResult != 0) { MPIWroteAccnos = true; } } }else{ //you are a child process - MPI_Bcast(&numSeqs, 1, MPI_INT, 0, MPI_COMM_WORLD); //get numSeqs + MPI_Recv(&numSeqs, 1, MPI_INT, 0, tag, MPI_COMM_WORLD, &status); MPIPos.resize(numSeqs+1); - MPI_Bcast(&MPIPos[0], (numSeqs+1), MPI_LONG, 0, MPI_COMM_WORLD); //get file positions + MPI_Recv(&MPIPos[0], (numSeqs+1), MPI_LONG, 0, tag, MPI_COMM_WORLD, &status); //figure out how many sequences you have to align numSeqsPerProcessor = numSeqs / processors; @@ -276,6 +278,8 @@ int ChimeraCcodeCommand::execute(){ MPI_File_close(&outMPI); MPI_File_close(&outMPIAccnos); + MPI_Barrier(MPI_COMM_WORLD); //make everyone wait - just in case + //delete accnos file if blank if (pid == 0) { if (!MPIWroteAccnos) {