How to specify whether to use the `a` suffix for the SM architecture?

Hi, I am currently compiling a kernel on a B200 GPU that involves some floating-point conversion instructions, such as cvt e2m1. According to the PTX manual, these instructions are only supported on sm120a. So when I compile with ["-gencode", "arch=compute_120a,code=sm_120a"], I get an error saying no kernel image.

However, if I omit the a suffix, I get errors like Instruction ‘cvt with .e2m1x2’ not supported on .target ‘sm_120’.

How should this kernel be compiled correctly? Any guidance would be greatly appreciated.

I believe the B200 GPU should have sm_100a, not sm_120a.

Ahh, you’re right — thanks! Maybe I need to reset the SM target and recompile.
BTW, when should I include the a suffix and when should I not?
Is there anything I should be careful about when choosing between sm_XXX and sm_XXXa?

See this Section 20.1.3 in the Programming Guide: CUDA C++ Programming Guide — CUDA C++ Programming Guide

Architecture-Specific Feature Set: A small and highly specialized set of features called architecture-specific, that are introduced to accelerate specialized operations, which are not guaranteed to be available or might change significantly on subsequent compute architectures. These features are summarized in the respective “Compute Capability #.#” subsections. The architecture-specific feature set is a superset of the family-specific feature set. Architecture-specific compiler targets were introduced with Compute Capability 9.0 devices and are selected by using an a suffix in the compilation target, for example by specifying compute_100a or compute_120a as the compute target.

It really helps. Thank you sooo much!