目录

一、vGPU产品类型

1、NVIDIA vGPU产品简介

2、如何选择合适的vGPU

二、基于KVM创建vGPU设备

1、物理机安装vGPU驱动

2、切换到物理GPU对应的mdev_supported_types目录

3、mdev_supported_types子目录遍历待创建的vGPU类型

4、确认可在物理GPU上创建vGPU类型实例的个数

5、生成随机uuid写入create文件

6、确认vGPU设备已创建

三、查看节点生成的 mdev 设备列表

1、create文件注入uuid之前

2、create文件注入uuid之后

四、vGPU对应mdev_type映射关系

1、vGPU显存分配

2、获取mdev_type映射关系

3、Tesla T4和Tesla V100的映射关系

五、NVIDIA License Server创建及使用

1、创建License Server主机

2、注册 NVIDIA 企业账号,申请 license(或直接购买)

3、等待NVIDIA官方邮件回复

4、接受license邮件,按步骤操作

5、进入NVIDIA登录页面,输入企业账户的账号密码登录

6、登录之后,跳转到此 url【访问不稳定,建议用VPN】

7、根据所需vGPU产品类型创建license

8、下载最终生成的license文件

9、导入license文件到License Server

六、vGPU Guest虚机连接License Server

1、确认Guest虚机中有mdev设备

2、配置 nvidia-gridd 服务

3、重启 nvidia-gridd 服务

4、查看是否成功连接 license Server

七、实际应用问题1 -- FRL的限制及解除

1、什么是FRL

2、如何解除vGPU的FRL限制

八、实际应用问题2 -- 创建 windows Guest 虚机黑屏问题

1、vGPU虚机console异常显示

2、解决方法

3、连接license使用

九、实际应用问题3 -- License Server异常

1、vGPU License Server注入license文件失败

2、处理方法


一、vGPU产品类型

1、NVIDIA vGPU产品简介

NVIDIA vGPU,通过分片虚拟化技术,将物理GPU卡重新划分,同一块GPU卡经虚拟化分割后可分配至不同的云主机使用,实现了GPU计算能力的多虚机共享。

vGPU根据不同的场景,提供四种类型产品。每种类型vGPU运行时需要相应的软件授权(License),对操作系统的要求也有所区别。

(1)NVIDIA GRID Virtual Applications (GRID vApps)

适用于虚拟应用程序/Windows远程桌面(RDSH)/共享桌面

(2)NVIDIA GRID Virtual PC (GRID vPC)

适用于虚拟桌面应用,可运行所有的PC应用程序

(3)NVIDIA Quadro Virtual Data Center Workstation (Quadro vDWS)

适用于专业图形图像,以及AI/DL/HPC等计算场景

(4)NVIDIA Virtual Compute Server (vCS)

适用于人工智能(AI)/深度学习(DL)/高性能计算(HPC)等计算密集型场景,仅支持Linux系统

Series

Optimal Workload

Q-series

Virtual workstations for creative and technical professionals who require the performance and features of Quadro technology

C-series

Compute-intensive server workloads, such as artificial intelligence (AI), deep learning, or high-performance computing (HPC)

B-series

Virtual desktops for business professionals and knowledge workers

A-series

App streaming or session-based solutions for virtual applications users

2、如何选择合适的vGPU

二、基于KVM创建vGPU设备

此处以创建一个M10-2Q类型的vGPU设备为例。

1、物理机安装vGPU驱动

GPU物理节点的Linux驱动,在安装过程中需要编译kernel module,安装vGPU-kvm驱动之后,需要reboot重启计算节点。

重启之前,没有mdev设备相关信息(对应pci设备目录下没有mdev_supported_types目录);
重启之后,可看到mdev设备相关信息(对应pci设备目录下可以看到mdev_supported_types目录)

