server2019+vs2022+cuda11.4测试CUDA Samples示例

2023-10-16 15:04:23 浏览数 (1)

先安装grid驱动,然后安装cuda环境时注意不要安装显卡驱动,否则会冲掉grid驱动

先安装grid驱动,然后安装cuda环境时注意不要安装显卡驱动,否则会冲掉grid驱动

先安装grid驱动,然后安装cuda环境时注意不要安装显卡驱动,否则会冲掉grid驱动

渲染型机器,有包含grid驱动和license的grid公共镜像可以选择,或者支持渲染的计算型GPU机器,云市场有相关grid收费镜像可以选择

如果选计算型 云市场grid收费镜像,条件苛刻且镜像费用不低,一般建议选购渲染型机器用免费的grid公共镜像

在grid镜像基础上可以安装cuda环境(主要安装时不要安装显卡驱动,否则会冲掉grid公共镜像里的驱动)

这篇文档耗了大量精力试错、排错,最后录了视频:https://cloud.tencent.com/developer/video/75032

文档只是引子,排错才看底子,给你文档你不一定能成功

我花费了大量时间精力融会贯通入门级别那道坎来方便有缘人,希望对你有所帮助

操作系统:Windows Server 2019 数据中心版 64位 中文版 GRID13.0(云市场镜像)

实例规格:GPU计算型GN10X | GN10X.2XLARGE40

显卡类型:Tesla V100 SXM2 32GB (Tesla V100 NVLink 32GB)

vs2022:https://visualstudio.microsoft.com/zh-hans/ 社区版即可

安装时记得勾选v142 、v141,有其他的也选下

v143–>VS2022

v142–>VS2019

v141–>VS2017

v140–>VS2015

v120–>VS2013

由于镜像中已有grid13.0渲染型驱动,安装cuda应该选什么版本,需要看grid的文档:https://docs.nvidia.com/grid/

点一下13.0跳转到https://docs.nvidia.com/grid/13.0/index.html

然后在右上侧搜索框搜cuda,能看到是11.4,点一下会看到更详细的显卡型号级别的支持情况

https://www.nvidia.cn/design-visualization/nvlink-bridges/

NVIDIA®NVLink™是世界首项高速 GPU 互连技术,与传统的 PCIe 系统解决方案相比,能为多 GPU 系统提供更快速的替代方案。NVLink 技术通过连接两块 NVIDIA®显卡,能够实现显存和性能扩展1,从而满足最大视觉计算工作负载的需求。

https://cloud.tencent.com/developer/article/2167025

https://zhuanlan.zhihu.com/p/95179946

上面多啰嗦了一部分nvlink

从https://docs.nvidia.com/grid/13.0/index.html 中我们看到cuda的支持情况如下:

有些显卡是需要grid13.1往后的13.x,13.0是不行的

而我所选的Tesla V100 SXM2 32GB (Tesla V100 NVLink 32GB)13.0和13.x都可以,cuda版本是11.4

GPU

vGPU Mode

Debuggers

Profilers

NVIDIA A10

Time-sliced

13.0 only: -Since 13.1: ✓

NVIDIA A16

Time-sliced

13.0 only: -Since 13.1: ✓

NVIDIA A30

Time-sliced

MIG-backed

13.0 only: -Since 13.1: ✓

NVIDIA A40

Time-sliced

13.0 only: -Since 13.1: ✓

NVIDIA A100 HGX 40GB

Time-sliced

MIG-backed

13.0 only: -Since 13.1: ✓

NVIDIA A100 PCIe 40GB

Time-sliced

MIG-backed

13.0 only: -Since 13.1: ✓

NVIDIA A100 HGX 80GB

Time-sliced

MIG-backed

13.0 only: -Since 13.1: ✓

NVIDIA A100 PCIe 80GB

Time-sliced

MIG-backed

13.0 only: -Since 13.1: ✓

NVIDIA RTX A5000

Time-sliced

13.0 only: -Since 13.1: ✓

NVIDIA RTX A6000

Time-sliced

13.0 only: -Since 13.1: ✓

Tesla T4

Time-sliced

Quadro RTX 6000

Time-sliced

Quadro RTX 6000 passive

Time-sliced

Quadro RTX 8000

Time-sliced

Quadro RTX 8000 passive

Time-sliced

Tesla V100 SXM2

Time-sliced

Tesla V100 SXM2 32GB

Time-sliced

Tesla V100 PCIe

Time-sliced

Tesla V100 PCIe 32GB

Time-sliced

Tesla V100S PCIe 32GB

Time-sliced

Tesla V100 FHHL

Time-sliced

✓ Feature is supported

- Feature is not supported

然后去cuda官网下载11.4即可,https://developer.nvidia.com/cuda-toolkit-archive

cuda安装有关键注意事项:千万别勾选Display Driver

