<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Vulkan on KnightLi Blog</title>
        <link>https://www.knightli.com/es/tags/vulkan/</link>
        <description>Recent content in Vulkan on KnightLi Blog</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>es</language>
        <lastBuildDate>Thu, 23 Apr 2026 10:22:04 +0800</lastBuildDate><atom:link href="https://www.knightli.com/es/tags/vulkan/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Ranking de rendimiento GPU en llama.cpp: cómo leer los scoreboards CUDA, ROCm y Vulkan con pp512 / tg128 / FA</title>
        <link>https://www.knightli.com/es/2026/04/23/llama-cpp-gpu-benchmark-cuda-rocm-vulkan-scoreboard/</link>
        <pubDate>Thu, 23 Apr 2026 10:22:04 +0800</pubDate>
        
        <guid>https://www.knightli.com/es/2026/04/23/llama-cpp-gpu-benchmark-cuda-rocm-vulkan-scoreboard/</guid>
        <description>&lt;p&gt;Los scoreboards de &lt;code&gt;llama.cpp&lt;/code&gt; son muy útiles, pero también son fáciles de malinterpretar si solo miras una cifra. En esas tablas suelen aparecer &lt;code&gt;CUDA&lt;/code&gt;, &lt;code&gt;ROCm&lt;/code&gt;, &lt;code&gt;Vulkan&lt;/code&gt;, &lt;code&gt;Q4_0&lt;/code&gt;, &lt;code&gt;pp512&lt;/code&gt;, &lt;code&gt;tg128&lt;/code&gt;, &lt;code&gt;FA&lt;/code&gt; y &lt;code&gt;t/s&lt;/code&gt;, y cada uno describe una dimensión diferente del benchmark.&lt;/p&gt;