[root@localhost ~]# chmod +x NVIDIA-Linux-x86_64-430.67-vgpu-kvm.run
[root@localhost ~]# ./NVIDIA-Linux-x86_64-430.67-vgpu-kvm.run  -s# 配置驱动
[root@localhost ~]# nvidia-smi -e 0
[root@localhost ~]# nvidia-smi -pm 1 # 重启节点,让驱动生效
[root@localhost ~]# reboot
[root@localhost vgpu]# ./NVIDIA-Linux-x86_64-430.67-vgpu-kvm.run -s
Verifying archive integrity... OK
Uncompressing NVIDIA Accelerated Graphics Driver for Linux-x86_64 430.67.....................................................................................................................................................
......................................................
[root@localhost vgpu]#
[root@localhost vgpu]# nvidia-smi -e 0
ECC support is already Disabled for GPU 00000000:3D:00.0.
ECC support is already Disabled for GPU 00000000:3E:00.0.
ECC support is already Disabled for GPU 00000000:40:00.0.
ECC support is already Disabled for GPU 00000000:41:00.0.
ECC support is already Disabled for GPU 00000000:B1:00.0.
ECC support is already Disabled for GPU 00000000:B2:00.0.
ECC support is already Disabled for GPU 00000000:B4:00.0.
ECC support is already Disabled for GPU 00000000:B5:00.0.
All done.
[root@localhost vgpu]# nvidia-smi -pm 1
Enabled persistence mode for GPU 00000000:3D:00.0.
Enabled persistence mode for GPU 00000000:3E:00.0.
Enabled persistence mode for GPU 00000000:40:00.0.
Enabled persistence mode for GPU 00000000:41:00.0.
Enabled persistence mode for GPU 00000000:B1:00.0.
Enabled persistence mode for GPU 00000000:B2:00.0.
Enabled persistence mode for GPU 00000000:B4:00.0.
Enabled persistence mode for GPU 00000000:B5:00.0.
All done.
[root@localhost vgpu]#[root@localhost ]# lspci -nn| grep 3D
3d:00.0 3D controller [0302]: NVIDIA Corporation Device [10de:1eb8] (rev a1)
3e:00.0 3D controller [0302]: NVIDIA Corporation Device [10de:1eb8] (rev a1)
40:00.0 3D controller [0302]: NVIDIA Corporation Device [10de:1eb8] (rev a1)
41:00.0 3D controller [0302]: NVIDIA Corporation Device [10de:1eb8] (rev a1)
b1:00.0 3D controller [0302]: NVIDIA Corporation Device [10de:1eb8] (rev a1)
b2:00.0 3D controller [0302]: NVIDIA Corporation Device [10de:1eb8] (rev a1)
b4:00.0 3D controller [0302]: NVIDIA Corporation Device [10de:1eb8] (rev a1)
b5:00.0 3D controller [0302]: NVIDIA Corporation Device [10de:1eb8] (rev a1)
[root@localhost 0000:3d:00.0]#
[root@localhost 0000:3d:00.0]# cd /sys/bus/pci/devices/0000\:3d\:00.0/
[root@localhost 0000:3d:00.0]# ls
broken_parity_status  consistent_dma_mask_bits  dma_mask_bits    enable  iommu        local_cpulist  msi_bus    power   reset      resource1     resource3_wc    subsystem         uevent
class                 d3cold_allowed            driver           i2c-4   iommu_group  local_cpus     msi_irqs   remove  resource   resource1_wc  sriov_numvfs    subsystem_device  vendor
config                device                    driver_override  i2c-5   irq          modalias       numa_node  rescan  resource0  resource3     sriov_totalvfs  subsystem_vendor
[root@localhost 0000:3d:00.0]#
[root@localhost 0000:3d:00.0]# reboot
[root@localhost ~]# cd /sys/bus/pci/devices/0000\:3d\:00.0/
[root@localhost 0000:3d:00.0]#
[root@localhost 0000:3d:00.0]# ls
broken_parity_status  consistent_dma_mask_bits  dma_mask_bits    enable  iommu        local_cpulist         modalias  numa_node  rescan    resource0     resource3     sriov_totalvfs    subsystem_vendor
class                 d3cold_allowed            driver           i2c-4   iommu_group  local_cpus            msi_bus   power      reset     resource1     resource3_wc  subsystem         uevent
config                device                    driver_override  i2c-5   irq          mdev_supported_types  msi_irqs  remove     resource  resource1_wc  sriov_numvfs  subsystem_device  vendor
[root@localhost 0000:3d:00.0]# 

