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: %sn", prop.name); printf("Compute capability: %d.%dn", prop.major, prop.minor); printf("Clock rate: %dn", prop.clockRate); printf("Device copy overlap: "); if (prop.deviceOverlap) printf("Enabledn"); else printf("Disabledn"); printf("Kernel execition timeout :"); if (prop.kernelExecTimeoutEnabled) printf("Enabledn"); else printf("Disabledn"); printf(" ---Memory Information for device %d ---n", i); printf("Total global mem: %ldn", prop.totalGlobalMem); printf("Total constant Mem:%ldn", prop.totalConstMem); printf("Max mem pitch: %ldn", prop.memPitch); printf("Texture Alignment: %ldn", prop.textureAlignment); printf(" ---MP Information for device %d---n", i); printf("Multiprocessor count: %dn", prop.multiProcessorCount); printf("Shared mem per mp: %ldn", prop.sharedMemPerBlock); printf("Registers per mp: %dn", prop.warpSize); printf("Threads in warp: %dn", 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条)