Benchmarks: original contra desbloqueado

Todas as medições antes/depois na mesma placa publicadas upstream, incluindo os modos tensoriais que não mudaram, o par FP8 CUTLASS que mediu 1,0029× e a tabela cuBLAS da RTX 2080 Ti do fork Turing.

Como foram feitas

As linhas da RTX 4090 vêm de um laço de taxa de emissão MMA residente em registradores executado com 20.000 iterações e três repetições por modo, relatando o melhor de três. As linhas da RTX 4070 Ti SUPER vêm do tensor-modes-comparison.json do fork: 66 SMs, driver 580.178.04, limite de 240 W, 20.000 iterações e três repetições, com entradas todos-uns em oito cadeias independentes. O par FP8 é uma execução separada do profiler CUTLASS 4.8.1 sobre um kernel sm_89. As linhas da RTX 2080 Ti são a tabela do README do fork Turing: GEMM cuBLAS FP16 com acumulação FP32, 250 W, driver 575.51.03, quatro tamanhos M.N.K, medidos em uma placa Dell de 22 GB. O README informa os TFLOPS diretamente e acrescenta entre parênteses o percentual de um pico de 56,9 TF/s, tirado do white paper da NVIDIA Turing; esses TFLOPS são citados aqui sem alteração. O upstream não informa número de iterações, então nenhum é exibido.

GeForce RTX 4090

AD102 · 128 SMs · driver unrecorded in the evidence file

ModoOriginalDesbloqueadoGanho
f16/f16325.70 TF/s331.60 TF/s1.02×
f16/f32165.60 TF/s330.80 TF/s2.00×
bf16/f32165.50 TF/s330.30 TF/s2.00×
s8/s32661.60 TF/s659.50 TF/s1.00×
dp4a164.50 TF/s164.10 TF/s1.00×
ffma79.10 TF/s79.10 TF/s1.00×
  • f16/f16: unlocked values are the 40,000-iteration run; f16/f16 was mostly unaffected, unlike f16/f32
  • s8/s32: already at full rate before the unlock
  • ffma: FP32 was never rate-limited

Arquivos-fonte desta execução

GeForce RTX 4070 Ti SUPER

AD103 · 66 SMs · driver 580.178.04

ModoOriginalDesbloqueadoGanho
f16/f3294.96 TFLOP/s188.97 TFLOP/s1.99×
tf3247.49 TFLOP/s94.51 TFLOP/s1.99×
u4/s32754.81 TOP/s754.68 TOP/s1.00×
  • u4/s32: integer path, unaffected

Arquivos-fonte desta execução

GeForce RTX 2080 Ti

TU102 · 68 SMs · driver 575.51.03

ModoOriginalDesbloqueadoGanho
f16/f32 1024³50.30 TF/s68.30 TF/s1.36×
f16/f32 2048³55.70 TF/s91.40 TF/s1.64×
f16/f32 4096³53.70 TF/s81.70 TF/s1.52×
f16/f32 8192³52.80 TF/s77.90 TF/s1.48×
  • f16/f32 1024³: README row 1024: 50.3 (88.4% of a 56.9 TF/s peak) -> 68.3 (120.0%)
  • f16/f32 2048³: README row 2048: 55.7 (97.9% of a 56.9 TF/s peak) -> 91.4 (160.6%)
  • f16/f32 4096³: README row 4096: 53.7 (94.4% of a 56.9 TF/s peak) -> 81.7 (143.6%)
  • f16/f32 8192³: README row 8192: 52.8 (92.8% of a 56.9 TF/s peak) -> 77.9 (136.9%)

Arquivos-fonte desta execução

O par FP8 que não se moveu

O fork mediu um GEMM 4096³ com entrada E4M3 FP8 pareada, acumulação FP32, na 4070 Ti SUPER com o mesmo binário do profiler CUTLASS, um único kernel, 10 aquecimentos e 20 iterações de profiling, exigindo verificação contra a referência do dispositivo. Ambas as execuções passaram em suas checagens de referência.

ExecuçãomsGFLOP/s
original2.3172459325.8
desbloqueado2.3106659495.0

RTX 4070 Ti SUPER · cutlass_tensorop_s16832gemm_e4m3_128x128_64x3_tn_align16 · 1.0029×

Como ler uma razão de 1,00×

Uma linha de 1,00× não é um desbloqueio falho. Ela diz que aquele caminho específico nunca foi limitado, então a substituição não tinha nada a restaurar. Se você medir sua própria placa e ver 1,00× no modo que lhe importa, o desbloqueio pode ter sido aplicado corretamente e simplesmente não ajudar aquela carga de trabalho.