[mlir][GPU|NVVM] Update the default SM to 7.5 (#177469)

Update MLIR's default SM to `sm_75`. This matches the behavior of
offline compilation tools in the CUDA Toolkit (`nvcc`, `ptxas`, ...) and
follows suit with 9fc5fd0ad689eed94f65b1d6d10f9c5642935e68.

Additionally, `sm_75` is the oldest GPU variant compatible with the
widest range of recent major CUDA Toolkit versions (11/12/13).
This commit is contained in:
Justin Fargnoli 2026-01-29 09:44:04 -08:00 committed by GitHub
parent caae29c4b9
commit 243f011577
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 13 additions and 4 deletions

View File

@ -8,6 +8,15 @@ specifically, it is a snapshot of the MLIR development at the time of the releas
[TOC]
## LLVM 21
### GPU/NVVM Changes
- The default NVVM target architecture has been changed from `sm_50` to `sm_75`.
`sm_75` is the oldest GPU variant compatible with the widest range of recent
major CUDA Toolkit versions (11/12/13). This affects the `NVVMTargetAttr`,
`GpuNVVMAttachTarget` pass, and the `gpu-lower-to-nvvm-pipeline`.
## LLVM 20
All the MLIR runners other than `mlir-cpu-runner` have been removed, as their functionality has been merged into it, and it has been renamed to `mlir-runner`.

View File

@ -28,7 +28,7 @@ struct GPUToNVVMPipelineOptions
llvm::cl::init("nvptx64-nvidia-cuda")};
PassOptions::Option<std::string> cubinChip{
*this, "cubin-chip", llvm::cl::desc("Chip to use to serialize to cubin."),
llvm::cl::init("sm_50")};
llvm::cl::init("sm_75")};
PassOptions::Option<std::string> cubinFeatures{
*this, "cubin-features",
llvm::cl::desc("Features to use to serialize to cubin."),

View File

@ -143,7 +143,7 @@ def GpuNVVMAttachTarget: Pass<"nvvm-attach-target", ""> {
/*default=*/ "\"nvptx64-nvidia-cuda\"",
"Target triple.">,
Option<"chip", "chip", "std::string",
/*default=*/"\"sm_50\"",
/*default=*/"\"sm_75\"",
"Target chip.">,
Option<"features", "features", "std::string",
/*default=*/"\"+ptx60\"",

View File

@ -6465,7 +6465,7 @@ def NVVM_TargetAttr : NVVM_Attr<"NVVMTarget", "target",
let parameters = (ins
DefaultValuedParameter<"int", "2", "Optimization level to apply.">:$O,
StringRefParameter<"Target triple.", "\"nvptx64-nvidia-cuda\"">:$triple,
StringRefParameter<"Target chip.", "\"sm_50\"">:$chip,
StringRefParameter<"Target chip.", "\"sm_75\"">:$chip,
StringRefParameter<"Target chip features.", "\"+ptx60\"">:$features,
OptionalParameter<"DictionaryAttr", "Target specific flags.">:$flags,
OptionalParameter<"ArrayAttr", "Files to link to the LLVM module.">:$link,
@ -6477,7 +6477,7 @@ def NVVM_TargetAttr : NVVM_Attr<"NVVMTarget", "target",
let builders = [
AttrBuilder<(ins CArg<"int", "2">:$optLevel,
CArg<"StringRef", "\"nvptx64-nvidia-cuda\"">:$triple,
CArg<"StringRef", "\"sm_50\"">:$chip,
CArg<"StringRef", "\"sm_75\"">:$chip,
CArg<"StringRef", "\"+ptx60\"">:$features,
CArg<"DictionaryAttr", "nullptr">:$targetFlags,
CArg<"ArrayAttr", "nullptr">:$linkFiles,