Hum?
The Series and PS5 are using RDNA2 GPUs which are flawlessly running games made for GCN (moreso in the case of the PS5, since the others are running over a virtual machine), but for a Tegra GPU they'd have to keep the Maxwell architecture?
The funny thing is if you look at the AMDGPU backend for LLVM, all GFX6/GFX7 (previous consoles were this) and GFX10.x GPUs share a common instruction encoding which totally explains why RDNA/RDNA2 are compatible with code generated on the previous consoles. GFX8 and GFX9 GPUs are the oddballs that don't share a common instruction encoding with them ...
Here's what the CUDA documentation would have to say in Switch's case ...
5. GPU Compilation said:This chapter describes the GPU compilation model that is maintained by nvcc, in cooperation with the CUDA driver. It goes through some technical sections, with concrete examples at the end.
5.1. GPU Generations
In order to allow for architectural evolution, NVIDIA GPUs are released in different generations. New generations introduce major improvements in functionality and/or chip architecture, while GPU models within the same generation show minor configuration differences that moderately affect functionality, performance, or both.
Binary compatibility of GPU applications is not guaranteed across different generations. For example, a CUDA application that has been compiled for a Fermi GPU will very likely not run on a Kepler GPU (and vice versa). This is the instruction set and instruction encodings of a geneartion is different from those of other generations.
Binary compatibility within one GPU generation can be guaranteed under certain conditions because they share the basic instruction set. This is the case between two GPU versions that do not show functional differences at all (for instance when one version is a scaled down version of the other), or when one version is functionally included in the other. An example of the latter is the base Maxwell version sm_52 whose functionality is a subset of all other Maxwell versions: any code compiled for sm_52 will run on all other Maxwell GPUs.
5.2. GPU Feature List
The following table lists the names of the current GPU architectures, annotated with the functional capabilities that they provide. There are other differences, such as amounts of register and processor clusters, that only affect execution performance.
In the CUDA naming scheme, GPUs are named sm_xy, where x denotes the GPU generation number, and y the version in that generation. Additionally, to facilitate comparing GPU capabilities, CUDA attempts to choose its GPU names such that if x1y1 <= x2y2 then all non-ISA related capabilities of sm_x1y1 are included in those of sm_x2y2. From this it indeed follows that sm_52 is the base Maxwell model, and it also explains why higher entries in the tables are always functional extensions to the lower entries. This is denoted by the plus sign in the table. Moreover, if we abstract from the instruction encoding, it implies that sm_52's functionality will continue to be included in all later GPU generations. As we will see next, this property will be the foundation for application compatibility support by nvcc.
5.3. Application Compatibility
Binary code compatibility over CPU generations, together with a published instruction set architecture is the usual mechanism for ensuring that distributed applications out there in the field will continue to run on newer versions of the CPU when these become mainstream.
This situation is different for GPUs, because NVIDIA cannot guarantee binary compatibility without sacrificing regular opportunities for GPU improvements. Rather, as is already conventional in the graphics programming domain, nvcc relies on a two stage compilation model for ensuring application compatibility with future GPU generations.
If we look at the table we can cleanly see that the Tegra X1/Switch that their GPU generation/version number is SM_53 which basically means that only another SM_5x (Maxwell) GPU is guaranteed share a common instruction set.
Even if Nintendo wanted to upgrade a Switch model with say the Tegra X2 (SM_62), they can't because SM_5x and SM_6x likely have incompatible instruction encodings. You can tell that Nvidia pride themselves on changing the ISA a lot.
AMD have binding commitments to make compatible CPU/GPUs for other console manufacturers. There's no known commitment for Nvidia to do the same for Nintendo ...
Last edited: