最終更新:
mikk_ni3_92 2010年05月08日(土) 14:15:37履歴
現在地 >> メニュー >> OpenCL >> OpenCL編01 >> OpenCL編01::まとめ2
#include <oclUtils.h>//OpenCL用ユーティティヘッダ
#include <iostream>
int main(int argc, const char** argv)
{
cl_platform_id clSelectedPlatformID = NULL;//プラットフォームID
cl_int ciErrNum = oclGetPlatformID (&clSelectedPlatformID);//プラットフォームIDの取得
oclCheckError(ciErrNum, CL_SUCCESS);//エラーチェック
char cBuffer[1024];
//プラットフォームの情報を取得
//名前
ciErrNum = clGetPlatformInfo (clSelectedPlatformID, CL_PLATFORM_NAME, sizeof(cBuffer), cBuffer, NULL);
if (ciErrNum == CL_SUCCESS)
{
std::cout <<"Platform NAME : "<< cBuffer << "\n";
}
//プラットフォームのバージョン
ciErrNum = clGetPlatformInfo (clSelectedPlatformID, CL_PLATFORM_VERSION, sizeof(cBuffer), cBuffer, NULL);
if (ciErrNum == CL_SUCCESS)
{
std::cout <<"Platform version : "<< cBuffer << "\n";
}
//OpenCLのデバイス情報
cl_uint ciDeviceCount;
cl_device_id *devices = NULL;
//使用可能なデバイスの数を取得
ciErrNum = clGetDeviceIDs (clSelectedPlatformID, CL_DEVICE_TYPE_ALL, 0, NULL, &ciDeviceCount);
std::cout << "there is " <<ciDeviceCount << " devices for OpenCL \n";
//デバイスの詳細な情報を得るためのデータ構造のメモリ確保
devices = new cl_device_id[ciDeviceCount];
if (devices == NULL)
{
std::cout << "Failed to allocate memory for devices\n";
shrEXIT(argc, argv);
}
ciErrNum = clGetDeviceIDs (clSelectedPlatformID, CL_DEVICE_TYPE_ALL, ciDeviceCount, devices, &ciDeviceCount);
if (ciErrNum == CL_SUCCESS)
{
for(unsigned int i = 0; i < ciDeviceCount; ++i )
{
std::cout << "---------------------------------\n";
clGetDeviceInfo(devices[i], CL_DEVICE_NAME, sizeof(cBuffer), &cBuffer, NULL);
std::cout << cBuffer << "\n---------------------------------\n";
oclPrintDevInfo(LOGCONSOLE, devices[i]);//デバイス情報を出力
}
}else
{
std::cerr << "error @ clGetDeviceIDs\n";
shrEXIT(argc, argv);
}
delete [] devices;
shrEXIT(argc, argv);
return 0;
}

