OpenCL: cl::getDevices crashes
OpenCL: cl::getDevices crashes
我的OpenCL代码有问题,在标记位置崩溃,但仅适用于我的nvidia gpu (OpenCL 1.1)(英特尔平台(OpenCL 1.2和OpenCL 2.0)表现良好)。
cl::Platform::get(&allPlatforms);
allDevices.resize(allPlatforms.size());
size_t noDevices = 0;
for (size_t i = 0, end = allPlatforms.size(); i < end; ++i)
{
allPlatforms[i].getDevices(CL_DEVICE_TYPE_ALL, &allDevices[i]); //here it crashes
noDevices += allDevices[i].size();
}
cl_int getDevices(
cl_device_type type,
VECTOR_CLASS<Device>* devices) const
{
...
devices->assign(&ids[0], &ids[n]); //here it crashes
return CL_SUCCESS;
}
我不知道为什么它会崩溃,也不知道如何修复它。
编辑:我的调试器说,id是一个有效的指针和n=1(在崩溃的情况下)
您是否有最新版本的标题?它有"isReferenceCountable"它的功能?
头文件的早期版本遇到了一个问题,NVIDIA(不正确地)发布了1.2 cl.h和1.1 ICD。C__头无法知道这是一个链接错误,因为cl.h报告一个1.2版本标志并盲目地调用clRetainDevice,这是分段错误,因为它没有在ICD中实现。
后续版本的头文件通过对设备版本执行版本检查并避免调用retain/release来解决这个问题。如果你是在这种情况下,那么下载一个最新版本的头文件应该可以解决这个问题:https://www.khronos.org/registry/cl/api/1.2/cl.hpp
如果这不起作用,调试器在哪里报告崩溃?
相关文章:
- JNI getObjectClass crashes VM
- dll + boost + VS2015 + WinXP == crashes
- Cocos2d Firebase Admob crashes
- Directx11 - DeviceContext::ClearRenderTargetView crashes
- OpenCV Harris Corner Detection crashes
- Qt Program Crashes aftes QTextEdit 通过 QTextCursor 进行修改
- OpenGL glBufferStorage crashes
- vector.push_back() crashes
- wxToggleButton::GetValue() crashes
- ListView_GetItemText crashes
- WaitForSingleObject crashes
- SGS4 android 4.4.2 - OGL ES2 crashes
- QAbstractListModel crashes
- RegisterClassEx crashes - C++
- ShellExecute crashes
- OpenCL: cl::getDevices crashes
- _strset_s crashes
- BHO HtmlEventObject crashes
- vswprintf crashes