VS2015下安装CUDA11.1

2.CUDA(仅支持NVIDIA)

###(0)简单了解
<0>参考链接
  https://www.cnblogs.com/dwdxdy/p/3244508.html
  https://blog.csdn.net/qq_38314702/article/details/99414393
  https://blog.csdn.net/qq_25071449/article/details/77680246
  https://blog.csdn.net/qq_38295511/article/details/89223169
  https://blog.csdn.net/sinat_23619409/article/details/84202651
  https://blog.csdn.net/bulubulu2527/article/details/79990015?utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.baidujs&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.baidujs
  https://mp.weixin.qq.com/s/b22a58sjzVpAIh_HCKIb_A
  https://blog.csdn.net/geduo_feng/article/details/101100202
  https://www.cnblogs.com/liangliangdetianxia/p/3978955.html
  https://blog.csdn.net/weixin_40054643/article/details/97666285
  https://blog.csdn.net/qq_33757398/article/details/82706565
  https://www.pianshen.com/article/374938023/
  https://www.cnblogs.com/elitphil/p/11833815.html
  https://blog.csdn.net/weixin_43402514/article/details/103081728
  https://blog.csdn.net/u013468614/article/details/90137814
  https://blog.csdn.net/WhatUwannadO/article/details/82468086
  https://blog.csdn.net/u011501388/article/details/83142164
  https://blog.csdn.net/u014365862/article/details/85338619
  https://blog.csdn.net/qq_41790833/article/details/96874220
  https://wiki.tiker.net/PyCuda/Installation/Windows/
<1>相关介绍
  CUDA是NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题,CUDA只支持NVIDIA自家的显卡,过旧的版本型号也不被支持。它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。 开发人员可以使用C语言来为CUDA™架构编写程序,C语言是应用最广泛的一种高级编程语言。所编写出的程序可以在支持CUDA™的处理器上以超高性能运行。CUDA3.0已经开始支持C++和FORTRAN。
  CUDA(Compute Unified Device Architecture)是一个新的基础架构,这个架构可以使用GPU来解决商业、工业以及科学方面的复杂计算问题。它是一个完整的GPU解决方案,提供了硬件的直接访问接口,而不必像传统方式一样必须依赖图形API接口来实现GPU的访问。在架构上采用了一种全新的计算体系结构来使用GPU提供的硬件资源,从而给大规模的数据计算应用提供了一种比CPU更加强大的计算能力。CUDA采用C语言作为编程语言提供大量的高性能计算指令开发能力,使开发者能够在GPU的强大计算能力的基础上建立起一种效率更高的密集数据计算解决方案。
###(1)安装过程
<0>查看自己的NVIDIA版本
  点击NVIDIA控制面板,点击左下角系统信息,在组件中查看DLL版本,如下图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MUYXWbuV-1624263844147)(./捕获5.JPG)]

<1>选择安装内容
  下图是选择解包路径:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ta4xd6LB-1624263844148)(./1622300932308.png)]
  选择自定义安装,然后指定安装路径:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-697tnm4X-1624263844149)(./捕获6.JPG)]
  完成安装程序; **<2>添加环境变量**   检查系统变量
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gPQ5U7qc-1624263844151)(./1622302163269.png)]
  添加环境变量(最好选用户),借的图,我的安装目录树如下: >|Doc(Documentation) > -|Samples > -|Extra(Develoment)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MjqNb7fx-1624263844151)(./1622302534961.png)]

<3>win10系统测试
  在cmd里面输入:

nvcc -V
nvcc --version

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yELYdklL-1624263844152)(./捕获7.JPG)]
  显示cuda版本号,说明安装成功;   在安装目录下sample中找到3_Imaging\boxFilter\boxFilter_vs2015.sln,看能否运行成功; **<4>VS2015下配置**   打开VS2015,新建一个控制台工程,

  配置包含目录如下:

E:\CUDA\CUDA_install\Sample\v11.1\common\inc(对应)
E:\CUDA\CUDA_install\Extra\v11.1\include(对应Develoment)

  配置库目录如下:

E:\CUDA\CUDA_install\Sample\v11.1\common\lib\x64
E:\CUDA\CUDA_install\Extra\v11.1\lib\x64

  附加依赖项如下:

cublas.lib
cublasLt.lib
cuda.lib
cudadevrt.lib
cudart.lib
cudart_static.lib
cufft.lib
cufftw.lib
curand.lib
cusolver.lib
cusolverMg.lib
cusparse.lib
nppc.lib
nppial.lib
nppicc.lib
nppidei.lib
nppif.lib
nppig.lib
nppim.lib
nppist.lib
nppisu.lib
nppitc.lib
npps.lib
nvblas.lib
nvjpeg.lib
nvml.lib
nvptxcompiler_static.lib
nvrtc.lib
OpenCL.lib
freeglut.lib
glew64.lib

<5>VS2015下测试
  运行下面测试代码:
  测试代码1:

#include <iostream>
#include<stdio.h>
#include "cuda_runtime.h"
#include "device_launch_parameters.h"

bool InitCUDA()
{

    int count;
    cudaGetDeviceCount(&count);

    if (count == 0)
    {
        fprintf(stderr, "There is no device.\n");
        return false;
    }

    int i;

    for (i = 0; i < count; i++)
    {

        cudaDeviceProp prop;
        
        if (cudaGetDeviceProperties(&prop, i) == cudaSuccess)
        {
            if (prop.major >= 1)
            {
                break;
            }
        }
    }

    if (i == count)
    {
        fprintf(stderr, "There is no device supporting CUDA 1.x.\n");
        return false;
    }

    cudaSetDevice(i);
    return true;
}

