gpt4 book ai didi

c++ - 使用 GPU 时 OpenCL 程序卡住

转载 作者:行者123 更新时间:2023-11-30 05:44:38 24 4
gpt4 key购买 nike

我的程序不能同时使用 CPU 和 GPU:

ret = clGetDeviceIDs(platform_id, CL_DEVICE_TYPE_CPU, 1, &device_id, &ret_num_devices);
ret = clGetDeviceIDs(platform_id, CL_DEVICE_TYPE_GPU, 1, &device_id, &ret_num_devices);

当使用 CPU 时,我收到此消息:

First-chance exception at 0x000007FEE30E8F90 (amdocl64.dll) in Project2.exe: 0xC0000005: Access violation reading location 0xFFFFFFFFFFFFFFFF. If there is a handler for this exception, the program may be safely continued.

执行这条命令时出现的问题:

ret = clEnqueueReadBuffer(command_queue, Cmobj, CL_TRUE, 0,
K*L*sizeof(float), C, 0, NULL, NULL);

当使用 GPU 执行此命令时程序卡住:

ret = clBuildProgram(program, 1, &device_id, NULL, NULL, NULL);

内存有问题吗?或者是其他东西?我使用 Visual Studio 2012、AMD Radeon HD 6470M、AMD APP SDK 2.9-1

最佳答案

你是如何初始化device_idret_num_devices的?

通常,您需要调用 clGetDeviceIDs 两次:首先获取可用设备的数量,然后为设备 ID 分配内存,然后再次调用它来填充该内存,如下所示:

cl_uint       numDevices = 0;
cl_device_id *devices;
status = clGetDeviceIDs(platform, CL_DEVICE_TYPE_GPU, 0, NULL, &numDevices);
if (numDevices > 0)
{
devices = (cl_device_id*)malloc(numDevices * sizeof(cl_device_id));
status = clGetDeviceIDs(platform, CL_DEVICE_TYPE_GPU, numDevices, devices, NULL);
}
else
{
// error: no device available: exit or fall back to CPU ...
}

// use any of the devices[0 .. numDevices-1]
// after compiling/loading the kernel, you can free(devices)

APP SDK 附带的一些示例也显示了这种模式,例如 samples/opencl/cl/app/HelloWorld/HelloWorld.cpp。也许您只是使用其中一个示例并根据您的需要对其进行调整?

关于c++ - 使用 GPU 时 OpenCL 程序卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29687534/

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