Windows11+VS2019+CUDA11.8配置过程

这篇具有很好参考价值的文章主要介绍了Windows11+VS2019+CUDA11.8配置过程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近要处理大规模点云数据, 用CPU跑感觉有点慢,想通过GPU加速点云处理过程,于是想要学习CUDA编程。

很多教程提到在安装CUDA之前,需要打开cmd,输入nvidia-smi,查看显卡支持的CUDA版本。这个步骤我在安装CUDA之前没有做,我是直接安装了,但是建议查一下。事后,还是查了一下,发现直接写的是11.8
Windows11+VS2019+CUDA11.8配置过程

CUDA下载安装

CUDA官方安装教程:https://docs.nvidia.com/cuda/cuda-installation-guide-microsoft-windows/index.html

Windows11+VS2019+CUDA11.8配置过程
根据官方教程可以发现,VS2019和Win11是可以跟CUDA11.8配置的。

CUDA下载链接:https://developer.nvidia.com/cuda-downloads

Windows11+VS2019+CUDA11.8配置过程
安装过程一路默认,默认路径一般在C盘。

安装完毕之后,打开cmd,输入nvcc -V试一试看看能否查到CUDA版本,可以的话应该是没问题。

VS2019与CUDA配置

可以打开一个现有的VS项目,或者新建一个空项目。右键点击源文件,添加新建项就可以创建一个CUDA文件,后缀是.cu。若是创建CUDA头文件,后缀就是.cuh。debug为x64
Windows11+VS2019+CUDA11.8配置过程

然后,右键点击这个cu文件,选择属性,将项类型改成CUDA C++。
Windows11+VS2019+CUDA11.8配置过程
选择项目,点击右键–>生成依赖项–>自定义生成–>选择CUDA11.8
Windows11+VS2019+CUDA11.8配置过程

右键项目,找到CUDA C/C++ ——>Common,输入C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8
Windows11+VS2019+CUDA11.8配置过程
当然,也还是要配置包含目录和库目录,这个和VS配置其他库一样
包含目录:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\include
库目录:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\lib\x64
Windows11+VS2019+CUDA11.8配置过程
链接器——>输入——>附加依赖项

cublas.lib
cublasLt.lib
cuda.lib
cudadevrt.lib
cudart.lib
cudart_static.lib
cufft.lib
cufftw.lib
cufilt.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
nvrtc_static.lib
nvrtc-builtins_static.lib
OpenCL.lib

完成配置之后,通常要先运行一个例程试一试看看效果。但是报错

未定义标识符“__syncthreads”

这篇博客中解释到这个情况加什么头文件都不行,我试了也发现确实是不行。但是好像可以编译运行。
Windows11+VS2019+CUDA11.8配置过程
另一个博主也是这么说,传送门
Windows11+VS2019+CUDA11.8配置过程

应输入表达式

这个好像也是可以忽略的,也是没找到什么办法。
Windows11+VS2019+CUDA11.8配置过程

测试代码

error.cuh文件

#pragma once
#include <stdio.h>

#define CHECK(call)                                   \
do                                                    \
{                                                     \
    const cudaError_t error_code = call;              \
    if (error_code != cudaSuccess)                    \
    {                                                 \
        printf("CUDA Error:\n");                      \
        printf("    File:       %s\n", __FILE__);     \
        printf("    Line:       %d\n", __LINE__);     \
        printf("    Error code: %d\n", error_code);   \
        printf("    Error text: %s\n",                \
            cudaGetErrorString(error_code));          \
        exit(1);                                      \
    }                                                 \
} while (0)

XXX.cu代码

#include <stdio.h>
#include <stdlib.h>
#include "error.cuh"
#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include "device_functions.h"
#include <math.h>



#define TILE_DIM 32   //Don't ask me why I don't set these two values to one
#define BLOCK_SIZE 32
#define N 3001 // for huanhuan, you know that!

__managed__ int input_M[N * N];      //input matrix & GPU result
int cpu_result[N * N];   //CPU result


//in-place matrix transpose
__global__ void ip_transpose(int* data)
{
    __shared__ int tile_s[TILE_DIM][TILE_DIM + 1];
    __shared__ int tile_d[TILE_DIM][TILE_DIM + 1];

    int x = blockIdx.x * TILE_DIM + threadIdx.x;
    int y = blockIdx.y * TILE_DIM + threadIdx.y;

    //Threads in the triangle below
    if (blockIdx.y > blockIdx.x) {
        int dx = blockIdx.y * TILE_DIM + threadIdx.x;
        int dy = blockIdx.x * TILE_DIM + threadIdx.y;
        if (x < N && y < N)
        {
            tile_s[threadIdx.y][threadIdx.x] = data[(y)*N + x];
        }
        if (dx < N && dy < N)
        {
            tile_d[threadIdx.y][threadIdx.x] = data[(dy)*N + dx];
        }

        __syncthreads();
        if (dx < N && dy < N)
        {
            data[(dy)*N + dx] = tile_s[threadIdx.x][threadIdx.y];
        }
        if (x < N && y < N)
        {
            data[(y)*N + x] = tile_d[threadIdx.x][threadIdx.y];
        }
    }
    else if (blockIdx.y == blockIdx.x)//Threads on the diagonal
    {
        if (x < N && y < N)
        {
            tile_s[threadIdx.y][threadIdx.x] = data[(y)*N + x];
        }
        __syncthreads();
        if (x < N && y < N)
        {
            data[(y)*N + x] = tile_s[threadIdx.x][threadIdx.y];
        }
    }
}

