2012-04-29 18 views
0

次のようにATIのFirePro V8750と私のマシン上で次のプログラムの出力は次のとおりです。clGetDeviceIDsはエラーコードでOpenCLのに失敗-30

"Couldn't find any devices:No error" 

(これは最初のclGetDeviceIDsの呼び出し時に起こります)。返されるエラーコードは-30です。どういう意味ですか?

私はデバイスが見つからない理由を理解できません。私は、CLinfo.exeが私が持っているIntel CPUと一緒に私のGPUを列挙していることを確認しました。ここで何が間違っているかについていくつか指摘できますか?

追加情報:

AMD APP SK 2.4

のFireProドライバ:8.911.3.3_VistaWin7_X32X64_135673

12-4_vista_win7_32_dd_ccc

のWindows 7 また、私はのFireProドライバは、いくつかのcomponenetsだことを言及しなければなりませんインストールに失敗しました。ここで

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 

#ifdef MAC 
#include <OpenCL/cl.h> 
#else 
#include <CL/cl.h> 
#endif 

int main() { 

/* Host/device data structures */ 
cl_platform_id platform; 
cl_device_id *devices; 
cl_uint num_devices, addr_data; 
cl_int i, err; 

/* Extension data */ 
char name_data[48], ext_data[4096]; 

/* Identify a platform */ 
err = clGetPlatformIDs(1, &platform, NULL);    
if(err < 0) {   
    perror("Couldn't find any platforms"); 
    exit(1); 
    } 

    /* Determine number of connected devices */ 
    err = clGetDeviceIDs(platform, CL_DEVICE_TYPE_GPU, 1, NULL, &num_devices); 
    if(err < 0) {     
    perror("Couldn't find any devices"); 
    exit(1); 
    } 

    /* Access connected devices */ 
    devices = (cl_device_id*)      
    malloc(sizeof(cl_device_id) * num_devices);   
    clGetDeviceIDs(platform, CL_DEVICE_TYPE_GPU,    
    num_devices, devices, NULL);    

    /* Obtain data for each connected device */ 
    for(i=0; i<num_devices; i++) { 

    err = clGetDeviceInfo(devices[i], CL_DEVICE_NAME,  
     sizeof(name_data), name_data, NULL);    
    if(err < 0) {  
     perror("Couldn't read extension data"); 
    exit(1); 
    } 
    clGetDeviceInfo(devices[i], CL_DEVICE_ADDRESS_BITS, 
     sizeof(ext_data), &addr_data, NULL);    

    clGetDeviceInfo(devices[i], CL_DEVICE_EXTENSIONS,   
     sizeof(ext_data), ext_data, NULL);   

    printf("NAME: %s\nADDRESS_WIDTH: %u\nEXTENSIONS: %s", 
     name_data, addr_data, ext_data); 
} 

free(devices); 
return 0; 
} 

はCLINFO出力です: GPU: enter image description here

CPU: enter image description here

2は、異なるバージョンを強調しているのはなぜ?

答えて

2

システムに複数のOpenCLプラットフォームがインストールされている可能性はありますか?したがって、おそらく最初のプラットフォームはCPUのみのプレイフォームなので、GPUデバイスのクエリは失敗します。

EDIT:

は、ここで問題です:clGetDeviceIDsへの最初の呼び出しは、num_entriesのために1を渡しますが、デバイスのポインタはNULL。 num_entriesに0を渡したいと思う。

+0

私にはAMDプラットフォームが1つしかありません。私もsdkに変更しました。2.4 – gpuguy

+0

clGetDeviceIDs(...)は-30を返します。それはどういう意味ですか? – gpuguy

+0

私はちょうどDevice_GPUの下に記載されているバージョンは、OpenCl 1.0 AMD-APP <923.1>、device_CPUの下ではClinfoの出力を見ました...それはOpenCl 1.2 AMD-APP <923.1>です。なぜこれはそうですか? – gpuguy

関連する問題