2012-10-02 30 views

Respuesta

5

Debe elegir entre plataformas y dispositivos disponibles en su computadora cuando crea el contexto OpenCL. Puede obtener información sobre plataformas y dispositivos con clGetPlatformInfo y clGetDeviceInfo. Puede encontrar códigos de muestras en NVIDIA y AMD SDK para listar plataformas y dispositivos.

Para dispositivos AMD (gDEBugger, Code XL), NVIDIA (Visual Profiler) e Intel (GPA Intel), puede usar herramientas de creación de perfiles.

0

Puede simplemente usar TechPowerUp GPU-Z para ver si hay algunas cargas de trabajo en la GPU. otra solución: puede especificar explícitamente si está usando la GPU en el tipo de dispositivo CL_Device_Type_GPU.

0

Uso MenuMeters en mi Macbook Pro & Mac Pro: si la CPU está siendo utilizada, es obvio. (No sé si las herramientas de perfilado trabajarían para mí cuando se utiliza OpenCL bajo XCode ....)

4

Al crear su contexto, utilizar clCreateContextFromType donde se puede pasar el CL_DEVICE_TYPE_GPU bandera , que especifica que quiere GPU solamente. algo como esto garantías el uso de una GPU (se puede estar 100% seguro):

cl_uint num_platforms = 0; 
clGetPlatformIDs(0, NULL, &num_platforms); 
cl_platform_id* platform = malloc(sizeof(cl_platform_id) * num_platforms); 
cl_context_properties cprops[3] = { CL_CONTEXT_PLATFORM, (cl_context_properties)platform[0], 0 }; 
ctx = clCreateContextFromType(cprops, CL_DEVICE_TYPE_GPU, NULL, NULL, &err); 

Si ha ya su contexto y dispositivos establecido, se puede consultar el tipo de un dispositivo de este modo:

cl_device_type dev_type; 
clGetDeviceInfo(my_device, CL_DEVICE_TYPE, sizeof(dev_type), &dev_type, NULL); 
if (dev_type == CL_DEVICE_TYPE_GPU) { 
    printf("I'm 100%% sure this device is a GPU"); 
} 

Todo lo que conecte a una cola de comandos creada en este dispositivo se ejecutará en la GPU.

Cuestiones relacionadas