CUDA10.1配置VS2017

目录

一  CUDA 安装

二  CUDA环境变量配置

三  CUDA配置VS2017


一  CUDA 安装

   1.1 CUDA下载

     网址:https://developer.nvidia.com/cuda-toolkit-archive

 

可以根据需要下载不同版本的CUDA安装包。

 

1.2 CUDA安装

   1.2.1 双击下载的.exe文件安装

  1.2.2 点击‘OK’

 1.2.3 上一步解压完成后,会自动跳到下图,点击‘同意并继续’即可,由于我已经安装过了,下图是我在网上找的一个图,各版             本都一样

 

二  CUDA环境变量配置

    2.1 右击此电脑→属性→高级系统设置→环境变量

 

 

2.2 系统变量里添加:

      CUDA_SDK_PATH = C:\ProgramData\NVIDIA Corporation\CUDA Samples\v10.1

      CUDA_LIB_PATH = %CUDA_PATH%\lib\x64

      CUDA_BIN_PATH = %CUDA_PATH%\bin

      CUDA_SDK_BIN_PATH = %CUDA_SDK_PATH%\bin\win64

      CUDA_SDK_LIB_PATH = %CUDA_SDK_PATH%\common\lib\x64

注意:CUDA _PATH与CUDA _PATH_V10_1是CUDA安装时自动添加的;

          CUDA _PATH_V10_1中的10_1是你安装CUDA的版本号

 

2.3 添加以下到系统变量path中,添加完点确定

      %CUDA_LIB_PATH%

      %CUDA_BIN_PAHT%

     %CUDA_SDK_BIN_PAHT%

      %CUDA_SDK_LIB_PATH%

 

 

2.4 重启电脑,然后打开cmd,输入: set cuda   即可看到下图

 

2.5 检查cuda是否安装好, 打开cmd,

      2.5.1  输入:cd C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\extras\demo_suite

                 输入之后,注意是否为自己安装的目录,然后按‘Enter’键

     2.5.2 找到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\extras\demo_suite目录下的deviceQuery.exe,在                 cmd里输入:deviceQuery.exe

上图中Result=PASS,表示安装好,否则Result=Fail重装或更换cuda版本吧。

 

2.5.3 找到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\extras\demo_suite目录下的bandwidthTest.exe,在                cmd里输入:bandwidthTest.exe

上图中Result=PASS,表示安装好,否则Result=Fail重装或更换cuda版本吧。

 

三  CUDA配置VS2017

3.1  打开VS2017新建工程

 

3.2 右击源文件→添加→新建项→CUDA C/C++ File;创建一个.cu文件

 

 

 

3.3 右击项目名称test_cuda2→生成依赖项→生成自定义,→选择CUDA10.1→确定

 

 

3.4 右击cuda_test.cu文件→属性→配置属性→常规→项类型→CUDA C/C++

 

 

3.5 右击test_cuda2→属性

 

3.5.1→VC++目录。在包含目录中添加C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\include;在库目录中添加                               C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\lib\x64。

注意:要根据自己的CUDA安装添加正确的目录

 

 

3.5.2 →链接器→输入→附加依赖项。再附加依赖项中添加相应的.lib文件名称

   我这里加的比较多cublas.lib

cublasLt.lib

cuda.lib

cudadevrt.lib

cudart.lib

cudart_static.lib

cufft.lib

cufftw.lib

curand.lib

cusolver.lib

cusparse.lib

nppc.lib

nppial.lib

nppicc.lib

nppicom.lib

nppidei.lib

nppif.lib

nppig.lib

nppim.lib

nppist.lib

nppisu.lib

nppitc.lib

npps.lib

nvblas.lib

nvgraph.lib

nvml.lib

nvrtc.lib

OpenCL.lib

 

 

3.6  配置成功后,这里附带一个测试程序:


// CUDA runtime 库 + CUBLAS 库   
#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;
}

 

程序运行结果:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/350275.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙应用开发 常用组件与布局

