Skip to content

Commit

Permalink
task00 done
Browse files Browse the repository at this point in the history
  • Loading branch information
apat1n committed Sep 20, 2024
1 parent b14c481 commit ba0ce98
Showing 1 changed file with 46 additions and 1 deletion.
47 changes: 46 additions & 1 deletion src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -68,23 +68,68 @@ int main() {
// TODO 1.2
// Аналогично тому, как был запрошен список идентификаторов всех платформ - так и с названием платформы, теперь, когда известна длина названия - его можно запросить:
std::vector<unsigned char> platformName(platformNameSize, 0);
// clGetPlatformInfo(...);
OCL_SAFE_CALL(clGetPlatformInfo(platform, CL_PLATFORM_NAME, platformNameSize, platformName.data(), nullptr));
std::cout << " Platform name: " << platformName.data() << std::endl;

// TODO 1.3
// Запросите и напечатайте так же в консоль вендора данной платформы
size_t platformVendorSize = 0;
OCL_SAFE_CALL(clGetPlatformInfo(platform, CL_PLATFORM_VENDOR, 0, nullptr, &platformVendorSize));

std::vector<unsigned char> platformVendor(platformVendorSize, 0);
OCL_SAFE_CALL(clGetPlatformInfo(platform, CL_PLATFORM_VENDOR, platformVendorSize, &platformVendor[0], nullptr));
std::cout << " Platform vendor: " << platformVendor.data() << std::endl;

// TODO 2.1
// Запросите число доступных устройств данной платформы (аналогично тому, как это было сделано для запроса числа доступных платформ - см. секцию "OpenCL Runtime" -> "Query Devices")
cl_uint devicesCount = 0;
OCL_SAFE_CALL(clGetDeviceIDs(platform, CL_DEVICE_TYPE_ALL, 0, nullptr, &devicesCount));
std::cout << " Number of OpenCL devices: " << platformsCount << std::endl;

std::vector<cl_device_id> devices(devicesCount);
OCL_SAFE_CALL(clGetDeviceIDs(platform, CL_DEVICE_TYPE_ALL, devicesCount, devices.data(), 0));

for (int deviceIndex = 0; deviceIndex < devicesCount; ++deviceIndex) {
std::cout << " Device #" << (deviceIndex + 1) << "/" << devicesCount << std::endl;
cl_device_id device = devices[deviceIndex];
// TODO 2.2
// Запросите и напечатайте в консоль:
// - Название устройства
size_t deviceNameSize = 0;
OCL_SAFE_CALL(clGetDeviceInfo(device, CL_DEVICE_NAME, 0, nullptr, &deviceNameSize));
std::vector<unsigned char> deviceName(deviceNameSize, 0);
OCL_SAFE_CALL(clGetDeviceInfo(device, CL_DEVICE_NAME, deviceNameSize, deviceName.data(), nullptr));
std::cout << " Device name: " << deviceName.data() << std::endl;
// - Тип устройства (видеокарта/процессор/что-то странное)
cl_device_type deviceType = 0;
OCL_SAFE_CALL(clGetDeviceInfo(device, CL_DEVICE_TYPE, sizeof(deviceType), &deviceType, nullptr));
std::cout << " Device type: ";
switch (deviceType)
{
case CL_DEVICE_TYPE_CPU:
std::cout << "CPU";
break;
case CL_DEVICE_TYPE_GPU:
std::cout << "GPU";
break;
case CL_DEVICE_TYPE_ACCELERATOR:
std::cout << "other accelerator";
break;
default:
std::cout << "unknown";
break;
}
std::cout << std::endl;
// - Размер памяти устройства в мегабайтах
cl_ulong deviceMemSize;
OCL_SAFE_CALL(clGetDeviceInfo(device, CL_DEVICE_GLOBAL_MEM_SIZE, sizeof(deviceMemSize), &deviceMemSize, nullptr));
std::cout << " Device memory size (Mb): " << (deviceMemSize >> 20) << std::endl;
// - Еще пару или более свойств устройства, которые вам покажутся наиболее интересными
size_t openCLVersionSize = 0;
OCL_SAFE_CALL(clGetDeviceInfo(device, CL_DEVICE_VERSION, 0, nullptr, &openCLVersionSize));
std::vector<unsigned char> openCLVersion(openCLVersionSize, 0);
OCL_SAFE_CALL(clGetDeviceInfo(device, CL_DEVICE_VERSION, openCLVersionSize, openCLVersion.data(), nullptr));
std::cout << " OpenCL version: " << openCLVersion.data() << std::endl;
}
}

Expand Down

0 comments on commit ba0ce98

Please sign in to comment.