@@ -39,19 +39,19 @@ ompi_mtl_datatype_pack(struct opal_convertor_t *convertor,
3939{
4040 struct iovec iov ;
4141 uint32_t iov_count = 1 ;
42+ bool is_accelerator = opal_convertor_on_device (convertor );
4243#if !(OPAL_ENABLE_HETEROGENEOUS_SUPPORT )
4344 if (convertor -> pDesc &&
4445 !(convertor -> flags & CONVERTOR_COMPLETED ) &&
4546 opal_datatype_is_contiguous_memory_layout (convertor -> pDesc ,
4647 convertor -> count ) &&
47- !( convertor -> flags & CONVERTOR_ACCELERATOR ) ) {
48+ !is_accelerator ) {
4849 * free_after = false;
4950 * buffer = convertor -> pBaseBuf + convertor -> bConverted + convertor -> pDesc -> true_lb ;
5051 * buffer_len = convertor -> local_size ;
5152 return OPAL_SUCCESS ;
5253 }
5354#endif
54- bool is_accelerator = convertor -> flags & CONVERTOR_ACCELERATOR ;
5555
5656 opal_convertor_get_packed_size (convertor , buffer_len );
5757 * free_after = false;
@@ -94,7 +94,7 @@ ompi_mtl_datatype_recv_buf(struct opal_convertor_t *convertor,
9494 * buffer_len = 0 ;
9595 return OMPI_SUCCESS ;
9696 }
97- bool is_accelerator = convertor -> flags & CONVERTOR_ACCELERATOR ;
97+ bool is_accelerator = opal_convertor_on_device ( convertor ); ;
9898
9999 /* If we need buffers or we don't have accelerator support and it is a device buffer, we will need to copy */
100100 if (opal_convertor_need_buffers (convertor ) || (is_accelerator && false == ompi_mtl_base_selected_component -> accelerator_support )) {
@@ -122,7 +122,7 @@ ompi_mtl_datatype_unpack(struct opal_convertor_t *convertor,
122122{
123123 struct iovec iov ;
124124 uint32_t iov_count = 1 ;
125- bool is_accelerator = convertor -> flags & CONVERTOR_ACCELERATOR ;
125+ bool is_accelerator = opal_convertor_on_device ( convertor ) ;
126126
127127 /* If the buffer length is greater than 0 and we allocated buffers previously, we need to unpack them */
128128 if (buffer_len > 0 && (opal_convertor_need_buffers (convertor ) || (is_accelerator && false == ompi_mtl_base_selected_component -> accelerator_support ))) {
0 commit comments