gpt4 book ai didi

c++ - 将 std::string 传递给 OpenCL 内核

转载 作者:行者123 更新时间:2023-11-30 01:05:49 25 4
gpt4 key购买 nike

我正在尝试将字符串传递到 OpenCL 内核中。这是我的 C++ 代码缩写:

std::string a = "abcd";
char *aChar = new char[a.size()+1];
aChar[a.size()] = 0;
memcpy(aChar, a.c_str(), a.size());

cl::Buffer serverKeyBuffer(context, CL_MEM_READ_ONLY | CL_MEM_HOST_READ_ONLY, sizeof(char) * a.size(), aChar);

内核的签名是:

__kernel void MyKernel(__global float* rollNumber, __global char* a)

我一直收到 -51 (CL_INVALID_ARG_SIZE)。不太确定为什么尺寸无效

最佳答案

开始工作了。我意识到我没有将其作为缓冲区传递。这是固定代码:

std::string a = "abcd";
char *aChar = new char[a.size()+1];
aChar[a.size()] = 0;
memcpy(aChar, a.c_str(), a.size());

cl::Buffer serverKeyBuffer(context, CL_MEM_READ_ONLY, strlen(aChar), NULL);
kernel.setArg(1, serverKeyBuffer);

...

queue.enqueueWriteBuffer(serverKeyBuffer, CL_TRUE, 0, strlen(aChar), aChar);

关于c++ - 将 std::string 传递给 OpenCL 内核,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47896646/

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