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 小时前
2026年全国青少年信息素养大赛初赛真题(算法应用主题赛C++初中组初赛真题3:文末附答案和解析)
c++·真题·答案·初赛·2026年·青少年信息素养大赛·初中组
轻颂呀3 小时前
C++11——并发库介绍
开发语言·c++
梓䈑4 小时前
【算法题攻略】快速排序 和 归并排序
数据结构·c++·排序算法
fan_music5 小时前
设计模式学习
c++·设计模式
小小编程路5 小时前
C++ 常用逻辑运算符
开发语言·c++·算法
私人珍藏库6 小时前
【PC】Ceru Music-聚合6大音乐平台-畅听全网歌曲
windows·工具·软件·win·多功能
码智社7 小时前
Python安装配置超详细教程(Windows+macOS,新手零踩坑)
windows·python·macos
‎ദ്ദിᵔ.˛.ᵔ₎7 小时前
C++ 智能指针
开发语言·c++
Lumbrologist7 小时前
【C++】零基础入门 · 第 4 节:循环结构(while、for、do-while)
开发语言·c++
我叫张土豆7 小时前
Windows + VS Code 编译 Linux 内核并用 QEMU 启动:从踩坑到跑通(任务 + 脚本全拆解)
linux·运维·windows