void cpu_transpose(int* A, int* B)
{
    for (int j = 0; j < N; j++)
    {
        for (int i = 0; i < N; i++)
        {
            B[i * N + j] = A[j * N + i];
        }
    }
}

int main(int argc, char const* argv[])
{

    cudaEvent_t start, stop_gpu;
    CHECK(cudaEventCreate(&start));
    CHECK(cudaEventCreate(&stop_gpu));


    for (int i = 0; i < N; ++i) {
        for (int j = 0; j < N; ++j) {
            input_M[i * N + j] = rand() % 1000;
        }
    }
    cpu_transpose(input_M, cpu_result);

    CHECK(cudaEventRecord(start));
    unsigned int grid_rows = (N + BLOCK_SIZE - 1) / BLOCK_SIZE;
    unsigned int grid_cols = (N + BLOCK_SIZE - 1) / BLOCK_SIZE;
    dim3 dimGrid(grid_cols, grid_rows);
    dim3 dimBlock(BLOCK_SIZE, BLOCK_SIZE);
    ip_transpose << <dimGrid, dimBlock >> > (input_M);
    CHECK(cudaDeviceSynchronize());
    CHECK(cudaEventRecord(stop_gpu));
    CHECK(cudaEventSynchronize(stop_gpu));

    float elapsed_time_gpu;
    CHECK(cudaEventElapsedTime(&elapsed_time_gpu, start, stop_gpu));
    printf("Time_GPU = %g ms.\n", elapsed_time_gpu);

    CHECK(cudaEventDestroy(start));
    CHECK(cudaEventDestroy(stop_gpu));

    int ok = 1;
    for (int i = 0; i < N; ++i)
    {
        for (int j = 0; j < N; ++j)
        {
            if (fabs(input_M[i * N + j] - cpu_result[i * N + j]) > (1.0e-10))
            {
                ok = 0;
            }
        }
    }


    if (ok)
    {
        printf("Pass!!!\n");
    }
    else
    {
        printf("Error!!!\n");
    }

    return 0;
}

结果

Windows11+VS2019+CUDA11.8配置过程
GPU信息读取代码

#include "cuda_runtime.h"
#include "device_launch_parameters.h"

#include <stdio.h>

void myDeviceInfo();

int main()
{
    // mykernel <<<1, 10 >>> ();
    myDeviceInfo();
    cudaDeviceSynchronize();
    return 0;
}

void myDeviceInfo()
{
    int dev_count;
    cudaGetDeviceCount(&dev_count);
    cudaDeviceProp dev_prop;
    int i;
    for (i = 0; i < dev_count; i++) {
        cudaGetDeviceProperties(&dev_prop, i);
        printf("----------- Information of device %d -----------\n", i);
        printf("The streaming multiprocessor(SM) number is %d\n", dev_prop.multiProcessorCount);
        printf("The max thread block numberof per SM is %d\n", dev_prop.maxBlocksPerMultiProcessor);
        printf("The max threads number of per SM is %d\n", dev_prop.maxThreadsPerMultiProcessor);
        printf("The max threads number of per block is %d\n", dev_prop.maxThreadsPerBlock);
        printf("The max thread blocks number in (x, y, z) dim is (%d, %d, %d)\n", dev_prop.maxGridSize[0], dev_prop.maxGridSize[1], dev_prop.maxGridSize[2]);
        printf("The max threads number of (x, y, z) dim is (%d. %d, %d)\n", dev_prop.maxThreadsDim[0], dev_prop.maxThreadsDim[1], dev_prop.maxThreadsDim[2]);
        printf("----------- Information of device end -----------\n");
    }
}

参考

教程1
教程2
教程3
教程4
教程5文章来源地址https://www.toymoban.com/news/detail-431771.html