2、切换到物理GPU对应的mdev_supported_types目录

其中,0000:06:00.0表示domain:bus:slot.function

[root@localhost ~]# cd /sys/bus/pci/devices/0000\:3d\:00.0/mdev_supported_types/

3、mdev_supported_types子目录遍历可创建的vGPU类型

查看支持的所有vGPU类型

[root@localhost mdev_supported_types]# grep -l "T4-8Q" nvidia-*/name
nvidia-233/name# 或直接自定义shell脚本遍历,获取所有支持的vGPU类型
[root@localhost mdev_supported_types]# for i in `ls`;do cat $i/name |awk '{print $2}'; done; 

4、确认可在物理GPU上创建vGPU类型实例的个数

注意:此处available_instances如果返回0,表示该物理GPU上已经存在另一种vGPU类型实例,或者已经创建了允许的最大实例数。

[root@localhost mdev_supported_types]# cat nvidia-233/available_instances
2

5、生成随机uuid写入create文件

使用uuidgen生成随机uuid,写入需要创建的vGPU类型目录下的create文件中。

[root@localhost mdev_supported_types]# echo "aa618089-8b16-4d01-a136-25a0f3c73123" > nvidia-233/create

6、确认vGPU设备已创建

[root@localhost ~]# ls -l /sys/bus/mdev/devices/
lrwxrwxrwx. 1 root root 0 Nov 24 13:33 aa618089-8b16-4d01-a136-25a0f3c73123 -> ../../../devices/pci0000:00/0000:00:03.0/0000:03:00.0/0000:04:09.0/0000:06:00.0/aa618089-8b16-4d01-a136-25a0f3c73123

至此,vGPU设备创建完成。

可使用shell脚本循环创建mdev设备,或其它组件调用方式创建mdev设备(例如openstack Queens版nova组件初始化时,会自动创建mdev设备)

三、查看节点生成的 mdev 设备列表

1、create文件注入uuid之前

说明:向指定vGPU类型目录下create文件注入uuid之前,vGPU类型对应目录下available_instances数值不为0,表示GPU卡可创建的最大vGPU设备个数。

此时调用libvirt接口virsh nodedev-list查看mdev设备,返回空,表示libvirt未识别到vGPU设备。

[root@localhost mdev_supported_types]# pwd
/sys/bus/pci/devices/0000:3d:00.0/mdev_supported_types
[root@localhost mdev_supported_types]# ls
nvidia-222 nvidia-223 nvidia-224 nvidia-225 nvidia-226 nvidia-227 nvidia-228 nvidia-229 nvidia-230 nvidia-231
nvidia-232 nvidia-233 nvidia-234 nvidia-252 nvidia-319 nvidia-320 nvidia-321
[root@localhost mdev_supported_types]# for i in `ls`;do cat $i/name |awk '{print $2}'; done;
T4-1B
T4-2B
T4-2B4
T4-1A
T4-2A
T4-4A
T4-8A
T4-16A
T4-1Q
T4-2Q
T4-4Q
T4-8Q
T4-16Q
T4-1B4
T4-4C
T4-8C
T4-16C
[root@localhost mdev_supported_types]# for i in `ls`;do cat $i/available_instances |awk '{print $1}'; done;
16
8
8
16
8
4
2
1
16
8
4
2
1
16
4
2
1
[root@localhost mdev_supported_types]# virsh nodedev-list | grep mdev
[root@localhost mdev_supported_types]# 

2、create文件注入uuid之后

说明:向指定vGPU类型目录下create文件注入uuid之后,vGPU类型对应目录下available_instances数值变为0,此时可通过virsh nodedev-list查看到vGPU对应mdev设备。

