Nerds taming the green dragon with SCALE, our framework for compiling CUDA codebases for AMD GPUs, with support for more accelerated platforms coming soon.

483 Green Lanes London England
Joined September 2025
๐—ฆ๐—–๐—”๐—Ÿ๐—˜ ๐Ÿญ.๐Ÿณ.๐Ÿฐ ๐—ถ๐˜€ ๐—ผ๐˜‚๐˜. Same CUDA code, same answers: single-precision maths now meets NVIDIA's documented error bounds. Fast-math division behaves as it does with nvcc, which can mean a very large speedup for division-heavy kernels. Occupancy fixes let code that sizes its own launches get more out of the GPU, and launches and 3D memory copies are faster too. Download SCALE 1.7.4 for free, run it on your codebase, and tell us how it went on Discord.
1
1
3
75
The most useful thing a SCALE user can send us is a bug report. The CUDA API is huge. Large-scale projects depend on both documented and undocumented behaviours. The real target isn't described by the manual, it emerges when we try to run real workloads. So what users actually hit decides which parts of the API we cover next and which fixes ship first. If SCALE fails to build your code, gives wrong results, or runs slower than it should, tell us what broke and where on Discord. It moves your problem up the list. ๐—ฌ๐—ผ๐˜‚๐—ฟ ๐—ณ๐—ฎ๐—ถ๐—น๐—ฒ๐—ฑ ๐—ฏ๐˜‚๐—ถ๐—น๐—ฑ ๐—ถ๐˜€ ๐—ผ๐˜‚๐—ฟ ๐—ฟ๐—ผ๐—ฎ๐—ฑ๐—บ๐—ฎ๐—ฝ.
1
1
3
92
AMD Instinctโ„ข GPUs are incredible. A single AMD Instinctโ„ข MI355X sports ๐Ÿฎ๐Ÿด๐Ÿด๐—š๐—• ๐—ผ๐—ณ ๐—›๐—•๐— ๐Ÿฏ๐—˜, ๐Ÿด๐—ง๐—•/๐˜€ ๐—ผ๐—ณ ๐—ฝ๐—ฒ๐—ฎ๐—ธ ๐—บ๐—ฒ๐—บ๐—ผ๐—ฟ๐˜† ๐—ฏ๐—ฎ๐—ป๐—ฑ๐˜„๐—ถ๐—ฑ๐˜๐—ต ๐—ฎ๐—ป๐—ฑ ๐Ÿณ๐Ÿด.๐Ÿฒ ๐—ง๐—™๐—Ÿ๐—ข๐—ฃ๐˜€ ๐—ผ๐—ณ ๐—ฝ๐—ฒ๐—ฎ๐—ธ ๐—™๐—ฃ๐Ÿฒ๐Ÿฐ. Put eight in a node and you have 2.3TB of HBM3E: enough to hold an entire frontier-scale model in memory on one machine. For accelerated HPC, it means bigger simulations resident on a single GPU, bandwidth-bound kernels with space to breathe, and serious double precision. SCALE compiles supported CUDA code to run natively on it, cutting the effort required to move existing applications. Our compiler is built to use what the hardware offers. One example: AMD GPUs can pass data between threads through DPP, hard-wired lane permutations that cost almost nothing. SCALE recognises the patterns in ordinary CUDA shuffles and maps them onto DPP automatically, so your code takes the fast path without a line of AMD-specific code. The silicon was always capable. What held CUDA workloads back on AMD was getting the code there without leaving performance behind on the way. That is a compiler problem, and compilers can be fixed once for everyone. We are now listed in @AMD's Instinct AI & HPC Software Ecosystem Program! amd.com/en/ecosystem/isv/datโ€ฆ
1
1
5
241
A hybrid GPU fleet only pays off if every part of it runs your code fast. The best price-performance moves between vendors and hardware generations. Mixing accelerators is how you follow it. The catch is the software. A second vendor usually means a second codebase, tuned to the same standard as the first. Every optimisation lands twice. Every release is validated twice. The engineering bill eats the hardware savings. scale-lang.com removes that step. Your existing CUDA code compiles natively for AMD and NVIDIA GPUs, and the compiler does the tuning: novel optimisations that use each target's own hardware features, including ones that cannot be expressed in source at all. On the Extended OpenDwarfs suite, unmodified CUDA code compiled with SCALE 1.7.3 is ๐—ผ๐—ป ๐—ฝ๐—ฎ๐—ฟ ๐˜„๐—ถ๐˜๐—ต ๐—›๐—œ๐—ฃ ๐—ฎ๐—ป๐—ฑ ๐—ป๐˜ƒ๐—ฐ๐—ฐ ๐—ผ๐—ป ๐—ฎ๐˜ƒ๐—ฒ๐—ฟ๐—ฎ๐—ด๐—ฒ, and faster on about half the workloads (AMD MI300X and NVIDIA B300, September 2026). ๐—ข๐—ป๐—ฒ ๐—ฐ๐—ผ๐—ฑ๐—ฒ๐—ฏ๐—ฎ๐˜€๐—ฒ. ๐—˜๐˜ƒ๐—ฒ๐—ฟ๐˜† ๐—ฎ๐—ฐ๐—ฐ๐—ฒ๐—น๐—ฒ๐—ฟ๐—ฎ๐˜๐—ผ๐—ฟ ๐—ถ๐—ป ๐˜๐—ต๐—ฒ ๐—ณ๐—น๐—ฒ๐—ฒ๐˜ ๐—ฒ๐—ฎ๐—ฟ๐—ป๐—ถ๐—ป๐—ด ๐—ถ๐˜๐˜€ ๐—ธ๐—ฒ๐—ฒ๐—ฝ. Benchmarks: scale-lang.com/?utm_source=tโ€ฆ
1
2
69
The fairest way to compare GPU toolchains is to hand them the same workload. That is the idea behind Extended OpenDwarfs, the benchmark suite built by our colleague Beau Johnston: 16 benchmarks spanning 13 Berkeley dwarfs, each written in CUDA, HIP and OpenCL, with every run checked for correctness. Beau has now turned it on scale-lang.com. The CUDA code is compiled with SCALE and measured against native HIP on AMD and nvcc on NVIDIA, on systems from AMD Vega to NVIDIA Blackwell. The result is a peer-reviewed paper, ๐˜š๐˜ค๐˜ข๐˜ญ๐˜ช๐˜ฏ๐˜จ ๐˜ต๐˜ฉ๐˜ฆ ๐˜Œ๐˜น๐˜ต๐˜ฆ๐˜ฏ๐˜ฅ๐˜ฆ๐˜ฅ ๐˜–๐˜ฑ๐˜ฆ๐˜ฏ๐˜‹๐˜ธ๐˜ข๐˜ณ๐˜ง๐˜ด, which Beau presented in Singapore at the NVIDIA Supercomputing User Group (NVSUG) workshop at ICPP '26. Code and raw data are open, so anyone can rerun it. The same suite runs our newest benchmarks too: with SCALE 1.7.3, unmodified CUDA code is ๐—ผ๐—ป ๐—ฝ๐—ฎ๐—ฟ ๐˜„๐—ถ๐˜๐—ต ๐—›๐—œ๐—ฃ ๐—ฎ๐—ป๐—ฑ ๐—ป๐˜ƒ๐—ฐ๐—ฐ ๐—ผ๐—ป ๐—ฎ๐˜ƒ๐—ฒ๐—ฟ๐—ฎ๐—ด๐—ฒ, and faster on about half the workloads.
1
1
3
75
You shouldn't have to pick a GPU vendor up front. And your codebase shouldn't pick one for you. That was our CEO @SpectralMichael's point on stage at the The Xcelerated Compute Show in London, in a fireside chat with @dcdnews's Vlad - Gabriel Anghel. He calls it team rainbow ๐ŸŒˆ: rather than signing up with team green, red or blue, you mix and match. He compared the CUDA ecosystem to the UK plug: you can argue it's the better socket, but nobody rips out the wiring to switch. And rewriting code for each vendor is a maintenance bill that grows with every vendor you add. So keep your CUDA code. scale-lang.com compiles it for NVIDIA and AMD GPUs. You get more performance per dollar from the hardware you already own, and you buy your next GPU because it's the best one for the workload, not because it's the only one your code runs on. @BerryWrites wrote it up for @sdxcentral: sdxcentral.com/news/can-teamโ€ฆ
3
120
The hardest test for a CUDA compiler is code that was never written with it in mind. So on top of our own tests, we build 48 open-source CUDA projects - FFmpeg, OpenCV, GROMACS, hashcat and more. We follow each project's own build instructions as closely as we can, then run its own test suite on AMD and NVIDIA GPUs. That is a deliberately unforgiving test, and it steers our roadmap. API coverage is driven by what real projects actually reach for, discovered by watching real builds fail - not by working alphabetically through a specification. The scripts and the results for each release are public, failures included. Read them and pick holes in them - repo link: github.com/spectral-compute/โ€ฆ ๐—” ๐—ฐ๐—ผ๐—บ๐—ฝ๐—ถ๐—น๐—ฒ๐—ฟ ๐˜๐—ต๐—ฎ๐˜ ๐—ผ๐—ป๐—น๐˜† ๐—ฐ๐—ผ๐—บ๐—ฝ๐—ถ๐—น๐—ฒ๐˜€ ๐˜๐—ต๐—ฒ ๐—ฒ๐˜…๐—ฎ๐—บ๐—ฝ๐—น๐—ฒ๐˜€ ๐—ถ๐—ป ๐—ถ๐˜๐˜€ ๐—ผ๐˜„๐—ป ๐—ฑ๐—ผ๐—ฐ๐˜‚๐—บ๐—ฒ๐—ป๐˜๐—ฎ๐˜๐—ถ๐—ผ๐—ป ๐—ถ๐˜€ ๐—ฎ ๐—ฑ๐—ฒ๐—บ๐—ผ. Come tell us what to test: scale-lang.com/s/discord?utmโ€ฆ
2
96
๐—ฆ๐—–๐—”๐—Ÿ๐—˜ ๐Ÿญ.๐Ÿณ.๐Ÿฏ ๐—ถ๐˜€ ๐—ผ๐˜‚๐˜. This release adds a Rocky Linux / RHEL 8 package, and supports older glibc in general. More of the compiler now ships statically linked, so it is less likely to clash with other LLVM-based compilers. Texture API support expands substantially. And there is the usual long list of nvcc-compatibility, runtime and CUDA-X library fixes. Grab the new release from scale-lang.com. ๐——๐—ฟ๐—ผ๐—ฝ-๐—ถ๐—ป ๐˜€๐—ต๐—ผ๐˜‚๐—น๐—ฑ ๐—ฐ๐—ผ๐˜ƒ๐—ฒ๐—ฟ ๐˜๐—ต๐—ฒ ๐˜€๐˜†๐˜€๐˜๐—ฒ๐—บ ๐—ฎ๐˜€ ๐˜„๐—ฒ๐—น๐—น ๐—ฎ๐˜€ ๐˜๐—ต๐—ฒ ๐—ฐ๐—ผ๐—ฑ๐—ฒ. Full release notes: scale-lang.com/s/scale173tw
1
3
110
Spectral Compute retweeted
Replying to @SpectralCom
llama.cpp carrying a hip tree that trails cuda is the quiet tax. cutlass having no amd door at all is the sharper split
1
1
39
There are two kinds of well-known CUDA project. The first kind ships two codebases: a CUDA one and a hand-written HIP port. Hashcat, GROMACS, Cycles, llama.cpp all carry both. Every change has to land twice, and the port usually trails the original. The second kind has no working AMD route at all. CUTLASS, AMGX and others simply do not run on AMD hardware - unless you compile them with scale-lang.com. For the first group we are a way to delete a codebase. For the second we are the only door in. Best part? SCALE is free for non-commercial use. Try it against your codebase, and drop into our Discord to let us know how it fared! scale-lang.com/s/scale-discoโ€ฆ
1
1
5
267
"Portable code is slower than hand-tuned code" is one of those things everyone knows and nobody rechecks. CPU compilers disproved it decades ago. They exploit diverse hardware features better than most people manage by hand. The GPU version of that argument is very concrete. Moving data between lanes can go through a general permute instruction, which bounces the data off the shared memory cache at roughly ten times the cost of a register move. Or it can go through a hardwired permutation pattern that is ๐—น๐—ถ๐˜๐—ฒ๐—ฟ๐—ฎ๐—น๐—น๐˜† ๐˜„๐—ถ๐—ฟ๐—ฒ๐˜€ - close to free, and expressed as a flag on an operand rather than an instruction of its own. The catch is that the available patterns change between hardware generations, so almost nobody reaches for them by hand. A compiler can. scale-lang.com takes a whole reduction loop, works out what is actually being computed across which lanes, and rebuilds it from the cheap patterns - chaining two of them where no single one matches. The same analysis then found something on NVIDIA hardware: a whole-warp reduction instruction most people never write the metaprogramming to reach. SCALE now uses it automatically wherever it applies. Read our blog post "Optimizing CUDA Shuffles with SCALE": tinyurl.com/5y5vhtxy
1
4
234
๐—ก๐—ผ๐˜ ๐—ฒ๐˜ƒ๐—ฒ๐—ฟ๐˜† ๐—ธ๐—ฒ๐—ฟ๐—ป๐—ฒ๐—น ๐—ด๐—ฒ๐˜๐˜€ ๐—ฎ ๐Ÿญ๐Ÿฌ๐Ÿฌ๐˜…. A Monte Carlo run splits into millions of independent jobs. GPUs eat that. Hundreds of times a CPU core, easily. An FDTD stencil is limited by memory bandwidth, not arithmetic. It runs as fast as the memory allows and no faster. A sparse implicit solve is the awkward one. On the open-source OPM Flow reservoir simulator, a published comparison[1] put one GPU at about 5.6x a dual-threaded MPI process. All three get sold as "GPU accelerated". So when someone quotes you a speed-up, ask which kernel it came from. Borrowed from another shape, it tells you nothing about yours. Ours, same treatment: on Rodinia, against hand-written HIP ports on an MI300X, scale-lang.com averaged ๐Ÿฒ.๐Ÿญ๐Ÿต๐˜…. Up to 33.8x. Faster on 10 of the 14. Benchmarks: tinyurl.com/4ku2yx47
1
1
1
7
334
Most real CUDA codebases have inline assembly in them somewhere. Automated porting gives up on it. There is no source-level translation of inline PTX, so the code someone wrote specifically to be fast is the code that does not come across. scale-lang.com parses it instead. Inline PTX is raised into the compiler's own intermediate representation, optimised like any other code, then lowered back onto whatever instructions the target hardware actually has. A three-input bitwise operation written as inline assembly comes out the other side as two native AMD instructions, because once it is real code the optimiser can fold it. This pays off on NVIDIA hardware too. Plenty of inline PTX in the wild was written around toolchain limitations that no longer exist, and assembly a compiler cannot read blocks it from optimising everything around it. ๐—ฃ๐—ผ๐—ฟ๐˜๐—ฎ๐—ฏ๐—ถ๐—น๐—ถ๐˜๐˜† ๐˜€๐—ต๐—ผ๐˜‚๐—น๐—ฑ๐—ป'๐˜ ๐—ฐ๐—ผ๐˜€๐˜ ๐˜†๐—ผ๐˜‚ ๐˜€๐—ฝ๐—ฒ๐—ฒ๐—ฑ.
1
4
564
๐—–๐—ผ๐—บ๐—ฝ๐˜‚๐˜๐—ฒ ๐—ฎ๐˜ƒ๐—ฎ๐—ถ๐—น๐—ฎ๐—ฏ๐—ถ๐—น๐—ถ๐˜๐˜† ๐—ถ๐˜€ ๐—ฎ ๐—ฏ๐—ผ๐˜๐˜๐—น๐—ฒ๐—ป๐—ฒ๐—ฐ๐—ธ. New accelerators reach a handful of clouds first, and capacity stays tight for a while after that. If your code only builds for one vendor, you're stuck waiting on that vendor's capacity. scale-lang.com compiles accelerated HPC codebases to run natively on both AMD and NVIDIA GPUs. That widens the pool of capacity you can actually use. ๐—ฃ๐—ฟ๐—ถ๐—ฐ๐—ฒ ๐—ถ๐˜€ ๐—ผ๐—ป๐—ฒ ๐—ฏ๐—ฒ๐—ป๐—ฒ๐—ณ๐—ถ๐˜. ๐—š๐—ฒ๐˜๐˜๐—ถ๐—ป๐—ด ๐—ฐ๐—ผ๐—บ๐—ฝ๐˜‚๐˜๐—ฒ ๐˜„๐—ต๐—ฒ๐—ป ๐˜†๐—ผ๐˜‚ ๐—ป๐—ฒ๐—ฒ๐—ฑ ๐—ถ๐˜ ๐—ถ๐˜€ ๐˜๐—ต๐—ฒ ๐—ฏ๐—ถ๐—ด๐—ด๐—ฒ๐—ฟ ๐—ผ๐—ป๐—ฒ.
1
2
90
A recent scale-lang.com release included a significant atomics optimisation that only benefits AMD GFX11 cards. Hardware that is around five years old. Silicon vendors rarely fund that work, and for a completely rational reason. Making last year's card faster does not sell this year's card. Their incentive is the next chip.
1
1
7
1,700
A compiler company's incentive runs the other way. We are paid for code running fast on whatever you already own. Older hardware, mixed fleets, the cards you bought two procurement cycles ago - ๐˜๐—ต๐—ฎ๐˜ ๐—ถ๐˜€ ๐˜๐—ต๐—ฒ ๐—ท๐—ผ๐—ฏ.
1
1
3
104