zoukankan      html  css  js  c++  java
  • OpenCL 查询平台和设备

    ▶ 查询平台和设备的代码以结果,放在这里方便以后逐渐扩充和查询(没有营养)

     1 #include <stdio.h>  
     2 #include <stdlib.h>
     3 #include <string.h>
     4 #include <cl.h>
     5 
     6 int main()
     7 {
     8     int i, j;
     9     char info[1024];
    10 
    11     cl_int status;
    12     cl_uint nPlatform;
    13     cl_platform_id *listPlatform;
    14     cl_uint nDevice;
    15     cl_device_id *listDevice;
    16     clGetPlatformIDs(0, NULL, &nPlatform);
    17     listPlatform = (cl_platform_id*)malloc(nPlatform * sizeof(cl_platform_id));
    18     clGetPlatformIDs(nPlatform, listPlatform, NULL);
    19 
    20     for (i = 0; i < nPlatform; i++)
    21     {
    22         clGetPlatformInfo(listPlatform[i], CL_PLATFORM_NAME, 1024, info, NULL);
    23         printf("Platfom[%d]:
    	Name		%s", i, info);
    24         clGetPlatformInfo(listPlatform[i], CL_PLATFORM_VERSION, 1024, info, NULL);
    25         printf("
    	Version		%s", info);
    26         //clGetPlatformInfo(listPlatform[i], CL_PLATFORM_VENDOR, 1024, info, NULL);
    27         //printf("
    	Vendor		%s", info);
    28         //clGetPlatformInfo(listPlatform[i], CL_PLATFORM_PROFILE, 1024, info, NULL);
    29         //printf("
    	Profile		%s", info);
    30         clGetPlatformInfo(listPlatform[i], CL_PLATFORM_EXTENSIONS, 1024, info, NULL);
    31         printf("
    	Extension	%s", info);
    32 
    33         clGetDeviceIDs(listPlatform[i], CL_DEVICE_TYPE_ALL, 0, NULL, &nDevice);
    34         listDevice = (cl_device_id*)malloc(nDevice * sizeof(cl_device_id));
    35         clGetDeviceIDs(listPlatform[i], CL_DEVICE_TYPE_ALL, nDevice, listDevice, NULL);
    36 
    37         for (j = 0; j < nDevice; j++)
    38         {
    39             printf("
    ");
    40             clGetDeviceInfo(listDevice[j], CL_DEVICE_NAME, 1024, info, NULL);
    41             printf("
    	Device[%d]:
    	Name		%s", j, info);
    42             clGetDeviceInfo(listDevice[j], CL_DEVICE_VERSION, 1024, info, NULL);
    43             printf("
    	Version		%s", info);
    44             clGetDeviceInfo(listDevice[j], CL_DEVICE_TYPE, 1024, info, NULL);
    45             switch (info[0])
    46             {
    47             case CL_DEVICE_TYPE_DEFAULT:strcpy_s(info, "DEFAULT"); break;
    48             case CL_DEVICE_TYPE_CPU:strcpy_s(info, "CPU"); break;
    49             case CL_DEVICE_TYPE_GPU:strcpy_s(info, "GPU"); break;
    50             case CL_DEVICE_TYPE_ACCELERATOR:strcpy_s(info, "ACCELERATOR"); break;
    51             case CL_DEVICE_TYPE_CUSTOM:strcpy_s(info, "CUSTOM"); break;
    52             case CL_DEVICE_TYPE_ALL:strcpy_s(info, "ALL"); break;
    53             }
    54             printf("
    	Type		%s", info);
    55 
    56             cl_device_svm_capabilities svm;
    57             clGetDeviceInfo(listDevice[j], CL_DEVICE_VERSION, sizeof(cl_device_svm_capabilities), &svm, NULL);
    58             info[0] = '';
    59             if (svm & CL_DEVICE_SVM_COARSE_GRAIN_BUFFER)
    60                 strcat_s(info, "COARSE_GRAIN_BUFFER ");
    61             if (svm & CL_DEVICE_SVM_FINE_GRAIN_BUFFER)
    62                 strcat_s(info, "FINE_GRAIN_BUFFER ");
    63             if (svm & CL_DEVICE_SVM_FINE_GRAIN_SYSTEM)
    64                 strcat_s(info, "FINE_GRAIN_SYSTEM ");
    65             if (svm & CL_DEVICE_SVM_ATOMICS)
    66                 strcat_s(info, "ATOMICS");
    67             printf("
    	SVM		%s", info);
    68         }
    69         printf("
    
    ");
    70         free(listDevice);
    71     }
    72     free(listPlatform);
    73     getchar();
    74     return 0;
    75 }

    ● 输出结果,我的电脑(需要毙掉 SVM 部分才能运行)

    Platfom[0]:
            Name            NVIDIA CUDA
            Version         OpenCL 1.2 CUDA 9.1.83
            Extension       cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_fp64 cl_khr_byte_addressable_store cl_khr_icd cl_khr_gl_sharing cl_nv_compiler_options cl_nv_device_attribute_query cl_nv_pragma_unroll cl_nv_d3d10_sharing cl_khr_d3d10_sharing cl_nv_d3d11_sharing cl_nv_copy_opts cl_nv_create_buffer
    
            Device[0]:
            Name            GeForce GTX 1070
            Version         OpenCL 1.2 CUDA
            Type            GPU

    ● 输出结果,办公室的电脑(旧)

    Platfom[0]:
            Name            AMD Accelerated Parallel Processing
            Version         OpenCL 2.0 AMD-APP (1800.11)
            Extension       cl_khr_icd cl_khr_d3d10_sharing cl_khr_d3d11_sharing cl_khr_dx9_media_sharing cl_amd_event_callback cl_amd_offline_devices
    
            Device[0]:
            Name            Caicos
            Version         OpenCL 1.2 AMD-APP (1800.11)
            Type            GPU
            SVM             FINE_GRAIN_SYSTEM ATOMICS
    
            Device[1]:
            Name            Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz
            Version         OpenCL 1.2 AMD-APP (1800.11)
            Type            CPU
            SVM             FINE_GRAIN_SYSTEM ATOMICS
    
    Platfom[1]:
            Name            Intel(R) OpenCL
            Version         OpenCL 1.2
            Extension       cl_khr_icd cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_byte_addressable_store cl_khr_depth_images cl_khr_3d_image_writes cl_intel_exec_by_local_thread cl_khr_spir cl_khr_dx9_media_sharing cl_intel_dx9_media_sharing cl_khr_d3d11_sharing cl_khr_gl_sharing cl_khr_fp64
    
            Device[0]:
            Name            Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz
            Version         OpenCL 1.2 (Build 10094)
            Type            CPU
            SVM             FINE_GRAIN_SYSTEM ATOMICS

     ● 输出结果,办公室的电脑(新),不知道为什么出了两个一模一样的平台

    Platfom[0]:
            Name            AMD Accelerated Parallel Processing
            Version         OpenCL 2.0 AMD-APP (2348.3)
            Extension       cl_khr_icd cl_khr_d3d10_sharing cl_khr_d3d11_sharing cl_khr_dx9_media_sharing cl_amd_event_callback cl_amd_offline_devices
    
            Device[0]:
            Name            Bonaire
            Version         OpenCL 2.0 AMD-APP (2348.3)
            Type            GPU
            SVM             COARSE_GRAIN_BUFFER FINE_GRAIN_BUFFER FINE_GRAIN_SYSTEM ATOMICS
    
            Device[1]:
            Name            Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz
            Version         OpenCL 1.2 AMD-APP (2348.3)
            Type            CPU
            SVM             COARSE_GRAIN_BUFFER FINE_GRAIN_BUFFER FINE_GRAIN_SYSTEM ATOMICS
    
    Platfom[1]:
            Name            AMD Accelerated Parallel Processing
            Version         OpenCL 2.0 AMD-APP (2348.3)
            Extension       cl_khr_icd cl_khr_d3d10_sharing cl_khr_d3d11_sharing cl_khr_dx9_media_sharing cl_amd_event_callback cl_amd_offline_devices
    
            Device[0]:
            Name            Bonaire
            Version         OpenCL 2.0 AMD-APP (2348.3)
            Type            GPU
            SVM             COARSE_GRAIN_BUFFER FINE_GRAIN_BUFFER FINE_GRAIN_SYSTEM ATOMICS
    
            Device[1]:
            Name            Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz
            Version         OpenCL 1.2 AMD-APP (2348.3)
            Type            CPU
            SVM             COARSE_GRAIN_BUFFER FINE_GRAIN_BUFFER FINE_GRAIN_SYSTEM ATOMICS
  • 相关阅读:
    改变UINavigationBar颜色需要注意的地方
    更改ios状态栏颜色
    多线程简单介绍
    GCD多线程的实现方法
    NSUserDefaults的简单介绍
    NSFileManager的简单介绍,在沙盒目录下对文件进行增删改查
    在plist文件中增删改查
    frame bound center等之间的关系
    《汇编语言》——王爽 第五章 [BX]和loop指令
    《汇编语言》——王爽 第四章 第一个程序
  • 原文地址:https://www.cnblogs.com/cuancuancuanhao/p/9029891.html
Copyright © 2011-2022 走看看