gpt4 book ai didi

cudaMemcpy 实际上并未复制任何内容

转载 作者:行者123 更新时间:2023-11-30 18:56:43 33 4
gpt4 key购买 nike

我正在尝试将无符号整数数组(在 msgs 中)复制到 GPU 上以对其进行处理,但以下代码不会复制任何内容。我在 cudaMemcpy 调用周围添加了一些 cuda 错误检查代码,并且得到以下信息:无效参数

...
unsigned int *device_msgs;
size_t size_msgs = (size_t)(16*num_msgs);
cudaMalloc((void **) &device_msgs, size_msgs);

cudaMemcpy(device_msgs, msgs,
sizeof(unsigned int)*16*num_msgs,
cudaMemcpyHostToDevice);
...

我将 cudaMalloc 包装在相同的错误检查代码中,看起来没有任何问题。实际的内核调用会导致相同的 invalid argument cuda 错误,但这可能与 memCpys 有关,因为我传递的是设备指针。有人知道这是怎么回事吗?

编辑:需要明确的是,msgs 已预先正确分配。

最佳答案

您似乎为 device_msgs 分配了 16*num_msgs 字节,然后由于 sizeof(unsigned int) 乘数而尝试复制更多的字节。尝试将其更改为:

unsigned int *device_msgs;
size_t size_msgs = sizeof(unsigned int)*16*num_msgs;
cudaMalloc((void **) &device_msgs, size_msgs);

cudaMemcpy(device_msgs, msgs, size_msgs, cudaMemcpyHostToDevice);

关于cudaMemcpy 实际上并未复制任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23576497/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com