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
相关推荐
壹号用户4 分钟前
缺省参数和函数重载
c++·学习
代码中介商12 分钟前
C++11移动语义:右值引用与高效资源转移
开发语言·c++
我不是懒洋洋19 分钟前
从零实现WebSocket:实时通信的核心协议
c++
Hello:CodeWorld20 分钟前
深入浅出 C++:静态多态与动态多态的业务应用场景与源码级实战
开发语言·c++·架构
星恒随风21 分钟前
C++入门(一):第一个 C++ 程序、命名空间、输入输出和缺省参数
开发语言·c++·笔记·学习
爱和冰阔落22 分钟前
Linux/Windows 双平台通关:YOLOv8 目标检测从模型选型到跨平台部署实战
linux·windows·yolo
thisiszdy25 分钟前
<C++&C#> lambda表达式
java·c++·c#
晚风叙码26 分钟前
C++类和对象(中)| 深挖四大默认成员函数:构造/析构/拷贝/赋值重载原理全解
c++
七仔啊31 分钟前
windows server服务器验机流程
运维·服务器·windows
混迹中的咸鱼33 分钟前
游戏开发核心架构指南
c++·游戏·架构