|
10 | 10 | *
|
11 | 11 | * Date: Aug 8th 2003
|
12 | 12 | */
|
| 13 | +#include <assert.h> |
13 | 14 | #include <mpi.h>
|
14 | 15 | #include "mpi_test_suite.h"
|
15 | 16 | #include "tst_output.h"
|
@@ -41,28 +42,24 @@ int tst_p2p_simple_ring_ibsend_init (struct tst_env * env)
|
41 | 42 | env->send_buffer = tst_type_allocvalues (env->type, env->values_num);
|
42 | 43 | env->recv_buffer = tst_type_allocvalues (env->type, env->values_num);
|
43 | 44 |
|
44 |
| -#ifdef HAVE_MPI2_THREADS |
45 |
| - num_threads = tst_thread_num_threads (); |
46 |
| -#endif |
47 | 45 | /*
|
48 | 46 | * Now, initialize the send_buffer
|
49 | 47 | */
|
50 | 48 | comm = tst_comm_getcomm (env->comm);
|
51 | 49 | MPI_CHECK (MPI_Comm_rank (comm, &comm_rank));
|
52 |
| - |
53 | 50 | tst_type_setstandardarray (env->type, env->values_num, env->send_buffer, comm_rank);
|
54 | 51 |
|
55 |
| - env->mpi_buffer_size = num_threads * (tst_type_gettypesize (env->type) * env->values_num + MPI_BSEND_OVERHEAD); |
56 |
| - if ((env->mpi_buffer = malloc (env->mpi_buffer_size)) == NULL) |
57 |
| - ERROR (errno, "malloc"); |
58 |
| - |
59 | 52 | /*
|
60 | 53 | * The buffer may be attached by one thread of the processes, only
|
61 | 54 | * Actually, the standard doesn't even say so.
|
62 | 55 | */
|
63 | 56 | #ifdef HAVE_MPI2_THREADS
|
64 | 57 | if ( tst_thread_get_num() == 0 ) {
|
65 | 58 | #endif
|
| 59 | + num_threads = tst_thread_num_threads (); |
| 60 | + env->mpi_buffer_size = num_threads * (tst_type_gettypesize (env->type) * env->values_num + MPI_BSEND_OVERHEAD); |
| 61 | + if ((env->mpi_buffer = malloc (env->mpi_buffer_size)) == NULL) |
| 62 | + ERROR (errno, "malloc"); |
66 | 63 | MPI_CHECK (MPI_Buffer_attach (env->mpi_buffer, env->mpi_buffer_size));
|
67 | 64 | #ifdef HAVE_MPI2_THREADS
|
68 | 65 | }
|
@@ -141,7 +138,11 @@ int tst_p2p_simple_ring_ibsend_cleanup (struct tst_env * env)
|
141 | 138 | #ifdef HAVE_MPI2_THREADS
|
142 | 139 | if ( tst_thread_get_num () == 0 ) {
|
143 | 140 | #endif
|
144 |
| - MPI_CHECK (MPI_Buffer_detach (&env->mpi_buffer, &env->mpi_buffer_size)); |
| 141 | + void *buf; |
| 142 | + int size = -1; |
| 143 | + MPI_CHECK (MPI_Buffer_detach (&buf, &size)); |
| 144 | + assert(env->mpi_buffer == buf); |
| 145 | + assert(env->mpi_buffer_size == size); |
145 | 146 | #ifdef HAVE_MPI2_THREADS
|
146 | 147 | }
|
147 | 148 | #endif
|
|
0 commit comments