5555 } \
5656 } while (0)
5757
58+ static bool opal_datatype_is_accel (void * dest , const void * src ) {
59+ int dev_id ;
60+ uint64_t flags ;
61+ if (opal_accelerator .check_addr (dest , & dev_id , & flags )) {
62+ return true;
63+ }
64+ if (opal_accelerator .check_addr (src , & dev_id , & flags )) {
65+ return true;
66+ }
67+ return false;
68+ }
69+
5870static void * opal_datatype_accelerator_memcpy (void * dest , const void * src , size_t size )
5971{
6072 int res ;
73+ if (!opal_datatype_is_accel (dest , src )) {
74+ return memcpy (dest , src , size );
75+ }
6176 res = opal_accelerator .mem_copy (MCA_ACCELERATOR_NO_DEVICE_ID , MCA_ACCELERATOR_NO_DEVICE_ID ,
6277 dest , src , size , MCA_ACCELERATOR_TRANSFER_UNSPEC );
6378 if (OPAL_SUCCESS != res ) {
@@ -70,6 +85,9 @@ static void *opal_datatype_accelerator_memcpy(void *dest, const void *src, size_
7085static void * opal_datatype_accelerator_memmove (void * dest , const void * src , size_t size )
7186{
7287 int res ;
88+ if (!opal_datatype_is_accel (dest , src )) {
89+ return memmove (dest , src , size );
90+ }
7391 res = opal_accelerator .mem_move (MCA_ACCELERATOR_NO_DEVICE_ID , MCA_ACCELERATOR_NO_DEVICE_ID ,
7492 dest , src , size , MCA_ACCELERATOR_TRANSFER_UNSPEC );
7593 if (OPAL_SUCCESS != res ) {
0 commit comments