调试vs2022 cuda11.4,需要参考3个文档

文档只是引子,排错才看底子,给你文档你不一定能成功

https://zhuanlan.zhihu.com/p/399189415,这篇文档告诉我安装cuda后有测试用例,不用自己去找测试用例,并且知道测试用例是基于visual studio c 环境的,并且至少得是vs2019,但是我去vs官网找不到vs2019安装文件,只有vs2022了,只能硬着头皮安装vs2022,安装的时候我系统盘剩余空间没多少了,就需要啥安装啥,不需要的不勾选,这样一来省空间,二来也安装快一些,毕竟是公网下载安装,勾选得太多反而不好

安装vs2022时,选这2项即可

安装完成验证c 代码运行的话,我用的这个demo:https://blog.csdn.net/wangduanqiugao/article/details/102741544

代码语言:javascript复制
#include <atlstr.h>
#include <string.h>
#include <iostream>
using namespace std;
 
bool ChineseToUnicode(CString cstr, string & str)
{
    int i = 0;
    int strlen = 0;
    int hexlen = 0;
    long hexlong = 0;
 
    strlen = cstr.GetLength();
    if (strlen <= 0)
    {
        return false;
    }
 
    wchar_t* wchs = new wchar_t[strlen   1];
    memset(wchs, 0, sizeof(wchar_t) * (strlen   1));
    wcscpy_s(wchs, strlen   1, cstr.GetBuffer(strlen));
 
    hexlen = strlen * 7;
    char* hexstr = new char[hexlen   1];
    memset(hexstr, 0, hexlen   1);
 
    char tchar[7];
    wchar_t* szHex = wchs;
 
    for (i = 0; i < strlen; i  )
    {
	hexlong = (long)(*szHex  );
	sprintf_s(tchar, "\ux", hexlong);
	strcat_s(hexstr, hexlen, tchar);
    }
 
    str = (string)hexstr;
 
    if (wchs)
    {
	delete[] wchs;
    }
    if (hexstr)
    {
	delete[] hexstr;
    }
    return true;
}
 
int main()
{
    CString m_Chinese = _T("望断秋高和待雪初平");
    string  m_ChineseToUnicode;
 
    //ChineseToUnicode
    ChineseToUnicode(m_Chinese, m_ChineseToUnicode);
 
    wcout.imbue(locale("chs"));
    wcout << m_Chinese.GetString() << endl;
    cout << "ChineseToUnicode:" << "n" << m_ChineseToUnicode << "nnn";
    getchar();
}

如果安装过程中没勾选v142 、v141,事后补上也行,如何补?运行appwiz.cpl

双击Visual Studio Community 2022

如下图勾选v142(我没有v141即vs2017项目的需求,所以没选v141;我有尝试过,当我勾选v141时,v143也自动打√了,至于v143,如果不勾选v141,它默认是未勾选的,但我安装vs2022时就是选的c ,v143理论上已经有了,无需勾选,假如真的没有,如v142的法,炮制即可;如果勾选v141,要注意调整属性页里的Windows SDK版本为10.0.22000.0)

不论是安装过程还是修改过程,都要注意下磁盘空间,确保剩余空间足够

确认磁盘空间没问题后,就点右下角的修改按钮,然后耐心等待完成

完成后点启动

假如我也安装了v141,即可以支持vs2017项目,那cuda samples里的vs2017项目也能用上了,但是请注意,这里有几个注意事项:

1、打开.sln的时候会有提示升级,选不升级

不论是vs2017.sln还是vs2019.sln,都选不升级

C:ProgramDataNVIDIA CorporationCUDA Samplesv11.4

如果不小心点错了,也没关系

在项目上右键属性,自己调整 平台工具集,选择对应的v14x即可,选好后就可以调试了

v143–>VS2022

v142–>VS2019

v141–>VS2017

v140–>VS2015

v120–>VS2013

2、打开项目的时候如果有如下报错,参考https://www.cnblogs.com/bohrchen/p/16363951.html 解决

上述报错解决后,调试即可

.sln里的项目很多,试了vs2017.sln和vs2019.sln里的asyncAPI、matrixMul等都可以,没有全试。

Tesla V100 SXM2 32GB (Tesla V100 NVLink 32GB) server2019 grid13.0 cuda11.4 (去掉驱动,要不然会顶替掉grid13.0) 目前测试ok,计算(cuda)和渲染(blender)两种业务场景都正常。

在跑cuda测试的时候,你可以调用C:Program FilesNVIDIA CorporationNVSMInvidia-smi.exe来查看GPU利用率,cmd命令行:

代码语言:javascript复制
cd /d "C:Program FilesNVIDIA CorporationNVSMI"
nvidia-smi.exe -l 2
(2秒刷新一次)

0 人点赞