GraphicsMagick 的 OpenCL 开发记录(二十四)

文章目录

<2022-04-18 周一>

关于clGetPlatformIDs()windows下的怪现象

我在调查R6025的问题,调试发现LoadOpenCLDevices()函数中:

cpp 复制代码
number_platforms=0;
if (openCL_library->clGetPlatformIDs(0,NULL,&number_platforms) != CL_SUCCESS)
  return;

number_platforms的返回值在ImageMagick中为1,而在GraphicsMagick中却为2,同样的代码在同一台电脑上为什么返回的值不同呢?排除了编译选项的问题,查看了clGetPlatformIDs()的函数说明都没有找到问题,最后发现是ImageMagickvs2017编译环境,而GraphicsMagickvs2022编译环境,将它们都改用vs2017环境后调试状态下number_platforms的值都为1了。

但是如果number_platforms1的话,在本机电脑上实际上硬件加速是失败的,可是直接运行的话确实是走的硬件加速流程,难道代码中clGetPlatformIDs()在调试状态和非调试状态下的值不一样?添加日志输出后发现确实是这样,那么总结一下clGetPlatformIDs()的怪现象:

  1. vs2017,调试,number_platforms值为1
  2. vs2022,调试,number_platforms值为2
  3. vs2017,运行,number_platforms值为2
相关推荐
尽兴-2 分钟前
Elasticsearch 8.14.3 安装部署实战:Windows/Linux + Kibana + 常用插件
linux·windows·elasticsearch·kinana·es 浏览器插件
Digitally9 分钟前
如何在重装Windows操作系统后永久删除数据
windows
cm6543209 分钟前
C++中的空对象模式
开发语言·c++·算法
2401_8512729910 分钟前
C++代码规范化工具
开发语言·c++·算法
YangVijay17 分钟前
CRTP(Curious Recurring Template Pattern)奇异递归模板模式的理解和应用
c++·crtp
Byte不洛20 分钟前
基于 C++ 手写 HTTP 服务器:从请求解析到响应构建全流程解析
linux·网络·c++·计算机网络·http
旖-旎25 分钟前
前缀和(和为K的子数组)(5)
c++·算法·leetcode·前缀和·哈希算法·散列表
程序猿阿伟26 分钟前
《OpenClaw端口通信失效全解:监听修改与防火墙规则落地指南》
服务器·数据库·windows
不染尘.34 分钟前
背包问题BP
开发语言·c++·算法
2401_8747325336 分钟前
基于C++的爬虫框架
开发语言·c++·算法