Atualizei recentemente o CUDA Toolkit para a versão 12.8. O compilador nvcc agora está emitindo este aviso:
O suporte para compilação offline para arquiteturas anteriores a '<compute/sm/lto>_75' será removido em uma versão futura (Use -Wno-deprecated-gpu-targets para suprimir o aviso).
Tenho um conhecimento básico de compilação CUDA. O compilador nvcc gera PTX para diversas arquiteturas e capacidades computacionais, e o PTX é compilado via JIT pelo driver da NVidia em tempo de execução.
Não entendo o que é "compilação offline".
Minha principal preocupação é o significado do aviso em relação ao suporte a dispositivos Compute 6.1 e posteriores. Preciso continuar a oferecer suporte ao Compute 6.1. Minha configuração de compilação de Geração de Código CUDA do Visual Studio é compute_61,sm_61
. Se eu remover essa configuração, meu aplicativo não será executado em dispositivos Compute 6.1. O erro em tempo de execução é devido à falta de um kernel. Gostaria de saber qual é a opção correta de geração de código para oferecer suporte a dispositivos Compute 6.1 e não emitir este aviso sem desabilitá-lo.
Você está recebendo esse aviso porque o CUDA 12.8 está informando:
“Ei, vamos abandonar a compilação offline (também conhecida como binários pré-compilados) para GPUs antigas como Pascal (sm_61) em uma versão futura.”
Compilação offline significa apenas
nvcc
gerar código real pronto para GPU (sm_61
) no momento da compilação , em vez de deixá-lo como PTX (que é compilado mais tarde quando o aplicativo é executado).Então, por enquanto , tudo bem , mas a NVIDIA está dizendo que, no futuro, isso pode ( e isso significa que vai ) parar de funcionar. Eles só oferecem suporte a PTX para GPUs mais antigas e esperam que o driver faça o trabalho pesado em tempo de execução. Esse é o motivo do aviso:
Quando você especifica:
-gencode arch=compute_61,code=sm_61
Você está dizendo ao nvcc para compilar diretamente para o código que roda em uma GPU com capacidade de computação 6.1; Esta é uma compilação offline para sm_61.
Você pode suprimir o aviso com o sinalizador:
Mas essa é apenas uma solução temporária até que a compilação offline para GPUs antigas seja descontinuada.
https://forums.developer.nvidia.com/t/nvcc-warning-support-for-offline-compilation-for-architectures/328141