Skip to content

Commit 8deb23b

Browse files
committed
temporary WAR for non-blocking alltoallw
variants. We'll need to append the temporary arrays holding translated datatype handles to the nbc request for cleanup after the non-blocking op is completed or the persistent request has been freed. Signed-off-by: Howard Pritchard <[email protected]>
1 parent ca47e54 commit 8deb23b

File tree

5 files changed

+27
-8
lines changed

5 files changed

+27
-8
lines changed

ompi/mpi/bindings/ompi_bindings/c_type.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -497,6 +497,14 @@ def type_text(self, enable_count=False):
497497
def parameter(self, enable_count=False, **kwargs):
498498
return f'{self.type_text(enable_count=enable_count)} {self.name}[]'
499499

500+
@Type.add_type('DATATYPE_ARRAY_ASYNC', abi_type=['ompi'])
501+
class TypeDatatypeArray(Type):
502+
503+
def type_text(self, enable_count=False):
504+
return 'MPI_Datatype'
505+
506+
def parameter(self, enable_count=False, **kwargs):
507+
return f'const {self.type_text(enable_count=enable_count)} {self.name}[]'
500508

501509
@Type.add_type('DATATYPE', abi_type=['standard'])
502510
class TypeDatatypeStandard(StandardABIType):
@@ -570,6 +578,16 @@ def parameter(self, enable_count=False, **kwargs):
570578
def argument(self):
571579
return f'(MPI_Datatype *) {self.tmpname}'
572580

581+
@Type.add_type('DATATYPE_ARRAY_ASYNC', abi_type=['standard'])
582+
class TypeDatatypeArrayAsyncStandard(TypeDatatypeArrayStandard):
583+
584+
@property
585+
def final_code(self):
586+
code = ['{']
587+
code.append('}')
588+
return code
589+
590+
573591
@Type.add_type('DATATYPE_ARRAY_OUT', abi_type=['standard'])
574592
class TypeDatatypeArrayOutStandard(StandardABIType):
575593

ompi/mpi/c/alltoallw_init.c.in

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@
3737
#include "ompi/runtime/ompi_spc.h"
3838

3939
PROTOTYPE ERROR_CLASS alltoallw_init(BUFFER sendbuf, COUNT_ARRAY sendcounts, DISP_ARRAY sdispls,
40-
DATATYPE_ARRAY sendtypes, BUFFER_OUT recvbuf, COUNT_ARRAY recvcounts,
41-
DISP_ARRAY rdispls, DATATYPE_ARRAY recvtypes, COMM comm,
40+
DATATYPE_ARRAY_ASYNC sendtypes, BUFFER_OUT recvbuf, COUNT_ARRAY recvcounts,
41+
DISP_ARRAY rdispls, DATATYPE_ARRAY_ASYNC recvtypes, COMM comm,
4242
INFO info, REQUEST_INOUT request)
4343
{
4444
int i, size, err;

ompi/mpi/c/ialltoallw.c.in

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@
3737
#include "ompi/runtime/ompi_spc.h"
3838

3939
PROTOTYPE ERROR_CLASS ialltoallw(BUFFER sendbuf, COUNT_ARRAY sendcounts, DISP_ARRAY sdispls,
40-
DATATYPE_ARRAY sendtypes, BUFFER_OUT recvbuf, COUNT_ARRAY recvcounts,
41-
DISP_ARRAY rdispls, DATATYPE_ARRAY recvtypes, COMM comm,
40+
DATATYPE_ARRAY_ASYNC sendtypes, BUFFER_OUT recvbuf, COUNT_ARRAY recvcounts,
41+
DISP_ARRAY rdispls, DATATYPE_ARRAY_ASYNC recvtypes, COMM comm,
4242
REQUEST_INOUT request)
4343
{
4444
int i, size, err;
@@ -121,6 +121,7 @@ PROTOTYPE ERROR_CLASS ialltoallw(BUFFER sendbuf, COUNT_ARRAY sendcounts, DISP_AR
121121
if (OPAL_LIKELY(OMPI_SUCCESS == err)) {
122122
ompi_coll_base_retain_datatypes_w(*request, (MPI_IN_PLACE==sendbuf)?NULL:sendtypes, recvtypes, false);
123123
}
124+
124125
OMPI_ERRHANDLER_RETURN(err, comm, err, FUNC_NAME);
125126
}
126127

ompi/mpi/c/ineighbor_alltoallw.c.in

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@
4040
#include "ompi/runtime/ompi_spc.h"
4141

4242
PROTOTYPE ERROR_CLASS ineighbor_alltoallw(BUFFER sendbuf, COUNT_ARRAY sendcounts, AINT_ARRAY sdispls,
43-
DATATYPE_ARRAY sendtypes, BUFFER_OUT recvbuf, COUNT_ARRAY recvcounts,
44-
AINT_ARRAY rdispls, DATATYPE_ARRAY recvtypes, COMM comm,
43+
DATATYPE_ARRAY_ASYNC sendtypes, BUFFER_OUT recvbuf, COUNT_ARRAY recvcounts,
44+
AINT_ARRAY rdispls, DATATYPE_ARRAY_ASYNC recvtypes, COMM comm,
4545
REQUEST_INOUT request)
4646
{
4747
int i, err;

ompi/mpi/c/neighbor_alltoallw_init.c.in

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@
4040
#include "ompi/runtime/ompi_spc.h"
4141

4242
PROTOTYPE ERROR_CLASS neighbor_alltoallw_init(BUFFER sendbuf, COUNT_ARRAY sendcounts, AINT_ARRAY sdispls,
43-
DATATYPE_ARRAY sendtypes, BUFFER_OUT recvbuf, COUNT_ARRAY recvcounts,
44-
AINT_ARRAY rdispls, DATATYPE_ARRAY recvtypes, COMM comm,
43+
DATATYPE_ARRAY_ASYNC sendtypes, BUFFER_OUT recvbuf, COUNT_ARRAY recvcounts,
44+
AINT_ARRAY rdispls, DATATYPE_ARRAY_ASYNC recvtypes, COMM comm,
4545
INFO info, REQUEST_INOUT request)
4646
{
4747
int i, err;

0 commit comments

Comments
 (0)