gpt4 book ai didi

c++ - OpenCL clGetPlatformIDs 仅在从 Visual Studio 运行时导致访问冲突

转载 作者:行者123 更新时间:2023-11-30 03:33:02 25 4
gpt4 key购买 nike

这对我来说很奇怪。我目前正在从我最近迁移到 VS2015 的旧仓库中提取一个项目。解决方案仍然构建并且可执行文件有效,但是在 visual studio 中运行时,我在尝试从 0x000008E0 读取的 clGetPlatformIDs() 调用中遇到访问冲突。

老实说,我不知道它可能是什么,因为它非常奇怪:构建本身可以工作,但不是来自 VS。调试通过我可以确认所有参数都符合预期但功能仍然失败。我将 OpenCL 实现更新为英特尔的 OpenCL SDK 6.3 版,但这并没有解决问题,而且我没有符号可以更深入地研究该功能。

代码很简单,但我还是贴在了下面。

//Get Platforms
cl_platform_id * platforms = new cl_platform_id[6];
cl_uint numPlatforms = 0;
cl_uint numPlatformsToCheck = 6;
error = clGetPlatformIDs(numPlatformsToCheck, platforms, &numPlatforms);
printCLError( "Getting Platforms", error );

最佳答案

所以我遇到了同样的问题:我在任何 OpenCL 函数上都遇到了访问冲突异常。全新安装英特尔 OpenCL SDK,所有驱动程序都是最新的。只有在 Visual Studio 中运行时才会发生。

I found a solution.

igdrcl64.dll 中会存在访问冲突,从而导致异常。这个库是 IntelHD Graphics 驱动程序的一部分,显然曾经是 DLL 中的一个错误。但是我没有安装这个驱动程序(使用 NVIDIA 显卡),而且这个错误现在应该已经修复了。原来 IntelHD 驱动程序的卸载程序并没有删除所有它的 DLL,所以有问题的 DLL 留在我的机器上并且没有更新。

修复:手动删除 DLL(仅当您不使用 IntelHD 显卡时!)

在 64 位版本的 Windows 操作系统上:
C:\Windows\System32\igdbcl64.dll
C:\Windows\System32\igdfcl64.dll
C:\Windows\System32\igdrcl64.dll
C:\Windows\SysWOW64\igdbcl32.dll
C:\Windows\SysWOW64\igdfcl32.dll
C:\Windows\SysWOW64\igdrcl32.dll

在 32 位版本的 Windows 操作系统上:
C:\Windows\System32\igdbcl32.dll
C:\Windows\System32\igdfcl32.dll
C:\Windows\System32\igdrcl32.dll

我希望这会对某人有所帮助。

关于c++ - OpenCL clGetPlatformIDs 仅在从 Visual Studio 运行时导致访问冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43241488/

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