para - Está disponible OpenCL en iOS
opengl 3.3 mac (2)
Encontré este hilo en el foro ¿Son el IPad o el iPhone capaces de OpenCL? pero es bastante viejo Además, puedo recopilar que OpenCL está disponible para las bibliotecas del sistema de iOS pero no para el público. ¿Hay más información al respecto o alguna actualización?
Disponible solo a través de API privada.
Incluso con el uso de OpenCL
como marco privado, en iOS no le brindará los beneficios de GPU (u otros como DSP / FPGA si existen). Solo te da múltiples núcleos disponibles en el procesador de brazo. Ejecuté el siguiente código para verificar los dispositivos OpenCL accesibles en iOS y OS X.
Salida en iOS
ARM CPU Device
Salida en OS X
Radeon HD 4670
Intel (R) Core (TM) i3 CPU 540 @ 3.07GHz
Fuente con verificaciones de error excluidas. Usando los encabezados de OpenCL disponibles ( 1 ) y enlazando OpenCL desde (/Aplicaciones/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.1.sdk/System/Library/PrivateFrameworks)
#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'';
}
}
Sugerencia: A partir de ahora, necesitaremos usar OpenGL ( 2 ) o Accelerate framework ( 3 ). Aún no estoy seguro, por qué motivo / propósito se copia OpenCL como marco privado en iPhone.