目前版本的cuda是很方便的,它的一个安装里面包括了Toolkit`SDK`document`Nsight等等,而不用你自己去挨个安装,这样也避免了版本的不同步问题。

1 cuda5.5的下载地址,官方网站即可:

     https://developer.nvidia.com/cuda-downloads   在里面选择你所对应的电脑版本即可。

2 VS2010这个没什么说的了,网上各种的免费资源,下载一个不需要钱的就行。

3 Cuda的安装:(win7版32bit)


安装cuda

  3.1 cuda的安装文件

  

  直接双击exe文件,弹出后,首先会监测一下你的运行环境,如果找不到Nividia对应的显卡设备,他会提示你是否要继续安装。这里面nvidia的显卡,最起码也是8800以上的,要不是无法编写CUDA的。千万不要电脑上面是intel或者AMD的显卡,却要编写cuda,除非你有钱买一个cuda-x86这个编译器。

  3.2 弹出的对话框直接OK就行,这个是CUDA的一些安装文件,无所谓的:

 

  3.3 他会监测你的电脑是否支持cuda的搭建,等待就行

  3.4 系统检查

  3.5 选择同意并继续

  3.6 推荐先选择自定义安装

  3.7 最主要的是cuda document\cuda Toolkit \cuda samples(SDK),Nsight\图形驱动程序,3D如果需要的话安装,不安装也无所谓。这里主要就是能看见都有什么,免得漏掉了,博主当初就因为选了精简安装,没安装上SDK。

  

  3.7 安装的位置,推荐自己建三个好找的文件夹,不用他默认的路径,免得稍后配置环境变量麻烦。

博主的安装路径为:

  3.8 下一步安装就行了。

至此,cuda的安装就搞定了。


 

4 接下来配置cuda的环境变量,默认安装好后,他会自动帮你设置好2个环境变量,但是最好还自己添加下其他的几个,方便日后配置vs使用

 

上面的两个环境变量是cuda默认配置的,接下来添加

CUDA_BIN_PATH  %CUDA_PATH%\bin
CUDA_LIB_PATH  %CUDA_PATH%\lib\Win32
CUDA_SDK_BIN  %CUDA_SDK_PATH%\bin\Win32
CUDA_SDK_LIB  %CUDA_SDK_PATH%\common\lib\Win32
CUDA_SDK_PATH  C:\cuda\cudasdk\common

添加完就行了

 


 

5 接下来是cuda的安装成功与否的监测了,这个步骤我们用到两个东西,这两个东西,都是cuda为我们准备好的。

deviceQuery.exe 和 bandwithTest.exe

  首先启动cmd DOS命令窗口(博主的cuda安装到c:\cuda文件夹下)

  默认进来的是c:\users\Admistrator\>路径,输入 cd .. 两次,来到c:目录下

  输入dir 找到安装的cuda文件夹

进入Release文件夹后,直接执行bandwithTest.exe

再执行deviceQuery.exe

得到以上信息,因为我的显卡比较古老9300属于第一代的cuda显卡了。Rsult=PASS及说明,都通过了。如果Rsult=Fail 那不好意思,重新安装吧(或者是您的显卡真心不给力)。


 关于VS项目测试(推荐)

打开VS,新建项目

利用安装好的cuda向导,直接建立工程,里面会自动有一段kernel累加的代码:

#include "cuda_runtime.h"
#include "device_launch_parameters.h"#include <stdio.h>cudaError_t addWithCuda(int *c, const int *a, const int *b, unsigned int size);__global__ void addKernel(int *c, const int *a, const int *b)
{int i = threadIdx.x;c[i] = a[i] + b[i];
}int main()
{const int arraySize = 5;const int a[arraySize] = { 1, 2, 3, 4, 5 };const int b[arraySize] = { 10, 20, 30, 40, 50 };int c[arraySize] = { 0 };// Add vectors in parallel.cudaError_t cudaStatus = addWithCuda(c, a, b, arraySize);if (cudaStatus != cudaSuccess) {fprintf(stderr, "addWithCuda failed!");return 1;}printf("{1,2,3,4,5} + {10,20,30,40,50} = {%d,%d,%d,%d,%d}\n",c[0], c[1], c[2], c[3], c[4]);// cudaDeviceReset must be called before exiting in order for profiling and// tracing tools such as Nsight and Visual Profiler to show complete traces.cudaStatus = cudaDeviceReset();if (cudaStatus != cudaSuccess) {fprintf(stderr, "cudaDeviceReset failed!");return 1;}getchar();return 0;
}// Helper function for using CUDA to add vectors in parallel.
cudaError_t addWithCuda(int *c, const int *a, const int *b, unsigned int size)
{int *dev_a = 0;int *dev_b = 0;int *dev_c = 0;cudaError_t cudaStatus;// Choose which GPU to run on, change this on a multi-GPU system.cudaStatus = cudaSetDevice(0);if (cudaStatus != cudaSuccess) {fprintf(stderr, "cudaSetDevice failed!  Do you have a CUDA-capable GPU installed?");goto Error;}// Allocate GPU buffers for three vectors (two input, one output)    .cudaStatus = cudaMalloc((void**)&dev_c, size * sizeof(int));if (cudaStatus != cudaSuccess) {fprintf(stderr, "cudaMalloc failed!");goto Error;}cudaStatus = cudaMalloc((void**)&dev_a, size * sizeof(int));if (cudaStatus != cudaSuccess) {fprintf(stderr, "cudaMalloc failed!");goto Error;}cudaStatus = cudaMalloc((void**)&dev_b, size * sizeof(int));if (cudaStatus != cudaSuccess) {fprintf(stderr, "cudaMalloc failed!");goto Error;}// Copy input vectors from host memory to GPU buffers.cudaStatus = cudaMemcpy(dev_a, a, size * sizeof(int), cudaMemcpyHostToDevice);if (cudaStatus != cudaSuccess) {fprintf(stderr, "cudaMemcpy failed!");goto Error;}cudaStatus = cudaMemcpy(dev_b, b, size * sizeof(int), cudaMemcpyHostToDevice);if (cudaStatus != cudaSuccess) {fprintf(stderr, "cudaMemcpy failed!");goto Error;}// Launch a kernel on the GPU with one thread for each element.addKernel<<<1, size>>>(dev_c, dev_a, dev_b);// Check for any errors launching the kernelcudaStatus = cudaGetLastError();if (cudaStatus != cudaSuccess) {fprintf(stderr, "addKernel launch failed: %s\n", cudaGetErrorString(cudaStatus));goto Error;}// cudaDeviceSynchronize waits for the kernel to finish, and returns// any errors encountered during the launch.cudaStatus = cudaDeviceSynchronize();if (cudaStatus != cudaSuccess) {fprintf(stderr, "cudaDeviceSynchronize returned error code %d after launching addKernel!\n", cudaStatus);goto Error;}// Copy output vector from GPU buffer to host memory.cudaStatus = cudaMemcpy(c, dev_c, size * sizeof(int), cudaMemcpyDeviceToHost);if (cudaStatus != cudaSuccess) {fprintf(stderr, "cudaMemcpy failed!");goto Error;}Error:cudaFree(dev_c);cudaFree(dev_a);cudaFree(dev_b);return cudaStatus;
}

在main函数return之前加入getchar(),停止自动退出,以便观测效果

进入后,点击运行按钮,可能发生LINK错误(如果没有错误,跳过此段)

这时进入-》项目-》属性-》通用配置-》输入和输出-》嵌入清单 ---- 修改成否,原来可能为“是”

再次编译,成功运行后,会显示下面的结果

恭喜,cuda已经在您的机器上安装成功了。

如果是新手,推荐这样新建工程后,在里面修改代码成为自己的工程,配置属性不会出错。

如果想要自己手动配置也可以参考下面的例子。


手动配置VS项目(不推荐)

最后就是VS的配置了(这个是自己手动配置的,有时候容易出现问题,不是很推荐,建议用上面的方法建立项目进行测试)

  5.1 启动VS2010

  5.2 新建一个win32的控制台工程,空的。

  5.3 右键源文件文件夹->新建项->选择cuda c/c++->新建一个以.cu结尾的文件

  5.4 右键工程-》生成自定义-》选择cuda生成

  5.5 右键test.cu-》属性-》选择cuda c/c++编译器

  5.6 右键工程-》属性-》链接器-》常规-》附加库目录-》添加目录 $(CUDA_PATH_V5_5)\lib\$(Platform);

  5.7 在链接器-》输入中添加 cudart.lib

 

  5.8 在工具-》选项-》文本编辑器-》文件扩展名-》添加cu \cuh两个文件扩展名

至此,编译环境的相关搭建就完成了。


下面提供了一段test.cu的代码,供测试使用:

#include <stdio.h>
#include <stdlib.h>
#include <cuda_runtime.h> #define DATA_SIZE 1024
#define checkCudaErrors(err)  __checkCudaErrors (err, __FILE__, __LINE__)
#define getLastCudaError(msg)  __getLastCudaError (msg, __FILE__, __LINE__)int data[DATA_SIZE];////
// These are CUDA Helper functions// This will output the proper CUDA error strings in the event that a CUDA host call returns an error
inline void __checkCudaErrors(cudaError err, const char *file, const int line )
{if(cudaSuccess != err){fprintf(stderr, "%s(%i) : CUDA Runtime API error %d: %s.\n",file, line, (int)err, cudaGetErrorString( err ) );return ;        }
}// This will output the proper error string when calling cudaGetLastError
inline void __getLastCudaError(const char *errorMessage, const char *file, const int line )
{cudaError_t err = cudaGetLastError();if (cudaSuccess != err){fprintf(stderr, "%s(%i) : getLastCudaError() CUDA error : %s : (%d) %s.\n",file, line, errorMessage, (int)err, cudaGetErrorString( err ) );return ;}
}// end of CUDA Helper Functions

__global__ static void sumOfSquares(int *num, int * result){int sum=0;int i;for(i=0;i<DATA_SIZE;i++) {sum += num[i]*num[i];}*result = sum;
}
void GenerateNumbers(int *number, int size){for(int i = 0; i < size; i++) {number[i] = rand() % 10;printf("number[%d] is %d\n",i,number[i]);}}int main(){cudaSetDevice(0);cudaDeviceSynchronize();cudaThreadSynchronize();GenerateNumbers(data, DATA_SIZE);int * gpudata, * result;int sum;checkCudaErrors( cudaMalloc((void**) &gpudata, sizeof(int)*DATA_SIZE));checkCudaErrors(cudaMalloc((void**) &result, sizeof(int)));checkCudaErrors(cudaMemcpy(gpudata, data, sizeof(int)*DATA_SIZE,cudaMemcpyHostToDevice));sumOfSquares<<<1, 1, 0>>>(gpudata, result);checkCudaErrors(cudaMemcpy(&sum, result, sizeof(int), cudaMemcpyDeviceToHost));cudaFree(gpudata);cudaFree(result);printf("-----------sum: %d\n",sum);sum = 0;for(int i = 0; i < DATA_SIZE; i++) {sum += data[i] * data[i];}printf("sum (CPU): %d\n", sum);getchar();return 0;
}

原文链接:

手把手教你cuda5.5与VS2010的编译环境搭建

转载于:https://www.cnblogs.com/rainbow70626/p/6498714.html

Visual Studio IDE环境下利用模板创建和手动配置CUDA项目教程相关推荐

  1. PaddleOCR——Visual Studio 2019 环境下C++推理部署 CMake 编译解决方案

    PaddleOCR--Visual Studio 2019 环境下C++推理部署 CMake 编译解决方案 官方文档 环境配置 Step1: 下载PaddlePaddle C++ 预测库 paddle ...

  2. 多版本Visual Studio 集成环境下的WCF 开发-服务库默认配置表

    多版本Visual Studio 集成环境下的WCF 开发-服务库默认配置表 Visual Studio2008 Visual Studio2008只有服务库,而没有服务应用程序,其服务库生成配置文件 ...

  3. 关于在Office 2010,Visual Studio 2010环境下开发Office 2007解决方案的问题

    Office解决方案分应用级解决方案(application-level solution 也就是Add-in)和文档级解决方案(document-level solution包括Excel temp ...

  4. Win10 在 Visual Studio 2019 环境下配置 CUDA 10.1 + TensorFlow-GPU

    1. 安装VS2019 我安装的版本是enterprise 企业版. 2. 查看Nvidia显卡支持的cuda版本 设置-->搜索控制面板->在控制面板里搜索nvidia->打开Nv ...

  5. PaddleOCR——C++服务端部署Visual Studio 2019 环境下CMake 编译错误【无法打开输入文件paddle_fluid.lib】解决方案

    问题描述 找不到paddle_fluid.lib文件 问题分析 2.0.0以上版本的Windows PaddlePaddle 预测库中没有paddle_fluid.lib文件. 解决方案 方法一:修改 ...

  6. 安装Visual Studio Scrum 1.0过程模板

    作者Mickey Gousset将介绍在Visual Studio Team Foundation Server中安装Microsoft Scrum 1.0过程模板. 大部分阅读过本栏目的人都知道,在 ...

  7. 【C++】Visual Studio教程(十) - 初步了解 Visual Studio IDE

    00. 目录 文章目录 00. 目录 01. 启动窗口 02. 创建项目 03. 解决方案资源管理器 04. 菜单 05. 错误列表 06. "输出"窗口 07. 搜索框 08. ...

  8. 教你如何使用 Visual Studio IDE 正确的进行 C++ 桌面开发

    目录 先决条件 入门 一.演练:使用项目和解决方案 (C++) 准备工作 创建项目 在 Visual Studio 中创建项目 组织项目和文件 向项目添加类 向主函数添加测试代码 向项目添加测试代码 ...

  9. 从头开始学eShopOnContainers——Visual Studio 2017环境配置

    一.安装和配置Docker环境 1.安装Docker CE for Windows 从官方网站下载并安装,https://docs.docker.com/docker-for-windows/inst ...

最新文章

  1. 学生的新增mySQL文档_MySQL增删改查
  2. C# JS URL 中文传参出现乱码的解决方法
  3. 我的Java开发之路
  4. Spring.NET企业架构实践之 JQuery + FlexiGrid + ASP.NET MVC + NVelocity + WCF + LINQ + NHibernate 综合应用...
  5. Protues 8.6 详细安装步骤
  6. Qt Creator指定依赖项
  7. leetcode120. 三角形最小路径和(动态规划)
  8. 数值运算pythonmopn_Python SciPy库——拟合与插值
  9. Error:Unable to make the module: core, related gradle configuration was not found. Please, re-import
  10. 虚拟机如何配置网络ip地址_木杉入门Elasticsearch(2):虚拟机IP地址配置
  11. Redis学习总结(22)——Redis的主从复制是如何做的?复制过程中也会产生各种问题?
  12. 大端模式、小端模式、网络字节顺序与主机字节顺序
  13. python爬取个人信息_Python爬取个人支付宝朋友信息操作示例
  14. 「mac基础知识」mac上将Keynote设置为使用iCloud的方法
  15. C++之继承详细介绍(你除了继承你爸几亿的资产,你还是个啥??)
  16. 提供一个vs6,vs2005,vs2008,office2007可以下载的地址.
  17. BZOJ3926-[Zjoi20150]诸神眷顾的幻想乡
  18. 一个瑞典游戏工作室决定离开索尼,之前和之后都发生了什么?
  19. Java生成动态生成水印图片,为图片打水印. Java为图片打水印
  20. 为什么建议代账企业用软件机器人实现一键报税?

热门文章

  1. ubuntu下vim的命令及使用方法
  2. linux 4.0内核编译选项,linux 2.40.20-8 内核编译选项.doc
  3. 51nod 1785 数据流中的算法 (方差计算公式)
  4. Redis源码剖析(十三)整数集合
  5. Qt学习笔记-----拖放
  6. 搜索二维矩阵 II—leetcode240
  7. 内存对齐指令详解(posix_memalign)
  8. shiro注销其他用户_Shiro实现互斥登录,并踢出登录用户功能。
  9. 关于go语言中的JWT(JSON WEB TONKE)ECHO
  10. 机器学习物语(3):回归问题