opencl-runtime 是一个面向跨厂商 OpenCL 运行时管理与内核开发的专用技能,目标是在 NVIDIA、AMD、Intel 等平台上实现可移植的 GPU 编程。
用途 该技能用于 AI 驱动的 OpenCL 开发操作,覆盖从设备查询到内核编译运行的完整流程,帮助开发者编写可在不同厂商设备上运行的 OpenCL 代码。
主要能力
- 平台与设备枚举:查询可用的 OpenCL 平台与设备,获取平台名称、设备类型、计算单元数、最大工作组大小、全局内存、扩展列表等信息,也可通过 clinfo 工具列出设备。
- OpenCL 内核代码生成:生成可移植的 OpenCL C 内核,包括基础向量加法、二维矩阵乘法、使用本地内存的归约求和等模式。
- 上下文与命令队列管理:创建 OpenCL 上下文,创建命令队列(OpenCL 1.x 使用 clCreateCommandQueue,2.0+ 使用 clCreateCommandQueueWithProperties),支持性能分析、乱序执行等属性。
- 程序编译与缓存:从源码创建程序,使用编译选项构建,出错时获取构建日志,提取编译后的二进制并保存,也可从缓存二进制加载程序。
- NDRange 配置:配置一维和二维工作维度,按工作组大小向上取整,查询设备最大工作组大小。
- 内存对象管理:创建缓冲区(只读、只写、带主机指针拷贝等),写入、读取缓冲区,映射缓冲区进行直接访问。
- 厂商扩展处理:检查设备扩展字符串,处理如 cl_khr_fp16、cl_nv_device_attribute_query、cl_amd_device_attribute_query 等厂商特定功能。
- OpenCL 版本支持:查询设备 OpenCL 版本,支持 2.0+ 的共享虚拟内存(SVM)和 3.0 的原子内存能力等可选特性。
使用方式 该技能可与 opencl-application-development.js(OpenCL 应用开发)和 hip-porting-cross-platform.js(跨平台移植)等流程集成。输出为结构化 JSON,例如设备枚举操作会返回平台、设备名称、类型、计算单元数、最大工作组大小、全局内存和扩展列表等字段。
适用场景 适用于需要在多厂商 GPU 或 CPU 上开发、移植和优化 OpenCL 应用的场景,包括设备能力查询、可移植内核编写、编译缓存管理以及厂商扩展适配。
限制 OpenCL 2.0+ 特性并非在所有平台可用;厂商扩展不具备可移植性;二进制缓存要求相同设备与驱动;SVM 需要 OpenCL 2.0+ 且设备支持。使用前需具备 OpenCL SDK(NVIDIA、AMD 或 Intel)、OpenCL ICD Loader、支持 OpenCL 的 GPU 或 CPU,以及 clinfo 工具。