到了这里,关于Windows11+VS2019+CUDA11.8配置过程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • cuda调试(一)vs2019-windows-Nsight system--nvtx使用,添加nvToolsExt.h文件

    由于在编程过程中发现不同的网格块的结构,对最后的代码结果有影响,所以想记录一下解决办法。 cuda context (上下文) context类似于CPU进程上下,表示由管理层 Drive 层分配的 资源的生命周期 ,多线程分配调用的GPU资源同属一个context下,通常与CPU的一个进程对应。 CUDA Strea

    2024年02月03日
    浏览(49)
  • 【Python】CUDA11.7/11.8安装PyTorch三件套

    CUDA11.7,在终端中输入以下指令: CUDA11.8,在终端中输入以下指令: 检查PyTorch是否安装成功: 【Python】查看Python PyTorch Torchvision版本_ericdiii的博客-CSDN博客_python查看pytorch版本 1. 查看Python版本:方法一:终端中输入:python -V方法二:进入Python环境python输入import sysprint(sys.versio

    2024年02月11日
    浏览(52)
  • Ubuntu22.04 系统 安装驱动 && CUDA11.8

    参考: https://blog.csdn.net/weixin_43387635/article/details/126749463 Ubuntu22.04安装显卡驱动(高速、避错版)-CSDN博客 -------------------------------------------------安装驱动-------------------------------------------------------------------- 原作者说 需要注意的两条 ①   安装之前进入主板BIOS,关闭安全启动!!

    2024年03月27日
    浏览(68)
  • 【多版本cuda自由切换】在ubuntu上安装多个版本的CUDA,并且可以随时切换cuda-11.3//cuda-11.8//cuda-11.6//cuda-11.2

    问题描述         项目开发中,不同的项目可能对不同的cuda版本有所要求,常见的是这几种cuda-11.3//cuda-11.8//cuda-11.6,按照之前的认知,一个主机只能安装一个版本的cuda,否则会引起环境混乱,知道cuda底层逻辑的人都知道这有多么扯蛋,对吧。         也正是因为受到这个

    2024年02月03日
    浏览(54)
  • Windows11环境下VS2019调用Pytorch语义分割模型(C++版)

             语义分割模型在训练时往往采用python脚本进行网络搭建和训练,并获得训练好的模型。为了提高效率方便整个工程项目部署,实际工程应用中通常希望使用C++编程语言调用训练好的网络模型。查询大量网络资料并踩过无数坑后,经实际测试实现了在window11环境下调用

    2024年02月14日
    浏览(62)
  • Ubuntu22.04安装CUDA11.8和CUDNN

    下载CUDA11.8 选择对应的系统 架构 OS 版本 逐步执行上图命令 编辑环境变量文件 配置环境变量 重启 重启 重启 重要的事情说三边 查看版本 结果 下载cudnn 找到适合你的cudnn https://developer.nvidia.com/rdp/cudnn-archive#a-collapse7415-10 安装cudnn 下载好以后解压(注意核对下载和解压名称是否

    2024年02月09日
    浏览(51)
  • win10 cuda11.8 和torch2.0 安装

    为了不污染现有开发环境,创建新的conda环境,这里我选择Python3.11版本 cuda 下载链接:cuda 去archve下找到11.8的版本 直接安装,首先提取在temp目录 安装好cuda后,会提示重启。重启完成后,安装成功。 cuda安装好之后,会新建两个环境变量 CUDA_PATH 以及 CUDA_PATH_V11_8 : 安装cuDN

    2024年02月04日
    浏览(80)
  • 【Ubuntu 20.04LTS系统】安装CUDA11.8、cuDNN,可进行CUDA版本切换

    https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/ 更新软件列表和必要的依赖项 步骤一: 下载CUDA安装包 进行CUDA和cuDNN的选择,也可以直接根据官方推荐进行下载安装。 从Nvidia官网下载CUDA https://developer.nvidia.com/cuda-downloads 下方链接,选择更多版本 https://developer.nvidia.com/cuda-toolkit-archiv

    2024年02月16日
    浏览(71)
  • PYTORCH 依赖 cuda 11.8 , cuda 12.1 cpu 里 torch torchvision torchaudio对应关系

    Pytorch是Facebook人工智能研究院基于Torch开发的一个开源的Python机器学习库,它提供了两项强大的功能: 1、强大的GPU加速的张量计算(NumPy)。 2、自动求导系统的深度神经网络。 cuda 11.8 cuda 12.1 cpu  Previous PyTorch Versions | PyTorch

    2024年02月01日
    浏览(56)
  • ARM架构下银河麒麟V10系统基于CUDA11.8编译PyTorch

    公司近期想尝试本地用下ChatGLM模型,只有服务器安装了两张显卡,故而只能在服务器做尝试。CUDA驱动啥的,之前的同事已经安装完毕,并且成功识别出显卡,顾略去。按照GIT README步骤开搞,一切顺利,最后在运行脚本的时候收到如下提示 因为服务器是ARM的(CPU是Phytium ST250

    2024年02月14日
    浏览(121)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包