这篇文档耗了大量精力试错、排错,最后录了视频: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
如果grid版本不满足需求,Google云的官网有更高版本的:https://cloud.google.com/compute/docs/gpus/grid-drivers-table?hl=zh-cn
由于镜像中已有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
#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, "\\u%04x", 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 << "\n\n\n";
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:\ProgramData\NVIDIA Corporation\CUDA Samples\v11.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 Files\NVIDIA Corporation\NVSMI\nvidia-smi.exe来查看GPU利用率,cmd命令行:
cd /d "C:\Program Files\NVIDIA Corporation\NVSMI\"
nvidia-smi.exe -l 2
(2秒刷新一次)
网友评论