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 小时前
深入 C++ STL:从 unordered_set与unordered_map到底层哈希表的原理与实现
数据结构·c++·散列表
运维全栈笔记2 小时前
Windows 安装 WSL2 并运行 Ubuntu 24.04 指南
linux·网络·windows·ubuntu
FlightYe2 小时前
音视频修炼之基础理论(五):AAC格式与解析
android·linux·c++·音视频·aac
ShineWinsu3 小时前
对于MySQL:数据库的操作的解析
linux·数据库·c++·mysql·面试·笔试·库的操作
云小逸4 小时前
C++ 第一阶段:对象、内存与生命周期
开发语言·c++
夜航海图4 小时前
S-57 数据解剖:把一个 ENC 文件拆给你看
c++
(Charon)4 小时前
【C++】网络缓冲区设计(三):Chain Buffer链式缓冲区、动态扩容与跨节点读写
服务器·c++
我命由我123454 小时前
Windows 操作系统 - 启用 D 盘虚拟内存
java·运维·服务器·windows·学习·java-ee·运维开发
Beyond_System|系统之外5 小时前
Windows 10/11 安装与配置 Zig 0.13.0:从下载到编译验证的完整教程
windows·编译工具
软行5 小时前
LeetCode 每日一题 3876. 构造奇偶一致的数组 II
c++·算法·leetcode