cuda安装配置VS2013

1.1 安装cuda

首先官网下载安装包,这个就不细说了 ,我下的是这个版本cuda_8.0.61_win10.exe,,注意win7win10版本要对应,千万别弄错了 之后双击会出现如下截图,


解压完以后一直点下一步如下图

 

出现这个等半个小时左右就好了

安装结束后开始配置系统环境变量

win10可以这么操作win+s 搜索环境,自动匹配出系统环境变量


1.2 配置环境变量

打开环境变量后如下图:


如图中点击环境变量的就是了打开后,如下图设置:


点击新建会出现:

 

CUDA_PATH = C:\Program Files\NVIDIA GPUComputing Toolkit\CUDA\v8.0
CUDA_PATH_V7_5 = C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0
CUDA_SDK_PATH = C:\ProgramData\NVIDIA Corporation\CUDA Samples\v8.0
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

将上面的变量名和变量值依次填入:

比如:

依次填入后,找到path如图:

 

依次点击新建, %CUDA_LIB_PATH%%CUDA_BIN_PATH%%CUDA_SDK_BIN_PATH%%CUDA_SDK_LIB_PATH%;依次填入,填入后效果如上图所示。全部安装好后一定要记得重启!,这里就将cuda win10中如何配置的完成了

 

1.4 VS2013 + CUDA7.5配置(其他版本VSCUDA都类似)

·        1.打开vs2013并创建一个空win32程序,创建一个cuda_samples的解决方案和cuda_test1项目:

 

·        2.右键源文件–>添加–>新建项,如下图所示:

·        3.选择NIVIDIA CUDA7.5 CUDA C/C++file,并在名称那填上cuda_main

·        4.选择cuda_test1,点击右键–>项目依赖项–>自定义生成

·        5.选择CUDA7.5

·        6.点击cuda_main.cu的属性

·         

1.  在配置属性–>常规–>项类型–>选择“CUDA C/C++”


1.5 项目配置

1.5.1 x64

1.5.1.1 包含目录配置

·        1.右键点击项目属性–>属性–>配置属性–>VC++目录–>包含目录

·        2.添加包含目录: 
$(CUDA_PATH)\include

1.5.1.2 库目录配置

·        1.VC++目录–>库目录

·        2.添加库目录: 
$(CUDA_PATH)\lib\x64

1.5.1.3 依赖项

·         

1.  配置属性–>连接器–>输入–>附加依赖项

·         

1.  添加库文件: 
cublas.lib 
cuda.lib 
cudadevrt.lib 
cudart.lib 
cudart_static.lib 
nvcuvid.lib 
OpenCL.lib`

注意:添加nvcuvenc.lib库文件,编译时,报找不到该文件的错误。去掉后,程序也能运行

1.5.2 x86(win32)

1.5.2.1 包含目录配置

·         

1.  右键点击项目属性–>属性–>配置属性–>VC++目录–>包含目录

·         

1.  添加包含目录: 
$(CUDA_PATH)\include

1.5.2.2 库目录配置

·        1.VC++目录–>库目录

·        2.添加库目录: 
$(CUDA_PATH)\lib\Win32

1.5.2.3 依赖项

·         

1.  配置属性–>连接器–>输入–>附加依赖项

·         

1.  添加库文件: 
cuda.lib 
cudadevrt.lib 
cudart.lib 
cudart_static.lib 
nvcuvid.lib 
OpenCL.lib`

备注: win32x64位的lib库有差别,配置时需注意,除了上述添加的lib文件外,x64还有其他的lib库文件,如cublas.lib,如运行1.6的样例时,要添加这个库,不然会编译失败。

1.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 //

    );

// 同步函数

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/350725.shtml

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

相关文章

两列布局、三列适应布局、两列等高适应布局。

一. 两列布局&#xff1a;左侧定宽、右侧自适应。 四种方法 &#xff1a;flex 、position、float和负外边距、外边距 1. 使用flex. <!DOCTYPE html> <html> <head><meta charset"utf-8"><title></title><style type"tex…

操作系统的线程和进程的区别_面试官:你熟悉多线程嘛?线程跟进程有什么区别?...

这篇文章跟大家聊聊线程&#xff0c;讲到线程&#xff0c;⼜不得不提进程了~进程我们估计是很了解的了&#xff0c;在windows下打开任务管理器&#xff0c;可以发现我们在操作系统上运⾏的程序都是进程。什么是叫一个进程&#xff1f; 什么叫一个线程&#xff1f;进程&#xff…

以OpenCV为例配置VS第三方库

正常情况下&#xff0c;你拿到的别人的第三方动态库&#xff08;静态库调用方式这里不讲&#xff0c;有另外一篇文章&#xff09;至少应该包含下面三种文件&#xff1a; 1. 头文件&#xff0c;这个一般放在include这样字眼的文件夹下&#xff0c;比如OpenCV的&#xff1a;然后i…

光纤接口怎么接 图解_光纤的数据比网线快很多倍,但为什么没有在家庭局域网中普及呢?...

光纤的数据吞吐量比网线大很多&#xff0c;速度也更快&#xff0c;网络光纤入户已经普及&#xff0c;但是家庭内组网却没有普及&#xff0c;大部分家庭组网还是网线较多。分析起来主要的原因有&#xff1a;光纤线的价格和网线差不多&#xff0c;但是因为光纤所使用的专用的光接…

项目Alpha冲刺--1/10

项目Alpha冲刺--1/10作业要求 这个作业属于哪个课程软件工程1916-W(福州大学)这个作业要求在哪里项目Alpha冲刺团队名称基于云的胜利冲锋队项目名称云评&#xff1a;高校学生成绩综合评估及可视化分析平台这个作业的目标团队的代码规范、本次冲刺任务与计划其他参考文献1.邹欣.…