[root@localhost mdev_supported_types]# virsh nodedev-list | grep mdev
mdev_1626b1c8_9532_4356_a218_c0ebd35e5450
mdev_20572bba_3133_4c2f_a2b5_a1bac1381968
mdev_250f9010_7368_4b40_a943_03025167197c
mdev_2807c84a_349c_41ee_9ce5_562e2591fceb
mdev_31b422c4_68f4_4243_9986_c2d59a7c681b
mdev_3f2992e8_b8e0_49b9_8ccf_cd4f7d059046
mdev_948febb4_e14d_428b_bea5_ffe88483d504
mdev_9aa97536_247e_42b7_a934_2f88f5848d2e
mdev_9b91d0a1_4b08_4849_9ed7_647ffb7ec500
mdev_ae8c2df9_2aee_4659_a71b_62195b6ba7e0
mdev_b4471ad4_64f4_43c0_a5a8_49a2cfcd28ea
mdev_c9cd7b64_f353_469c_b207_a87c0bd1974f
mdev_d61a83a3_1ebd_4175_bb79_d4a644fc0261
mdev_dbe9e01c_d9dc_48bc_a3d9_644d37cf79e8
mdev_e0054671_909f_494d_b83d_cb8ace4e7685
mdev_e46ef5ba_ce09_4974_9d6f_c44807351f09
[root@localhost mdev_supported_types]# for i in `ls`;do cat $i/available_instances |awk '{print $1}'; done;
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
[root@localhost mdev_supported_types]#

四、vGPU对应mdev_type映射关系

1、vGPU显存分配

在“vGPU类型名称”中,vGPU类型后面的数字,表示为该类型的vGPU分配的帧缓冲区数量。不同的物理GPU对资源的需求不同,在同一物理GPU上可以同时创建的最大vGPU数也会有所不同。

例如,T4-8Q型vGPU,表示Tesla T4型号的物理GPU卡虚拟的Q-series系列vGPU,每个vGPU显存8G。

Tesla T4型号GPU卡显存16G,最多可支持创建2个T4-8Q型vGPU实例(T4:16G总显存=2个VM * 每个VM占用8G显存)。

Tesla V100型号GPU卡显存32G,最多可支持创建4个V100D-8Q型vGPU实例(V100:32G总显存=4个VM * 每个VM占用8G显存)。

2、获取mdev_type映射关系

如下,可直接调用vdsm-client命令获取。

也可通过自定义shell脚本,遍历指定目录下对应的设备文件获取映射关系。

