【PyTorch】n卡驱动、CUDA Toolkit、cuDNN全解安装教程

文章目录

  • GPU、NVIDIA Graphics Drivers、CUDA、CUDA Toolkit和cuDNN的关系
  • 使用情形判断
    • 仅仅使用PyTorch
    • 使用torch的第三方子模块
  • 安装NVIDIA Graphics Drivers(可跳过)
    • 前言
    • Linux
      • 法一:图形化界面安装(推荐)
      • 法二:手动下载文件后命令行安装(不推荐)
    • windows
      • 法一:GeForce Experience自动安装
      • 法二:手动安装
    • 检验安装
  • 安装CUDA Toolkit
    • 查看显卡驱动版本情况
    • Linux
    • Windows
    • 检验安装
    • 版本切换
      • Linux
      • Windows
    • Linux卸载CUDA Toolkit
  • 安装PyTorch
    • 查看显卡驱动的CUDA支持版本情况
    • 下载pytorch
  • 安装cuDNN
    • Linux
      • 法一:下载tar压缩包解压(推荐)
      • 法二:下载deb包安装(不推荐)
    • Windows
    • 检验安装


GPU、NVIDIA Graphics Drivers、CUDA、CUDA Toolkit和cuDNN的关系

  • GPU:物理显卡。
  • NVIDIA Graphics Drivers:物理显卡驱动。
  • CUDA:一种由NVIDIA推出的通用并行计算架构,是一种并行计算平台和编程模型,该架构使GPU能够解决复杂的计算问题。在安装NVIDIA Graphics Drivers时,CUDA已经捆绑安装,无需另外安装
  • CUDA Toolkit:包含了CUDA的runtime API、CUDA代码的编译器nvcc(CUDA也有自己的语言,代码需要编译才能执行)和debug工具等。简单言之,可以将CUDA Toolkit视为开发CUDA程序的工具包。需要自己下载安装。此外,在安装CUDA Toolkit时,还可以选择是否捆绑安装NVIDIA Graphics Drivers显卡驱动,因此就可以简略我们的步骤。
  • cuDNN:基于CUDA Toolkit,专门针对深度神经网络中的基础操作而设计基于GPU的加速库。需要自己下载安装,其实所谓的安装就是移动几个库文件到指定路径

使用情形判断

仅仅使用PyTorch

在只使用torch的情况下,不需要安装CUDA Toolkit和cuDNN,只需要显卡驱动,conda或者pip会为我们安排好一切

安装顺序应该是:NVIDIA Graphics Drivers->PyTorch

使用torch的第三方子模块

需要安装CUDA Toolkit

在安装一些基于torch的第三方子模块时,譬如tiny-cuda-nn、nvdiffrast、simple-knn。如果没有安装CUDA Toolkit,torch/utils/cpp_extension.py会报错如下:

File "....../torch/utils/cpp_extension.py", line 1076, in CUDAExtensionlibrary_dirs += library_paths(cuda=True)
File "....../torch/utils/cpp_extension.py", line 1203, in library_pathsif (not os.path.exists(_join_cuda_home(lib_dir)) and
File "....../torch/utils/cpp_extension.py", line 2416, in _join_cuda_homeraise OSError('CUDA_HOME environment variable is not set. '
OSError: CUDA_HOME environment variable is not set. Please set it to your CUDA install root.

这个报错的意思是找不到CUDA的环境变量路径。这个环境变量是只有安装了CUDA Toolkit之后才会设置的。

这个报错在仅仅使用pytorch时没有影响,因为pytorch在安装时已经准备好了一切,不需要CUDA环境变量。但是,我们现在需要安装其他子模块,就必须要解决这个问题了。

对于做深度学习的研究者,使用其他子模块是经常会碰到的,因此,笔者建议直接安装CUDA Toolkit,在安装CUDA Toolkit的时候捆绑安装显卡驱动

因此,安装顺序应该是:NVIDIA Graphics Drivers(可跳过,在安装CUDA Toolkit的时候捆绑安装)->CUDA Toolkit->PyTorch->cuDNN

安装NVIDIA Graphics Drivers(可跳过)

前言

在安装CUDA Toolkit的时候可以选择捆绑安装NVIDIA Graphics Drivers显卡驱动。因此,这一步完全可以跳过,但笔者依旧先写出来。

Linux

法一:图形化界面安装(推荐)

在这里插入图片描述

换好源之后更新升级。必须要升级。否则,安装的n卡驱动是无法生效的!而且,下次重启进入Linux之后,连图形化界面都不会出现!!

sudo apt update
sudo apt upgrade

安装必要依赖。必须要安装gccg++cmake。否则,安装的n卡驱动是无法生效的!而且,下次重启进入Linux之后,连图形化界面都不会出现!!

sudo apt install gcc cmake
sudo apt install g++

然后直接下载安装即可:

在这里插入图片描述

法二:手动下载文件后命令行安装(不推荐)

笔者没有使用过此方法,也不推荐此方法。在能用图形化界面的情况下就不要多此一举了。

windows

法一:GeForce Experience自动安装

去NVIDIA官网下载GeForce Experience,安装好GeForce Experience之后可以在这个应用里面直接下载最新的驱动。

法二:手动安装

在同样的页面手动搜索对应型号的显卡驱动,下载安装。

在这里插入图片描述

检验安装

nvidia-smi

如果有类似下面的输出,那么NVIDIA Graphics Drivers就已经安装了:

Sat Jan 27 14:35:37 2024       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 525.147.05   Driver Version: 525.147.05   CUDA Version: 12.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ...  Off  | 00000000:01:00.0  On |                  N/A |
| N/A   35C    P5    23W / 115W |   1320MiB /  8192MiB |     13%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------++-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A      3719      G   /usr/lib/xorg/Xorg                489MiB |
|    0   N/A  N/A      3889      G   /usr/bin/gnome-shell               53MiB |
|    0   N/A  N/A      4218    C+G   fantascene-dynamic-wallpaper      406MiB |
|    0   N/A  N/A      8052      G   gnome-control-center                2MiB |
|    0   N/A  N/A      8397      G   ...--variations-seed-version      282MiB |
|    0   N/A  N/A     13242      G   ...RendererForSitePerProcess       59MiB |
|    0   N/A  N/A     47273      G   ...--variations-seed-version       18MiB |
+-----------------------------------------------------------------------------+

安装CUDA Toolkit

查看显卡驱动版本情况

CUDA Toolkit对刚刚安装的显卡驱动有版本要求,具体可以去此处查询。2024.1查询的关系如下:

在这里插入图片描述

如果你跳过了安装显卡驱动的步骤,那么你就下载一个最新的CUDA Toolkit好了,它会捆绑安装适配的显卡驱动。

如果你已经安装了显卡驱动,那么可以键入如下指令查询自己的显卡驱动版本:

nvidia-smi

可以在下面看到我的版本是525.147.05

Sat Jan 27 14:35:37 2024       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 525.147.05   Driver Version: 525.147.05   CUDA Version: 12.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ...  Off  | 00000000:01:00.0  On |                  N/A |
| N/A   35C    P5    23W / 115W |   1320MiB /  8192MiB |     13%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------++-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A      3719      G   /usr/lib/xorg/Xorg                489MiB |
|    0   N/A  N/A      3889      G   /usr/bin/gnome-shell               53MiB |
|    0   N/A  N/A      4218    C+G   fantascene-dynamic-wallpaper      406MiB |
|    0   N/A  N/A      8052      G   gnome-control-center                2MiB |
|    0   N/A  N/A      8397      G   ...--variations-seed-version      282MiB |
|    0   N/A  N/A     13242      G   ...RendererForSitePerProcess       59MiB |
|    0   N/A  N/A     47273      G   ...--variations-seed-version       18MiB |
+-----------------------------------------------------------------------------+

Linux

进入官网选择合适的版本。然后根据自己的设备一步步选择安装即可。

完成选择之后,应该有类似界面。根据官网的步骤一步一步来即可。

在这里插入图片描述

根据官网步骤,可以看到给出了三种安装方式。笔者在安装的时候先尝试了第二种,官网步骤如下:

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.0-1_all.deb
sudo dpkg -i cuda-keyring_1.0-1_all.deb
sudo apt-get update
sudo apt-get -y install cuda

然后在第三步报错如下:

han@ASUS-TUF-Gaming-F15-FX507ZR:~$ sudo apt-get -y install cuda
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:The following packages have unmet dependencies:libnvidia-common-525 : Conflicts: libnvidia-commonlibnvidia-common-545 : Conflicts: libnvidia-commonnvidia-kernel-common-525 : Conflicts: nvidia-kernel-commonnvidia-kernel-common-545 : Conflicts: nvidia-kernel-common
E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.

根据提示信息,是因为我现在已经有libnvidia-common-525nvidia-kernel-common-525,无法再安装libnvidia-commonnvidia-kernel-common,需要更换现有的软件包。理论上,这个问题有两个解决方案:

  1. 替换软件包
sudo apt-get remove libnvidia-common-525  nvidia-kernel-common-525
sudo apt-get install libnvidia-common nvidia-kernel-common
  1. 放弃apt,使用aptitude安装
sudo aptitude install cuda

笔者这里都没有尝试,而是改成了官网的另外一种安装方式:

wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run
sudo sh cuda_11.8.0_520.61.05_linux.run

执行这个run程序之后会解压一段时间,要有一些耐心,然后就会有安装引导,一路yes之后来到这里:

在这里插入图片描述

  • 注意点1:如果跳过了显卡驱动安装的,这里就勾选第一个Driver。笔者已经安装了显卡驱动,自然就不用再勾选Driver了。然后安装即可。
  • 注意点2:如果这里勾选Kernel Objects,会导致安装不成功。笔者暂时不清楚原因,可能是因为已经安装了显卡驱动的原因。总之,这里不要勾选Kernel Objects

笔者在选择Install之后的安装过程中还出现dkms未安装报错,于是sudo apt install dkms,再次尝试安装,就成功了,然后出现:

===========
= Summary =
===========Driver:   Not Selected
Toolkit:  Installed in /usr/local/cuda-11.8/Please make sure that-   PATH includes /usr/local/cuda-11.8/bin-   LD_LIBRARY_PATH includes /usr/local/cuda-11.8/lib64, or, add /usr/local/cuda-11.8/lib64 to /etc/ld.so.conf and run ldconfig as rootTo uninstall the CUDA Toolkit, run cuda-uninstaller in /usr/local/cuda-11.8/bin
***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 520.00 is required for CUDA 11.8 functionality to work.
To install the driver using this installer, run the following command, replacing <CudaInstaller> with the name of this run file:sudo <CudaInstaller>.run --silent --driverLogfile is /var/log/cuda-installer.log

根据提示,我们添加环境变量。请读者根据自己的安装的版本自行修改以下命令的版本号:

echo "export LD_LIBRARY_PATH="/usr/local/cuda-11.8/lib64:\$LD_LIBRARY_PATH"" >> ~/.bashrc 
echo "export PATH="/usr/local/cuda-11.8/bin:\$PATH"" >> ~/.bashrc 

然后安装就完成了。

Windows

win系统下比较简单,进入官网选择合适的版本,直接下载exe可执行程序,进入引导安装即可。

  • 注意点:同样根据自己是否安装过显卡驱动来勾选要不要装显卡驱动

环境变量会自动设置好,不需要手动设置。安装程序会自动添加以下CUDA_PATH_V11_8CUDA_PATH这2个环境变量:

CUDA_PATH_V11_8=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8
CUDA_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8

安装程序还会自动在Path环境变量中添加以下2项:

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\bin
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\libnvvp

检验安装

重新打开一个终端查看:

nvcc -V

应该有如下类似的输出:

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Wed_Sep_21_10:33:58_PDT_2022
Cuda compilation tools, release 11.8, V11.8.89
Build cuda_11.8.r11.8/compiler.31833905_0

版本切换

Linux

cuda的软链接位于/usr/local/,输入如下命令查看:

ls -l /usr/local/

应该有类似如下的输出:

han@ASUS-TUF-Gaming-F15-FX507ZR:~$ ls -l /usr/local/
total 40
lrwxrwxrwx  1 root root   21  127 16:43 cuda -> /usr/local/cuda-11.8/
drwxr-xr-x 17 root root 4096  127 16:44 cuda-11.8
drwxr-xr-x  2 root root 4096  89  2022 etc
drwxr-xr-x  2 root root 4096  89  2022 games
drwxr-xr-x  2 root root 4096  89  2022 include
drwxr-xr-x  2 root root 4096  127 16:38 kernelobjects
drwxr-xr-x  3 root root 4096  122 15:26 lib
lrwxrwxrwx  1 root root    9  122 14:10 man -> share/man
drwxr-xr-x  3 root root 4096  123 21:52 Qt-5.6.3
drwxr-xr-x  2 root root 4096  89  2022 sbin
drwxr-xr-x  8 root root 4096  123 22:09 share
drwxr-xr-x  2 root root 4096  89  2022 src

可以看到现在的cuda是链接到了我刚刚安装的cuda-11.8.一台设备可以安装不同的CUDA Toolkit版本,想要切换版本,只需要改变这个软链接即可。

假如我还有一个CUDA Toolkit12.0,可以用如下指令切换:

ls -snf /usr/local/cuda-12.0/ /usr/local/cuda

Windows

修改之前自动添加的CUDA_PATH环境变量到对应目录:

CUDA_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.0

修改之前自动添加到Path环境变量下的那两个项目:

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.0\bin
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.0\libnvvp

Linux卸载CUDA Toolkit

再次回顾安装完成后的summary:

===========
= Summary =
===========Driver:   Not Selected
Toolkit:  Installed in /usr/local/cuda-11.8/Please make sure that-   PATH includes /usr/local/cuda-11.8/bin-   LD_LIBRARY_PATH includes /usr/local/cuda-11.8/lib64, or, add /usr/local/cuda-11.8/lib64 to /etc/ld.so.conf and run ldconfig as rootTo uninstall the CUDA Toolkit, run cuda-uninstaller in /usr/local/cuda-11.8/bin
***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 520.00 is required for CUDA 11.8 functionality to work.
To install the driver using this installer, run the following command, replacing <CudaInstaller> with the name of this run file:sudo <CudaInstaller>.run --silent --driverLogfile is /var/log/cuda-installer.log

可以知道只需要输入类似的指令:(自行更改版本号)

sudo /usr/local/cuda-11.8/bin/cuda-uninstaller

安装PyTorch

查看显卡驱动的CUDA支持版本情况

同样是这个指令:

nvidia-smi

可以在下面看到我的最大支持的CUDA版本是12.0

Sat Jan 27 14:35:37 2024       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 525.147.05   Driver Version: 525.147.05   CUDA Version: 12.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ...  Off  | 00000000:01:00.0  On |                  N/A |
| N/A   35C    P5    23W / 115W |   1320MiB /  8192MiB |     13%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------++-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A      3719      G   /usr/lib/xorg/Xorg                489MiB |
|    0   N/A  N/A      3889      G   /usr/bin/gnome-shell               53MiB |
|    0   N/A  N/A      4218    C+G   fantascene-dynamic-wallpaper      406MiB |
|    0   N/A  N/A      8052      G   gnome-control-center                2MiB |
|    0   N/A  N/A      8397      G   ...--variations-seed-version      282MiB |
|    0   N/A  N/A     13242      G   ...RendererForSitePerProcess       59MiB |
|    0   N/A  N/A     47273      G   ...--variations-seed-version       18MiB |
+-----------------------------------------------------------------------------+

下载pytorch

打开pytorch的官网,输入对应自己设备环境的pytorch安装指令即可。着重注意刚刚安装的显卡驱动的可支持CUDA的最高版本,我们选择的pytorch的CUDA版本要低于显卡驱动的可支持CUDA的最高版本。例如,我刚刚查询到我的显卡驱动可支持CUDA最高版本为12.0,那么我就选择11.8,如下图这样:

在这里插入图片描述

当然也可以选择conda安装。

安装cuDNN

cuDNN对已经安装的CUDA版本有要求。进入官网,选择合适的版本,界面如下:

在这里插入图片描述

下载即可。安装的官方文档在这里。

Linux

按官方文档,先安装依赖:

sudo apt-get install zlib1g

法一:下载tar压缩包解压(推荐)

下载好之后解压缩:

tar -xvf cudnn-linux-*-archive.tar.xz

然后复制文件并赋予权限就完成了:

sudo cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda/include 
sudo cp -P cudnn-*-archive/lib/libcudnn* /usr/local/cuda/lib64 
sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*

法二:下载deb包安装(不推荐)

deb包安装反而要复杂一些。

  1. 下载好之后dpkg安装一下:
sudo dpkg -i cudnn-local-repo-*.deb
  1. 导入GPG key并更新:
sudo apt-get install libcudnn8=x.x.x.x-1+cudaX.Y

这里的xy根据自己的版本自己调整

  1. 再安装几个依赖:
sudo apt-get install libcudnn8=x.x.x.x-1+cudaX.Y
sudo apt-get install libcudnn8-dev=x.x.x.x-1+cudaX.Y
sudo apt-get install libcudnn8-samples=x.x.x.x-1+cudaX.Y

这里的xy也自己的版本略微调整

Windows

Windows只有解压缩安装的方式。下载并解压缩好zip文件,然后复制库文件如下:

  1. 复制bin\cudnn*.dllC:\Program Files\NVIDIA\CUDNN\v8.x\bin
  2. 复制include\cudnn*.hC:\Program Files\NVIDIA\CUDNN\v8.x\include
  3. 复制lib\cudnn*.libC:\Program Files\NVIDIA\CUDNN\v8.x\lib

然后修改PATH环境变量,在其中添加一个项目:

C:\Program Files\NVIDIA\CUDNN\v8.x\bin

检验安装

执行/usr/local/cuda/extras/demo_suite/deviceQuery,应该有以下类似输出:

./deviceQuery Starting...CUDA Device Query (Runtime API) version (CUDART static linking)Detected 1 CUDA Capable device(s)Device 0: "NVIDIA GeForce RTX 3070 Laptop GPU"CUDA Driver Version / Runtime Version          12.0 / 11.8CUDA Capability Major/Minor version number:    8.6Total amount of global memory:                 7952 MBytes (8337752064 bytes)(40) Multiprocessors, (128) CUDA Cores/MP:     5120 CUDA CoresGPU Max Clock rate:                            1560 MHz (1.56 GHz)Memory Clock rate:                             7001 MhzMemory Bus Width:                              256-bitL2 Cache Size:                                 4194304 bytesMaximum Texture Dimension Size (x,y,z)         1D=(131072), 2D=(131072, 65536), 3D=(16384, 16384, 16384)Maximum Layered 1D Texture Size, (num) layers  1D=(32768), 2048 layersMaximum Layered 2D Texture Size, (num) layers  2D=(32768, 32768), 2048 layersTotal amount of constant memory:               65536 bytesTotal amount of shared memory per block:       49152 bytesTotal number of registers available per block: 65536Warp size:                                     32Maximum number of threads per multiprocessor:  1536Maximum number of threads per block:           1024Max dimension size of a thread block (x,y,z): (1024, 1024, 64)Max dimension size of a grid size    (x,y,z): (2147483647, 65535, 65535)Maximum memory pitch:                          2147483647 bytesTexture alignment:                             512 bytesConcurrent copy and kernel execution:          Yes with 2 copy engine(s)Run time limit on kernels:                     YesIntegrated GPU sharing Host Memory:            NoSupport host page-locked memory mapping:       YesAlignment requirement for Surfaces:            YesDevice has ECC support:                        DisabledDevice supports Unified Addressing (UVA):      YesDevice supports Compute Preemption:            YesSupports Cooperative Kernel Launch:            YesSupports MultiDevice Co-op Kernel Launch:      YesDevice PCI Domain ID / Bus ID / location ID:   0 / 1 / 0Compute Mode:< Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 12.0, CUDA Runtime Version = 11.8, NumDevs = 1, Device0 = NVIDIA GeForce RTX 3070 Laptop GPU
Result = PASS

执行/usr/local/cuda/extras/demo_suite/bandwidthTest,应该有以下类似输出:

[CUDA Bandwidth Test] - Starting...
Running on...Device 0: NVIDIA GeForce RTX 3070 Laptop GPUQuick ModeHost to Device Bandwidth, 1 Device(s)PINNED Memory TransfersTransfer Size (Bytes)	Bandwidth(MB/s)33554432			12499.4Device to Host Bandwidth, 1 Device(s)PINNED Memory TransfersTransfer Size (Bytes)	Bandwidth(MB/s)33554432			12843.0Device to Device Bandwidth, 1 Device(s)PINNED Memory TransfersTransfer Size (Bytes)	Bandwidth(MB/s)33554432			384586.5Result = PASSNOTE: The CUDA Samples are not meant for performance measurements. Results may vary when GPU Boost is enabled.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/652419.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

逻辑推理,形式逻辑:且关系,或关系,前加非后不变,箭头和或的转化

国考省考行测&#xff1a;逻辑推理&#xff0c;形式逻辑&#xff1a;且关系考点 2022找工作是学历、能力和运气的超强结合体! 公务员特招重点就是专业技能&#xff0c;附带行测和申论&#xff0c;而常规国考省考最重要的还是申论和行测&#xff0c;所以大家认真准备吧&#xf…

2024年Java毕业设计选题大全,500道SpringBoot热门选题大全(持续更新)

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

【论文笔记】UniVision: A Unified Framework for Vision-Centric 3D Perception

原文链接&#xff1a;https://arxiv.org/pdf/2401.06994.pdf 1. 引言 目前&#xff0c;同时处理基于图像的3D检测任务和占用预测任务还未得到充分探索。3D占用预测需要细粒度信息&#xff0c;多使用体素表达&#xff1b;而3D检测多使用BEV表达&#xff0c;因其更加高效。 本…

探索机器学习的奥秘

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;网络奇遇记、数据结构 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言一. 机器学习的定义二. 机器学习的发展历程三. 机器学习的原理四. 机器学习的分类…

C#使用Sleep(Int32)方法动态时间

目录 一、涉及到的知识点 1.Sleep(Int32)方法 2.Parallel.Invoke方法 二、 实例&#xff1a;用Sleep方法动态时间 一、涉及到的知识点 在使用线程时&#xff0c;经常会用到Sleep方法&#xff0c;Sleep方法用于将线程挂起指定的时间&#xff0c;时间的单位为毫秒。本实例中将…

VGGNet的结构和复现

1 结构以及模型退化问题 上述为VGGNet的结构图&#xff0c;左边是VGG16D的步骤 16代表16层&#xff0c;有参数的层&#xff0c;其他结构也是如此 对于这6个机构来说&#xff0c;D中的VGG16是最优的&#xff0c;而VGG19相比较而言&#xff0c;没有VGG16优&#xff0c;VGG16有16…

关于获取CISP-PTE一些避坑经历

有幸在今年8月份成功通过CISP-PTE认证,以下是我遇到的一些常见问题,以及一些考点内容以及总结 考试题型 20道选择题 &#xff08;20分&#xff09; 5道基础题 &#xff08;50分&#xff09; 一题一个Key 1道综合大题 (30分) 三个key 线下考试 这次考试是在中国上海,现场大概…

节点的度(Degree of a node)、“入度”(In-degree)、“出度”(Out-degree)

在图论和网络分析中&#xff0c;“节点的度”&#xff08;Degree of a node&#xff09;是指与该节点直接相连的边的数量。在一个无向图中&#xff0c;每条边连接两个节点&#xff0c;对于每个节点来说&#xff0c;它的度就是与它相连的边的总数。在一个有向图中&#xff0c;节…

uniapp scroll-view用法[下拉刷新,触底事件等等...](4)

前言:可滚动视图区域。用于区域滚动 话不多说 直接上官网属性 官网示例 讲一下常用的几个 scroll 滚动时触发 scrolltoupper 滚动到顶部或左边&#xff0c;会触发 scrolltoupper 事件 scrolltolower 滚动到底部或右边&#xff0c;会触发 scrolltolower 事件 1.纵向滚动…

【HTML教程】跟着菜鸟学语言—HTML5个人笔记经验(四)

HTML学习第三天&#xff01; PS&#xff1a;牛牛只是每天花了1.5-2小时左右来学习HTML。 书接上回 HTML<div>和<span> HTML 可以通过<div> 和 <span>将元素组合起来。 HTML 区块元素 大多数 HTML 元素被定义为块级元素或内联元素。 块级元素在浏…

【Git配置代理】Failed to connect to github.com port 443 问题解决方法

前言&#xff1a; 在学习代码审计时&#xff0c;有时会需要使用git去拉取代码&#xff0c;然后就出现了如下错误 看过网上很多解决方法&#xff0c;觉得问题的关键还是因为命令行在拉取/推送代码时并没有使用VPN进行代理。 解决办法 &#xff1a; 配置http代理&#xff1a;…

【Linux】第三十七站:信号保存

文章目录 一、信号发送二、信号保存1.为什么要进行信号保存&#xff1f; 三、阻塞信号1.信号的一些相关概念2.在内核中的表示3.sigset_t4.信号集操作函数5.sigprocmask6.sigpending7. 总结 一、信号发送 如下所示&#xff0c;对于普通信号&#xff0c;它的编号是从1~31。这个是…

指针的深入了解2

1.const修饰指针 在这之前我们还学过static修饰变量&#xff0c;那我们用const来修饰一下变量会有什么样的效果呢&#xff1f; 我们来看看&#xff1a; 我们可以看到编译器报错告诉我们a变成了一个不可修改的值&#xff0c;我们在变量前加上了const进行限制&#xff0c;但是我…

使用py-spy对python程序进行性能诊断学习

py-spy简介 py-spy是一个用Rust编写的轻量级Python分析工具&#xff0c;它能够监视正在运行的Python程序&#xff0c;而不需要修改代码或者重新启动程序。Py-spy可以在不影响程序运行的情况下&#xff0c;采集程序运行时的信息&#xff0c;生成火焰图&#xff08;flame graph&…

linux 基于科大讯飞的文字转语音使用

官方文档地址&#xff1a;离线语音合成 Linux SDK 文档 | 讯飞开放平台文档中心 一、SDK下载 1、点击上面官方文档地址的链接&#xff0c;可以跳转到以下界面。 2、点击“普通版”&#xff0c;跳转到以下界面。 3、点击“下载”跳转到以下界面 4、最后&#xff0c;点击“SDK下…

Qt6入门教程 12:QAbstractButton

目录 一.状态 二.信号 三.使用 1.自定义按钮 2.多选 3.互斥 QAbstractButton类实现了一个抽象按钮&#xff0c;并且让它的子类来指定如何处理用户的动作&#xff0c;并指定如何绘制按钮。QAbstractButton类是所有按钮控件的基类。 QAbstractButton提供…

【阿里云服务器数据迁移】 同一个账号 不同区域服务器

前言 假如说一台云服务器要过期了,现在新买了一台,有的人会烦恼又要将重新在新的服务器上装环境,部署上线旧服务器上的网站项目, 但是不必烦恼,本文将介绍如何快速将就旧的服务器上的数据迁移到新的服务器上. 包括所有的环境和网站项目噢 ! 步骤 (1) 创建旧服务器自定义镜像…

Linux命令 - 统计log日志某接口用户访问频次并排序

​ 背景 某天发现内部人员使用的app服务器访问突增&#xff0c;但不影响服务正常运行&#xff0c;想通过log统计接口的人员访问频次。 从监控平台可以看到访问激增的接口&#xff0c;因Nginx不缓存用户信息只有访问IP&#xff0c;日志清洗的Hive表只能访问前一天&#xff0c;…

行测-资料:2. 一般增长率、增长量

1、一般增长率 1.1 百分数和百分点 50%&#xff0c;20% 1.2 增长率和倍数 1.5&#xff1b;50 1.3 成数和翻番 1.4 增幅&#xff0c;降幅&#xff0c;变化幅度 A&#xff0c;A&#xff0c;D B&#xff0c;高于全国增速 2.3 个百分点&#xff0c;21.8 - 2.3 19.5。 5%&#xff0…

打开 IOS开发者模式

前言 需要 1、辅助设备&#xff1a;苹果电脑&#xff1b; 2、辅助应用&#xff1a;Xcode&#xff1b; 3、准备工作&#xff1a;苹果手机 使用数据线连接 苹果电脑&#xff1b; 当前系统版本 IOS 17.3 通过Xcode激活 两指同时点击 Xcode 显示选择&#xff0c;Open Develop…