Java连接postgresql数据库

1.下载驱动jar 下载地址&#xff1a;https://jdbc.postgresql.org/download.html 2.导入jar包 新建lib文件夹&#xff0c;将下载的jar驱动包拖到文件夹中。 将jar驱动包添加到Libraries 3.程序代码如下&#xff1a;HelloWorld.java package test; import java.sql.Connecti…

jvm默认的初始化参数_您是否应该信任JVM中的默认设置?

jvm默认的初始化参数如今&#xff0c;JVM被认为是智能的。 预期配置不多-只需设置要在启动脚本中使用的最大堆&#xff0c;您就可以进行了。 所有其他默认设置都很好。 大概我们当中有些人误以为。 实际上&#xff0c;在运行时期间发生了很多事情&#xff0c;无法自动调整性能&…

setGeometry

setGeometry (9,9, 50, 25) 从屏幕上&#xff08;9&#xff0c;9&#xff09;位置开始&#xff08;即为最左上角的点&#xff09;&#xff0c;显示一个50*25的界面&#xff08;宽50&#xff0c;高25&#xff09; 如果在控件中加上了layout布局&#xff0c;就会发现发现没有办法…

python如何输出两行_python pandas dataframe拆分行(某些行一行拆成多行)

简单循环 最简单的方式就是循环拆分一下呗。先上最简单方法&#xff1a;import pandas as pd df pd.DataFrame({A:[1,2,3],B:[1,2,3,4,5,6],C:[3,3,3]}) result pd.DataFrame(columns[A,B,C]) print(df,\n)for i in df.itertuples(): for j in i[2].split(,): result result…

Oracle启动操作

转自&#xff1a;https://www.cnblogs.com/mellowsmile/p/4610942.html 1、启动oracle数据库&#xff1a; 从root切换到oracle用户进入&#xff1a;su - oracle 进入sqlplus环境&#xff0c;nolog参数表示不登录&#xff1a;sqlplus /nolog 以管理员模式登录&#xff1a;sqlplu…

在JPA中处理Java的LocalDateTime

几天前&#xff0c;我在处理JPA中的LocalDateTime属性时遇到问题。 在这篇博客文章中&#xff0c;我将尝试创建一个示例问题来说明该问题以及我使用的解决方案。 考虑以下实体&#xff0c;该实体为特定公司的员工建模– Entity Getter Setter public class Employee {IdGener…

Junit4 简单教程

一、环境搭建 对于习惯使用Eclipse开发平台来说&#xff0c;Junit早已是非常通常的插件&#xff0c;在Eclipse开发平台中&#xff0c;可以非常方便地搭建Junit测试环境。 1、在Eclipse上创建工程&#xff0c;任何Java工程都行。 2、引入Junit的libraries库&#xff0c;选用Juni…

Qt显示中文的方法

QT 显示中文的三种方法 最近在用Qt做项目&#xff0c;遇到UI不能显示中文的问题&#xff0c;发现有3种方法可以解决&#xff0c;先记录一下 方法一 QString::fromLocal8Bit("你好中国")1 方法二 QStringLiteral("你好中国")1 方法三 在.…

python中exception类的_面试题 | 列举几个Python中的标准异常类?

【摘要】今天给大家解答一道Python常见的面试题&#xff0c;希望这个面试栏目&#xff0c;给那些准备面试的同学&#xff0c;提供一点点帮助!小编会从最基础的面试题开始&#xff0c;每天一题。如果参考答案不够好&#xff0c;或者有错误的话&#xff0c;麻烦大家可以在留言区给…

jsonp和CORS跨域实现

一、jsonp&#xff0c;使用jquery封装的$.ajax&#xff0c;返回数据类型要设置为jsonp 示例&#xff1a; $.ajax({type: get,contentType: "application/json; charsetutf-8",url: "http://localhost:8080/aqi/getCityList.php",dataType: jsonp,< /spa…

Qt数字与字符串之间的相互转换

把QString转换为 double类型方法1.QString str"123.45";double valstr.toDouble(); //val123.45方法2.很适合科学计数法形式转换bool ok;double d;dQString("1234.56e-02").toDouble(&ok); //oktrue;d;12.3456.把QString转换为float形1.QString str&qu…

无线ap软件_无线WIFI网络干扰优化,不懂必看!新手在家里也能用的网络知识

由于国家频谱资源分配中保留一些频段用于工业、科研、医疗等方面应用&#xff0c;即ISM频段&#xff0c;如2.400到2.483G和5.170到5.825G。使用这些频段都无需许可证&#xff0c;只需要遵守一定的发射功率任何厂家都可以使用&#xff0c;WLAN也采用ISM频段。随着WLAN技术在企业…

postgresql 比较两个时间差大于 N个小时

摘要: PG 中时间想减后为interval &#xff0c;比较两个时间大于某个小时或者分钟等可以直接通过interval来实现 example1&#xff1a; -- 判断两个时间差大于4个小时 select timestamp 2013-11-11 10:00:00 - timestamp 2013-11-08 12:00:00 > interval 4 hour; examp…

spring mvc重定向_Spring的Web MVC –重定向到内存泄漏

spring mvc重定向他们说一块岩石会引起雪崩。 最近&#xff0c;我的一位同事Marcin Radoszewski给了我一块岩石。 您可能永远不会猜到它是什么&#xff0c;但是有机会在许多Web应用程序中使用它。 请允许我向您介绍这块石头。 您可能很清楚发布模式后的重定向 。 使用Spring F…

关闭8080端口

转载于:https://www.cnblogs.com/Health-zhang/p/10775034.html