简介 HarmonyOS ArkUI 提供了丰富多样的 UI 组件&#xff0c;您可以使用这些组件轻松地编写出更加丰富、漂亮的界面。在本篇 Codelab 中&#xff0c;您将通过一个简单的购物社交应用示例&#xff0c;学习如何使用常用的基础组件和容器组件。本示例主要包含&#xff1a;“登录”…

[数论]莫比乌斯反演1

索引 莫比乌斯反演1 定理莫比乌斯反演2 证明莫比乌斯反演3 技巧前言 本篇内容全部为定理&#xff0c;无证明 定义 莫比乌斯函数的符号为\(\mu\)&#xff0c;通俗的来讲\[ \mu(n) \left\{ \begin{matrix} 1 & n1\\ (-1)^k & n p_1p_2p_3\dots p_k\\ 0 & \text{其他…

怎么卸载光速头条_我用这三招,整理了桌面并且屏蔽了广告弹窗

这段时间&#xff0c;在用公司电脑工作时&#xff0c;有两个问题让我非常不爽。一是正处在专心工作中&#xff0c;突然桌面中间就弹出一个&#xff1a;天猫双12的广告&#xff0c;而且还没有关闭按钮。只能打开然后再关闭。二是每次打开电脑&#xff0c;桌面中间和右下角就有一…

Qt配置VS2017

目录 一 Qt安装 二 VS2017安装 三 Qt配置VS2017 一 Qt安装 1.1 下载网址&#xff1a;http://download.qt.io/archive/qt/ 这里选择 1.2 安装Qt 安装路径可以自己更改&#xff0c;然后点下一步 可以根据自己的VS版本自己选择&#xff0c;我们这里选MSVC-2017 64-bit 二…

opencv python tutorials_OpenCV-Python Tutorials 笔记(二)

OpenCV官方有一个面向python的文档OpenCV-PythonTutorials&#xff1a;我根据此文档进行了实践学习&#xff0c;结合自己经验简单记录一下笔记。(续)4、Image Processing inOpenCV4.1ChangingColorspaces转换颜色空间算是极其常用的操作了。不用说&#xff0c;cvtColor()。相关…

