X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=classifyseqscommand.cpp;h=7d015a85aed7e084926a918888f6e5ee761228cc;hb=7837a9bfdfccdc26360987a44c389832fdb82651;hp=85883282ed841c4f22bba3dda6e39e83fe5287c7;hpb=0319c36f068f092c766e1bff34b3554c1858255a;p=mothur.git diff --git a/classifyseqscommand.cpp b/classifyseqscommand.cpp index 8588328..7d015a8 100644 --- a/classifyseqscommand.cpp +++ b/classifyseqscommand.cpp @@ -419,8 +419,10 @@ int ClassifySeqsCommand::execute(){ MPIPos = setFilePosFasta(fastaFileNames[s], numFastaSeqs); //fills MPIPos, returns numSeqs //send file positions to all processes - MPI_Bcast(&numFastaSeqs, 1, MPI_INT, 0, MPI_COMM_WORLD); //send numSeqs - MPI_Bcast(&MPIPos[0], (numFastaSeqs+1), MPI_LONG, 0, MPI_COMM_WORLD); //send file pos + for(int i = 1; i < processors; i++) { + MPI_Send(&numFastaSeqs, 1, MPI_INT, i, tag, MPI_COMM_WORLD); + MPI_Send(&MPIPos[0], (numFastaSeqs+1), MPI_LONG, i, tag, MPI_COMM_WORLD); + } //figure out how many sequences you have to align numSeqsPerProcessor = numFastaSeqs / processors; @@ -438,9 +440,9 @@ int ClassifySeqsCommand::execute(){ MPI_Recv(&done, 1, MPI_INT, i, tag, MPI_COMM_WORLD, &status); } }else{ //you are a child process - MPI_Bcast(&numFastaSeqs, 1, MPI_INT, 0, MPI_COMM_WORLD); //get numSeqs + MPI_Recv(&numFastaSeqs, 1, MPI_INT, 0, tag, MPI_COMM_WORLD, &status); MPIPos.resize(numFastaSeqs+1); - MPI_Bcast(&MPIPos[0], (numFastaSeqs+1), MPI_LONG, 0, MPI_COMM_WORLD); //get file positions + MPI_Recv(&MPIPos[0], (numFastaSeqs+1), MPI_LONG, 0, tag, MPI_COMM_WORLD, &status); //figure out how many sequences you have to align numSeqsPerProcessor = numFastaSeqs / processors; @@ -461,6 +463,7 @@ int ClassifySeqsCommand::execute(){ MPI_File_close(&inMPI); MPI_File_close(&outMPINewTax); MPI_File_close(&outMPITempTax); + MPI_Barrier(MPI_COMM_WORLD); //make everyone wait - just in case #else #if defined (__APPLE__) || (__MACH__) || (linux) || (__linux) @@ -526,6 +529,11 @@ int ClassifySeqsCommand::execute(){ #endif #endif + m->mothurOutEndLine(); + m->mothurOut("It took " + toString(time(NULL) - start) + " secs to classify " + toString(numFastaSeqs) + " sequences."); m->mothurOutEndLine(); m->mothurOutEndLine(); + start = time(NULL); + + #ifdef USE_MPI if (pid == 0) { //this part does not need to be paralellized @@ -556,10 +564,6 @@ int ClassifySeqsCommand::execute(){ } #endif - m->mothurOutEndLine(); - m->mothurOut("It took " + toString(time(NULL) - start) + " secs to classify " + toString(numFastaSeqs) + " sequences."); m->mothurOutEndLine(); m->mothurOutEndLine(); - start = time(NULL); - string group = ""; if (groupfile != "") { group = groupfileNames[s]; } @@ -631,7 +635,7 @@ int ClassifySeqsCommand::execute(){ rename(unclass.c_str(), newTaxonomyFile.c_str()); m->mothurOutEndLine(); - m->mothurOut("It took " + toString(time(NULL) - start) + " secs to create the summary file for " + toString(numFastaSeqs) + " sequences."); m->mothurOutEndLine(); m->mothurOutEndLine(); + m->mothurOut("It took " + toString(time(NULL) - start) + " secs to create the summary file for " + toString(numFastaSeqs) + " sequences."); m->mothurOutEndLine(); m->mothurOutEndLine(); #ifdef USE_MPI }