|
@@ -72,7 +72,7 @@ static struct _starpu_mpi_req *_starpu_mpi_isend_irecv_common(starpu_data_handle
|
|
|
|
|
|
_STARPU_MPI_LOG_IN();
|
|
|
struct _starpu_mpi_req *req = calloc(1, sizeof(struct _starpu_mpi_req));
|
|
|
- STARPU_ASSERT(req);
|
|
|
+ STARPU_ASSERT_MSG(req, "Invalid request");
|
|
|
|
|
|
_STARPU_MPI_INC_POSTED_REQUESTS(1);
|
|
|
|
|
@@ -115,7 +115,7 @@ static void _starpu_mpi_isend_data_func(struct _starpu_mpi_req *req)
|
|
|
{
|
|
|
_STARPU_MPI_LOG_IN();
|
|
|
|
|
|
- STARPU_ASSERT(req->ptr);
|
|
|
+ STARPU_ASSERT_MSG(req->ptr, "Pointer containing data to send is invalid");
|
|
|
|
|
|
_STARPU_MPI_DEBUG(2, "post MPI isend request %p type %s tag %d src %d data %p ptr %p datatype '%s' count %d user_datatype %d \n", req, _starpu_mpi_request_type(req->request_type), req->mpi_tag, req->srcdst, req->data_handle, req->ptr, _starpu_mpi_datatype(req->datatype), (int)req->count, req->user_datatype);
|
|
|
|
|
@@ -124,7 +124,7 @@ static void _starpu_mpi_isend_data_func(struct _starpu_mpi_req *req)
|
|
|
TRACE_MPI_ISEND_SUBMIT_BEGIN(req->srcdst, req->mpi_tag, 0);
|
|
|
|
|
|
req->ret = MPI_Isend(req->ptr, req->count, req->datatype, req->srcdst, req->mpi_tag, req->comm, &req->request);
|
|
|
- STARPU_ASSERT(req->ret == MPI_SUCCESS);
|
|
|
+ STARPU_ASSERT_MSG(req->ret == MPI_SUCCESS, "MPI_Isend returning %d", req->ret);
|
|
|
|
|
|
TRACE_MPI_ISEND_SUBMIT_END(req->srcdst, req->mpi_tag, 0);
|
|
|
|
|
@@ -161,7 +161,7 @@ static void _starpu_mpi_isend_size_func(struct _starpu_mpi_req *req)
|
|
|
_STARPU_MPI_DEBUG(1, "Sending size %ld (%ld %s) with tag %d to node %d (first call to pack)\n", psize, sizeof(req->count), _starpu_mpi_datatype(MPI_BYTE), req->mpi_tag, req->srcdst);
|
|
|
req->count = psize;
|
|
|
ret = MPI_Isend(&req->count, sizeof(req->count), MPI_BYTE, req->srcdst, req->mpi_tag, req->comm, &req->size_req);
|
|
|
- STARPU_ASSERT(ret == MPI_SUCCESS);
|
|
|
+ STARPU_ASSERT_MSG(ret == MPI_SUCCESS, "when sending size, MPI_Isend returning %d", ret);
|
|
|
}
|
|
|
|
|
|
|
|
@@ -171,12 +171,12 @@ static void _starpu_mpi_isend_size_func(struct _starpu_mpi_req *req)
|
|
|
|
|
|
_STARPU_MPI_DEBUG(1, "Sending size %ld (%ld %s) with tag %d to node %d (second call to pack)\n", req->count, sizeof(req->count), _starpu_mpi_datatype(MPI_BYTE), req->mpi_tag, req->srcdst);
|
|
|
ret = MPI_Isend(&req->count, sizeof(req->count), MPI_BYTE, req->srcdst, req->mpi_tag, req->comm, &req->size_req);
|
|
|
- STARPU_ASSERT(ret == MPI_SUCCESS);
|
|
|
+ STARPU_ASSERT_MSG(ret == MPI_SUCCESS, "when sending size, MPI_Isend returning %d", ret);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
|
|
|
- STARPU_ASSERT(req->count == psize);
|
|
|
+ STARPU_ASSERT_MSG(req->count == psize, "Calls to pack_data returned different sizes %ld != %ld", req->count, psize);
|
|
|
}
|
|
|
|
|
|
|
|
@@ -194,12 +194,12 @@ static struct _starpu_mpi_req *_starpu_mpi_isend_common(starpu_data_handle_t dat
|
|
|
int starpu_mpi_isend(starpu_data_handle_t data_handle, starpu_mpi_req *public_req, int dest, int mpi_tag, MPI_Comm comm)
|
|
|
{
|
|
|
_STARPU_MPI_LOG_IN();
|
|
|
- STARPU_ASSERT(public_req);
|
|
|
+ STARPU_ASSERT_MSG(public_req, "starpu_mpi_isend needs a valid starpu_mpi_req");
|
|
|
|
|
|
struct _starpu_mpi_req *req;
|
|
|
req = _starpu_mpi_isend_common(data_handle, dest, mpi_tag, comm, 0, NULL, NULL);
|
|
|
|
|
|
- STARPU_ASSERT(req);
|
|
|
+ STARPU_ASSERT_MSG(req, "Invalid return for _starpu_mpi_isend_common");
|
|
|
*public_req = req;
|
|
|
|
|
|
_STARPU_MPI_LOG_OUT();
|
|
@@ -241,14 +241,14 @@ static void _starpu_mpi_irecv_data_func(struct _starpu_mpi_req *req)
|
|
|
{
|
|
|
_STARPU_MPI_LOG_IN();
|
|
|
|
|
|
- STARPU_ASSERT(req->ptr);
|
|
|
+ STARPU_ASSERT_MSG(req->ptr, "Invalid pointer to receive data");
|
|
|
|
|
|
_STARPU_MPI_DEBUG(2, "post MPI irecv request %p type %s tag %d src %d data %p ptr %p datatype '%s' count %d user_datatype %d \n", req, _starpu_mpi_request_type(req->request_type), req->mpi_tag, req->srcdst, req->data_handle, req->ptr, _starpu_mpi_datatype(req->datatype), (int)req->count, req->user_datatype);
|
|
|
|
|
|
TRACE_MPI_IRECV_SUBMIT_BEGIN(req->srcdst, req->mpi_tag);
|
|
|
|
|
|
req->ret = MPI_Irecv(req->ptr, req->count, req->datatype, req->srcdst, req->mpi_tag, req->comm, &req->request);
|
|
|
- STARPU_ASSERT(req->ret == MPI_SUCCESS);
|
|
|
+ STARPU_ASSERT_MSG(req->ret == MPI_SUCCESS, "MPI_IRecv returning %d", req->ret);
|
|
|
|
|
|
TRACE_MPI_IRECV_SUBMIT_END(req->srcdst, req->mpi_tag);
|
|
|
|
|
@@ -275,7 +275,7 @@ static void _starpu_mpi_irecv_size_callback(void *arg)
|
|
|
|
|
|
starpu_data_unregister(callback->handle);
|
|
|
callback->req->ptr = malloc(callback->req->count);
|
|
|
- STARPU_ASSERT_MSG(callback->req->ptr, "cannot allocate message of size %ld\n", callback->req->count);
|
|
|
+ STARPU_ASSERT_MSG(callback->req->ptr, "cannot allocate message of size %ld", callback->req->count);
|
|
|
_starpu_mpi_irecv_data_func(callback->req);
|
|
|
free(callback);
|
|
|
}
|
|
@@ -310,12 +310,12 @@ static struct _starpu_mpi_req *_starpu_mpi_irecv_common(starpu_data_handle_t dat
|
|
|
int starpu_mpi_irecv(starpu_data_handle_t data_handle, starpu_mpi_req *public_req, int source, int mpi_tag, MPI_Comm comm)
|
|
|
{
|
|
|
_STARPU_MPI_LOG_IN();
|
|
|
- STARPU_ASSERT(public_req);
|
|
|
+ STARPU_ASSERT_MSG(public_req, "starpu_mpi_irecv needs a valid starpu_mpi_req");
|
|
|
|
|
|
struct _starpu_mpi_req *req;
|
|
|
req = _starpu_mpi_irecv_common(data_handle, source, mpi_tag, comm, 0, NULL, NULL);
|
|
|
|
|
|
- STARPU_ASSERT(req);
|
|
|
+ STARPU_ASSERT_MSG(req, "Invalid return for _starpu_mpi_irecv_common");
|
|
|
*public_req = req;
|
|
|
|
|
|
_STARPU_MPI_LOG_OUT();
|
|
@@ -390,7 +390,7 @@ static void _starpu_mpi_wait_func(struct _starpu_mpi_req *waiting_req)
|
|
|
TRACE_MPI_UWAIT_BEGIN(req->srcdst, req->mpi_tag);
|
|
|
|
|
|
req->ret = MPI_Wait(&req->request, waiting_req->status);
|
|
|
- STARPU_ASSERT(req->ret == MPI_SUCCESS);
|
|
|
+ STARPU_ASSERT_MSG(req->ret == MPI_SUCCESS, "MPI_Wait returning %d", req->ret);
|
|
|
|
|
|
TRACE_MPI_UWAIT_END(req->srcdst, req->mpi_tag);
|
|
|
|
|
@@ -403,7 +403,7 @@ int starpu_mpi_wait(starpu_mpi_req *public_req, MPI_Status *status)
|
|
|
_STARPU_MPI_LOG_IN();
|
|
|
int ret;
|
|
|
struct _starpu_mpi_req *waiting_req = calloc(1, sizeof(struct _starpu_mpi_req));
|
|
|
- STARPU_ASSERT(waiting_req);
|
|
|
+ STARPU_ASSERT_MSG(waiting_req, "Allocation failed");
|
|
|
struct _starpu_mpi_req *req = *public_req;
|
|
|
|
|
|
_STARPU_MPI_INC_POSTED_REQUESTS(1);
|
|
@@ -460,7 +460,7 @@ static void _starpu_mpi_test_func(struct _starpu_mpi_req *testing_req)
|
|
|
TRACE_MPI_UTESTING_BEGIN(req->srcdst, req->mpi_tag);
|
|
|
|
|
|
req->ret = MPI_Test(&req->request, testing_req->flag, testing_req->status);
|
|
|
- STARPU_ASSERT(req->ret == MPI_SUCCESS);
|
|
|
+ STARPU_ASSERT_MSG(req->ret == MPI_SUCCESS, "MPI_Test returning %d", req->ret);
|
|
|
|
|
|
TRACE_MPI_UTESTING_END(req->srcdst, req->mpi_tag);
|
|
|
|
|
@@ -482,11 +482,11 @@ int starpu_mpi_test(starpu_mpi_req *public_req, int *flag, MPI_Status *status)
|
|
|
_STARPU_MPI_LOG_IN();
|
|
|
int ret = 0;
|
|
|
|
|
|
- STARPU_ASSERT(public_req);
|
|
|
+ STARPU_ASSERT_MSG(public_req, "starpu_mpi_test needs a valid starpu_mpi_req");
|
|
|
|
|
|
struct _starpu_mpi_req *req = *public_req;
|
|
|
|
|
|
- STARPU_ASSERT(!req->detached);
|
|
|
+ STARPU_ASSERT_MSG(!req->detached, "MPI_Test cannot be called on a detached request");
|
|
|
|
|
|
_STARPU_PTHREAD_MUTEX_LOCK(&req->req_mutex);
|
|
|
unsigned submitted = req->submitted;
|
|
@@ -495,7 +495,7 @@ int starpu_mpi_test(starpu_mpi_req *public_req, int *flag, MPI_Status *status)
|
|
|
if (submitted)
|
|
|
{
|
|
|
struct _starpu_mpi_req *testing_req = calloc(1, sizeof(struct _starpu_mpi_req));
|
|
|
- STARPU_ASSERT(testing_req);
|
|
|
+ STARPU_ASSERT_MSG(testing_req, "allocation failed");
|
|
|
|
|
|
|
|
|
|
|
@@ -550,7 +550,7 @@ static void _starpu_mpi_barrier_func(struct _starpu_mpi_req *barrier_req)
|
|
|
_STARPU_MPI_LOG_IN();
|
|
|
|
|
|
barrier_req->ret = MPI_Barrier(barrier_req->comm);
|
|
|
- STARPU_ASSERT(barrier_req->ret == MPI_SUCCESS);
|
|
|
+ STARPU_ASSERT_MSG(barrier_req->ret == MPI_SUCCESS, "MPI_Barrier returning %d", barrier_req->ret);
|
|
|
|
|
|
_starpu_mpi_handle_request_termination(barrier_req);
|
|
|
_STARPU_MPI_LOG_OUT();
|
|
@@ -561,7 +561,7 @@ int starpu_mpi_barrier(MPI_Comm comm)
|
|
|
_STARPU_MPI_LOG_IN();
|
|
|
int ret;
|
|
|
struct _starpu_mpi_req *barrier_req = calloc(1, sizeof(struct _starpu_mpi_req));
|
|
|
- STARPU_ASSERT(barrier_req);
|
|
|
+ STARPU_ASSERT_MSG(barrier_req, "allocation failed");
|
|
|
|
|
|
|
|
|
* some tasks generate MPI requests, MPI requests generate tasks, etc.
|
|
@@ -648,7 +648,7 @@ static void _starpu_mpi_handle_request_termination(struct _starpu_mpi_req *req)
|
|
|
MPI_Status status;
|
|
|
memset(&status, 0, sizeof(MPI_Status));
|
|
|
req->ret = MPI_Recv(req->ptr, req->count, req->datatype, req->srcdst, req->mpi_tag, req->comm, &status);
|
|
|
- STARPU_ASSERT(req->ret == MPI_SUCCESS);
|
|
|
+ STARPU_ASSERT_MSG(req->ret == MPI_SUCCESS, "MPI_Recv returning %d", req->ret);
|
|
|
}
|
|
|
|
|
|
if (req->request_type == RECV_REQ || req->request_type == SEND_REQ || req->request_type == PROBE_REQ)
|
|
@@ -661,8 +661,8 @@ static void _starpu_mpi_handle_request_termination(struct _starpu_mpi_req *req)
|
|
|
MPI_Status status;
|
|
|
int flag;
|
|
|
ret = MPI_Test(&req->size_req, &flag, &status);
|
|
|
- STARPU_ASSERT(ret == MPI_SUCCESS);
|
|
|
- STARPU_ASSERT(flag);
|
|
|
+ STARPU_ASSERT_MSG(ret == MPI_SUCCESS, "MPI_Test returning %d", ret);
|
|
|
+ STARPU_ASSERT_MSG(flag, "MPI_Test returning flag %d", flag);
|
|
|
}
|
|
|
if (req->request_type == RECV_REQ)
|
|
|
|
|
@@ -751,7 +751,7 @@ static void _starpu_mpi_test_detached_requests(void)
|
|
|
req->ret = MPI_Test(&req->request, &flag, &status);
|
|
|
}
|
|
|
|
|
|
- STARPU_ASSERT(req->ret == MPI_SUCCESS);
|
|
|
+ STARPU_ASSERT_MSG(req->ret == MPI_SUCCESS, "MPI_Iprobe or MPI_Test returning %d", req->ret);
|
|
|
|
|
|
if (flag)
|
|
|
{
|
|
@@ -811,7 +811,7 @@ static void _starpu_mpi_handle_detached_request(struct _starpu_mpi_req *req)
|
|
|
static void _starpu_mpi_handle_new_request(struct _starpu_mpi_req *req)
|
|
|
{
|
|
|
_STARPU_MPI_LOG_IN();
|
|
|
- STARPU_ASSERT(req);
|
|
|
+ STARPU_ASSERT_MSG(req, "Invalid request");
|
|
|
|
|
|
|
|
|
_STARPU_MPI_DEBUG(2, "Handling new request %p type %s tag %d src %d data %p ptr %p datatype '%s' count %d user_datatype %d \n",
|
|
@@ -933,9 +933,9 @@ static void *_starpu_mpi_progress_thread_func(void *arg)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- STARPU_ASSERT(_starpu_mpi_req_list_empty(detached_requests));
|
|
|
- STARPU_ASSERT(_starpu_mpi_req_list_empty(new_requests));
|
|
|
- STARPU_ASSERT(posted_requests == 0);
|
|
|
+ STARPU_ASSERT_MSG(_starpu_mpi_req_list_empty(detached_requests), "List of detached requests not empty");
|
|
|
+ STARPU_ASSERT_MSG(_starpu_mpi_req_list_empty(new_requests), "List of new requests not empty");
|
|
|
+ STARPU_ASSERT_MSG(posted_requests == 0, "Number of posted request is not zero");
|
|
|
|
|
|
if (argc_argv->initialize_mpi)
|
|
|
{
|
|
@@ -970,7 +970,7 @@ static void _starpu_mpi_add_sync_point_in_fxt(void)
|
|
|
MPI_Comm_size(MPI_COMM_WORLD, &worldsize);
|
|
|
|
|
|
ret = MPI_Barrier(MPI_COMM_WORLD);
|
|
|
- STARPU_ASSERT(ret == MPI_SUCCESS);
|
|
|
+ STARPU_ASSERT_MSG(ret == MPI_SUCCESS, "MPI_Barrier returning %d", ret);
|
|
|
|
|
|
|
|
|
* FxT traces come from the same MPI run. */
|
|
@@ -985,7 +985,7 @@ static void _starpu_mpi_add_sync_point_in_fxt(void)
|
|
|
}
|
|
|
|
|
|
ret = MPI_Bcast(&random_number, 1, MPI_INT, 0, MPI_COMM_WORLD);
|
|
|
- STARPU_ASSERT(ret == MPI_SUCCESS);
|
|
|
+ STARPU_ASSERT_MSG(ret == MPI_SUCCESS, "MPI_Bcast returning %d", ret);
|
|
|
|
|
|
TRACE_MPI_BARRIER(rank, worldsize, random_number);
|
|
|
|
|
@@ -1020,7 +1020,7 @@ int _starpu_mpi_initialize(int *argc, char ***argv, int initialize_mpi)
|
|
|
|
|
|
#ifdef STARPU_MPI_ACTIVITY
|
|
|
hookid = starpu_progression_hook_register(progression_hook_func, NULL);
|
|
|
- STARPU_ASSERT(hookid >= 0);
|
|
|
+ STARPU_ASSERT_MSG(hookid >= 0, "starpu_progression_hook_register failed");
|
|
|
#endif
|
|
|
|
|
|
_starpu_mpi_add_sync_point_in_fxt();
|