# vdsm-client Host hostdevListByCaps
..."mdev": {"nvidia-155": {"name": "GRID M10-2B","available_instances": "4"},"nvidia-36": {"name": "GRID M10-0Q","available_instances": "16"},...

3、Tesla T4和Tesla V100的映射关系

NVIDIA T4型号GPU映射关系:

type name

type id

每颗GPU可创建的vGPU数量

T4-1B

nvidia-222

16

T4-2B

nvidia-223

8

T4-2B4

nvidia-224

8

T4-1A

nvidia-225

16

T4-2A

nvidia-226

8

T4-4A

nvidia-227

4

T4-8A

nvidia-228

2

T4-16A

nvidia-229

1

T4-1Q

nvidia-230

16

T4-2Q

nvidia-231

8

T4-4Q

nvidia-232

4

T4-8Q

nvidia-233

2

T4-16Q

nvidia-234

1

T4-1B4

nvidia-252

16

T4-4C

nvidia-319

4

T4-8C

nvidia-320

2

T4-16C

nvidia-321

1

NVIDIA V100型号GPU映射关系:

type name

type id

每颗GPU可创建的vGPU数量

V100D-1Q

nvidia-180

32

V100D-2Q

nvidia-181

16

V100D-4Q

nvidia-182

8

V100D-8Q

nvidia-183

4

V100D-16Q

nvidia-184

2

V100D-32Q

nvidia-185

1

V100D-1A

nvidia-186

32

V100D-2A

nvidia-187

16

V100D-4A

nvidia-188

8

V100D-8A

nvidia-189

4

V100D-16A

nvidia-190

2

V100D-32A

nvidia-191

1

V100D-1B

nvidia-192

32

V100D-2B

nvidia-193

16

V100D-2B4

nvidia-218

16

V100D-1B4

nvidia-249

32

V100D-4C

nvidia-311

8

说明:

type name,可以理解为nvidia编号; type id,可以理解为底层编号;

这两个变量都是可确定唯一GPU物理型号、vGPU虚拟化类型以及vGPU分片资源组合的字段。

五、NVIDIA License Server创建及使用

1、创建License Server主机

License Server主机创建之后,需要安装java和License Server软件,并获取宿主虚机的 mac 地址。

注意:向NVIDIA官网申请License文件,需要绑定License Server的管理网卡mac,若License Server使用虚拟机,mac地址要固定。

2、注册 NVIDIA 企业账号,申请 license(或直接购买)

URL:https://enterpriseproductregistration.nvidia.com/?LicType=EVAL&ProductFamily=vGPU

3、等待NVIDIA官方邮件回复

若接受到NVIDIA修改密码邮件,按提示修改密码,至此,就已获取 NVIDIA 企业账户。

4、接受license邮件,按步骤操作

带有附件entitlement-****.pdf,包含 PAK ID ,根据NVIDIA回复邮件pdf附件中如何使用PAK ID的相关网页地址操作

https://docs.nvidia.com/grid/latest/grid-software-quick-start-guide/index.html

5、进入NVIDIA登录页面,输入企业账户的账号密码登录

https://nvid.nvidia.com/dashboard/#/dashboard

6、登录之后,跳转到此 url【访问不稳定,建议用VPN】

https://ui.licensing.nvidia.com/

7、根据所需vGPU产品类型创建license

点击LICENSE SERVERS,根据创建的license Server实例的mac,选择Project,点击CREATE LICENSE SERVER.

此处,Licenses个数默认为1,可以根据需要填写license server支持的vGPU虚机个数。

8、下载最终生成的license文件

9、导入license文件到License Server

license的bin文件,导入到新建的License Server虚机实例中。

注册license授权文件,导入bin文件并上传到: http://127.0.0.1:8080/licserver

至此,有效的license server创建完成。

六、vGPU Guest虚机连接License Server

1、确认Guest虚机中有mdev设备

# lspci | grep NVIDIA

2、配置 nvidia-gridd 服务

添加 License Server 内网地址及对应端口,配置文件及待修改参数如下:

# vim /etc/nvidia/gridd.conf
ServerAddress=172.16.1.200    /* License Server 的 IP 地址*/
ServerPort=7070     /* License Server 的端口号,默认为 7070*/
FeatureType=        /* 如果是用于 CUDA 计算,填“4”即可*/

3、重启 nvidia-gridd 服务

# systemctl restart nvidia-grid
# systemctl status nvidia-grid

4、查看是否成功连接 license Server

成功连接 License Server 状态: License acquired successfully.

七、实际应用问题1 -- FRL的限制及解除

1、什么是FRL

1)概念介绍

在物理GPU上配置的单个vGPU产生的基准分值,低于物理GPU在直通模式下运行的分值。除了性能差异外,可能归因于vGPU帧缓冲区比较小。

vGPU包含一个性能平衡的特性,即帧速率限制器(FRL ,frame-rate limiter)

FRL用来确保驻留在同一物理GPU上的多个vgpu之间的性能平衡。FRL设置的目的是为了提供良好的交互式远程图形体验,但与直通GPU上运行的相同基准测试相比,它可能会降低依赖于测量帧渲染率的基准测试分数。

2)应用场景分析

在使用最优调度程序的vgpu上,启用FRL。在使用固定共享或相等共享调度程序的vgpu上,禁用FRL。

若60帧无法满足用户需求,例如VR制作,需要解除vGPU的60帧锁死限制。

3)具体帧率限制

FRL 开启后将对vGPU的最大帧率(FPS)进行如下限制:

对于B系列vgpu,最大帧率为45fps。

Q系列、C系列、A系列vgpu最大帧率为60fps。

