在正确的架构中从bitcode加载OpenCL内核

时间:2014-04-07 12:15:18

标签: xcode macos opencl gpgpu

我正在使用Xcode(版本5.3)将OpenCL内核编译为bitcode,如WWDC 2013会话508中所述。

Xcode根据其目标架构生成4个不同的文件,每个文件都有不同的扩展名。

扩展名为:cl.gpu_32.bc,cl.gpu_64.bc,cl.x84_64.bc,cl.i386.bc

在会话508中,他们只加载一个文件(具有cl.gpu_32.bc扩展名的文件并使用它)。

是否可以生成支持与上下文关联的所有设备的单个cl_program?

我如何知道每个可用设备使用哪种架构?

读取所有文件并生成单个cl_program的示例代码非常有用。

2 个答案:

答案 0 :(得分:1)

Apple提供的示例代码涵盖了加载特定于平台的bitcode: https://developer.apple.com/library/mac/samplecode/OpenCLOfflineCompilation/Introduction/Intro.html#//apple_ref/doc/uid/DTS40011196

来自说明:

  

此示例演示了开发人员如何将OpenCL脱机使用   编译器将其人类可读的OpenCL源文件转换为   可运送的bitcode。它包含一个演示的Makefile示例   如何调用编译器,以及一个自包含的OpenCL程序   展示了如何从生成的bitcode构建程序。例子   介绍了在64位和32位CPU设备上使用bitcode的情况   作为32位GPU设备。

readme涵盖CLI参数,单文件C程序包含大量解释。

答案 1 :(得分:1)

似乎Apple示例代码(由Weichsel引用),所有需要的是使用clGetDeviceInfo获取CL_DEVICE_ADDRESS_BITS和CL_DEVICE_TYPE_GPU以区分所有可能的不同架构。