在iOS上可用的OpenCL

我在论坛上发现这个线程是IPad或IPhone的OpenCL的能力? 但它是相当古老的。 另外,我可以收集OpenCL可用于iOS的系统库,但不公开。 有没有更多的信息在这方面或任何更新?

即使使用OpenCL作为私有框架, 在iOS上它也不会给你GPU (或者其他像DSP / FPGA(如果存在的话)) 的好处 。 它只是给你arm处理器上的多个核心。 我运行了下面的代码来validation在iOS和OS X中可访问的OpenCL设备。

在iOS上输出

ARM CPU设备

在OS X上输出

Radeon HD 4670
Intel(R)Core TM i3 CPU540 @ 3.07GHz

排除错误检查的源代码。 使用OpenCL标头( 1 )并链接(/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.1.sdk/System/Library/PrivateFrameworks)中的OpenCL,

 #include "OpenCL/cl.h" #include <iostream> cl_context_properties prop[] = { CL_CONTEXT_PLATFORM, 0, 0 }; //get num of platforms cl_uint num; cl_int err = clGetPlatformIDs(0, 0, &num); //get each platform cl_platform_id *platforms = new cl_platform_id[num]; err = clGetPlatformIDs(num, platforms, &num); //create context for platform prop[1] = (cl_context_properties) platforms[0]; cl_context context = clCreateContextFromType(prop, CL_DEVICE_TYPE_ALL, NULL, NULL, &err); //get num devices size_t numDevices=0; clGetContextInfo(context, CL_CONTEXT_DEVICES, 0, NULL, &numDevices); cl_device_id *devices = new cl_device_id[ numDevices ]; //get every device clGetContextInfo(context, CL_CONTEXT_DEVICES, numDevices, devices, 0); //get info of every device for( int idx=0; idx < numDevices; ++idx) { size_t bufSize=0; clGetDeviceInfo(devices[idx], CL_DEVICE_NAME, 0, NULL, &bufSize); if( bufSize > 0 ) { char* devName = new char[ bufSize ]; clGetDeviceInfo(devices[idx], CL_DEVICE_NAME, bufSize, devName, 0); std::cout << "Device Name: " << devName << '\n'; } } 

build议:到目前为止,我们将需要使用OpenGL( 2 )或Accelerate框架( 3 )。 仍然不确定,OpenCL作为私人框架复制到iPhone上的原因/目的。

仅通过私人API提供。

Fe https://github.com/linusyang/opencl-test-ios