Home || Architecture || Video Search || Visual Search || Scripts || Applications || Important Messages || OGL || Src

void Impala::Util::Broadcast ( IOBuffer *  buffer  ) 

Todo:
investigate performance of MPI vs, Franks implementations

Definition at line 626 of file IOBuffer.h.

References Impala::Util::IOBuffer::GetBuffer(), ILOG_DEBUG, ILOG_VAR, Impala::Util::IOBuffer::SetBuffer(), and Impala::Util::IOBuffer::Size().

Referenced by Impala::Core::Matrix::DistributedAccess::LoadQuids(), and Impala::Application::OpenFeatureTable().

00627 {
00628 #ifdef MPI_USED
00629     ILOG_VAR(Link.Mpi.Broadcast);
00630     MPI_Barrier(MPI_COMM_WORLD);
00631     int size = buffer->Size();
00632     MPI_Bcast(&size, 1, MPI_INT, 0, MPI_COMM_WORLD);
00633     unsigned char* sendBuffer;
00634     if(Link::Mpi::MyId() == 0)
00635         sendBuffer = buffer->GetBuffer();
00636     else
00637         sendBuffer = new unsigned char[size];
00638     ILOG_DEBUG(Link::Mpi::MyId() << ": about to broadcast, buf = " << (void*)sendBuffer << "size = " << size);
00639     MPI_Bcast(sendBuffer, size, MPI_CHAR, 0, MPI_COMM_WORLD);
00640     if(Link::Mpi::MyId() != 0)
00641     {
00642         buffer->SetBuffer(sendBuffer, size);
00643     }
00644     ILOG_DEBUG("done");
00645 #endif // MPI_USED
00646 }

Here is the call graph for this function:


Generated on Fri Mar 19 11:39:08 2010 for ImpalaSrc by  doxygen 1.5.1