CUDA存储单元的使用设备初始化

简介: CUDA存储单元的使用设备初始化

http://www.cnblogs.com/dflower/archive/2009/10/16/1584827.html

   首先介绍一下开发环境,Visual Studio 2008 + CUDA Wizard for Visual Studio. 确保显卡支持CUDA(GeForce 8系列之后,否则只能用模拟模式)并安装CUDA DDK及CUDA Toolkit。

   安装完CUDA Wizard for Visual Studio之后,如果编译运行时出现"无法找到cutil32D.dll"的错误,则需要将安装的CUDA的sdk的路径加到系统环境变量中:

例如C:\Program Files\NVIDIA Corporation\NVIDIA CUDA SDK\bin\win32\

下的

├─Debug

├─EmuDebug

├─EmuRelease

└─Release

几个目录都加入到系统环境变量Path中,这样才能在运行程序的时候找到相应的dll库。

   

    然后就可以在VS下直接编译CUDA程序了(*.cu)。以下是一个CUDA初始化的程序。

[cpp]  view plaincopy

  1. #include <stdio.h>  
  2. #include <cuda_runtime.h>  
  3.  
  4. bool InitCUDA()  
  5. {  
  6.    int count;  
  7.    cudaGetDeviceCount(&count);  
  8.    if(count==0)  
  9.    {  
  10.        fprintf(stderr,"There is no device.\n");  
  11.        return false;  
  12.    }  
  13.    int i;  
  14.    for(i=0;i<count;i++)  
  15.    {  
  16.        cudaDeviceProp prop;  
  17.        if(cudaGetDeviceProperties(&prop,i) == cudaSuccess)  
  18.        {  
  19.            if(prop.major>=1)  
  20.            {  
  21.                //枚举详细信息  
  22.                printf("Identify: %s\n",prop.name);  
  23.                printf("Host Memory: %d\n",prop.canMapHostMemory);                  
  24.                printf("Clock Rate: %d khz\n",prop.clockRate);                  
  25.                printf("Compute Mode: %d\n",prop.computeMode);                  
  26.                printf("Device Overlap: %d\n",prop.deviceOverlap);                  
  27.                printf("Integrated: %d\n",prop.integrated);                  
  28.                printf("Kernel Exec Timeout Enabled: %d\n",prop.kernelExecTimeoutEnabled);                  
  29.                printf("Max Grid Size: %d * %d * %d\n",prop.maxGridSize[0],prop.maxGridSize[1],prop.maxGridSize[2]);  
  30.                printf("Max Threads Dim: %d * %d * %d\n",prop.maxThreadsDim[0],prop.maxThreadsDim[1],prop.maxThreadsDim[2]);  
  31.                printf("Max Threads per Block: %d\n",prop.maxThreadsPerBlock);  
  32.                printf("Maximum Pitch: %d bytes\n",prop.memPitch);  
  33.                printf("Minor Compute Capability: %d\n",prop.minor);  
  34.                printf("Number of Multiprocessors: %d\n",prop.multiProcessorCount);                  
  35.                printf("32bit Registers Availble per Block: %d\n",prop.regsPerBlock);  
  36.                printf("Shared Memory Available per Block: %d bytes\n",prop.sharedMemPerBlock);  
  37.                printf("Alignment Requirement for Textures: %d\n",prop.textureAlignment);  
  38.                printf("Constant Memory Available: %d bytes\n",prop.totalConstMem);  
  39.                printf("Global Memory Available: %d bytes\n",prop.totalGlobalMem);  
  40.                printf("Warp Size: %d threads\n",prop.warpSize);  
  41.                break;  
  42.            }  
  43.        }  
  44.    }  
  45.    if(i==count)  
  46.    {  
  47.        fprintf(stderr,"There is no device supporting CUDA.\n");  
  48.        return false;  
  49.    }  
  50.    cudaSetDevice(i);  
  51.    return true;  
  52. }  
  53.  
  54. void main()  
  55. {  
  56.    if(!InitCUDA())  
  57.        {  
  58.            getchar();  
  59.            return;  
  60.        }  
  61.        printf("CUDA initialized.\n");  
  62.        getchar();          
  63. }  

运行结果如下:

网络异常,图片无法展示
|

目录
相关文章
|
11天前
|
存储 异构计算
Verilog RAM/ROM的数据初始化
Verilog RAM/ROM的数据初始化
|
物联网 数据安全/隐私保护 芯片
RFID 寄存器初始化 | 学习笔记
快速学习 RFID 寄存器初始化
548 0
RFID 寄存器初始化 | 学习笔记
|
C语言 芯片
【嵌入式系统】存储器映射与寄存器映射原理
【嵌入式系统】存储器映射与寄存器映射原理
369 0
【嵌入式系统】存储器映射与寄存器映射原理
|
10月前
|
Linux
Linux驱动操作地址(寄存器)的一些方式
Linux驱动操作地址(寄存器)的一些方式
115 0
|
并行计算 TensorFlow 算法框架/工具
CUDA存储单元的使用GPU存储单元的分配与释放
CUDA存储单元的使用GPU存储单元的分配与释放
555 0
|
并行计算 异构计算
如何将cuda上的变量转到cpu上面?
在这个示例中,我们首先将x张量对象创建在GPU上。然后,我们使用.cpu()方法将其移动到CPU上,并将其分配给一个新的变量x_cpu。现在,我们可以在CPU上使用x_cpu变量并打印它。 请注意,将张量移动到不同的设备(如从GPU到CPU)可能会涉及到数据的复制,因此需要确保不会频繁地在不同的设备之间移动数据以避免性能下降。
1521 0
|
存储 内存技术
STM32:DMA直接存储器存储(内含:1.DMA简介+2.存储器映像+3.DMA框图+4.DMA基本结构图+5.数据宽度对齐+6.两种经典转运情景)
STM32:DMA直接存储器存储(内含:1.DMA简介+2.存储器映像+3.DMA框图+4.DMA基本结构图+5.数据宽度对齐+6.两种经典转运情景)
229 0
STM32:DMA直接存储器存储(内含:1.DMA简介+2.存储器映像+3.DMA框图+4.DMA基本结构图+5.数据宽度对齐+6.两种经典转运情景)
|
存储
FPGA-SDRAM设计学习(三)初始化、模式寄存器、激活和读命令
FPGA-SDRAM设计学习(三)初始化、模式寄存器、激活和读命令
236 0
FPGA-SDRAM设计学习(三)初始化、模式寄存器、激活和读命令
|
缓存 并行计算 API
多种CUDA存储单元详解CUDA中的存储单元种类
多种CUDA存储单元详解CUDA中的存储单元种类
256 0