Skip to content

Commit 5655ed0

Browse files
committed
opal/datatype: Add checks for device buffers
Previously there used to be checks for gpu buffers which were removed (likely erroneously). Added the checks again to use regular memcpy/memmove in the case that the buffers are both host buffers. Signed-off-by: William Zhang <wilzhang@amazon.com>
1 parent 2d09d08 commit 5655ed0

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

opal/datatype/opal_datatype_copy.c

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,24 @@
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+
5870
static 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_
7085
static 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

Comments
 (0)