当前配置:

    系统:WIN7 64位

    开发平台:VS 2012

    显卡:英伟达G卡

    CUDA版本:6.0




第一步:下载 cuda_6.0


第二步:运行安装程序,弹出安装过程中转文件路径设定框,这个路径随便填无所谓,安装完后就会自动删除的。


第三步:等待系统帮你检测当前平台是否适合搭建CUDA。


第四步:检测完毕后,正式进入CUDA安装界面,同意并继续。


第五步:然后选择安装模式,为了完全安装所有功能,选择自定义模式安装。


第六步:接下来勾选要安装的组件,全部勾上。


第七步:接下来要设置三个安装路径,直接安装到默认路径。点击下一步之后开始正式安装。


第八步:安装完毕后,可以看到系统中多了CUDA_PATH和CUDA_PATH_V6_0两个环境变量,接下来,还要在系统中添加以下几个环境变量:

CUDA_SDK_PATH = C:\ProgramData\NVIDIA Corporation\CUDA Samples\v6.0 



   CUDA_LIB_PATH = %CUDA_PATH%\lib\x64 



   CUDA_BIN_PATH = %CUDA_PATH%\bin 



   CUDA_SDK_BIN_PATH = %CUDA_SDK_PATH%\bin\x64 



   CUDA_SDK_LIB_PATH = %CUDA_SDK_PATH%\common\lib\x64




    环境变量最后一步:在path的末尾加


;%CUDA_LIB_PATH%;%CUDA_BIN_PATH%;%CUDA_SDK_BIN_PATH%;%CUDA_SDK_LIB_PATH%






第十步:右键项目->属性->配置属性->VC++目录,添加以下两个包含目录:

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v6.0\include 



    C:\ProgramData\NVIDIA Corporation\CUDA Samples\v6.0\common\inc 



 再添加以下两个库目录: 



    C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v6.0\lib\x64 



    C:\ProgramData\NVIDIA Corporation\CUDA Samples\v6.0\common\lib\x64




第十一步:右键项目->属性->配置属性->连接器->常规->附加库目录,添加以下目录:


   $(CUDA_PATH_V6_0)\lib\$(Platform)


第十二步:右键项目->属性->配置属性->连接器->输入->附加依赖项,添加以下库:


cublas.lib 

 cublas_device.lib 

 cuda.lib 

 cudadevrt.lib 

 cudart.lib 

 cudart_static.lib 

 cufft.lib 

 cufftw.lib 

 curand.lib 

 cusparse.lib 

 nppc.lib 

 nppi.lib 

 npps.lib 

 nvblas.lib 

 nvcuvenc.lib 

 nvcuvid.lib 

 OpenCL.lib




右键项目 -> 属性,如下图所示:将项类型设置为 CUDA C/C++:




测试程序

