2012-10-02 16 views

risposta

5

È necessario scegliere tra piattaforme e dispositivi disponibili sul computer quando si crea il contesto OpenCL. È possibile ottenere informazioni su piattaforme e dispositivi con clGetPlatformInfo e clGetDeviceInfo. È possibile trovare codici di esempio in NVIDIA e AMD SDK per elencare piattaforme e dispositivi.

Per i dispositivi AMD (gDEBugger, Code XL), NVIDIA (Visual Profiler) e Intel (Intel GPA), è possibile utilizzare strumenti di profilatura.

0

È sufficiente utilizzare la GPU-Z di TechPowerUp per verificare se ci sono carichi di lavoro sulla GPU. un'altra soluzione: è possibile specificare esplicitamente se si sta utilizzando la GPU nel tipo di dispositivo CL_Device_Type_GPU.

0

Uso MenuMeters sul mio Macbook Pro & Mac Pro: se la CPU è in uso è ovvio. (Non so se gli strumenti di profiling avrebbe funzionato per me quando si utilizza OpenCL sotto XCode ....)

4

Quando si crea il contesto, utilizzare clCreateContextFromType dove è possibile passare il flag CL_DEVICE_TYPE_GPU, che specifica che si desidera Solo GPU. qualcosa di simile garanzie l'uso di una GPU (si può essere sicuri al 100%):

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); 

Se avete già il vostro contesto e dispositivi di set up, è possibile interrogare il tipo di un dispositivo in questo 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"); 
} 

Tutto ciò che si accoderà a una coda di comandi creata su questo dispositivo verrà eseguito su GPU.

Problemi correlati