缺省情况下,所有GPU的FRL开关为开启状态。当vGPU调度行为从支持备用vGPU调度程序的默认最佳调度程序更改时,FRL是禁用的。

2、如何解除vGPU的FRL限制

基于KVM解决FRL限制的方法:

FRL由内部vGPU设置控制。在使用best-effort(尽力而为)调度程序的vGPU上,NVIDIA不会在禁用FRL的情况下验证vGPU,但是为了验证基准性能,可以通过在vGPU配置文件中设置frame_rate_limiter=0来临时禁用FRL。

操作格式如下:

# echo "frame_rate_limiter=0" > /sys/bus/mdev/devices/{vgpu-id}/nvidia/vgpu_params

例如:

# echo "frame_rate_limiter=0" > /sys/bus/mdev/devices/aa618089-8b16-4d01-a136-25a0f3c73123/nvidia/vgpu_params

设置之后,VM的vGPU就可以不受帧速率限制地运行了。

八、实际应用问题2 -- 创建 windows Guest 虚机黑屏问题

1、vGPU虚机console异常显示

Windows虚机安装了vGPU的驱动后,由于显示被vGPU驱动接管,此时通过VNC访问会显示黑屏。需要通过RDP远程桌面访问Windows实例。

异常显示如下:

2、解决方法

使用网络可连通的其它windows环境,RDP方式远程登录到vGPU的windows虚机中,设备管理器中,可看到NVIDIA对应的设备名称以及类型。

例如,当前设备类型为 NVIDIA GRID V100D-1Q

3、连接license使用

进入NVIDIA控制面板,配置license,连接成功后即可正常使用。

注意:配置license地址和端口后,切换或者退出,会提示是否保存。重新再登录后,会提示已获Quadro许可。

九、实际应用问题3 -- License Server异常

1、vGPU License Server注入license文件失败

上传license的bin文件,报错:

2、处理方法

参考:https://nvidia.custhelp.com/app/answers/detail/a_id/4111/kw/server

[root@host ~]# systemctl list-units| grep nvidia

flexnetls-nvidia.service                                                    loaded active running   FlexnetLS Local License Server for nvidia.

[root@host ~]# 【关闭license网页】

[root@host ~]# systemctl stop flexnetls-nvidia.service

[root@hos ~]# mv /var/opt/flexnetls/nvidia/ /tmp

[root@host ~]# systemctl restart flexnetls-nvidia.service

参考:

https://docs.nvidia.com/grid/10.0/grid-vgpu-release-notes-red-hat-el-kvm/index.html#lower-vgpu-benchmarks

https://www.nvidia.com/content/dam/en-zz/Solutions/design-visualization/solutions/resources/documents1/Virtual-GPU-Packaging-and-Licensing-Guide.pdf

https://docs.nvidia.com/grid/latest/grid-vgpu-user-guide/

https://docs.nvidia.com/grid/latest/grid-vgpu-user-guide/#vgpu-types-tesla-t4

