No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=armv7,armv7s, VALID_ARCHS=i386 x8

本文详细介绍了如何在Xcode中修改BuildSettings中的Architectures设置,包括将buildactivearchitecturesonly参数更改为NO的方法,适用于iOS和macOS应用开发。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

选中Targets—>Build Settings—>Architectures。


把build active architectures only 改为 NO。
<think>我们正在处理用户关于PyTorch编译时出现“TORCH_CUDA_ARCH_LIST未设置”警告的问题。这个警告通常出现在从源代码编译PyTorch时,与CUDA架构的兼容性有关。下面将详细解释警告的含义以及解决方法。 ### 警告的含义 在编译PyTorch时,如果没有设置`TORCH_CUDA_ARCH_LIST`环境变量,编译系统会默认使用一组常见的CUDA架构(如3.5, 5.0, 6.0等)来编译CUDA代码。然而,这可能会导致以下问题: 1. **编译时间延长**:因为需要为多个架构生成代码。 2. **生成的库文件较大**:包含多个架构的代码。 3. **可能不包含您使用的GPU架构**:如果您的GPU架构不在默认列表中,则编译后的PyTorch无法利用该GPU的全部性能,甚至可能无法使用。 因此,设置`TORCH_CUDA_ARCH_LIST`环境变量可以指定您希望支持的CUDA架构,从而优化编译过程。 ### 解决方法 #### 步骤1: 确定您的GPU架构 首先,您需要确定您的GPU所支持的CUDA架构(也称为计算能力)。可以通过以下方式查询: 1. 访问NVIDIA官方网站查看[CUDA GPU列表](https://developer.nvidia.com/cuda-gpus)。 2. 在命令行中使用`nvidia-smi`命令查看GPU型号,然后根据型号查找对应的计算能力。 3. 使用CUDA工具包中的`deviceQuery`示例程序(如果已安装CUDA工具包)。 例如,如果您的GPU是RTX 3090,其计算能力为8.6(即架构版本为8.6),则对应的架构名称为`sm_86`。 #### 步骤2: 设置环境变量 在编译之前,设置`TORCH_CUDA_ARCH_LIST`环境变量,指定您需要的架构。您可以根据需要支持多个架构,用分号分隔。 ##### Linux/macOS 在终端中执行: ```bash export TORCH_CUDA_ARCH_LIST="8.6" ``` 如果要支持多个架构(例如7.5和8.6): ```bash export TORCH_CUDA_ARCH_LIST="7.5;8.6" ``` ##### Windows 在命令提示符中执行: ```cmd set TORCH_CUDA_ARCH_LIST=8.6 ``` 或者,如果要支持多个架构: ```cmd set TORCH_CUDA_ARCH_LIST=7.5;8.6 ``` 注意:在Windows中,您也可以使用系统属性设置环境变量(永久生效)。 #### 步骤3: 重新编译PyTorch 设置环境变量后,重新运行编译命令(例如`python setup.py install`或使用`cmake`构建)。这样编译系统将只为指定的架构生成代码。 ### 额外建议 - 如果您希望PyTorch支持当前机器上的GPU架构,并且您不需要在其他机器上运行,可以只指定您GPU的架构。 - 如果您计划在多种GPU上使用同一个PyTorch安装,则需要包含所有目标GPU的架构。但请注意,包含的架构越多,编译时间越长,生成的库文件也越大。 - 在Docker容器中构建时,同样需要设置这个环境变量。 ### 示例 假设您有一台搭载RTX 3090(计算能力8.6)的机器,并且您只打算在这台机器上使用PyTorch,那么您可以这样设置: ```bash export TORCH_CUDA_ARCH_LIST="8.6" python setup.py install ``` ### 引用说明 在PyTorch的官方文档中,虽然没有直接说明`TORCH_CUDA_ARCH_LIST`的用法,但在[从源代码编译PyTorch](https://github.com/pytorch/pytorch#from-source)的指南中提到了环境变量的使用。另外,在PyTorch的GitHub仓库的构建脚本中(如`setup.py`)也可以看到相关处理逻辑[^1]。 通过以上步骤,您应该能够解决编译时的警告,并优化PyTorch的构建过程。 §§相关问题§§ 1. 如何查询NVIDIA GPU的计算能力? 2. 在Docker容器中编译PyTorch时如何设置环境变量? 3. 为什么在编译PyTorch时需要指定CUDA架构?</think>### PyTorch TORCH_CUDA_ARCH_LIST 未设置警告的解决方法 当您在使用PyTorch时遇到`TORCH_CUDA_ARCH_LIST not set`警告,这表示PyTorch没有明确指定要编译支持的CUDA架构版本。以下是详细解释和解决方法: #### 警告原因 1. **CUDA架构兼容性**:PyTorch需要针对特定GPU架构编译CUDA代码 2. **默认行为**:未设置时,PyTorch会尝试编译支持所有常见架构(增加编译时间) 3. **潜在问题**:可能导致编译时间过长或生成不必要的二进制代码 #### 解决方法 ##### 1. 设置环境变量(推荐) 在编译/安装前设置环境变量,指定您的GPU架构: ```bash # Linux/macOS export TORCH_CUDA_ARCH_LIST="7.5;8.6" # 替换为您的GPU架构 # Windows set TORCH_CUDA_ARCH_LIST=7.5;8.6 ``` ##### 2. 查询您的GPU架构 ```bash nvidia-smi --query-gpu=compute_cap --format=csv # 输出示例: # compute_cap # 8.6 ``` ##### 3. 常用架构对应表 | GPU型号 | 架构版本 | 设置值 | |------------------|----------|--------| | NVIDIA RTX 30xx | 8.6 | 8.6 | | NVIDIA RTX 20xx | 7.5 | 7.5 | | NVIDIA GTX 10xx | 6.1 | 6.1 | | NVIDIA A100 | 8.0 | 8.0 | ##### 4. 安装时直接指定(pip安装) ```bash CMAKE_ARGS="-DCMAKE_CUDA_ARCHITECTURES=80" pip install torch --no-cache-dir ``` #### 验证解决 安装后检查: ```python import torch print(torch.cuda.get_arch_list()) # 应显示您设置的架构 ``` #### 注意事项 1. 多GPU环境应包含所有架构(如`7.5;8.6`) 2. 设置过高架构可能导致老显卡不兼容 3. 使用Docker时需在构建命令中添加环境变量 4. 完整架构列表参考[NVIDIA CUDA文档](https://developer.nvidia.com/cuda-gpus) 通过明确设置目标架构,可显著减少编译时间(最高减少70%),并避免生成不必要的二进制代码[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值