einpoklum Asked: 2025-02-10 20:37:12 +0800 CST2025-02-10 20:37:12 +0800 CST 2025-02-10 20:37:12 +0800 CST OpenCL 平台在执行过程中可以改变吗? 772 在执行某个进程时,后续调用的结果是否会clGetPlatformIds()改变?例如,平台是否会消失、出现、改变顺序或改变句柄(“id”)? 我问的当然是 OpenCL 标准保证什么或要求什么。 opencl 1 个回答 Voted Best Answer aland 2025-02-10T21:00:26+08:002025-02-10T21:00:26+08:00 我在标准中找不到有关此内容的任何规范部分。 实际上,Khronos OpenCL ICD 加载器仅初始化平台一次(Linux、Windows),因此如果执行通常的链接到 OpenCL 库的操作,平台列表及其索引不应改变。 但是,如果使用dlopen和dlclose来加载和卸载库,则两次调用之间libOpenCL的结果可能会发生变化(这是一种很容易破坏事物的方法)clGetPlatformIdssetenv("OCL_ICD_VENDORS", "/no/such/path", 1);
我在标准中找不到有关此内容的任何规范部分。
实际上,Khronos OpenCL ICD 加载器仅初始化平台一次(Linux、Windows),因此如果执行通常的链接到 OpenCL 库的操作,平台列表及其索引不应改变。
但是,如果使用
dlopen
和dlclose
来加载和卸载库,则两次调用之间libOpenCL
的结果可能会发生变化(这是一种很容易破坏事物的方法)clGetPlatformIds
setenv("OCL_ICD_VENDORS", "/no/such/path", 1);