NVIDIA vGPU应用相关推荐

  1. 申请 NVIDIA vGPU 90天试用 LICENSE

    在GRID 2.0版本开始,也就是除了K1/K2 卡以外的NVIDIA TESLA GPU,想要实现vGPU的功能就需要配合NVIDIA vGPU软件来使用,而NVIDIA vGPU作为一个商用软件是 ...

  2. NVIDIA vGPU vApps/vWS/vCS适配GPU版本介绍

    NVIDIA vGPU 12.0版本-vGPU版本名称变化 - 注: 2021年1月生效 最新名称 NVIDIA Virtual PC (vPC) -曾用名称 NVIDIA GRID Virtual ...

  3. NVIDIA vGPU License服务器安装过程

    在vGPU场景下,NVIDIA vGPU License Server 是一个很重要的组件,一个vGPU虚拟机没有正常获取License的时候,功能会受到很大限制.因此正式生产环境或者POC测试环境中 ...

  4. NVIDIA vGPU

    vGPU软件的版本(基于vGPU 10.0版本) GRID vAPP (vApps) – 基于使用vGPU的并发用户会话数授权 – 支持永久授权和年度订阅授权两种模式 GRID vPC (vPC) – ...

  5. 2020-10-19 Nvidia与vGPU

    NVIDIA虚拟GPU(vGPU)软件主要用于支持交付图形丰富的虚拟桌面和工作站,NVIDIA GPU是当今市场上最强大的数据中心GPU,使用虚拟GPU软件可以将GPU资源重新划分,以保证GPU资源可 ...

  6. NVIDIA显卡虚拟化vGPU终于支持KVM了

    (文章来自作者维护的社区微信公众号[虚拟化云计算]) ( 目前有两个微信群<kvm虚拟化>和<openstack>,扫描二维码点击"云-交流",进群交流提问 ...

  7. GPU虚拟化-Intel的KVMGT、NVIDIA的vGPU、AMD的MaxGPU

    (文章来自作者维护的社区微信公众号[虚拟化云计算]) (目前有两个微信群<kvm虚拟化>和<openstack>,扫描二维码点击"云-交流",进群交流提问) ...

  8. 分享ThinVirt云桌面软件实现NVIDIA P40显卡为虚拟机分配vGPU过程

    ThinVirt云桌面软件是云终端设备厂商(瑞恩科技),给他们云终端.瘦客户机产品配套的VDI虚拟化桌面软件.该软件采用KVM + Intel/NVIDIA vGPU虚拟化技术,满足日常办公同时又能满 ...

  9. 使用NVIDIA GRID vPC支持视频会议和算力工具

    使用NVIDIA GRID vPC支持视频会议和算力工具 随着2020年的发展,远程工作解决方案已成为许多人的新常态.企业正在寻找行之有效的解决方案,如虚拟桌面基础设施(VDI),以使他们的团队能够在 ...

  10. 释放虚拟GPU力量 NVIDIA 加速企业远程办公生产力变革

    现在众多的企业拥抱云和AI技术进行着数字化转型.随着企业在信息化建设的加剧,相关从业人员数量增多的同时,也对设备的计算性能要求越来越高.2020年开年的这场疫情,强制性地让企业进入远程办公模式,这个突 ...

最新文章

  1. 算法笔记-图--bfs
  2. 为什么百万医疗险越来越多,到底选哪款?
  3. matlab创建二叉树(二维数据)
  4. Android基于TCP的局域网聊天通信
  5. 基于Docker Compose搭建的Mysql8.0主从复制(1主3从,多主机)
  6. Java Concurrent--java.util.Concurrent包
  7. Matlab字符串转换及数值格式转换
  8. 微信公众号开发工具包
  9. 更改mysql默认连接数_修改mysql最大连接数
  10. BusHound详细使用说明
  11. 联想LJ2400清零
  12. 中国新能源汽车行业十四五展望规划与投资决策建议报告2022版
  13. (CSS)3.三种基本选择器(标签,类,id)
  14. Java实现 LeetCode 787 K 站中转内最便宜的航班(两种DP)
  15. Photoshop —— 白色(或任意颜色)或黑色物体修改成任意色彩
  16. Django框架(一)
  17. 硬件知识--单片机高精度电流测量电路
  18. [转]android 制作.9.png图片 解决图形变形问题
  19. Cookie、Session、Token、JWT 看一篇就够了
  20. 关于AES:加密方式,让你的APK无懈可击,字节跳动Android面试全套真题解析在互联网火了

热门文章

  1. 网上商城系统支付方式如何配置?支付方式有哪些
  2. TortoiseHg 学习笔记
  3. c 语言编程字谜,字谜游戏(a)C语言
  4. win10多台计算机共享文件夹设置密码,win10系统给共享文件夹设置密码的操作方法...
  5. laravel框架中hasOne和blongTo的用法详解
  6. 稳压二极管的原理,它有什么作用?
  7. Groovy~Groovy运算符
  8. Java如何从字符串中提取数字
  9. vc2005和IE冲突 主要是在通过向导添加方法或变量的时候会报脚本错误。
  10. 100个精彩的开源游戏