#include "cuda_runtime.h" 

  #include "cublas_v2.h" 

   

  #include <time.h> 

  #include <iostream> 

   

  using namespace std; 

   

  // 定义测试矩阵的维度 

  int const M = 5; 

  int const N = 10; 



  int main()  

  {    

     // 定义状态变量 

      cublasStatus_t status; 

   

     // 在 内存 中为将要计算的矩阵开辟空间 

      float *h_A = (float*)malloc (N*M*sizeof(float)); 

     float *h_B = (float*)malloc (N*M*sizeof(float)); 

       

      // 在 内存 中为将要存放运算结果的矩阵开辟空间 

     float *h_C = (float*)malloc (M*M*sizeof(float)); 

   

      // 为待运算矩阵的元素赋予 0-10 范围内的随机数 

      for (int i=0; i<N*M; i++) { 

          h_A[i] = (float)(rand()%10+1); 

         h_B[i] = (float)(rand()%10+1); 

      

      } 

      

     // 打印待测试的矩阵 

     cout << "矩阵 A :" << endl; 

     for (int i=0; i<N*M; i++){ 

         cout << h_A[i] << " "; 

         if ((i+1)%N == 0) cout << endl; 

     } 

      cout << endl; 

     cout << "矩阵 B :" << endl; 

      for (int i=0; i<N*M; i++){ 

         cout << h_B[i] << " "; 

         if ((i+1)%M == 0) cout << endl; 

      } 

      cout << endl; 

      

      /* 

     ** GPU 计算矩阵相乘 

      */ 

   

      // 创建并初始化 CUBLAS 库对象 

     cublasHandle_t handle; 

     status = cublasCreate(&handle); 

      

      if (status != CUBLAS_STATUS_SUCCESS) 

     { 

         if (status == CUBLAS_STATUS_NOT_INITIALIZED) { 

             cout << "CUBLAS 对象实例化出错" << endl; 

         } 

         getchar (); 

          return EXIT_FAILURE; 

      } 



     float *d_A, *d_B, *d_C; 

      // 在 显存 中为将要计算的矩阵开辟空间 

     cudaMalloc ( 

          (void**)&d_A,    // 指向开辟的空间的指针 

         N*M * sizeof(float)    // 需要开辟空间的字节数 

     ); 

     cudaMalloc ( 

          (void**)&d_B,     

          N*M * sizeof(float)     

     ); 

   

      // 在 显存 中为将要存放运算结果的矩阵开辟空间 

     cudaMalloc ( 

         (void**)&d_C, 

         M*M * sizeof(float)     

      ); 



      // 将矩阵数据传递进 显存 中已经开辟好了的空间 

      cublasSetVector ( 

          N*M,    // 要存入显存的元素个数 

         sizeof(float),    // 每个元素大小 

         h_A,    // 主机端起始地址 

          1,    // 连续元素之间的存储间隔 

          d_A,    // GPU 端起始地址 

         1    // 连续元素之间的存储间隔 

     ); 

      cublasSetVector ( 

          N*M,  

          sizeof(float),  

         h_B,  

          1,  

          d_B,  

         1 

      ); 



      // 同步函数 

      cudaThreadSynchronize(); 



      // 传递进矩阵相乘函数中的参数,具体含义请参考函数手册。 

      float a=1; float b=0; 

      // 矩阵相乘。该函数必然将数组解析成列优先数组 

      cublasSgemm ( 

          handle,    // blas 库对象  

          CUBLAS_OP_T,    // 矩阵 A 属性参数 

          CUBLAS_OP_T,    // 矩阵 B 属性参数 

          M,    // A, C 的行数  

          M,    // B, C 的列数 

          N,    // A 的列数和 B 的行数 

          &a,    // 运算式的 α 值 

          d_A,    // A 在显存中的地址 

         N,    // lda 

         d_B,    // B 在显存中的地址 

          M,    // ldb 

         &b,    // 运算式的 β 值 

          d_C,    // C 在显存中的地址(结果矩阵) 

          M    // ldc 

      ); 

       

     // 同步函数 

     cudaThreadSynchronize(); 



      // 从 显存 中取出运算结果至 内存中去 

      cublasGetVector ( 

          M*M,    //  要取出元素的个数 

         sizeof(float),    // 每个元素大小 

         d_C,    // GPU 端起始地址 

          1,    // 连续元素之间的存储间隔 

         h_C,    // 主机端起始地址 

         1    // 连续元素之间的存储间隔 

       ); 

       

      // 打印运算结果 

     cout << "计算结果的转置 ( (A*B)的转置 ):" << endl; 

   

      for (int i=0;i<M*M; i++){ 

              cout << h_C[i] << " "; 

             if ((i+1)%M == 0) cout << endl; 

      } 

      

     // 清理掉使用过的内存 

      free (h_A); 

     free (h_B); 

      free (h_C); 

      cudaFree (d_A); 

      cudaFree (d_B); 

     cudaFree (d_C); 



      // 释放 CUBLAS 库对象 

      cublasDestroy (handle); 

   

      getchar(); 

       

      return 0; 

  } 











opencv2.44在vs2010下的配置 





 用户变量 

 path=D:\opencv\build\x64\vc10\bin 

 opencv=D:\opencv\build 



 系统变量 

 path=D:\opencv\build\x64\vc10\bin 



 VC++目录中 

 1)可执行文件目录=D:\opencv\build\x64\vc10\bin 



 2,包含目录 

 D:\opencv\build\include 

 D:\opencv\build\include\opencv 

 D:\opencv\build\include\opencv2 



 3,库目录 

 D:\opencv\build\x64\vc10\lib 



 4、附加依赖项 

 单击“链接器”→“输入”→“附加依赖项”, 



 opencv_calib3d244d.lib 

 opencv_contrib244d.lib 

 opencv_core244d.lib 

 opencv_features2d244d.lib 

 opencv_flann244d.lib 

 opencv_gpu244d.lib 

 opencv_highgui244d.lib 

 opencv_imgproc244d.lib 

 opencv_legacy244d.lib 

 opencv_ml244d.lib 

 opencv_nonfree244d.lib 

 opencv_objdetect244d.lib 

 opencv_photo244d.lib 

 opencv_stitching244d.lib 

 opencv_ts244d.lib 

 opencv_video244d.lib 

 opencv_videostab244d.lib 



 opencv_calib3d244.lib 

 opencv_contrib244.lib 

 opencv_core244.lib 

 opencv_features2d244.lib 

 opencv_flann244.lib 

 opencv_gpu244.lib 

 opencv_highgui244.lib 

 opencv_imgproc244.lib 

 opencv_legacy244.lib 

 opencv_ml244.lib 

 opencv_nonfree244.lib 

 opencv_objdetect244.lib 

 opencv_photo244.lib 

 opencv_stitching244.lib 

 opencv_ts244.lib 

 opencv_video244.lib 

 opencv_videostab244.lib