Commit c5e58b47 authored by Kirill Terekhov's avatar Kirill Terekhov
Browse files

change the way the messages are packed to overcome 2Gb limit

parent 86377f47
......@@ -2336,9 +2336,9 @@ namespace INMOST
void PackElementsEnumerate (elements_by_type & selems, TagInteger pack_position);
void PackElementsUnenumerate (elements_by_type & selems, TagInteger pack_position);
void PackTagData (const Tag & tag, const elements_by_type & elements, int destination, ElementType mask, MarkerType select, buffer_type & buffer, TagInteger pack_position);
void UnpackTagData (const Tag & tag, const elements_by_type & elements, int source, ElementType mask, MarkerType select, buffer_type & buffer, int & position, ReduceOperation op, const elements_by_type & unpack_elements);//, proc_elements_by_type * send_elements = NULL);
void UnpackTagData (const Tag & tag, const elements_by_type & elements, int source, ElementType mask, MarkerType select, buffer_type & buffer, size_t & buffer_position, ReduceOperation op, const elements_by_type & unpack_elements);//, proc_elements_by_type * send_elements = NULL);
void PackElementsData (elements_by_type & input, buffer_type & buffer, int destination, const tag_set & tag_list,TagInteger pack_position, bool pack_gids);
void UnpackElementsData (elements_by_type & output, buffer_type & buffer, int source, int & position, tag_set & tag_list);
void UnpackElementsData (elements_by_type & output, buffer_type & buffer, int source, size_t & buffer_position, tag_set & tag_list);
void PrepareReceiveInner(Prepare todo, exch_buffer_type & send_bufs, exch_buffer_type & recv_bufs);
void ExchangeDataInnerBegin(const tag_set & tag, const parallel_storage & from, const parallel_storage & to, ElementType mask, MarkerType select, exchange_data & storage);
void ExchangeDataInnerEnd(const tag_set & tag, const parallel_storage & from, const parallel_storage & to, ElementType mask, MarkerType select, ReduceOperation op, exchange_data & storage);
......
This diff is collapsed.
......@@ -2,6 +2,19 @@
using namespace INMOST;
void mpi_error_handler(MPI_Comm *communicator, int *error_code, ...)
{
char error_string[MPI_MAX_ERROR_STRING];
int error_string_length;
printf("mpi_error_handler: entry\n");
printf("mpi_error_handler: error_code = %d\n", *error_code);
MPI_Error_string(*error_code, error_string, &error_string_length);
error_string[error_string_length] = '\0';
printf("mpi_error_handler: error_string = %s\n", error_string);
printf("mpi_error_handler: exit\n");
throw -1;
}
// Compute number of connected components
int components(Mesh *m, Tag t)
{
......@@ -86,6 +99,10 @@ int main(int argc,char ** argv)
Mesh::Initialize(&argc,&argv);
Partitioner::Initialize(&argc,&argv);
MPI_Errhandler errhandler;
MPI_Comm_create_errhandler(&mpi_error_handler, &errhandler);
MPI_Comm_set_errhandler(MPI_COMM_WORLD, errhandler);
Mesh * m = new Mesh(); // Create an empty mesh
m->SetCommunicator(INMOST_MPI_COMM_WORLD); // Set the MPI communicator for the mesh
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment