1 问题描述
在运行视频处理的模型过程中,出现如下异常:
nvrtc: error: invalid value for --gpu-architecture (-arch)
nvrtc compilation failed:
#define NAN __int_as_float(0x7fffffff)
#define POS_INFINITY __int_as_float(0x7f800000)
#define NEG_INFINITY __int_as_float(0xff800000)
template<typename T>
__device__ T maximum(T a, T b) {
return isnan(a) ? a : (a > b ? a : b);
}
template<typename T>
__device__ T minimum(T a, T b) {
return isnan(a) ? a : (a < b ? a : b);
}
extern "C" __global__
void fused_cat_cat(float* tinput0_42, float* tinput0_46, float* tout3_67, float* tinput0_60, float* tinput0_52, float* tout3_71, float* aten_cat, float* aten_cat_1) {
{
if (blockIdx.x<512 ? 1 : 0) {
aten_cat_1[512 * blockIdx.x + threadIdx.x] = ((((512 * blockIdx.x + threadIdx.x) / 1024) % 256<192 ? 1 : 0) ? ((((512 * blockIdx.x + threadIdx.x) / 1024) % 256<128 ? 1 : 0) ? __ldg(tinput0_60 + (512 * blockIdx.x + threadIdx.x) % 262144) : __ldg(tinput0_52 + (512 * blockIdx.x + threadIdx.x) % 262144 - 131072)) : __ldg(tout3_71 + (512 * blockIdx.x + threadIdx.x) % 262144 - 196608));
}
aten_cat[512 * blockIdx.x + threadIdx.x] = ((((512 * blockIdx.x + threadIdx.x) / 4096) % 256<192 ? 1 : 0) ? ((((512 * blockIdx.x + threadIdx.x) / 4096) % 256<128 ? 1 : 0) ? __ldg(tinput0_42 + (512 * blockIdx.x + threadIdx.x) % 1048576) : __ldg(tinput0_46 + (512 * blockIdx.x + threadIdx.x) % 1048576 - 524288)) : __ldg(tout3_67 + (512 * blockIdx.x + threadIdx.x) % 1048576 - 786432));
}
}
2 问题分析
从异常信息中分析,可能与cuda的驱动有关
nvrtc: error: invalid value for --gpu-architecture
查看cuda的驱动版本:
nvidia-smi
Thu Dec 28 19:23:24 2023
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 527.37 Driver Version: 527.37 CUDA Version: 12.0 |
|-------------------------------+----------------------+----------------------+
| GPU Name TCC/WDDM | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 NVIDIA GeForce ... WDDM | 00000000:01:00.0 On | Off |
| 31% 47C P2 165W / 450W | 5810MiB / 24564MiB | 66% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| 0 N/A N/A 1404 C+G ...zilla Firefox\firefox.exe N/A |
| 0 N/A N/A 1996 C+G C:\Windows\explorer.exe N/A |
| 0 N/A N/A 6908 C+G ...m Files\ToDesk\ToDesk.exe N/A |
| 0 N/A N/A 9800 C+G ...te-desktop\有道云笔记.exe N/A |
| 0 N/A N/A 11056 C+G ...y\ShellExperienceHost.exe N/A |
| 0 N/A N/A 14544 C+G ...d\runtime\WeChatAppEx.exe N/A |
| 0 N/A N/A 17104 C+G ...e\SecureCRT\SecureCRT.exe N/A |
| 0 N/A N/A 21404 C+G ...Files\0dcloud\0dcloud.exe N/A |
| 0 N/A N/A 22952 C+G ...wekyb3d8bbwe\Video.UI.exe N/A |
| 0 N/A N/A 23088 C+G ...5n1h2txyewy\SearchApp.exe N/A |
| 0 N/A N/A 23164 C ...onda\retalking\python.exe N/A |
| 0 N/A N/A 24644 C+G ...lPanel\SystemSettings.exe N/A |
| 0 N/A N/A 24940 C+G ...ogram\XMP\Program\Xmp.exe N/A |
| 0 N/A N/A 25260 C+G ...lugins\FlutterPlugins.exe N/A |
| 0 N/A N/A 26188 C+G ...2txyewy\TextInputHost.exe N/A |
| 0 N/A N/A 28116 C+G ...zilla Firefox\firefox.exe N/A |
| 0 N/A N/A 32064 C+G ...8wekyb3d8bbwe\Cortana.exe N/A |
| 0 N/A N/A 32408 C+G ...5n1h2txyewy\SearchApp.exe N/A |
| 0 N/A N/A 32508 C+G ...ge\Application\msedge.exe N/A |
| 0 N/A N/A 32556 C+G ...4\jbr\bin\jcef_helper.exe N/A |
+-----------------------------------------------------------------------------+
3 问题解决
通过pytorch的官网找到对应的版本:https://pytorch.org/get-started/previous-versions/,进行安装。
pip install torch==2.1.1 torchvision==0.16.1 torchaudio==2.1.1 --index-url https://download.pytorch.org/whl/cu118
再次运行程序,不再报错。
4 conda环境介绍
Conda是一个开源的包管理器和环境管理系统,用于安装、运行和更新包和其依赖项。它是由Anaconda, Inc.(以前称为Continuum Analytics)创建,用于支持Python程序开发,但它也可以用来管理来自其他语言的包。Conda使得包管理和环境隔离变得简单,对于处理多个项目中的依赖关系和版本控制尤其有用。
Conda是一个强大的工具,对于管理复杂的Python项目和环境至关重要。它简化了包管理和环境设置,使得Python开发更加容易和高效。通过使用Conda,开发者可以确保他们的项目在不同机器和操作系统上都能以相同的方式运行,大大提高了项目的可移植性和可复现性。
4.1 Conda的核心功能
-
包管理:Conda作为包管理器,可以安装、更新和移除Python包。它通过Conda仓库,如Anaconda Cloud或Conda Forge,来获取包。
-
环境管理:Conda允许用户创建隔离的环境,以便于不同项目可以拥有不同的库和/或Python版本。这在处理不兼容的依赖项或不同项目的需求时非常有用。
-
跨平台:Conda支持Linux、OS X和Windows,并允许创建跨平台的Python环境。
-
开源:Conda是开源的,允许用户查看源代码并对其进行改进。
4.2 使用Conda的优势
-
解决依赖性问题:Conda可以自动解决包之间的依赖关系,简化了安装过程。
-
环境隔离:创建独立的环境可以避免包之间的版本冲突,使得项目更稳定。
-
易于使用:Conda的命令行界面简单直观,易于学习和使用。
-
广泛的包支持:Conda支持Python的许多流行库和应用程序。
-
社区支持:作为一个流行的工具,Conda拥有一个活跃的社区,用户可以从中找到支持和资源。
4.3 Conda环境的创建和管理
-
创建新环境:使用
conda create
命令创建一个新环境,可以指定Python版本和所需的包。 -
激活环境:使用
conda activate
命令来激活环境。 -
安装包:在激活的环境中使用
conda install
命令来安装新的包。 -
环境列表:使用
conda env list
来查看所有可用的Conda环境。 -
移除环境:使用
conda env remove
命令来移除不再需要的环境。
4.4 应用场景
-
数据科学和机器学习:Conda非常适合于数据科学和机器学习项目,这些项目通常需要多个库和框架。
-
软件开发:软件开发者使用Conda来管理项目依赖,确保一致的开发环境。
-
教学和学术研究:教师和研究人员使用Conda来创建具有特定库和工具的环境,用于教学和研究。
4.5 常用命令
Conda 是一个开源的包管理器和环境管理器,广泛用于管理Python环境和包。以下是一些常用的 Conda 命令:
-
安装 Conda 包:
conda install [package-name]
: 安装指定的包。
-
创建和管理环境:
conda create --name [env-name]
: 创建一个新的环境。conda activate [env-name]
: 激活指定环境。conda deactivate
: 退出当前环境。conda env list
: 列出所有可用的环境。
-
管理包:
conda list
: 在当前环境中列出所有已安装的包。conda update [package-name]
: 更新指定的包。conda remove [package-name]
: 移除指定的包。
-
搜索包:
conda search [package-name]
: 搜索可用的包版本。
-
环境导出和导入:
conda env export > environment.yml
: 导出当前环境的配置到一个YAML文件。conda env create -f environment.yml
: 使用YAML文件创建一个新环境。
-
更新 Conda:
conda update conda
: 更新 Conda 到最新版本。
-
查看 Conda 信息:
conda info
: 显示关于 Conda 的信息。