3-3:查询设备

struct cudaDeviceProp{
    char name[256];
    // 设备名称(例如,“Geforce GTX 280”)
    size_t totalGlobalMem;
    // 设备上全局内存的总量,单位为字节
    size_t sharedMemPerBlock;
    // 在一个线程块(block)中可使用的最大共享内存数量,单位为字节
    int regsPerBlock;
    //  每个线程块中可用的32位寄存器数量
    int warpSize;
    // 在一个线程束(warp)中包含的线程数量
    size_t memPitch;
    // 在内存复制中最大的修正量(Pitch),单位为字节
    int maxThreadsPerBlock;
    // 在一个线程块中可以包含的最大线程数量
    int maxThreadsDim[3];
    // 在多维线程块数组中,每一维可以包含的最大线程数量
    int maxGridSize[3];
    // 在一个线程格(grid)中,每一维包含的线程块数量
    size_t totalConstMem;
    // 常量内存的总量
    int major;
    // 设备计算功能集的主版本号
    int minor;
    // 设备上计算功能集的次版本号
    int clockRate;
    // 
    size_t textureAlignment;
    // 设备的纹理对齐要求
    int deviceOverlap;
    // 一个布尔值,表示该设备是否可以同时执行一个cudaMemory()调用和一个核函数的调用
    int multiProcessorCount;
    // 设备上多处理器的数量
    int kernelExecTimeoutEnabled;
    // 一个布尔值,表示该设备上执行的核函数是否存在运行时限制
    int integrated;
    // 一个布尔类型的值,表示设备是否是一个集成GPU(即该GPU属于芯片组的一部分而非独立的GPU)
    int canMapHostMemory;
    // 一个布尔类型的值,表示设备是否将主机内存映射到CUDA设备地址空间
    int computeMode;
    // 表示设备的计算模式,默认(default),独占(Exclusive),或者禁止(Prohibited)
    int maxTexture1D;
    // 一维纹理数的最大维数
    int maxTexture2D;
    // 二维纹理数的最大维数
    int maxTexture3D;
    //三维纹理数的最大维数
    int maxTexture2DArray[3];
    //二维纹理数组的最大维数
    int concurrentKernels; 
    //一个bool类型的值,表示设备是否支持在同一个上下文中同时执行多个核函数
}

 

#include "book.h"

int main(void)
{
    cudaDeviceProp prop;

    int count;
    HANDLE_ERROR(cudaGetDeviceCount(&count));
    for (int i = 0; i < count; i++)
    {
        HANDLE_ERROR(cudaGetDeviceProperties(&prop, i));
        printf("   ---General Information for device %d ----\n", i);
        printf("Name: %s\n", prop.name);
        printf("Compute capability: %d.%d\n", prop.major, prop.minor);
        printf("Clock rate: %d\n", prop.clockRate);
        printf("Device copy overlap: ");
        if (prop.deviceOverlap)
            printf("Enabled\n");
        else
            printf("Disabled\n");
        printf("Kernel execition timeout :");
        if (prop.kernelExecTimeoutEnabled)
            printf("Enabled\n");
        else
            printf("Disabled\n");

        printf("   ---Memory Information for device %d ---\n", i);
        printf("Total global mem: %ld\n", prop.totalGlobalMem);
        printf("Total constant Mem:%ld\n", prop.totalConstMem);
        printf("Max mem pitch: %ld\n", prop.memPitch);
        printf("Texture Alignment: %ld\n", prop.textureAlignment);
        printf("   ---MP Information for device %d---\n", i);
        printf("Multiprocessor count: %d\n", prop.multiProcessorCount);
        printf("Shared mem per mp: %ld\n", prop.sharedMemPerBlock);
        printf("Registers per mp: %d\n", prop.warpSize);
        printf("Threads in warp: %d\n", prop.maxThreadsPerBlock);
        printf("Max thread dimensions: (%d, %d, %d)\n", prop.maxThreadsDim[0], prop.maxThreadsDim[1], prop.maxThreadsDim[2]);
        printf("Max grid dimensions: (%d, %d, %d)\n", prop.maxGridSize[0], prop.maxGridSize[1], prop.maxGridSize[2]);
        printf("\n");
    }
}

CMakeLists.txt:

cmake_minimum_required(VERSION 3.10)
project(Hello-world CUDA)

set(CMAKE_CUDA_STANDARD 11)
set(CMAKE_BUILD_TYPE Debug)


set(CUDA_NVCC_FLAGS -O3;-G;-g)

set(CUDA_INCLUDE_DIR /usr/local/cuda/include)
set(BOOK_INCLUDE /home/wang/projects/cuda-examples/includes)
set(LIBS_DIR /usr/local/cuda/lib64)
include_directories(${CUDA_INCLUDE_DIR} ${BOOK_INCLUDE})
 
link_directories(${LIBS_DIR})
add_executable(${PROJECT_NAME} main.cu)
target_link_libraries(${PROJECT_NAME} libcudart.so)

 信息打印:


   ---General Information for device 0 ----
Name: NVIDIA Tegra X1
Compute capability: 5.3
Clock rate: 921600
Device copy overlap: Enabled
Kernel execition timeout :Enabled
   ---Memory Information for device 0 ---
Total global mem: 4156661760
Total constant Mem:65536
Max mem pitch: 2147483647
Texture Alignment: 512
   ---MP Information for device 0---
Multiprocessor count: 1
Shared mem per mp: 49152
Registers per mp: 32
Threads in warp: 1024
Max thread dimensions: (1024, 1024, 64)
Max grid dimensions: (2147483647, 65535, 65535)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值