146 lines
7 KiB
MQL5
146 lines
7 KiB
MQL5
|
void OnStart(){
|
||
|
//---
|
||
|
int dCount=(int)CLGetInfoInteger(0,CL_DEVICE_COUNT);
|
||
|
Print("dCount =",dCount);
|
||
|
uchar data[1024];
|
||
|
int DataInt[1024];
|
||
|
uint size;
|
||
|
string Result;
|
||
|
{for(int i=0;i<dCount;i++)
|
||
|
{
|
||
|
int clCtx=CLContextCreate(i);
|
||
|
{if(clCtx==-1)
|
||
|
{
|
||
|
Print("============== DEVICE "+IntegerToString(i)+": ERROR in CLContextCreate"+" =================");
|
||
|
}else{
|
||
|
Print("============== DEVICE "+IntegerToString(i)+" =================");
|
||
|
//--- Get Info String
|
||
|
Result="";
|
||
|
CLGetInfoString(clCtx,CL_DEVICE_NAME,Result);
|
||
|
Print("DEVICE_NAME=",Result);
|
||
|
//---
|
||
|
Result="";
|
||
|
CLGetInfoString(clCtx,CL_DEVICE_VENDOR,Result);
|
||
|
Print("DEVICE_VENDOR=",Result);
|
||
|
//---
|
||
|
Result="";
|
||
|
CLGetInfoString(clCtx,CL_DEVICE_PROFILE,Result);
|
||
|
Print("DEVICE_PROFILE=",Result);
|
||
|
//---
|
||
|
Result="";
|
||
|
CLGetInfoString(clCtx,CL_DEVICE_VERSION,Result);
|
||
|
Print("DEVICE_VERSION=",Result);
|
||
|
//---
|
||
|
Result="";
|
||
|
CLGetInfoString(clCtx,CL_DEVICE_EXTENSIONS,Result);
|
||
|
Print("DEVICE_EXTENSIONS=",SpaceExch(Result));
|
||
|
//---
|
||
|
Result="";
|
||
|
CLGetInfoString(clCtx,CL_DRIVER_VERSION,Result);
|
||
|
Print("DRIVER_VERSION=",Result);
|
||
|
//---
|
||
|
Result="";
|
||
|
CLGetInfoString(clCtx,CL_DEVICE_BUILT_IN_KERNELS,Result);
|
||
|
Print("DEVICE_BUILT_IN_KERNELS=",Result);
|
||
|
//---
|
||
|
Result="";
|
||
|
CLGetInfoString(clCtx,CL_DEVICE_OPENCL_C_VERSION,Result);
|
||
|
Print("DEVICE_OPENCL_C_VERSION=",Result);
|
||
|
//---
|
||
|
Result="";
|
||
|
CLGetInfoString(clCtx,CL_PLATFORM_PROFILE,Result);
|
||
|
Print("PLATFORM_PROFILE=",Result);
|
||
|
//---
|
||
|
Result="";
|
||
|
CLGetInfoString(clCtx,CL_PLATFORM_VERSION,Result);
|
||
|
Print("PLATFORM_VERSION=",Result);
|
||
|
//---
|
||
|
Result="";
|
||
|
CLGetInfoString(clCtx,CL_PLATFORM_EXTENSIONS,Result);
|
||
|
Print("PLATFORM_EXTENSIONS=",SpaceExch(Result));
|
||
|
//--- Get Device Info
|
||
|
ZeroMemory(data);
|
||
|
size=0;
|
||
|
CLGetDeviceInfo(clCtx,CL_DEVICE_VENDOR,data,size);
|
||
|
Print("DEVICE_VENDOR[",size,"]=",CharArrayToString(data));
|
||
|
ZeroMemory(data);
|
||
|
size=0;
|
||
|
CLGetDeviceInfo(clCtx,CL_DEVICE_MAX_COMPUTE_UNITS,data,size);
|
||
|
Print("DEVICE_MAX_COMPUTE_UNITS["+IntegerToString(size)+"]="
|
||
|
+IntegerToString(//256*256*256*256*(ulong)data[4]+
|
||
|
256*256*256*(ulong)data[3]+
|
||
|
256*256*(ulong)data[2]+
|
||
|
256*(ulong)data[1]+
|
||
|
(ulong)data[0]));
|
||
|
ZeroMemory(data);
|
||
|
size=0;
|
||
|
CLGetDeviceInfo(clCtx,CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS,data,size);
|
||
|
Print("DEVICE_MAX_WORK_ITEM_DIMENSIONS["+IntegerToString(size)+"]="
|
||
|
+IntegerToString( 256*256*256*(ulong)data[3]+
|
||
|
256*256*(ulong)data[2]+
|
||
|
256*(ulong)data[1]+
|
||
|
(ulong)data[0]));
|
||
|
ZeroMemory(data);
|
||
|
size=0;
|
||
|
CLGetDeviceInfo(clCtx,CL_DEVICE_MAX_WORK_GROUP_SIZE,data,size);
|
||
|
Print("DEVICE_MAX_WORK_GROUP_SIZE["+IntegerToString(size)+"]="
|
||
|
+IntegerToString( 256*256*256*(ulong)data[3]+
|
||
|
256*256*(ulong)data[2]+
|
||
|
256*(ulong)data[1]+
|
||
|
(ulong)data[0]));
|
||
|
ZeroMemory(data);
|
||
|
size=0;
|
||
|
CLGetDeviceInfo(clCtx,CL_DEVICE_MAX_WORK_ITEM_SIZES,data,size);
|
||
|
Print("DEVICE_MAX_WORK_ITEM_SIZES["+IntegerToString(size)+"]="
|
||
|
+IntegerToString( 256*256*256*(ulong)data[3]+
|
||
|
256*256*(ulong)data[2]+
|
||
|
256*(ulong)data[1]+
|
||
|
(ulong)data[0]));
|
||
|
ZeroMemory(data);
|
||
|
size=0;
|
||
|
CLGetDeviceInfo(clCtx,CL_DEVICE_MAX_CLOCK_FREQUENCY,data,size);
|
||
|
Print("DEVICE_MAX_CLOCK_FREQUENCY["+IntegerToString(size)+"]="
|
||
|
+IntegerToString( 256*256*256*(ulong)data[3]+
|
||
|
256*256*(ulong)data[2]+
|
||
|
256*(ulong)data[1]+
|
||
|
(ulong)data[0]));
|
||
|
ZeroMemory(data);
|
||
|
size=0;
|
||
|
CLGetDeviceInfo(clCtx,CL_DEVICE_GLOBAL_MEM_SIZE,data,size);
|
||
|
Print("DEVICE_GLOBAL_MEM_SIZE["+IntegerToString(size)+"]="
|
||
|
+IntegerToString( 256*256*256*(ulong)data[3]+
|
||
|
256*256*(ulong)data[2]+
|
||
|
256*(ulong)data[1]+
|
||
|
(ulong)data[0]));
|
||
|
ZeroMemory(data);
|
||
|
size=0;
|
||
|
CLGetDeviceInfo(clCtx,CL_DEVICE_LOCAL_MEM_SIZE,data,size);
|
||
|
Print("DEVICE_LOCAL_MEM_SIZE["+IntegerToString(size)+"]="
|
||
|
+IntegerToString( 256*256*256*(ulong)data[3]+
|
||
|
256*256*(ulong)data[2]+
|
||
|
256*(ulong)data[1]+
|
||
|
(ulong)data[0]));
|
||
|
//--- Get Info Integer
|
||
|
Print("DEVICE_TYPE="+EnumToString((ENUM_CL_DEVICE_TYPE)CLGetInfoInteger(clCtx,CL_DEVICE_TYPE)));
|
||
|
Print("DEVICE_VENDOR_ID="+IntegerToString(CLGetInfoInteger(clCtx,CL_DEVICE_VENDOR_ID)));
|
||
|
Print("DEVICE_MAX_COMPUTE_UNITS="+IntegerToString(CLGetInfoInteger(clCtx,CL_DEVICE_MAX_COMPUTE_UNITS)));
|
||
|
Print("DEVICE_MAX_CLOCK_FREQUENCY="+IntegerToString(CLGetInfoInteger(clCtx,CL_DEVICE_MAX_CLOCK_FREQUENCY)));
|
||
|
Print("DEVICE_GLOBAL_MEM_SIZE="+IntegerToString(CLGetInfoInteger(clCtx,CL_DEVICE_GLOBAL_MEM_SIZE)));
|
||
|
Print("DEVICE_LOCAL_MEM_SIZE="+IntegerToString(CLGetInfoInteger(clCtx,CL_DEVICE_LOCAL_MEM_SIZE)));
|
||
|
Print("BUFFER_SIZE="+IntegerToString(CLGetInfoInteger(clCtx,CL_BUFFER_SIZE)));
|
||
|
Print("DEVICE_MAX_WORK_GROUP_SIZE="+IntegerToString(CLGetInfoInteger(clCtx,CL_DEVICE_MAX_WORK_GROUP_SIZE)));
|
||
|
Print("KERNEL_WORK_GROUP_SIZE="+IntegerToString(CLGetInfoInteger(clCtx,CL_KERNEL_WORK_GROUP_SIZE)));
|
||
|
Print("KERNEL_LOCAL_MEM_SIZE="+IntegerToString(CLGetInfoInteger(clCtx,CL_KERNEL_LOCAL_MEM_SIZE)));
|
||
|
Print("KERNEL_PRIVATE_MEM_SIZE="+IntegerToString(CLGetInfoInteger(clCtx,CL_KERNEL_PRIVATE_MEM_SIZE)));
|
||
|
}}//if(clCtx==-1)
|
||
|
}}//for(int i=0;i<dCount;i++)
|
||
|
}//OnStart()
|
||
|
//
|
||
|
string SpaceExch(string iStr){
|
||
|
{if(StringReplace(iStr," ","\n")>0)
|
||
|
{
|
||
|
return("\n"+iStr);
|
||
|
}else{
|
||
|
return("");
|
||
|
}}//if(StringReplace(iStr," ","\n")>0)
|
||
|
}//SpaceExch()
|