&lt;p&gt;Este artículo resume cómo leer esas tablas y qué conclusiones prácticas conviene sacar antes de comparar GPUs.&lt;/p&gt;
&lt;h2 id=&#34;entender-primero-las-métricas&#34;&gt;Entender primero las métricas
&lt;/h2&gt;&lt;h3 id=&#34;qué-es-q4_0&#34;&gt;Qué es Q4_0
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Q4_0&lt;/code&gt; es un formato de cuantización de 4 bits. No significa que el modelo sea más fuerte. Significa que el modelo es más pequeño, usa menos VRAM y cabe en más dispositivos.&lt;/p&gt;
&lt;p&gt;La mayoría de estos scoreboards estandarizan sobre &lt;code&gt;Llama 2 7B, Q4_0&lt;/code&gt; para que la comparación entre GPUs sea más sencilla.&lt;/p&gt;
&lt;h3 id=&#34;qué-es-pp512&#34;&gt;Qué es pp512
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;pp512&lt;/code&gt; suele significar &lt;code&gt;prompt processing 512 tokens&lt;/code&gt;, es decir, el throughput al procesar 512 tokens de entrada.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;pp&lt;/code&gt; = prompt processing&lt;/li&gt;
&lt;li&gt;&lt;code&gt;512&lt;/code&gt; = la entrada tiene 512 tokens&lt;/li&gt;
&lt;li&gt;&lt;code&gt;t/s&lt;/code&gt; = tokens por segundo&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Esto se acerca más a la velocidad de ingestión del prompt, por eso suele ser mucho más alto que la velocidad de generación.&lt;/p&gt;
&lt;h3 id=&#34;qué-es-tg128&#34;&gt;Qué es tg128
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;tg128&lt;/code&gt; suele significar &lt;code&gt;text generation 128 tokens&lt;/code&gt;, es decir, la velocidad al generar 128 tokens de forma continua.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;tg&lt;/code&gt; = text generation&lt;/li&gt;
&lt;li&gt;&lt;code&gt;128&lt;/code&gt; = generar 128 tokens seguidos&lt;/li&gt;
&lt;li&gt;&lt;code&gt;t/s&lt;/code&gt; = tokens por segundo&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Esta métrica suele estar más cerca de la velocidad que el usuario percibe en uso interactivo.&lt;/p&gt;
&lt;h3 id=&#34;qué-es-fa&#34;&gt;Qué es FA
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;FA&lt;/code&gt; significa &lt;code&gt;Flash Attention&lt;/code&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;with FA&lt;/code&gt; significa que Flash Attention está activado&lt;/li&gt;
&lt;li&gt;&lt;code&gt;no FA&lt;/code&gt; significa que Flash Attention está desactivado&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En muchas GPUs, FA mejora &lt;code&gt;pp512&lt;/code&gt; con más claridad que &lt;code&gt;tg128&lt;/code&gt;, pero la ganancia no es idéntica entre backends, drivers y arquitecturas GPU.&lt;/p&gt;
&lt;h3 id=&#34;cómo-leer-ts&#34;&gt;Cómo leer t/s
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;t/s&lt;/code&gt; significa &lt;code&gt;tokens per second&lt;/code&gt;. La regla clave es comparar el mismo tipo de prueba con los mismos ajustes.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;No compares &lt;code&gt;pp512&lt;/code&gt; y &lt;code&gt;tg128&lt;/code&gt; como si fueran lo mismo.&lt;/li&gt;
&lt;li&gt;No mezcles resultados &lt;code&gt;no FA&lt;/code&gt; con &lt;code&gt;with FA&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;No asumas que CUDA, ROCm y Vulkan son directamente intercambiables.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;conclusiones-rápidas&#34;&gt;Conclusiones rápidas
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;CUDA sigue siendo la ruta más fuerte en conjunto para benchmarks GPU de &lt;code&gt;llama.cpp&lt;/code&gt;, especialmente en GPUs Nvidia de gama alta.&lt;/li&gt;
&lt;li&gt;ROCm ya ofrece resultados fuertes en GPUs AMD de gama alta y aceleradores Instinct.&lt;/li&gt;
&lt;li&gt;Vulkan tiene la cobertura de hardware más amplia, incluyendo Nvidia, AMD, Intel, GPUs antiguas y algunos setups Apple / Asahi.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tg128&lt;/code&gt; se acerca más a la velocidad percibida en uso diario, mientras &lt;code&gt;pp512&lt;/code&gt; es mejor para juzgar throughput de prompt.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;cómo-usar-las-tablas&#34;&gt;Cómo usar las tablas
&lt;/h2&gt;&lt;h3 id=&#34;1-decide-si-te-importa-más-tg128-o-pp512&#34;&gt;1. Decide si te importa más tg128 o pp512
&lt;/h3&gt;&lt;p&gt;Para chat y uso interactivo, &lt;code&gt;tg128&lt;/code&gt; suele importar más. Para prompts largos, batch processing o workloads de ingestión, &lt;code&gt;pp512&lt;/code&gt; pesa más.&lt;/p&gt;
&lt;h3 id=&#34;2-compara-el-backend-que-realmente-usas&#34;&gt;2. Compara el backend que realmente usas
&lt;/h3&gt;&lt;p&gt;Usuarios Nvidia deberían priorizar CUDA. Usuarios AMD deberían comparar primero ROCm y Vulkan. Si necesitas compatibilidad amplia o hardware mixto, presta atención a Vulkan.&lt;/p&gt;
&lt;h3 id=&#34;3-mira-fa-al-final&#34;&gt;3. Mira FA al final
&lt;/h3&gt;&lt;p&gt;En muchas GPUs, activar FA mejora más &lt;code&gt;pp512&lt;/code&gt; que &lt;code&gt;tg128&lt;/code&gt;, así que una sola cifra destacada puede ser engañosa.&lt;/p&gt;
&lt;h3 id=&#34;4-no-compares-generaciones-solo-por-memoria&#34;&gt;4. No compares generaciones solo por memoria
&lt;/h3&gt;&lt;p&gt;Una GPU con más VRAM no siempre gana en &lt;code&gt;tg128&lt;/code&gt;. La generación token a token puede depender mucho de ancho de banda, caché, backend, kernel y optimizaciones del runtime.&lt;/p&gt;
&lt;h3 id=&#34;5-usa-las-tablas-como-orientación-no-como-garantía&#34;&gt;5. Usa las tablas como orientación, no como garantía
&lt;/h3&gt;&lt;p&gt;Los scoreboards son aportes comunitarios. Pueden variar por commit, driver, sistema operativo, flags de compilación, versión de &lt;code&gt;llama.cpp&lt;/code&gt;, temperatura y configuración de energía.&lt;/p&gt;
&lt;h2 id=&#34;qué-muestran-en-general-los-scoreboards&#34;&gt;Qué muestran en general los scoreboards
&lt;/h2&gt;&lt;p&gt;En las tablas CUDA, las GPUs Nvidia modernas de gama alta, como RTX 5090, RTX PRO 6000 Blackwell, H100, A100, RTX 4090 y RTX 5080, ocupan los rangos superiores. El patrón general confirma que CUDA sigue siendo la ruta más madura para Nvidia.&lt;/p&gt;
&lt;p&gt;En las tablas ROCm / HIP, aceleradores como MI300X y tarjetas AMD de gama alta como RX 7900 XTX muestran resultados fuertes. Esto confirma que ROCm ya es una ruta seria, aunque la experiencia puede depender mucho de soporte de driver y plataforma.&lt;/p&gt;
&lt;p&gt;En las tablas Vulkan, el valor principal es la amplitud. Aparecen Nvidia, AMD, Intel, Apple vía MoltenVK / Asahi, GPUs antiguas y GPUs integradas. Vulkan no siempre es la ruta más rápida, pero suele ser la más flexible para comparar hardware diverso.&lt;/p&gt;
&lt;h2 id=&#34;resumen-en-una-frase&#34;&gt;Resumen en una frase
&lt;/h2&gt;&lt;p&gt;En benchmarks de &lt;code&gt;llama.cpp&lt;/code&gt;, &lt;code&gt;pp512&lt;/code&gt;, &lt;code&gt;tg128&lt;/code&gt;, &lt;code&gt;Q4_0&lt;/code&gt;, &lt;code&gt;FA&lt;/code&gt; y &lt;code&gt;CUDA&lt;/code&gt; / &lt;code&gt;ROCm&lt;/code&gt; / &lt;code&gt;Vulkan&lt;/code&gt; describen dimensiones distintas. Cuando entiendes el contexto del benchmark, las tablas se vuelven mucho más fáciles de leer.&lt;/p&gt;
&lt;h2 id=&#34;fuentes&#34;&gt;Fuentes
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;CUDA discussion #15013: &lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp/discussions/15013&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/ggml-org/llama.cpp/discussions/15013&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Apple Silicon discussion #4167: &lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp/discussions/4167&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/ggml-org/llama.cpp/discussions/4167&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;ROCm discussion #15021: &lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp/discussions/15021&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/ggml-org/llama.cpp/discussions/15021&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Vulkan discussion #10879: &lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp/discussions/10879&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/ggml-org/llama.cpp/discussions/10879&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        
    </channel>
</rss>