int main()
{
    if (!InitCUDA())
    {
        return 0;
    }

    printf("HelloWorld, CUDA has been initialized.\n");
    system("pause");
    return 0;
}

  新建控制台工程,新建cu文件,设置cu文件的项类型属性为cuda C/C++;
  测试代码2:

#include "cuda.h"
#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include <stdio.h>

__global__ void SaXPY(float a, float* X_d, float* Y_d, int n)
{
	if (threadIdx.x < n)
		Y_d[threadIdx.x] = a * X_d[threadIdx.x] + Y_d[threadIdx.x];
}

int main()
{
	int n = 64;
	float a = 2;
	float *X_h, *X_d, *Y_h, *Y_d;
	X_h = (float*)malloc(n * sizeof(float));
	Y_h = (float*)malloc(n * sizeof(float));
	for (int i = 0; i < n; i++)
	{
		X_h[i] = (float)i;
		Y_h[i] = 1.0;
	}
	
	cudaMalloc(&X_d, n * sizeof(float));
	cudaMalloc(&Y_d, n * sizeof(float));
	cudaMemcpy(X_d, X_h, n * sizeof(float), cudaMemcpyHostToDevice);
	cudaMemcpy(Y_d, Y_h, n * sizeof(float), cudaMemcpyHostToDevice);
	
	SaXPY <<<1, 64 >>>(a, X_d, Y_d, n);
	
	cudaMemcpy(Y_h, Y_d, n * sizeof(float), cudaMemcpyDeviceToHost);
	
	for (int i = 0; i < n; i++)
		printf("%2.1f X[%d] + Y[%d] = %f\n", a, i, i, Y_h[i]);
	
	cudaFree(X_d);
	cudaFree(Y_d);
	free(X_h);
	free(Y_h);
	system("Pause");
	return 0;
}

  运行成功,配置完成,测试成功
<6>Anaconda配置CUDA(无需配置python的话就可以跳过了)
  在import里面执行下面的命令:

pip install -i https://mirrors.aliyun.com/pypi/simple/ pycuda

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IpACoO9h-1624263844153)(./捕获8.JPG)]
  成功,进行下一步:

<7>Anaconda测试CUDA

import pycuda.autoinit
import pycuda.driver as drv
import numpy as np
import time
from pycuda.compiler import SourceModule
mod = SourceModule('''
__global__ void Text_GPU(float *A , float *B, float *K, size_t N){

    int bid = blockIdx.x;  
    int tid = threadIdx.x;

    __shared__ float s_data[2];

    s_data[tid] = (A[bid*2 + tid] - B[bid*2 + tid]);
    __syncthreads();
    if(tid == 0)
    {
        float sum_d = 0.0;
        for(int i=0;i<N;i++)
        {
            sum_d += (s_data[i]*s_data[i]);
        }
        K[bid] = exp(-sum_d);
    }
}
''')

multiply_them = mod.get_function("Text_GPU")
tic = time.time() 
A = np.random.random((1000,20)).astype(np.float32)
B = np.random.random((1000,20)).astype(np.float32)
K = np.zeros((1000,), dtype=np.float32)
N = 20
N = np.int32(N)   
multiply_them(
        drv.In(A), drv.In(B), drv.InOut(K), N,
        block=(20,1,1), grid=(1000,1))
toc = time.time()
print("time cost is:"+str(toc-tic)) 

3.cuDNN

###(0)简单了解
<0>参考链接
  https://blog.csdn.net/jhsignal/article/details/111398427?utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.baidujs&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.baidujs
  https://blog.csdn.net/asialee_bird/article/details/108580658?utm_medium=distribute.pc_relevant_download.none-task-blog-baidujs-2.nonecase&depth_1-utm_source=distribute.pc_relevant_download.none-task-blog-baidujs-2.nonecase
<1>相关介绍
   CUDA(ComputeUnified Device Architecture),是显卡厂商NVIDIA推出的运算平台。 CUDA是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。NVIDIA cuDNN是用于深度神经网络的GPU加速库。它强调性能、易用性和低内存开销。NVIDIA cuDNN可以集成到更高级别的机器学习框架中,如谷歌的Tensorflow、加州大学伯克利分校的流行caffe软件。简单的插入式设计可以让开发人员专注于设计和实现神经网络模型,而不是简单调整性能,同时还可以在GPU上实现高性能现代并行计算。
   CUDA看作是一个工作台,上面配有很多工具,如锤子、螺丝刀等。cuDNN是基于CUDA的深度学习GPU加速库,有了它才能在GPU上完成深度学习的计算。它就相当于工作的工具,比如它就是个扳手。但是CUDA这个工作台买来的时候,并没有送扳手。想要在CUDA上运行深度神经网络,就要安装cuDNN,就像你想要拧个螺帽就要把扳手买回来。这样才能使GPU进行深度神经网络的工作,工作速度相较CPU快很多。

###(1)安装过程
<0>选择对应的安装包下载
  进入官网(https://developer.nvidia.com/rdp/cudnn-archive),下载的时候需要一个英伟达的账号,没有的话注册一个登录即可下载。
<1>复制文件到指定路径
  将cuDANN三个文件夹下的文件分别复制到CUDA安装目录下的对应的文件夹下面,注意lib文件下还有个x64文件,将x64文件下的内容复制到相应目录下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值