相关疑难解决方法(0)

CUDA:如何使用-arch和-code以及SM vs COMPUTE

在使用nvcc构建时,我仍然不确定如何正确指定代码生成的体系结构.我知道我的二进制文件中嵌入了机器代码和PTX代码,这可以通过控制器开关-code-arch(或两者的结合使用-gencode)来控制.

现在,根据除了两种编译器标志也有指定架构方法有两种:sm_XXcompute_XX,其中compute_XX指的是虚拟和sm_XX一个真正的架构.该标志-arch仅采用虚拟体系结构的标识符(例如compute_XX),而-code标志采用真实和虚拟体系结构的标识符.

该文档指出了-arch指定为其编译输入文件的虚拟体系结构.但是,此PTX代码不会自动编译为机器代码,但这是一个"预处理步骤".

现在,-code应该指定汇编和优化PTX代码的架构.

但是,不清楚哪个PTX或二进制代码将嵌入二进制文件中.例如-arch=compute_30 -code=sm_52,如果我指定,这是否意味着我的代码将首先被编译为功能级别3.0 PTX,之后将创建功能级别5.2的机器代码?什么将被嵌入?

如果我只是说明-code=sm_52会发生什么呢?只嵌入V5.2的机器代码是用V5.2 PTX代码创建的?那有什么区别-code=compute_52

cuda nvcc fat-binaries ptx

32
推荐指数
1
解决办法
2万
查看次数

不同 CUDA 架构的 Pytorch 安装

我有一个 Dockerfile,它从源代码安装 PyTorch 库。

这是 Dockerfile 中的片段,它从 pytorch 源代码执行安装

RUN cd /tmp/ \
 && git clone https://github.com/pytorch/pytorch.git \
 && cd pytorch  \
 && git submodule sync && git submodule update --init --recursive \
 && sudo TORCH_CUDA_ARCH_LIST="6.0 6.1 7.0 7.5 8.0" python3 setup.py install

Run Code Online (Sandbox Code Playgroud)

我对这里发生的事情没有正确的理解,希望得到社区的一些意见:

  • 为什么不同的 CUDA 版本 PyTorch 需要不同的安装方式?
  • TORCH_CUDA_ARCH_LIST在这种情况下,它的作用是什么?
  • 如果我的机器有多个 CUDA 设置,这是否意味着我将在 Docker 容器中安装多个 PyTorch 版本(特定于每个 CUDA 设置)?
  • 如果我的机器没有上述 CUDA 设置(“6.0 6.1 7.0 7.5 8.0”),PyTorch 安装会失败吗?

docker pytorch

6
推荐指数
1
解决办法
8359
查看次数

标签 统计

cuda ×1

docker ×1

fat-binaries ×1

nvcc ×1

ptx ×1

pytorch ×1