规范OpenCL应用的运行和开发环境
在本论坛上很多兄弟贴出的问题,似乎和 OpenCL 的运行环境有关, 还没到需要 debugging 代码的那一步. 为帮助你规范你的OpenCL 环境, 这里提出几个要注意的地方:
1. OpenCL 应用的运行环境是由 GPU 驱动的安装过程确定的, 比如你的机器上有 AMD的集显或独显, 装完OEM厂商提供的或AMD网上下载的驱动后, 你的 OpenCL 应用的运行环境就具备了.
2. OpenCL 应用的开发环境是有各厂商的开发包提供的, 需要从各厂商的网站下载安装, 如 AMD APP SDK 提供 OpenCL 应用的 C/C++ 开发环境(头文件,export 库和 代码例子). Intel 和 Nvidia 和 OpenCL 开发包类似,需要单独下载安装.
3. 符合 OpenCL 标准的程序通常能用各个厂家的 OpenCL SDK 进行编译, 但如果程序中用了厂家的 OpenCL 扩展,则只能用该厂家的OpenCL SDK进行编译,并且只能在该厂家的 OpenCl Runtime 上运行,如使用CL_MEM_PERSISTENT_MEM_AMD 类型设备内存的代码, 只能在 AMD 的OpenCL 环境上编译和运行
4. 很多机器上可能装备了多个厂家的 GPU, 如 Intel 的集显加 AMD 的独显, 这时你的机器上很可能同时具备 Intel 和 AMD 的运行环境, 你的 OpenCL 代码需要明白自己正使用的是那个厂家的 OpenCL Platform 和 OpenCL device. AMD 的 OpenCL 运行环境是最先支持 OpenCL 1.2 的, 成熟度最高. 在测试你的 OpenCL 代码时需要确定你是使用的哪个 OpenCL Runtime 出的问题.