runltp出现问题 [

runltp 623行&#xff1a; if [ "$?" "0" ]; then 对[解析出了问题。 我灵机一动&#xff0c;是不是sh的问题。 which sh /bin/sh ls -l /bin/sh sh指向dash 果然不对 rm后 ln -s /bin/bash /bin/sh 再次运行&#xff0c;正确。 转载于:https://www.cnbl…

fork join框架_Java 7:Fork / Join框架示例

fork join框架Java 7中的Fork / Join Framework专为可分解为较小任务的工作而设计&#xff0c;并将这些任务的结果组合起来以产生最终结果。 通常&#xff0c;使用Fork / Join Framework的类遵循以下简单算法&#xff1a; // pseudocode Result solve(Problem problem) {if (p…

numpy T、transpose()函数、swapaxes()函数

目录 1 矩阵转置T&#xff0c;既线性代数中矩阵转置 2 transpose()函数 3 swapaxes()函数 1 矩阵转置T&#xff0c;既线性代数中矩阵转置 示例程序如下&#xff1a; import numpy as npa np.arange(0,24,2).reshape(3, 4)print(*****a****) print(a: \n, a) print(a.…

leetcode-54 螺旋矩阵

题目: 给定一个包含 m x n 个元素的矩阵&#xff08;m 行, n 列&#xff09;&#xff0c;请按照顺时针螺旋顺序&#xff0c;返回矩阵中的所有元素。示例 1:输入:[[ 1, 2, 3 ],[ 4, 5, 6 ],[ 7, 8, 9 ]]输出: [1,2,3,6,9,8,7,4,5]示例 2:输入:[ [1, 2, 3, 4], [5, 6, 7, 8], [9,…

米线店结账程序 装饰着模式_实验报告2_装饰者模式

序号&#xff1a;姓名&#xff1a;杨林燕学号&#xff1a;106专业&#xff1a;软件工程日期&#xff1a;成绩&#xff1a;实验二装饰者模式的运用一、实验目的&#xff1a;装饰者模式动态地将责任附加到对象上&#xff0c;若要扩展功能&#xff0c;装饰者提供了比继承更有弹性的…

Java的内置垃圾收集如何使您的生活更美好(大部分时间)

通过从应用程序中学习企业APM产品&#xff0c;发现更快&#xff0c;更高效的性能监控。 参加AppDynamics APM导览&#xff01; “无需为用户编写将寄存器返回到自由存储列表的程序。” 该行&#xff08;以及随后的十几行&#xff09;被埋在约翰麦卡锡&#xff08;John McCart…

PyOpenCV 坐标系统

pyOpenCV中的坐标系统&#xff0c;以图片左上角为原点&#xff08;0,0&#xff09;&#xff0c;水平方向为x轴&#xff08;也既图像的宽度width&#xff09;&#xff0c;竖直方向为y轴&#xff08;也既图像的高度height&#xff09;&#xff0c;如下图所示&#xff1a; #图像中…

office 论文 页码_毕业论文必备技巧:Word页码从第三页开始设置方法

许多应届毕业生在排版毕业论文时候&#xff0c;都会按要求设置页码&#xff0c;第一页是封面&#xff0c;第二页是目录&#xff0c;那么正文内容就要从第三页正式开始了。按照正规设置方式&#xff0c;那么页码此时应该是第三页。但是按照论文格式规定&#xff0c;页码应该是从…

散列

一.什么是散列 散列使用一个散列函数&#xff0c;将一个键映射到一个索引上。散列非常高效。使用散列将耗费O(1)时间来查找、插入、及删除一个元素。 映射表是一种用散列实现的数据结构&#xff0c;映射表是一种存储条目的容器&#xff0c;每个条目包含两个部分&#xff1a;一个…

移动端触摸(touch)事件

目有个交互需要实现手指滑动的交互&#xff0c;pc端使用mousedown,mousemove,mouseup监听实现。 但在ios设备上mousemove是不好监听的&#xff0c;同类的方法是touchstart,touchmove,touchend。 项目需求&#xff0c;需要用到拖动事件。由于不需要考虑IE8等低端浏览器的兼容性&…

numcpp速度对比_PHP和C++性能对比.pdf

PHP 与C性能比较本文博客链接&#xff1a;http://keping.me/php_vs_cpp/PHP 是速度很快的脚本语言&#xff0c;但是用了框架以后好像感觉挺慢的。于是猜测会不会PHP 本身也不是很快。如果不是很快&#xff0c;能否采用 PHP 调用本地动态链接库的形式来提升速度。于是有了下面的…

jndi ldap_什么是JNDI,SPI,CCI,LDAP和JCA?

jndi ldapJNDI代表Java命名和目录接口 。 它是用于提供对目录服务&#xff08;即&#xff0c;服务映射名称&#xff08;字符串&#xff09;与对象&#xff0c;对远程对象或简单数据的引用&#xff09;访问的API。 这就是所谓的 约束力 。 绑定集称为上下文 。 应用程序使用JND…

PyOpenCV 基本操作

目录 1. 图片加载、显示和保存 2. 图像显示窗口创建与销毁 3. 图片宽、高、通道数获取 4. 图像像素数目和图像数据类型的获取 5. 生成指定大小的空图像, 生成指定大小的空图像 6. 访问和操作图像像素 7. 图像三通道分离和合并 8. 抓取摄像头 1. 图片加载、显示和保存 …

python中用于标识字符串的定界符_Python 基本数据类型

######################基本数据类型######################数字类型整数 int整数是用来表示整数数值,即没有小数部分的数值,包括正整数 负整数和0整数类型包括十进制整数 八进制整数 十六进制整数和二进制整数例如: 0 , 100 , 65205浮点数 float浮点数由整数部分和小数部分组成…

适用于Java开发人员的Elasticsearch:命令行中的Elasticsearch

本文是我们学院课程的一部分&#xff0c;该课程的标题为Java开发人员的Elasticsearch教程 。 在本课程中&#xff0c;我们提供了一系列教程&#xff0c;以便您可以开发自己的基于Elasticsearch的应用程序。 我们涵盖了从安装和操作到Java API集成和报告的广泛主题。 通过我们简…