<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>CUDA on Producthunt daily</title>
        <link>https://producthunt.programnotes.cn/en/tags/cuda/</link>
        <description>Recent content in CUDA on Producthunt daily</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en</language>
        <lastBuildDate>Tue, 14 Oct 2025 15:29:21 +0800</lastBuildDate><atom:link href="https://producthunt.programnotes.cn/en/tags/cuda/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>llama.cpp</title>
        <link>https://producthunt.programnotes.cn/en/p/llama.cpp/</link>
        <pubDate>Tue, 14 Oct 2025 15:29:21 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/llama.cpp/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1641738876363-a0728bf25a8d?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NjA0MjY4ODR8&amp;ixlib=rb-4.1.0" alt="Featured image of post llama.cpp" /&gt;&lt;h1 id=&#34;ggml-orgllamacpp&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ggml-org/llama.cpp&lt;/a&gt;
&lt;/h1&gt;&lt;h1 id=&#34;llamacpp&#34;&gt;llama.cpp
&lt;/h1&gt;&lt;p&gt;&lt;img src=&#34;https://user-images.githubusercontent.com/1991296/230134379-7181e485-c521-4d23-a0d6-f7b3b61ba524.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;llama&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://opensource.org/licenses/MIT&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/badge/license-MIT-blue.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;License: MIT&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp/releases&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/github/v/release/ggml-org/llama.cpp&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Release&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp/actions/workflows/server.yml&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://github.com/ggml-org/llama.cpp/actions/workflows/server.yml/badge.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Server&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp/discussions/205&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Manifesto&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/ggml&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ggml&lt;/a&gt; / &lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp/blob/master/docs/ops.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ops&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;LLM inference in C/C++&lt;/p&gt;
&lt;h2 id=&#34;recent-api-changes&#34;&gt;Recent API changes
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp/issues/9289&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Changelog for &lt;code&gt;libllama&lt;/code&gt; API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp/issues/9291&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Changelog for &lt;code&gt;llama-server&lt;/code&gt; REST API&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;hot-topics&#34;&gt;Hot topics
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp/discussions/15396&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;guide : running gpt-oss with llama.cpp&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp/discussions/15313&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;[FEEDBACK] Better packaging for llama.cpp to support downstream consumers 🤗&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Support for the &lt;code&gt;gpt-oss&lt;/code&gt; model with native MXFP4 format has been added | &lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp/pull/15091&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;PR&lt;/a&gt; | &lt;a class=&#34;link&#34; href=&#34;https://blogs.nvidia.com/blog/rtx-ai-garage-openai-oss&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Collaboration with NVIDIA&lt;/a&gt; | &lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp/discussions/15095&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Comment&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Hot PRs: &lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp/pulls?q=is%3Apr&amp;#43;label%3Ahot&amp;#43;&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;All&lt;/a&gt; | &lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp/pulls?q=is%3Apr&amp;#43;label%3Ahot&amp;#43;is%3Aopen&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Open&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Multimodal support arrived in &lt;code&gt;llama-server&lt;/code&gt;: &lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp/pull/12898&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#12898&lt;/a&gt; | &lt;a class=&#34;link&#34; href=&#34;./docs/multimodal.md&#34; &gt;documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;VS Code extension for FIM completions: &lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.vscode&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/ggml-org/llama.vscode&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Vim/Neovim plugin for FIM completions: &lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.vim&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/ggml-org/llama.vim&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Introducing GGUF-my-LoRA &lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp/discussions/10123&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/ggml-org/llama.cpp/discussions/10123&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Hugging Face Inference Endpoints now support GGUF out of the box! &lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp/discussions/9669&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/ggml-org/llama.cpp/discussions/9669&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Hugging Face GGUF editor: &lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp/discussions/9268&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;discussion&lt;/a&gt; | &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/spaces/CISCai/gguf-editor&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;tool&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;quick-start&#34;&gt;Quick start
&lt;/h2&gt;&lt;p&gt;Getting started with llama.cpp is straightforward. Here are several ways to install it on your machine:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Install &lt;code&gt;llama.cpp&lt;/code&gt; using &lt;a class=&#34;link&#34; href=&#34;docs/install.md&#34; &gt;brew, nix or winget&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Run with Docker - see our &lt;a class=&#34;link&#34; href=&#34;docs/docker.md&#34; &gt;Docker documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Download pre-built binaries from the &lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp/releases&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;releases page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Build from source by cloning this repository - check out &lt;a class=&#34;link&#34; href=&#34;docs/build.md&#34; &gt;our build guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Once installed, you&amp;rsquo;ll need a model to work with. Head to the &lt;a class=&#34;link&#34; href=&#34;#obtaining-and-quantizing-models&#34; &gt;Obtaining and quantizing models&lt;/a&gt; section to learn more.&lt;/p&gt;
&lt;p&gt;Example command:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Use a local model file&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-cli -m my_model.gguf
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Or download and run a model directly from Hugging Face&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-cli -hf ggml-org/gemma-3-1b-it-GGUF
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Launch OpenAI-compatible API server&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-server -hf ggml-org/gemma-3-1b-it-GGUF
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;description&#34;&gt;Description
&lt;/h2&gt;&lt;p&gt;The main goal of &lt;code&gt;llama.cpp&lt;/code&gt; is to enable LLM inference with minimal setup and state-of-the-art performance on a wide
range of hardware - locally and in the cloud.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Plain C/C++ implementation without any dependencies&lt;/li&gt;
&lt;li&gt;Apple silicon is a first-class citizen - optimized via ARM NEON, Accelerate and Metal frameworks&lt;/li&gt;
&lt;li&gt;AVX, AVX2, AVX512 and AMX support for x86 architectures&lt;/li&gt;
&lt;li&gt;1.5-bit, 2-bit, 3-bit, 4-bit, 5-bit, 6-bit, and 8-bit integer quantization for faster inference and reduced memory use&lt;/li&gt;
&lt;li&gt;Custom CUDA kernels for running LLMs on NVIDIA GPUs (support for AMD GPUs via HIP and Moore Threads GPUs via MUSA)&lt;/li&gt;
&lt;li&gt;Vulkan and SYCL backend support&lt;/li&gt;
&lt;li&gt;CPU+GPU hybrid inference to partially accelerate models larger than the total VRAM capacity&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The &lt;code&gt;llama.cpp&lt;/code&gt; project is the main playground for developing new features for the &lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/ggml&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ggml&lt;/a&gt; library.&lt;/p&gt;
&lt;details&gt;
&lt;summary&gt;Models&lt;/summary&gt;
&lt;p&gt;Typically finetunes of the base models below are supported as well.&lt;/p&gt;
&lt;p&gt;Instructions for adding support for new models: &lt;a class=&#34;link&#34; href=&#34;docs/development/HOWTO-add-model.md&#34; &gt;HOWTO-add-model.md&lt;/a&gt;&lt;/p&gt;
&lt;h4 id=&#34;text-only&#34;&gt;Text-only
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; LLaMA 🦙&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; LLaMA 2 🦙🦙&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; LLaMA 3 🦙🦙🦙&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/mistralai/Mistral-7B-v0.1&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Mistral 7B&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/models?search=mistral-ai/Mixtral&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Mixtral MoE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/databricks/dbrx-instruct&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;DBRX&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/models?search=tiiuae/falcon&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Falcon&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://github.com/ymcui/Chinese-LLaMA-Alpaca&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Chinese LLaMA / Alpaca&lt;/a&gt; and &lt;a class=&#34;link&#34; href=&#34;https://github.com/ymcui/Chinese-LLaMA-Alpaca-2&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Chinese LLaMA-2 / Alpaca-2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://github.com/bofenghuang/vigogne&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Vigogne (French)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp/pull/5423&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;BERT&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://bair.berkeley.edu/blog/2023/04/03/koala/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Koala&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/models?search=baichuan-inc/Baichuan&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Baichuan 1 &amp;amp; 2&lt;/a&gt; + &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/hiyouga/baichuan-7b-sft&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;derivations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/models?search=BAAI/Aquila&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Aquila 1 &amp;amp; 2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp/pull/3187&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Starcoder models&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/smallcloudai/Refact-1_6B-fim&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Refact&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp/pull/3417&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;MPT&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp/pull/3553&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Bloom&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/models?search=01-ai/Yi&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Yi models&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/stabilityai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;StableLM models&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/models?search=deepseek-ai/deepseek&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Deepseek models&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/models?search=Qwen/Qwen&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Qwen models&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp/pull/3557&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;PLaMo-13B&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/models?search=microsoft/phi&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Phi models&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp/pull/11003&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;PhiMoE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/gpt2&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GPT-2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp/pull/5118&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Orion 14B&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/models?search=internlm2&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;InternLM2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://github.com/WisdomShell/codeshell&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CodeShell&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://ai.google.dev/gemma&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Gemma&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://github.com/state-spaces/mamba&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Mamba&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/keyfan/grok-1-hf&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Grok-1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/models?search=xverse&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Xverse&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/models?search=CohereForAI/c4ai-command-r&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Command-R models&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/models?search=sea-lion&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;SEA-LION&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/GritLM/GritLM-7B&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GritLM-7B&lt;/a&gt; + &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/GritLM/GritLM-8x7B&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GritLM-8x7B&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://allenai.org/olmo&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OLMo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://allenai.org/olmo&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OLMo 2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/allenai/OLMoE-1B-7B-0924&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OLMoE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/collections/ibm-granite/granite-code-models-6624c5cec322e4c148c8b330&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Granite models&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://github.com/EleutherAI/gpt-neox&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GPT-NeoX&lt;/a&gt; + &lt;a class=&#34;link&#34; href=&#34;https://github.com/EleutherAI/pythia&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Pythia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/collections/Snowflake/arctic-66290090abe542894a5ac520&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Snowflake-Arctic MoE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/models?search=Smaug&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Smaug&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/LumiOpen/Poro-34B&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Poro 34B&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/1bitLLM&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Bitnet b1.58 models&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/models?search=flan-t5&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Flan T5&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/collections/apple/openelm-instruct-models-6619ad295d7ae9f868b759ca&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Open Elm models&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/THUDM/chatglm3-6b&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ChatGLM3-6b&lt;/a&gt; + &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/THUDM/glm-4-9b&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ChatGLM4-9b&lt;/a&gt; + &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/THUDM/glm-edge-1.5b-chat&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GLMEdge-1.5b&lt;/a&gt; + &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/THUDM/glm-edge-4b-chat&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GLMEdge-4b&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/collections/THUDM/glm-4-0414-67f3cbcb34dd9d252707cb2e&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GLM-4-0414&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/collections/HuggingFaceTB/smollm-6695016cad7167254ce15966&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;SmolLM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/LGAI-EXAONE/EXAONE-3.0-7.8B-Instruct&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;EXAONE-3.0-7.8B-Instruct&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/collections/tiiuae/falconmamba-7b-66b9a580324dd1598b0f6d4a&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;FalconMamba Models&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/inceptionai/jais-13b-chat&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Jais&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/collections/speakleash/bielik-11b-v23-66ee813238d9b526a072408a&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Bielik-11B-v2.3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://github.com/BlinkDL/RWKV-LM&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;RWKV-6&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/recursal/QRWKV6-32B-Instruct-Preview-v0.1&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;QRWKV-6&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/ai-sage/GigaChat-20B-A3B-instruct&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GigaChat-20B-A3B&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/trillionlabs/Trillion-7B-preview&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Trillion-7B-preview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/collections/inclusionAI/ling-67c51c85b34a7ea0aba94c32&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Ling models&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/collections/LiquidAI/lfm2-686d721927015b2ad73eaa38&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;LFM2 models&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/collections/tencent/hunyuan-dense-model-6890632cda26b19119c9c5e7&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Hunyuan models&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;multimodal&#34;&gt;Multimodal
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/collections/liuhaotian/llava-15-653aac15d994e992e2677a7e&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;LLaVA 1.5 models&lt;/a&gt;, &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/collections/liuhaotian/llava-16-65b9e40155f60fd046a5ccf2&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;LLaVA 1.6 models&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/models?search=SkunkworksAI/Bakllava&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;BakLLaVA&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/NousResearch/Obsidian-3B-V0.5&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Obsidian&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/models?search=Lin-Chen/ShareGPT4V&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ShareGPT4V&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/models?search=mobileVLM&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;MobileVLM 1.7B/3B models&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/models?search=Yi-VL&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Yi-VL&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/models?search=MiniCPM&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Mini CPM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/vikhyatk/moondream2&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Moondream&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://github.com/BAAI-DCAI/Bunny&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Bunny&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/models?search=glm-edge&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GLM-EDGE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/collections/Qwen/qwen2-vl-66cee7455501d7126940800d&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Qwen2-VL&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;input checked=&#34;&#34; disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/collections/LiquidAI/lfm2-vl-68963bbc84a610f7638d5ffa&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;LFM2-VL&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details&gt;
&lt;summary&gt;Bindings&lt;/summary&gt;
&lt;ul&gt;
&lt;li&gt;Python: &lt;a class=&#34;link&#34; href=&#34;https://github.com/ddh0/easy-llama&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ddh0/easy-llama&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Python: &lt;a class=&#34;link&#34; href=&#34;https://github.com/abetlen/llama-cpp-python&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;abetlen/llama-cpp-python&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Go: &lt;a class=&#34;link&#34; href=&#34;https://github.com/go-skynet/go-llama.cpp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;go-skynet/go-llama.cpp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Node.js: &lt;a class=&#34;link&#34; href=&#34;https://github.com/withcatai/node-llama-cpp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;withcatai/node-llama-cpp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;JS/TS (llama.cpp server client): &lt;a class=&#34;link&#34; href=&#34;https://modelfusion.dev/integration/model-provider/llamacpp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;lgrammel/modelfusion&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;JS/TS (Programmable Prompt Engine CLI): &lt;a class=&#34;link&#34; href=&#34;https://github.com/offline-ai/cli&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;offline-ai/cli&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;JavaScript/Wasm (works in browser): &lt;a class=&#34;link&#34; href=&#34;https://github.com/tangledgroup/llama-cpp-wasm&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;tangledgroup/llama-cpp-wasm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Typescript/Wasm (nicer API, available on npm): &lt;a class=&#34;link&#34; href=&#34;https://github.com/ngxson/wllama&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ngxson/wllama&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Ruby: &lt;a class=&#34;link&#34; href=&#34;https://github.com/yoshoku/llama_cpp.rb&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;yoshoku/llama_cpp.rb&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Rust (more features): &lt;a class=&#34;link&#34; href=&#34;https://github.com/edgenai/llama_cpp-rs&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;edgenai/llama_cpp-rs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Rust (nicer API): &lt;a class=&#34;link&#34; href=&#34;https://github.com/mdrokz/rust-llama.cpp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;mdrokz/rust-llama.cpp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Rust (more direct bindings): &lt;a class=&#34;link&#34; href=&#34;https://github.com/utilityai/llama-cpp-rs&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;utilityai/llama-cpp-rs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Rust (automated build from crates.io): &lt;a class=&#34;link&#34; href=&#34;https://github.com/ShelbyJenkins/llm_client&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ShelbyJenkins/llm_client&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;C#/.NET: &lt;a class=&#34;link&#34; href=&#34;https://github.com/SciSharp/LLamaSharp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;SciSharp/LLamaSharp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;C#/VB.NET (more features - community license): &lt;a class=&#34;link&#34; href=&#34;https://docs.lm-kit.com/lm-kit-net/index.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;LM-Kit.NET&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Scala 3: &lt;a class=&#34;link&#34; href=&#34;https://github.com/donderom/llm4s&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;donderom/llm4s&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Clojure: &lt;a class=&#34;link&#34; href=&#34;https://github.com/phronmophobic/llama.clj&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;phronmophobic/llama.clj&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;React Native: &lt;a class=&#34;link&#34; href=&#34;https://github.com/mybigday/llama.rn&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;mybigday/llama.rn&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Java: &lt;a class=&#34;link&#34; href=&#34;https://github.com/kherud/java-llama.cpp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;kherud/java-llama.cpp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Java: &lt;a class=&#34;link&#34; href=&#34;https://github.com/QuasarByte/llama-cpp-jna&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;QuasarByte/llama-cpp-jna&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Zig: &lt;a class=&#34;link&#34; href=&#34;https://github.com/Deins/llama.cpp.zig&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;deins/llama.cpp.zig&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Flutter/Dart: &lt;a class=&#34;link&#34; href=&#34;https://github.com/netdur/llama_cpp_dart&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;netdur/llama_cpp_dart&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Flutter: &lt;a class=&#34;link&#34; href=&#34;https://github.com/xuegao-tzx/Fllama&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;xuegao-tzx/Fllama&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;PHP (API bindings and features built on top of llama.cpp): &lt;a class=&#34;link&#34; href=&#34;https://github.com/distantmagic/resonance&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;distantmagic/resonance&lt;/a&gt; &lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp/pull/6326&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;(more info)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Guile Scheme: &lt;a class=&#34;link&#34; href=&#34;https://savannah.nongnu.org/projects/guile-llama-cpp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;guile_llama_cpp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Swift &lt;a class=&#34;link&#34; href=&#34;https://github.com/srgtuszy/llama-cpp-swift&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;srgtuszy/llama-cpp-swift&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Swift &lt;a class=&#34;link&#34; href=&#34;https://github.com/ShenghaiWang/SwiftLlama&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ShenghaiWang/SwiftLlama&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delphi &lt;a class=&#34;link&#34; href=&#34;https://github.com/Embarcadero/llama-cpp-delphi&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Embarcadero/llama-cpp-delphi&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details&gt;
&lt;summary&gt;UIs&lt;/summary&gt;
&lt;p&gt;&lt;em&gt;(to have a project listed here, it should clearly state that it depends on &lt;code&gt;llama.cpp&lt;/code&gt;)&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/yaroslavyaroslav/OpenAI-sublime-text&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;AI Sublime Text plugin&lt;/a&gt; (MIT)&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/cztomsik/ava&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;cztomsik/ava&lt;/a&gt; (MIT)&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/alexpinel/Dot&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Dot&lt;/a&gt; (GPL)&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/ylsdamxssjxxdd/eva&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;eva&lt;/a&gt; (MIT)&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/iohub/coLLaMA&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;iohub/collama&lt;/a&gt; (Apache-2.0)&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/janhq/jan&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;janhq/jan&lt;/a&gt; (AGPL)&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/johnbean393/Sidekick&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;johnbean393/Sidekick&lt;/a&gt; (MIT)&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/zhouwg/kantv?tab=readme-ov-file&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;KanTV&lt;/a&gt; (Apache-2.0)&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/firatkiral/kodibot&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;KodiBot&lt;/a&gt; (GPL)&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.vim&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;llama.vim&lt;/a&gt; (MIT)&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/abgulati/LARS&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;LARS&lt;/a&gt; (AGPL)&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/vietanhdev/llama-assistant&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Llama Assistant&lt;/a&gt; (GPL)&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/guinmoon/LLMFarm?tab=readme-ov-file&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;LLMFarm&lt;/a&gt; (MIT)&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/undreamai/LLMUnity&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;LLMUnity&lt;/a&gt; (MIT)&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://lmstudio.ai/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;LMStudio&lt;/a&gt; (proprietary)&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/mudler/LocalAI&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;LocalAI&lt;/a&gt; (MIT)&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/LostRuins/koboldcpp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;LostRuins/koboldcpp&lt;/a&gt; (AGPL)&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://mindmac.app&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;MindMac&lt;/a&gt; (proprietary)&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/MindWorkAI/AI-Studio&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;MindWorkAI/AI-Studio&lt;/a&gt; (FSL-1.1-MIT)&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Mobile-Artificial-Intelligence/maid&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Mobile-Artificial-Intelligence/maid&lt;/a&gt; (MIT)&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Mozilla-Ocho/llamafile&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Mozilla-Ocho/llamafile&lt;/a&gt; (Apache-2.0)&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/nat/openplayground&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;nat/openplayground&lt;/a&gt; (MIT)&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/nomic-ai/gpt4all&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;nomic-ai/gpt4all&lt;/a&gt; (MIT)&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/ollama/ollama&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ollama/ollama&lt;/a&gt; (MIT)&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/oobabooga/text-generation-webui&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;oobabooga/text-generation-webui&lt;/a&gt; (AGPL)&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/a-ghorbani/pocketpal-ai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;PocketPal AI&lt;/a&gt; (MIT)&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/psugihara/FreeChat&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;psugihara/FreeChat&lt;/a&gt; (MIT)&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/ptsochantaris/emeltal&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ptsochantaris/emeltal&lt;/a&gt; (MIT)&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/pythops/tenere&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;pythops/tenere&lt;/a&gt; (AGPL)&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/containers/ramalama&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ramalama&lt;/a&gt; (MIT)&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/semperai/amica&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;semperai/amica&lt;/a&gt; (MIT)&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/withcatai/catai&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;withcatai/catai&lt;/a&gt; (MIT)&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/blackhole89/autopen&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Autopen&lt;/a&gt; (GPL)&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details&gt;
&lt;summary&gt;Tools&lt;/summary&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/akx/ggify&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;akx/ggify&lt;/a&gt; – download PyTorch models from HuggingFace Hub and convert them to GGML&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/akx/ollama-dl&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;akx/ollama-dl&lt;/a&gt; – download models from the Ollama library to be used directly with llama.cpp&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/crashr/gppm&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;crashr/gppm&lt;/a&gt; – launch llama.cpp instances utilizing NVIDIA Tesla P40 or P100 GPUs with reduced idle power consumption&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/gpustack/gguf-parser-go/tree/main/cmd/gguf-parser&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;gpustack/gguf-parser&lt;/a&gt; - review/check the GGUF file and estimate the memory usage&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://marketplace.unity.com/packages/tools/generative-ai/styled-lines-llama-cpp-model-292902&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Styled Lines&lt;/a&gt; (proprietary licensed, async wrapper of inference part for game development in Unity3d with pre-built Mobile and Web platform wrappers and a model example)&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details&gt;
&lt;summary&gt;Infrastructure&lt;/summary&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/intentee/paddler&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Paddler&lt;/a&gt; - Open-source LLMOps platform for hosting and scaling AI in your own infrastructure&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/gpustack/gpustack&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GPUStack&lt;/a&gt; - Manage GPU clusters for running LLMs&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/onicai/llama_cpp_canister&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;llama_cpp_canister&lt;/a&gt; - llama.cpp as a smart contract on the Internet Computer, using WebAssembly&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/mostlygeek/llama-swap&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;llama-swap&lt;/a&gt; - transparent proxy that adds automatic model switching with llama-server&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/kalavai-net/kalavai-client&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Kalavai&lt;/a&gt; - Crowdsource end to end LLM deployment at any scale&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/InftyAI/llmaz&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;llmaz&lt;/a&gt; - ☸️ Easy, advanced inference platform for large language models on Kubernetes.&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;details&gt;
&lt;summary&gt;Games&lt;/summary&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/MorganRO8/Lucys_Labyrinth&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Lucy&amp;rsquo;s Labyrinth&lt;/a&gt; - A simple maze game where agents controlled by an AI model will try to trick you.&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;
&lt;h2 id=&#34;supported-backends&#34;&gt;Supported backends
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Backend&lt;/th&gt;
          &lt;th&gt;Target devices&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;docs/build.md#metal-build&#34; &gt;Metal&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Apple Silicon&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;docs/build.md#blas-build&#34; &gt;BLAS&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;All&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;docs/backend/BLIS.md&#34; &gt;BLIS&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;All&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;docs/backend/SYCL.md&#34; &gt;SYCL&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Intel and Nvidia GPU&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;docs/build.md#musa&#34; &gt;MUSA&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Moore Threads GPU&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;docs/build.md#cuda&#34; &gt;CUDA&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Nvidia GPU&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;docs/build.md#hip&#34; &gt;HIP&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;AMD GPU&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;docs/build.md#vulkan&#34; &gt;Vulkan&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;GPU&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;docs/build.md#cann&#34; &gt;CANN&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Ascend NPU&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;docs/backend/OPENCL.md&#34; &gt;OpenCL&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;Adreno GPU&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;docs/backend/zDNN.md&#34; &gt;IBM zDNN&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;IBM Z &amp;amp; LinuxONE&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;docs/build.md#webgpu&#34; &gt;WebGPU [In Progress]&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;All&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp/tree/master/tools/rpc&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;RPC&lt;/a&gt;&lt;/td&gt;
          &lt;td&gt;All&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;obtaining-and-quantizing-models&#34;&gt;Obtaining and quantizing models
&lt;/h2&gt;&lt;p&gt;The &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Hugging Face&lt;/a&gt; platform hosts a &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/models?library=gguf&amp;amp;sort=trending&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;number of LLMs&lt;/a&gt; compatible with &lt;code&gt;llama.cpp&lt;/code&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/models?library=gguf&amp;amp;sort=trending&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Trending&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/models?sort=trending&amp;amp;search=llama&amp;#43;gguf&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;LLaMA&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can either manually download the GGUF file or directly use any &lt;code&gt;llama.cpp&lt;/code&gt;-compatible models from &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Hugging Face&lt;/a&gt; or other model hosting sites, such as &lt;a class=&#34;link&#34; href=&#34;https://modelscope.cn/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ModelScope&lt;/a&gt;, by using this CLI argument: &lt;code&gt;-hf &amp;lt;user&amp;gt;/&amp;lt;model&amp;gt;[:quant]&lt;/code&gt;. For example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-cli -hf ggml-org/gemma-3-1b-it-GGUF
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;By default, the CLI would download from Hugging Face, you can switch to other options with the environment variable &lt;code&gt;MODEL_ENDPOINT&lt;/code&gt;. For example, you may opt to downloading model checkpoints from ModelScope or other model sharing communities by setting the environment variable, e.g. &lt;code&gt;MODEL_ENDPOINT=https://www.modelscope.cn/&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;After downloading a model, use the CLI tools to run it locally - see below.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;llama.cpp&lt;/code&gt; requires the model to be stored in the &lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/ggml/blob/master/docs/gguf.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GGUF&lt;/a&gt; file format. Models in other data formats can be converted to GGUF using the &lt;code&gt;convert_*.py&lt;/code&gt; Python scripts in this repo.&lt;/p&gt;
&lt;p&gt;The Hugging Face platform provides a variety of online tools for converting, quantizing and hosting models with &lt;code&gt;llama.cpp&lt;/code&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use the &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/spaces/ggml-org/gguf-my-repo&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GGUF-my-repo space&lt;/a&gt; to convert to GGUF format and quantize model weights to smaller sizes&lt;/li&gt;
&lt;li&gt;Use the &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/spaces/ggml-org/gguf-my-lora&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GGUF-my-LoRA space&lt;/a&gt; to convert LoRA adapters to GGUF format (more info: &lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp/discussions/10123&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/ggml-org/llama.cpp/discussions/10123&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Use the &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/spaces/CISCai/gguf-editor&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GGUF-editor space&lt;/a&gt; to edit GGUF meta data in the browser (more info: &lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp/discussions/9268&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/ggml-org/llama.cpp/discussions/9268&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Use the &lt;a class=&#34;link&#34; href=&#34;https://ui.endpoints.huggingface.co/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Inference Endpoints&lt;/a&gt; to directly host &lt;code&gt;llama.cpp&lt;/code&gt; in the cloud (more info: &lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp/discussions/9669&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/ggml-org/llama.cpp/discussions/9669&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To learn more about model quantization, &lt;a class=&#34;link&#34; href=&#34;tools/quantize/README.md&#34; &gt;read this documentation&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;llama-cli&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;tools/main&#34; &gt;&lt;code&gt;llama-cli&lt;/code&gt;&lt;/a&gt;
&lt;/h2&gt;&lt;h4 id=&#34;a-cli-tool-for-accessing-and-experimenting-with-most-of-llamacpps-functionality&#34;&gt;A CLI tool for accessing and experimenting with most of &lt;code&gt;llama.cpp&lt;/code&gt;&amp;rsquo;s functionality.
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;
&lt;details open&gt;
  &lt;summary&gt;Run in conversation mode&lt;/summary&gt;
&lt;p&gt;Models with a built-in chat template will automatically activate conversation mode. If this doesn&amp;rsquo;t occur, you can manually enable it by adding &lt;code&gt;-cnv&lt;/code&gt; and specifying a suitable chat template with &lt;code&gt;--chat-template NAME&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-cli -m model.gguf
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# &amp;gt; hi, who are you?&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Hi there! I&amp;#39;m your helpful assistant! I&amp;#39;m an AI-powered chatbot designed to assist and provide information to users like you. I&amp;#39;m here to help answer your questions, provide guidance, and offer support on a wide range of topics. I&amp;#39;m a friendly and knowledgeable AI, and I&amp;#39;m always happy to help with anything you need. What&amp;#39;s on your mind, and how can I assist you today?&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# &amp;gt; what is 1+1?&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Easy peasy! The answer to 1+1 is... 2!&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;  &lt;/details&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;details&gt;
  &lt;summary&gt;Run in conversation mode with custom chat template&lt;/summary&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# use the &amp;#34;chatml&amp;#34; template (use -h to see the list of supported templates)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-cli -m model.gguf -cnv --chat-template chatml
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# use a custom template&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-cli -m model.gguf -cnv --in-prefix &lt;span class=&#34;s1&#34;&gt;&amp;#39;User: &amp;#39;&lt;/span&gt; --reverse-prompt &lt;span class=&#34;s1&#34;&gt;&amp;#39;User:&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;  &lt;/details&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;details&gt;
  &lt;summary&gt;Run simple text completion&lt;/summary&gt;
&lt;p&gt;To disable conversation mode explicitly, use &lt;code&gt;-no-cnv&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-cli -m model.gguf -p &lt;span class=&#34;s2&#34;&gt;&amp;#34;I believe the meaning of life is&amp;#34;&lt;/span&gt; -n &lt;span class=&#34;m&#34;&gt;128&lt;/span&gt; -no-cnv
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# I believe the meaning of life is to find your own truth and to live in accordance with it. For me, this means being true to myself and following my passions, even if they don&amp;#39;t align with societal expectations. I think that&amp;#39;s what I love about yoga – it&amp;#39;s not just a physical practice, but a spiritual one too. It&amp;#39;s about connecting with yourself, listening to your inner voice, and honoring your own unique journey.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;  &lt;/details&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;details&gt;
  &lt;summary&gt;Constrain the output with a custom grammar&lt;/summary&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-cli -m model.gguf -n &lt;span class=&#34;m&#34;&gt;256&lt;/span&gt; --grammar-file grammars/json.gbnf -p &lt;span class=&#34;s1&#34;&gt;&amp;#39;Request: schedule a call at 8pm; Command:&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# {&amp;#34;appointmentTime&amp;#34;: &amp;#34;8pm&amp;#34;, &amp;#34;appointmentDetails&amp;#34;: &amp;#34;schedule a a call&amp;#34;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;The &lt;a class=&#34;link&#34; href=&#34;grammars/&#34; &gt;grammars/&lt;/a&gt; folder contains a handful of sample grammars. To write your own, check out the &lt;a class=&#34;link&#34; href=&#34;grammars/README.md&#34; &gt;GBNF Guide&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For authoring more complex JSON grammars, check out &lt;a class=&#34;link&#34; href=&#34;https://grammar.intrinsiclabs.ai/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://grammar.intrinsiclabs.ai/&lt;/a&gt;&lt;/p&gt;
  &lt;/details&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;llama-server&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;tools/server&#34; &gt;&lt;code&gt;llama-server&lt;/code&gt;&lt;/a&gt;
&lt;/h2&gt;&lt;h4 id=&#34;a-lightweight-openai-api-compatible-http-server-for-serving-llms&#34;&gt;A lightweight, &lt;a class=&#34;link&#34; href=&#34;https://github.com/openai/openai-openapi&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenAI API&lt;/a&gt; compatible, HTTP server for serving LLMs.
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;
&lt;details open&gt;
  &lt;summary&gt;Start a local HTTP server with default configuration on port 8080&lt;/summary&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-server -m model.gguf --port &lt;span class=&#34;m&#34;&gt;8080&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Basic web UI can be accessed via browser: http://localhost:8080&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Chat completion endpoint: http://localhost:8080/v1/chat/completions&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;  &lt;/details&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;details&gt;
  &lt;summary&gt;Support multiple-users and parallel decoding&lt;/summary&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# up to 4 concurrent requests, each with 4096 max context&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-server -m model.gguf -c &lt;span class=&#34;m&#34;&gt;16384&lt;/span&gt; -np &lt;span class=&#34;m&#34;&gt;4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;  &lt;/details&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;details&gt;
  &lt;summary&gt;Enable speculative decoding&lt;/summary&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# the draft.gguf model should be a small variant of the target model.gguf&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-server -m model.gguf -md draft.gguf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;  &lt;/details&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;details&gt;
  &lt;summary&gt;Serve an embedding model&lt;/summary&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# use the /embedding endpoint&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-server -m model.gguf --embedding --pooling cls -ub &lt;span class=&#34;m&#34;&gt;8192&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;  &lt;/details&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;details&gt;
  &lt;summary&gt;Serve a reranking model&lt;/summary&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# use the /reranking endpoint&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-server -m model.gguf --reranking
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;  &lt;/details&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;details&gt;
  &lt;summary&gt;Constrain all outputs with a grammar&lt;/summary&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# custom grammar&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-server -m model.gguf --grammar-file grammar.gbnf
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# JSON&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-server -m model.gguf --grammar-file grammars/json.gbnf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;  &lt;/details&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;llama-perplexity&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;tools/perplexity&#34; &gt;&lt;code&gt;llama-perplexity&lt;/code&gt;&lt;/a&gt;
&lt;/h2&gt;&lt;h4 id=&#34;a-tool-for-measuring-the-perplexity--and-other-quality-metrics-of-a-model-over-a-given-text&#34;&gt;A tool for measuring the &lt;a class=&#34;link&#34; href=&#34;tools/perplexity/README.md&#34; &gt;perplexity&lt;/a&gt; &lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; (and other quality metrics) of a model over a given text.
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;
&lt;details open&gt;
  &lt;summary&gt;Measure the perplexity over a text file&lt;/summary&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-perplexity -m model.gguf -f file.txt
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# [1]15.2701,[2]5.4007,[3]5.3073,[4]6.2965,[5]5.8940,[6]5.6096,[7]5.7942,[8]4.9297, ...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Final estimate: PPL = 5.4007 +/- 0.67339&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;  &lt;/details&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;details&gt;
  &lt;summary&gt;Measure KL divergence&lt;/summary&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# TODO&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;  &lt;/details&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;llama-bench&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;tools/llama-bench&#34; &gt;&lt;code&gt;llama-bench&lt;/code&gt;&lt;/a&gt;
&lt;/h2&gt;&lt;h4 id=&#34;benchmark-the-performance-of-the-inference-for-various-parameters&#34;&gt;Benchmark the performance of the inference for various parameters.
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;
&lt;details open&gt;
  &lt;summary&gt;Run default benchmark&lt;/summary&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-bench -m model.gguf
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Output:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# | model               |       size |     params | backend    | threads |          test |                  t/s |&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# | ------------------- | ---------: | ---------: | ---------- | ------: | ------------: | -------------------: |&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# | qwen2 1.5B Q4_0     | 885.97 MiB |     1.54 B | Metal,BLAS |      16 |         pp512 |      5765.41 ± 20.55 |&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# | qwen2 1.5B Q4_0     | 885.97 MiB |     1.54 B | Metal,BLAS |      16 |         tg128 |        197.71 ± 0.81 |&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# build: 3e0ba0e60 (4229)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;  &lt;/details&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;llama-run&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;tools/run&#34; &gt;&lt;code&gt;llama-run&lt;/code&gt;&lt;/a&gt;
&lt;/h2&gt;&lt;h4 id=&#34;a-comprehensive-example-for-running-llamacpp-models-useful-for-inferencing-used-with-ramalama-&#34;&gt;A comprehensive example for running &lt;code&gt;llama.cpp&lt;/code&gt; models. Useful for inferencing. Used with RamaLama &lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;.
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;
&lt;details&gt;
  &lt;summary&gt;Run a model with a specific prompt (by default it&#39;s pulled from Ollama registry)&lt;/summary&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-run granite-code
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;  &lt;/details&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;llama-simple&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;examples/simple&#34; &gt;&lt;code&gt;llama-simple&lt;/code&gt;&lt;/a&gt;
&lt;/h2&gt;&lt;h4 id=&#34;a-minimal-example-for-implementing-apps-with-llamacpp-useful-for-developers&#34;&gt;A minimal example for implementing apps with &lt;code&gt;llama.cpp&lt;/code&gt;. Useful for developers.
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;
&lt;details&gt;
  &lt;summary&gt;Basic text completion&lt;/summary&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;llama-simple -m model.gguf
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Hello my name is Kaitlyn and I am a 16 year old girl. I am a junior in high school and I am currently taking a class called &amp;#34;The Art of&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;  &lt;/details&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;contributing&#34;&gt;Contributing
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Contributors can open PRs&lt;/li&gt;
&lt;li&gt;Collaborators will be invited based on contributions&lt;/li&gt;
&lt;li&gt;Maintainers can push to branches in the &lt;code&gt;llama.cpp&lt;/code&gt; repo and merge PRs into the &lt;code&gt;master&lt;/code&gt; branch&lt;/li&gt;
&lt;li&gt;Any help with managing issues, PRs and projects is very appreciated!&lt;/li&gt;
&lt;li&gt;See &lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp/issues?q=is%3Aissue&amp;#43;is%3Aopen&amp;#43;label%3A%22good&amp;#43;first&amp;#43;issue%22&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;good first issues&lt;/a&gt; for tasks suitable for first contributions&lt;/li&gt;
&lt;li&gt;Read the &lt;a class=&#34;link&#34; href=&#34;CONTRIBUTING.md&#34; &gt;CONTRIBUTING.md&lt;/a&gt; for more information&lt;/li&gt;
&lt;li&gt;Make sure to read this: &lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp/discussions/205&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Inference at the edge&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;A bit of backstory for those who are interested: &lt;a class=&#34;link&#34; href=&#34;https://changelog.com/podcast/532&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Changelog podcast&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;other-documentation&#34;&gt;Other documentation
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;tools/main/README.md&#34; &gt;main (cli)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;tools/server/README.md&#34; &gt;server&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;grammars/README.md&#34; &gt;GBNF grammars&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;development-documentation&#34;&gt;Development documentation
&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;docs/build.md&#34; &gt;How to build&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;docs/docker.md&#34; &gt;Running on Docker&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;docs/android.md&#34; &gt;Build on Android&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;docs/development/token_generation_performance_tips.md&#34; &gt;Performance troubleshooting&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp/wiki/GGML-Tips-&amp;amp;-Tricks&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GGML tips &amp;amp; tricks&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;seminal-papers-and-background-on-the-models&#34;&gt;Seminal papers and background on the models
&lt;/h4&gt;&lt;p&gt;If your issue is with model generation quality, then please at least scan the following links and papers to understand the limitations of LLaMA models. This is especially important when choosing an appropriate model size and appreciating both the significant and subtle differences between LLaMA models and ChatGPT:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;LLaMA:
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://ai.facebook.com/blog/large-language-model-llama-meta-ai/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Introducing LLaMA: A foundational, 65-billion-parameter large language model&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://arxiv.org/abs/2302.13971&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;LLaMA: Open and Efficient Foundation Language Models&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;GPT-3
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://arxiv.org/abs/2005.14165&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Language Models are Few-Shot Learners&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;GPT-3.5 / InstructGPT / ChatGPT:
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://openai.com/research/instruction-following&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Aligning language models to follow instructions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://arxiv.org/abs/2203.02155&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Training language models to follow instructions with human feedback&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;xcframework&#34;&gt;XCFramework
&lt;/h2&gt;&lt;p&gt;The XCFramework is a precompiled version of the library for iOS, visionOS, tvOS,
and macOS. It can be used in Swift projects without the need to compile the
library from source. For example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-swift&#34; data-lang=&#34;swift&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// swift-tools-version: 5.10&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// The swift-tools-version declares the minimum version of Swift required to build this package.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;PackageDescription&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;package&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;Package&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;MyLlamaPackage&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;targets&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;executableTarget&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;MyLlamaPackage&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;dependencies&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                &lt;span class=&#34;s&#34;&gt;&amp;#34;LlamaFramework&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;p&#34;&gt;]),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;binaryTarget&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;LlamaFramework&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;url&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;https://github.com/ggml-org/llama.cpp/releases/download/b5046/llama-b5046-xcframework.zip&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;n&#34;&gt;checksum&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;&amp;#34;c19be78b5f00d8d29a25da41042cb7afa094cbf6280a225abe614b03b20029ab&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;The above example is using an intermediate build &lt;code&gt;b5046&lt;/code&gt; of the library. This can be modified
to use a different version by changing the URL and checksum.&lt;/p&gt;
&lt;h2 id=&#34;completions&#34;&gt;Completions
&lt;/h2&gt;&lt;p&gt;Command-line completion is available for some environments.&lt;/p&gt;
&lt;h4 id=&#34;bash-completion&#34;&gt;Bash Completion
&lt;/h4&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ build/bin/llama-cli --completion-bash &amp;gt; ~/.llama-completion.bash
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ &lt;span class=&#34;nb&#34;&gt;source&lt;/span&gt; ~/.llama-completion.bash
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Optionally this can be added to your &lt;code&gt;.bashrc&lt;/code&gt; or &lt;code&gt;.bash_profile&lt;/code&gt; to load it
automatically. For example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-console&#34; data-lang=&#34;console&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gp&#34;&gt;$&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;source ~/.llama-completion.bash&amp;#34;&lt;/span&gt; &amp;gt;&amp;gt; ~/.bashrc
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;dependencies&#34;&gt;Dependencies
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/yhirose/cpp-httplib&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;yhirose/cpp-httplib&lt;/a&gt; - Single-header HTTP server, used by &lt;code&gt;llama-server&lt;/code&gt; - MIT license&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/nothings/stb&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;stb-image&lt;/a&gt; - Single-header image format decoder, used by multimodal subsystem - Public domain&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/nlohmann/json&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;nlohmann/json&lt;/a&gt; - Single-header JSON library, used by various tools/examples - MIT License&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/google/minja&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;minja&lt;/a&gt; - Minimal Jinja parser in C++, used by various tools/examples - MIT License&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;./tools/run/linenoise.cpp/linenoise.cpp&#34; &gt;linenoise.cpp&lt;/a&gt; - C++ library that provides readline-like line editing capabilities, used by &lt;code&gt;llama-run&lt;/code&gt; - BSD 2-Clause License&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://curl.se/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;curl&lt;/a&gt; - Client-side URL transfer library, used by various tools/examples - &lt;a class=&#34;link&#34; href=&#34;https://curl.se/docs/copyright.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CURL License&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/mackron/miniaudio&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;miniaudio.h&lt;/a&gt; - Single-header audio format decoder, used by multimodal subsystem - Public domain&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/docs/transformers/perplexity&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://huggingface.co/docs/transformers/perplexity&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:2&#34;&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/containers/ramalama&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;RamaLama&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
        </item>
        <item>
        <title>audiblez</title>
        <link>https://producthunt.programnotes.cn/en/p/audiblez/</link>
        <pubDate>Fri, 29 Aug 2025 15:27:48 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/audiblez/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1688870559348-bfbad318db1f?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NTY0NTI0MTZ8&amp;ixlib=rb-4.1.0" alt="Featured image of post audiblez" /&gt;&lt;h1 id=&#34;santinicaudiblez&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/santinic/audiblez&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;santinic/audiblez&lt;/a&gt;
&lt;/h1&gt;&lt;h1 id=&#34;audiblez-generate--audiobooks-from-e-books&#34;&gt;Audiblez: Generate  audiobooks from e-books
&lt;/h1&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/santinic/audiblez/actions/workflows/pip-install.yaml&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://github.com/santinic/audiblez/actions/workflows/pip-install.yaml/badge.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Installing via pip and running&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://github.com/santinic/audiblez/actions/workflows/git-clone-and-run.yml&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://github.com/santinic/audiblez/actions/workflows/git-clone-and-run.yml/badge.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Git clone and run&#34;
	
	
&gt;&lt;/a&gt;
&lt;img src=&#34;https://img.shields.io/pypi/pyversions/audiblez&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;PyPI - Python Version&#34;
	
	
&gt;
&lt;img src=&#34;https://img.shields.io/pypi/v/audiblez&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;PyPI - Version&#34;
	
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;v4-now-with-graphical-interface-cuda-support-and-many-languages&#34;&gt;v4 Now with Graphical interface, CUDA support, and many languages!
&lt;/h3&gt;&lt;p&gt;Audiblez generates &lt;code&gt;.m4b&lt;/code&gt; audiobooks from regular &lt;code&gt;.epub&lt;/code&gt; e-books,
using Kokoro&amp;rsquo;s high-quality speech synthesis.&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/hexgrad/Kokoro-82M&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Kokoro-82M&lt;/a&gt; is a recently published text-to-speech model with just 82M params and very natural sounding output.
It&amp;rsquo;s released under Apache licence and it was trained on &amp;lt; 100 hours of audio.
It currently supports these languages: 🇺🇸 🇬🇧 🇪🇸 🇫🇷 🇮🇳 🇮🇹 🇯🇵 🇧🇷 🇨🇳&lt;/p&gt;
&lt;p&gt;On a Google Colab&amp;rsquo;s T4 GPU via Cuda, &lt;strong&gt;it takes about 5 minutes to convert &amp;ldquo;Animal&amp;rsquo;s Farm&amp;rdquo; by Orwell&lt;/strong&gt; (which is about 160,000 characters) to audiobook, at a rate of about 600 characters per second.&lt;/p&gt;
&lt;p&gt;On my M2 MacBook Pro, on CPU, it takes about 1 hour, at a rate of about 60 characters per second.&lt;/p&gt;
&lt;h2 id=&#34;how-to-install-the-command-line-tool&#34;&gt;How to install the Command Line tool
&lt;/h2&gt;&lt;p&gt;If you have Python 3 on your computer, you can install it with pip.
You also need &lt;code&gt;espeak-ng&lt;/code&gt; and &lt;code&gt;ffmpeg&lt;/code&gt; installed on your machine:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install ffmpeg espeak-ng                   &lt;span class=&#34;c1&#34;&gt;# on Ubuntu/Debian 🐧&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install audiblez
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;brew install ffmpeg espeak-ng                       &lt;span class=&#34;c1&#34;&gt;# on Mac 🍏&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install audiblez
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Then you can convert an .epub directly with:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;audiblez book.epub -v af_sky
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;It will first create a bunch of &lt;code&gt;book_chapter_1.wav&lt;/code&gt;, &lt;code&gt;book_chapter_2.wav&lt;/code&gt;, etc. files in the same directory,
and at the end it will produce a &lt;code&gt;book.m4b&lt;/code&gt; file with the whole book you can listen with VLC or any
audiobook player.
It will only produce the &lt;code&gt;.m4b&lt;/code&gt; file if you have &lt;code&gt;ffmpeg&lt;/code&gt; installed on your machine.&lt;/p&gt;
&lt;h2 id=&#34;how-to-run-the-gui&#34;&gt;How to run the GUI
&lt;/h2&gt;&lt;p&gt;The GUI is a simple graphical interface to use audiblez.
You need some extra dependencies to run the GUI:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install ffmpeg espeak-ng 
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install libgtk-3-dev        # just for Ubuntu/Debian 🐧, Windows/Mac don&amp;#39;t need this
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install audiblez pillow wxpython
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Then you can run the GUI with:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;audiblez-ui
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;how-to-run-on-windows&#34;&gt;How to run on Windows
&lt;/h2&gt;&lt;p&gt;After many trials, on Windows we recommend to install audiblez in a Python venv:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Open a Windows terminal&lt;/li&gt;
&lt;li&gt;Create anew folder: &lt;code&gt;mkdir audiblez&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Enter the folder: &lt;code&gt;cd audiblez&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Create a venv: &lt;code&gt;python -m venv venv&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Activate the venv: &lt;code&gt;.\venv\Scripts\Activate.ps1&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Install the dependencies: &lt;code&gt;pip install audiblez pillow wxpython&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Now you can run &lt;code&gt;audiblez&lt;/code&gt; or &lt;code&gt;audiblez-ui&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;For Cuda support, you need to install Pytorch accordingly: &lt;a class=&#34;link&#34; href=&#34;https://pytorch.org/get-started/locally/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://pytorch.org/get-started/locally/&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;speed&#34;&gt;Speed
&lt;/h2&gt;&lt;p&gt;By default the audio is generated using a normal speed, but you can make it up to twice slower or faster by specifying a speed argument between 0.5 to 2.0:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;audiblez book.epub -v af_sky -s 1.5
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;supported-voices&#34;&gt;Supported Voices
&lt;/h2&gt;&lt;p&gt;Use &lt;code&gt;-v&lt;/code&gt; option to specify the voice to use. Available voices are listed here.
The first letter is the language code and the second is the gender of the speaker e.g. &lt;code&gt;im_nicola&lt;/code&gt; is an italian male voice.&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://claudio.uk/posts/audiblez-v4.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;For hearing samples of Kokoro-82M voices, go here&lt;/a&gt;&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Language&lt;/th&gt;
          &lt;th&gt;Voices&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;🇺🇸 American English&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;af_alloy&lt;/code&gt;, &lt;code&gt;af_aoede&lt;/code&gt;, &lt;code&gt;af_bella&lt;/code&gt;, &lt;code&gt;af_heart&lt;/code&gt;, &lt;code&gt;af_jessica&lt;/code&gt;, &lt;code&gt;af_kore&lt;/code&gt;, &lt;code&gt;af_nicole&lt;/code&gt;, &lt;code&gt;af_nova&lt;/code&gt;, &lt;code&gt;af_river&lt;/code&gt;, &lt;code&gt;af_sarah&lt;/code&gt;, &lt;code&gt;af_sky&lt;/code&gt;, &lt;code&gt;am_adam&lt;/code&gt;, &lt;code&gt;am_echo&lt;/code&gt;, &lt;code&gt;am_eric&lt;/code&gt;, &lt;code&gt;am_fenrir&lt;/code&gt;, &lt;code&gt;am_liam&lt;/code&gt;, &lt;code&gt;am_michael&lt;/code&gt;, &lt;code&gt;am_onyx&lt;/code&gt;, &lt;code&gt;am_puck&lt;/code&gt;, &lt;code&gt;am_santa&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;🇬🇧 British English&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;bf_alice&lt;/code&gt;, &lt;code&gt;bf_emma&lt;/code&gt;, &lt;code&gt;bf_isabella&lt;/code&gt;, &lt;code&gt;bf_lily&lt;/code&gt;, &lt;code&gt;bm_daniel&lt;/code&gt;, &lt;code&gt;bm_fable&lt;/code&gt;, &lt;code&gt;bm_george&lt;/code&gt;, &lt;code&gt;bm_lewis&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;🇪🇸 Spanish&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;ef_dora&lt;/code&gt;, &lt;code&gt;em_alex&lt;/code&gt;, &lt;code&gt;em_santa&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;🇫🇷 French&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;ff_siwis&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;🇮🇳 Hindi&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;hf_alpha&lt;/code&gt;, &lt;code&gt;hf_beta&lt;/code&gt;, &lt;code&gt;hm_omega&lt;/code&gt;, &lt;code&gt;hm_psi&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;🇮🇹 Italian&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;if_sara&lt;/code&gt;, &lt;code&gt;im_nicola&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;🇯🇵 Japanese&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;jf_alpha&lt;/code&gt;, &lt;code&gt;jf_gongitsune&lt;/code&gt;, &lt;code&gt;jf_nezumi&lt;/code&gt;, &lt;code&gt;jf_tebukuro&lt;/code&gt;, &lt;code&gt;jm_kumo&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;🇧🇷 Brazilian Portuguese&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;pf_dora&lt;/code&gt;, &lt;code&gt;pm_alex&lt;/code&gt;, &lt;code&gt;pm_santa&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;🇨🇳 Mandarin Chinese&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;zf_xiaobei&lt;/code&gt;, &lt;code&gt;zf_xiaoni&lt;/code&gt;, &lt;code&gt;zf_xiaoxiao&lt;/code&gt;, &lt;code&gt;zf_xiaoyi&lt;/code&gt;, &lt;code&gt;zm_yunjian&lt;/code&gt;, &lt;code&gt;zm_yunxi&lt;/code&gt;, &lt;code&gt;zm_yunxia&lt;/code&gt;, &lt;code&gt;zm_yunyang&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;For more detaila about voice quality, check this document: &lt;a class=&#34;link&#34; href=&#34;https://huggingface.co/hexgrad/Kokoro-82M/blob/main/VOICES.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Kokoro-82M voices&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;how-to-run-on-gpu&#34;&gt;How to run on GPU
&lt;/h2&gt;&lt;p&gt;By default, audiblez runs on CPU. If you pass the option &lt;code&gt;--cuda&lt;/code&gt; it will try to use the Cuda device via Torch.&lt;/p&gt;
&lt;p&gt;Check out this example: &lt;a class=&#34;link&#34; href=&#34;https://colab.research.google.com/drive/164PQLowogprWQpRjKk33e-8IORAvqXKI?usp=sharing]&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Audiblez running on a Google Colab Notebook with Cuda &lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We don&amp;rsquo;t currently support Apple Silicon, as there is not yet a Kokoro implementation in MLX. As soon as it will be available, we will support it.&lt;/p&gt;
&lt;h2 id=&#34;manually-pick-chapters-to-convert&#34;&gt;Manually pick chapters to convert
&lt;/h2&gt;&lt;p&gt;Sometimes you want to manually select which chapters/sections in the e-book to read out loud.
To do so, you can use &lt;code&gt;--pick&lt;/code&gt; to interactively choose the chapters to convert (without running the GUI).&lt;/p&gt;
&lt;h2 id=&#34;help-page&#34;&gt;Help page
&lt;/h2&gt;&lt;p&gt;For all the options available, you can check the help page &lt;code&gt;audiblez --help&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;usage: audiblez [-h] [-v VOICE] [-p] [-s SPEED] [-c] [-o FOLDER] epub_file_path
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;positional arguments:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  epub_file_path        Path to the epub file
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;options:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -h, --help            show this help message and exit
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -v VOICE, --voice VOICE
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        Choose narrating voice: a, b, e, f, h, i, j, p, z
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -p, --pick            Interactively select which chapters to read in the audiobook
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -s SPEED, --speed SPEED
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        Set speed from 0.5 to 2.0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -c, --cuda            Use GPU via Cuda in Torch if available
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -o FOLDER, --output FOLDER
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                        Output folder for the audiobook and temporary files
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;example:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  audiblez book.epub -l en-us -v af_sky
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;to use the GUI, run:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  audiblez-ui
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;author&#34;&gt;Author
&lt;/h2&gt;&lt;p&gt;by &lt;a class=&#34;link&#34; href=&#34;https://claudio.uk&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Claudio Santini&lt;/a&gt; in 2025, distributed under MIT licence.&lt;/p&gt;
&lt;p&gt;Related Article: &lt;a class=&#34;link&#34; href=&#34;https://claudio.uk/posts/audiblez-v4.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Audiblez v4: Generate Audiobooks from E-books&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        <item>
        <title>cutlass</title>
        <link>https://producthunt.programnotes.cn/en/p/cutlass/</link>
        <pubDate>Wed, 16 Jul 2025 15:32:12 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/cutlass/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1622441083964-daabbe5ef047?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NTI2NTExMDJ8&amp;ixlib=rb-4.1.0" alt="Featured image of post cutlass" /&gt;&lt;h1 id=&#34;nvidiacutlass&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/NVIDIA/cutlass&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;NVIDIA/cutlass&lt;/a&gt;
&lt;/h1&gt;&lt;h1 id=&#34;overview&#34;&gt;Overview
&lt;/h1&gt;&lt;h1 id=&#34;cutlass-410&#34;&gt;CUTLASS 4.1.0
&lt;/h1&gt;&lt;p&gt;&lt;em&gt;CUTLASS 4.1.0 - July 2025&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;CUTLASS is a collection of abstractions for implementing high-performance matrix-matrix multiplication (GEMM)
and related computations at all levels and scales within CUDA. It incorporates strategies for
hierarchical decomposition and data movement. CUTLASS decomposes these &amp;ldquo;moving parts&amp;rdquo; into reusable, modular
software components and abstractions.&lt;/p&gt;
&lt;p&gt;Primitives for different levels of a conceptual parallelization hierarchy can be specialized and tuned
via custom tiling sizes, data types, and other algorithmic policy. The resulting flexibility simplifies
their use as building blocks within custom kernels and applications.&lt;/p&gt;
&lt;p&gt;CUTLASS has been providing CUDA C++ template abstractions for high-performance linear algebra since 2017 and
these abstractions provide extensive support for a wide range of computations including
mixed-precision computations, specialized data-movement (async copy) and
multiply-accumulate abstractions for FP64, FP32, TF32, FP16, BF16,
&lt;a class=&#34;link&#34; href=&#34;https://github.com/NVIDIA/cutlass/tree/main/examples/27_ampere_3xtf32_fast_accurate_tensorop_gemm&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;FP32 emulation via tensor core instruction&lt;/a&gt;,
8b floating point types (e5m2 and e4m3),
block scaled data types (NVIDIA NVFP4 and OCP standard MXFP4, MXFP6, MXFP8),
narrow integer types (4 and 8b signed and unsigned integers),
and binary 1b data types (where architectures allow for the
native support of such data types) across NVIDIA&amp;rsquo;s Volta, Turing, Ampere, Ada, Hopper, and Blackwell architectures.&lt;/p&gt;
&lt;p&gt;To this rich ecosystem of C++ based kernel programming abstractions, CUTLASS 4 adds CUTLASS DSLs. These are Python native interfaces for writing high-performance CUDA kernels based on core CUTLASS and CuTe concepts without any performance compromises. This allows for a much smoother learning curve, orders of magnitude faster compile times, native integration with DL frameworks without writing glue code, and much more intuitive metaprogramming that does not require deep C++ expertise.&lt;/p&gt;
&lt;p&gt;Overall we envision CUTLASS DSLs as a family of domain-specific languages (DSLs). With the release of 4.0, we are releasing the first of these in CuTe DSL. This is a low level programming model that is fully consistent with CuTe C++ abstractions — exposing core concepts such as layouts, tensors, hardware atoms, and full control over the hardware thread and data hierarchy.&lt;/p&gt;
&lt;p&gt;CuTe DSL demonstrates optimal matrix multiply and other linear algebra operations
targeting the programmable, high-throughput &lt;em&gt;Tensor Cores&lt;/em&gt; implemented by
NVIDIA&amp;rsquo;s Ampere, Hopper, and Blackwell architectures.&lt;/p&gt;
&lt;p&gt;We believe it will become an indispensable tool for students, researchers, and performance
engineers alike — flattening the learning curve of GPU programming, rapidly prototyping kernel
designs, and bringing optimized solutions into production.&lt;/p&gt;
&lt;p&gt;CuTe DSL is currently in public beta and will graduate out of beta by end of summer 2025.&lt;/p&gt;
&lt;p&gt;To get started quickly - please refer :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.nvidia.com/cutlass/media/docs/cpp/quickstart.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CUTLASS C++ Quick Start Guide&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.nvidia.com/cutlass/media/docs/pythonDSL/quick_start.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CuTe DSL Quick Start Guide&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;whats-new-in-cutlass-41&#34;&gt;What&amp;rsquo;s New in CUTLASS 4.1
&lt;/h1&gt;&lt;h2 id=&#34;cute-dsl&#34;&gt;CuTe DSL
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;More examples demonstrating how to use CuTe DSL to write peak-performance kernels
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/NVIDIA/cutlass/tree/main/examples/python/CuTeDSL/blackwell/mamba2_ssd/mamba2_ssd.py&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Blackwell Mamba2 SSD&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;API updates
&lt;ul&gt;
&lt;li&gt;for loop
&lt;ul&gt;
&lt;li&gt;Python built-in &lt;code&gt;range&lt;/code&gt; now always generates IR and executes at runtime&lt;/li&gt;
&lt;li&gt;&lt;code&gt;cutlass.range&lt;/code&gt; is advanced &lt;code&gt;range&lt;/code&gt; with IR level unrolling and pipelining control&lt;/li&gt;
&lt;li&gt;Deprecated &lt;code&gt;cutlass.range_dynamic&lt;/code&gt;, please replace with &lt;code&gt;range&lt;/code&gt; or &lt;code&gt;cutlass.range&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Experimental&lt;/strong&gt; Added &lt;code&gt;pipelining&lt;/code&gt; control for compiler generated software pipeline code&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;while/if
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;while&lt;/code&gt;/&lt;code&gt;if&lt;/code&gt; now by default generates IR and executes at runtime unless &lt;code&gt;cutlass.const_expr&lt;/code&gt; is specified for the predicate&lt;/li&gt;
&lt;li&gt;Deprecated &lt;code&gt;cutlass.dynamic_expr&lt;/code&gt;, please remove it&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Rename mbarrier functions to reduce ambiguity&lt;/li&gt;
&lt;li&gt;Modify SyncObject API (&lt;code&gt;MbarrierArray&lt;/code&gt;, &lt;code&gt;NamedBarrier&lt;/code&gt;, &lt;code&gt;TmaStoreFence&lt;/code&gt;) to match &lt;code&gt;std::barrier&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Change pipeline &lt;code&gt;create&lt;/code&gt; function to take only keyword arguments, and make &lt;code&gt;barrier_storage&lt;/code&gt; optional.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;cutlass-c&#34;&gt;CUTLASS C++
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Further enhance Blackwell SM100 Attention kernels in &lt;a class=&#34;link&#34; href=&#34;https://github.com/NVIDIA/cutlass/tree/main/examples/77_blackwell_fmha/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;example 77&lt;/a&gt;.
&lt;ul&gt;
&lt;li&gt;Add variable sequence length support for FMHA Backward kernel.&lt;/li&gt;
&lt;li&gt;Add varlen test support to Backward runner.&lt;/li&gt;
&lt;li&gt;Codes support empty batch sequences.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Replace &lt;code&gt;subbyte_iterator&lt;/code&gt; with &lt;code&gt;cute::recast_ptr&lt;/code&gt; when constructing logical iterators/arrays.&lt;/li&gt;
&lt;li&gt;CuTe changes:
&lt;ul&gt;
&lt;li&gt;Rewrite ArithTuple and ScaledBasis for robustness and clarity.&lt;/li&gt;
&lt;li&gt;Remove buggy and kludgy &lt;code&gt;get_layoutA|B|C_MN&lt;/code&gt; and friends from Atoms/TiledX.&lt;/li&gt;
&lt;li&gt;Factor out &lt;code&gt;print_latex&lt;/code&gt; and friends and rewrite.&lt;/li&gt;
&lt;li&gt;Factor out &lt;code&gt;print_svg&lt;/code&gt; and friends and rewrite.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Support Blackwell SM100 SIMT FFMA2 kernels.&lt;/li&gt;
&lt;li&gt;Support residual add for implicit gemm kernels.&lt;/li&gt;
&lt;li&gt;Various fixes for CUTLASS C++ Python interface&amp;rsquo;s EVT tracer:
&lt;ul&gt;
&lt;li&gt;Add verifier for sm90 to report the invalid input.&lt;/li&gt;
&lt;li&gt;When adding an edge to the graph, if the edge already exists, add an identity compute node to avoid having multiple parallel edges.&lt;/li&gt;
&lt;li&gt;Register operations of tanh, sigmoid, exp, gelu to the python ast frontend.&lt;/li&gt;
&lt;li&gt;Replace the NotImplemented Error by packing all nodes into a single topological visitor node as a fallback.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Fix profiler bugs in exhaustive perf search.
&lt;ul&gt;
&lt;li&gt;Fix incorrect cluster shape output issue when doing exhaustive search.&lt;/li&gt;
&lt;li&gt;Fix a bug in profiler grouped GEMM for setting tile scheduler swizzles, cluster shapes, and raster orders.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Note: CUTLASS 4.x builds are known to be down on Windows platforms for all CUDA toolkits.
CUTLASS team is working on a fix.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;See the &lt;a class=&#34;link&#34; href=&#34;https://docs.nvidia.com/cutlass/CHANGELOG.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CHANGELOG&lt;/a&gt; for details of all past releases and updates.&lt;/strong&gt;&lt;/p&gt;
&lt;h1 id=&#34;performance&#34;&gt;Performance
&lt;/h1&gt;&lt;p&gt;CUTLASS primitives are very efficient.  When used to construct device-wide GEMM kernels,
they exhibit nearly optimal utilization of peak theoretical throughput. The figure below
shows CUTLASS 3.8&amp;rsquo;s performance as a % of theoretical peak utilization
on various input and output data types when run on NVIDIA Blackwell SM100 architecture GPU.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://producthunt.programnotes.cn/media/images/cutlass-3.8-blackwell-gemm-peak-performance.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;ALT&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;The two figures below show the continual CUTLASS performance improvements
on an &lt;a class=&#34;link&#34; href=&#34;https://www.nvidia.com/en-us/data-center/h100/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;NVIDIA H100&lt;/a&gt; (NVIDIA Hopper architecture) since
CUTLASS 3.1.
CUTLASS 3.5.1 was compiled with the &lt;a class=&#34;link&#34; href=&#34;https://developer.nvidia.com/cuda-downloads&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CUDA 12.5u1 Toolkit&lt;/a&gt;.
Tensor Core operations are implemented using CUDA&amp;rsquo;s
&lt;a class=&#34;link&#34; href=&#34;https://docs.nvidia.com/cuda/parallel-thread-execution/index.html#warp-level-matrix-instructions-mma&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;mma&lt;/a&gt; and
&lt;a class=&#34;link&#34; href=&#34;https://docs.nvidia.com/cuda/parallel-thread-execution/index.html#asynchronous-warpgroup-level-matrix-instructions&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;wgmma&lt;/a&gt; instructions.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://producthunt.programnotes.cn/media/images/cutlass-3.5.1-gemm-peak-performance.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;ALT&#34;
	
	
&gt;
&lt;img src=&#34;https://producthunt.programnotes.cn/media/images/cutlass-3.5.1-gemm-peak-performance-fp8.png&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;ALT&#34;
	
	
&gt;&lt;/p&gt;
&lt;h1 id=&#34;cute&#34;&gt;CuTe
&lt;/h1&gt;&lt;p&gt;CUTLASS 3.0 introduced a new core library, CuTe, to describe and manipulate tensors of threads and data.
CuTe is a collection of C++ CUDA template abstractions for
defining and operating on hierarchically multidimensional layouts of threads and data.
CuTe provides &lt;code&gt;Layout&lt;/code&gt; and &lt;code&gt;Tensor&lt;/code&gt; objects that compactly package the type,
shape, memory space, and layout of data, while performing the complicated indexing for the user.
This lets programmers focus on the logical descriptions of their algorithms while
CuTe does the mechanical bookkeeping for them. With these tools, we can quickly design,
implement, and modify all dense linear algebra operations.&lt;/p&gt;
&lt;p&gt;The core abstractions of CuTe are hierarchically multidimensional layouts
which can be composed with data arrays to represent tensors.
The representation of layouts is powerful enough to represent nearly
everything we need to implement efficient dense linear algebra.
Layouts can also be combined and manipulated via functional composition, on which we build a large set of common operations such as tiling and partitioning.&lt;/p&gt;
&lt;p&gt;CUTLASS 3.0 and beyond adopts CuTe throughout the GEMM hierarchy in its templates.
This greatly simplifies the design and improves code composability and readability.
More documentation specific to CuTe can be found in its
&lt;a class=&#34;link&#34; href=&#34;https://docs.nvidia.com/cutlass/media/docs/cpp/cute/00_quickstart.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;dedicated documentation directory&lt;/a&gt;.&lt;/p&gt;
&lt;h1 id=&#34;compatibility&#34;&gt;Compatibility
&lt;/h1&gt;&lt;p&gt;Minimum requirements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Architecture: Volta (compute capability 7.0)&lt;/li&gt;
&lt;li&gt;Compiler: Must support at least C++17&lt;/li&gt;
&lt;li&gt;CUDA Toolkit version: 11.4&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;CUTLASS requires a C++17 host compiler and
performs best when built with the &lt;a class=&#34;link&#34; href=&#34;https://developer.nvidia.com/cuda-downloads&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;strong&gt;CUDA 12.8 Toolkit&lt;/strong&gt;&lt;/a&gt;.
It is also compatible with CUDA 11.4, CUDA 11.5, CUDA 11.6, CUDA 11.7, CUDA 11.8, and all other CUDA 12.x versions.&lt;/p&gt;
&lt;h2 id=&#34;operating-systems&#34;&gt;Operating Systems
&lt;/h2&gt;&lt;p&gt;We have tested the following environments.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;&lt;strong&gt;Operating System&lt;/strong&gt;&lt;/th&gt;
          &lt;th&gt;&lt;strong&gt;Compiler&lt;/strong&gt;&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Ubuntu 18.04&lt;/td&gt;
          &lt;td&gt;GCC 7.5.0&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Ubuntu 20.04&lt;/td&gt;
          &lt;td&gt;GCC 10.3.0&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Ubuntu 22.04&lt;/td&gt;
          &lt;td&gt;GCC 11.2.0&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Note: GCC 8.5.0 has known regressions regarding fold expressions and overloaded operators. Using GCC 7.5.0 or (preferred) GCC &amp;gt;= 9 is recommended.&lt;/p&gt;
&lt;p&gt;Note: CUTLASS 3.x builds are known to be down on Windows platforms for all CUDA toolkits.
CUTLASS team is working on a fix.&lt;/p&gt;
&lt;h2 id=&#34;hardware&#34;&gt;Hardware
&lt;/h2&gt;&lt;p&gt;CUTLASS runs successfully on the following NVIDIA GPUs, and it is expected to be efficient on Volta, Turing, Ampere, Ada, and Hopper architecture based NVIDIA GPUs.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;&lt;strong&gt;GPU&lt;/strong&gt;&lt;/th&gt;
          &lt;th&gt;&lt;strong&gt;CUDA Compute Capability&lt;/strong&gt;&lt;/th&gt;
          &lt;th&gt;&lt;strong&gt;Minimum CUDA Toolkit Required by CUTLASS-3&lt;/strong&gt;&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;NVIDIA V100 Tensor Core GPU&lt;/td&gt;
          &lt;td&gt;7.0&lt;/td&gt;
          &lt;td&gt;11.4&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;NVIDIA TitanV&lt;/td&gt;
          &lt;td&gt;7.0&lt;/td&gt;
          &lt;td&gt;11.4&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;NVIDIA GeForce RTX 20x0 series&lt;/td&gt;
          &lt;td&gt;7.5&lt;/td&gt;
          &lt;td&gt;11.4&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;NVIDIA T4&lt;/td&gt;
          &lt;td&gt;7.5&lt;/td&gt;
          &lt;td&gt;11.4&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;NVIDIA A100 Tensor Core GPU&lt;/td&gt;
          &lt;td&gt;8.0&lt;/td&gt;
          &lt;td&gt;11.4&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;NVIDIA A10&lt;/td&gt;
          &lt;td&gt;8.6&lt;/td&gt;
          &lt;td&gt;11.4&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;NVIDIA GeForce RTX 30x0 series&lt;/td&gt;
          &lt;td&gt;8.6&lt;/td&gt;
          &lt;td&gt;11.4&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;NVIDIA GeForce RTX 40x0 series&lt;/td&gt;
          &lt;td&gt;8.9&lt;/td&gt;
          &lt;td&gt;11.8&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;NVIDIA L40&lt;/td&gt;
          &lt;td&gt;8.9&lt;/td&gt;
          &lt;td&gt;11.8&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;NVIDIA H100 Tensor Core GPU&lt;/td&gt;
          &lt;td&gt;9.0&lt;/td&gt;
          &lt;td&gt;11.8&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;NVIDIA H200 Tensor Core GPU&lt;/td&gt;
          &lt;td&gt;9.0&lt;/td&gt;
          &lt;td&gt;11.8&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;NVIDIA B200 Tensor Core GPU&lt;/td&gt;
          &lt;td&gt;10.0&lt;/td&gt;
          &lt;td&gt;12.8&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;NVIDIA GeForce RTX 50x0 series&lt;/td&gt;
          &lt;td&gt;10.0&lt;/td&gt;
          &lt;td&gt;12.8&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;target-architecture&#34;&gt;Target Architecture
&lt;/h2&gt;&lt;p&gt;In general, PTX code generated for one target architecture can be run on future architectures
(i.e., it is forward compatible).
However, CUDA 12.0 introduced the concept of &amp;ldquo;architecture-accelerated features&amp;rdquo; whose
PTX does not have forward compatibility guarantees.
Several Hopper and Blackwell PTX instructions fall under this category of
architecture-accelerated features, and thus require a &lt;code&gt;sm_90a&lt;/code&gt; or &lt;code&gt;sm100a&lt;/code&gt; target architecture
(note the &amp;ldquo;a&amp;rdquo; appended). For more details on this and other architecture-accelerated instructions,
please refer to the &lt;a class=&#34;link&#34; href=&#34;https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#feature-availability&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CUDA Documentation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The target architecture information is passed on to CUTLASS via the cmake flag
&lt;code&gt;CUTLASS_NVCC_ARCHS&lt;/code&gt;. In order to maximize performance on Hopper GH100,
users are required to build CUTLASS with &lt;code&gt;90a&lt;/code&gt; as the target architecture.
If a user accidentally builds a kernel which uses SM90a features
(e.g. Hopper Tensor Core Instructions), using the SM90 target
(note the lack of &amp;ldquo;a&amp;rdquo;), with either CUDA Toolkit 12 or 11.8,
the kernel is expected to fail with a runtime error.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cmake .. -DCUTLASS_NVCC_ARCHS=&amp;#34;90a&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Or&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cmake .. -DCUTLASS_NVCC_ARCHS=&amp;#34;100a&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Note: The NVIDIA Blackwell SM100 architecture used in the datacenter
products has a different compute capability than the one underpinning
NVIDIA Blackwell GeForce RTX 50 series GPUs. As a result, kernels
compiled for Blackwell SM100 architecture with arch conditional features
(using &lt;code&gt;sm100a&lt;/code&gt;) are not compatible with RTX 50 series GPUs.&lt;/p&gt;
&lt;p&gt;Please refer to the &lt;a class=&#34;link&#34; href=&#34;https://docs.nvidia.com/cutlass/media/docs/cpp/functionality.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;functionality documentation&lt;/a&gt;
for details on which kernels require which target architectures.&lt;/p&gt;
&lt;h1 id=&#34;documentation&#34;&gt;Documentation
&lt;/h1&gt;&lt;p&gt;CUTLASS is described in the following documents and the accompanying
&lt;a class=&#34;link&#34; href=&#34;https://nvidia.github.io/cutlass&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Doxygen documentation&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.nvidia.com/cutlass/media/docs/cpp/quickstart.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Quick Start Guide&lt;/a&gt; - basics of building and running CUTLASS&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.nvidia.com/cutlass/media/docs/cpp/functionality.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Functionality&lt;/a&gt; - summarizes functionality available in CUTLASS&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.nvidia.com/cutlass/media/docs/cpp/efficient_gemm.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Efficient GEMM in CUDA&lt;/a&gt; - describes how GEMM kernels may be implemented efficiently in CUDA&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.nvidia.com/cutlass/media/docs/cpp/cutlass_3x_design.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CUTLASS 3.x Design&lt;/a&gt; - describes the CUTLASS 3.x design, its benefits, and how CuTe enables us to write much more composable components&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.nvidia.com/cutlass/media/docs/cpp/gemm_api_3x.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GEMM API 3.x&lt;/a&gt; - describes the CUTLASS 3.x GEMM model and C++ template concepts&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.nvidia.com/cutlass/media/docs/cpp/gemm_api.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GEMM API 2.x&lt;/a&gt; - describes the CUTLASS 2.x GEMM model and C++ template concepts&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.nvidia.com/cutlass/media/docs/cpp/implicit_gemm_convolution.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Implicit GEMM Convolution&lt;/a&gt; - describes 2-D and 3-D convolution in CUTLASS&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.nvidia.com/cutlass/media/docs/cpp/code_organization.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Code Organization&lt;/a&gt; - describes the organization and contents of the CUTLASS project&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.nvidia.com/cutlass/media/docs/cpp/terminology.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Terminology&lt;/a&gt; - describes terms used in the code&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.nvidia.com/cutlass/media/docs/cpp/programming_guidelines.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Programming Guidelines&lt;/a&gt; - guidelines for writing efficient modern CUDA C++&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.nvidia.com/cutlass/media/docs/cpp/fundamental_types.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Fundamental types&lt;/a&gt; - describes basic C++ classes used in CUTLASS to represent numeric quantities and arrays&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.nvidia.com/cutlass/media/docs/cpp/layout.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Layouts&lt;/a&gt; - describes layouts of matrices and tensors in memory&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.nvidia.com/cutlass/media/docs/cpp/tile_iterator_concept.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Tile Iterators&lt;/a&gt; - describes C++ concepts for iterating over tiles of matrices in memory&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.nvidia.com/cutlass/media/docs/cpp/profiler.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CUTLASS Profiler&lt;/a&gt; - command-line driven profiling application&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.nvidia.com/cutlass/media/docs/cpp/utilities.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CUTLASS Utilities&lt;/a&gt; - additional templates used to facilitate rapid development&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.nvidia.com/cutlass/media/docs/cpp/dependent_kernel_launch.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Dependent kernel launch&lt;/a&gt; - describes a new feature in Hopper which allows overlapping dependent
kernels in the same stream, and how it is used in CUTLASS.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;resources&#34;&gt;Resources
&lt;/h1&gt;&lt;p&gt;We have also described the structure of an efficient GEMM in our talk at the
&lt;a class=&#34;link&#34; href=&#34;http://on-demand.gputechconf.com/gtc/2018/presentation/s8854-cutlass-software-primitives-for-dense-linear-algebra-at-all-levels-and-scales-within-cuda.pdf&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GPU Technology Conference 2018&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.nvidia.com/en-us/on-demand/session/gtcsiliconvalley2018-s8854/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CUTLASS: Software Primitives for Dense Linear Algebra at All Levels and Scales within CUDA&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.nvidia.com/en-us/on-demand/session/gtcsj20-s21745/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Developing CUDA Kernels to Push Tensor Cores to the Absolute Limit on NVIDIA A100&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.nvidia.com/en-us/on-demand/session/gtcspring21-s31883/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Accelerating Convolution with Tensor Cores in CUTLASS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.nvidia.com/en-us/on-demand/session/gtcspring22-s41996/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Accelerating Backward Data Gradient by Increasing Tensor Core Utilization in CUTLASS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.nvidia.com/en-us/on-demand/session/gtcfall22-a41131/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CUTLASS: Python API, Enhancements, and NVIDIA Hopper&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;building-cutlass&#34;&gt;Building CUTLASS
&lt;/h1&gt;&lt;p&gt;CUTLASS is a header-only template library and does not need to be built to be used by other
projects. Client applications should target CUTLASS&amp;rsquo;s &lt;code&gt;include/&lt;/code&gt; directory in their include
paths.&lt;/p&gt;
&lt;p&gt;CUTLASS unit tests, examples, and utilities can be build with CMake.
The minimum version of CMake is given in the &lt;a class=&#34;link&#34; href=&#34;https://docs.nvidia.com/cutlass/media/docs/cpp/quickstart.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Quickstart guide&lt;/a&gt;.
Make sure the &lt;code&gt;CUDACXX&lt;/code&gt; environment  variable points to NVCC in the CUDA Toolkit installed
on your system.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ &lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;CUDACXX&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;CUDA_INSTALL_PATH&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;/bin/nvcc
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Create a build directory within the CUTLASS project, then run CMake. By default CUTLASS will build kernels
for CUDA architecture versions 5.0, 6.0, 6.1, 7.0, 7.5, 8.0, 8.6, 8.9, and 9.0.
To reduce compile time you can specify
the architectures to build CUTLASS for by changing the CMake configuration setting
&lt;code&gt;CUTLASS_NVCC_ARCHS&lt;/code&gt;.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ mkdir build &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; build
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ cmake .. -DCUTLASS_NVCC_ARCHS&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;80&lt;/span&gt;               &lt;span class=&#34;c1&#34;&gt;# compiles for NVIDIA&amp;#39;s Ampere Architecture&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;From the &lt;code&gt;build/&lt;/code&gt; directory, compile and run the CUTLASS unit tests by building the target &lt;code&gt;test_unit&lt;/code&gt; with make.&lt;/p&gt;
&lt;p&gt;The unit tests are organized as several binaries mirroring the top-level namespaces of CUTLASS,
and they may be executed in parallel via make&amp;rsquo;s &lt;code&gt;-j&lt;/code&gt; command line argument.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ make test_unit -j
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;----------&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; Global &lt;span class=&#34;nb&#34;&gt;test&lt;/span&gt; environment tear-down
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;[==========]&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;946&lt;/span&gt; tests from &lt;span class=&#34;m&#34;&gt;57&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;test&lt;/span&gt; cases ran. &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;10812&lt;/span&gt; ms total&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;  PASSED  &lt;span class=&#34;o&#34;&gt;]&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;946&lt;/span&gt; tests.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;All tests should pass on supported platforms, though the exact number of tests may vary over time.&lt;/p&gt;
&lt;h1 id=&#34;project-structure&#34;&gt;Project Structure
&lt;/h1&gt;&lt;p&gt;CUTLASS is arranged as a header-only library along with Utilities, Tools, Examples, and unit tests.
&lt;a class=&#34;link&#34; href=&#34;https://nvidia.github.io/cutlass&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Doxygen documentation&lt;/a&gt; provides a complete list of files, classes,
and template concepts defined in the CUTLASS project.&lt;/p&gt;
&lt;p&gt;A detailed explanation of the source code organization may be found in the
&lt;a class=&#34;link&#34; href=&#34;https://docs.nvidia.com/cutlass/media/docs/cpp/code_organization.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CUTLASS documentation&lt;/a&gt;, but several main components are summarized below.&lt;/p&gt;
&lt;h2 id=&#34;cutlass-template-library&#34;&gt;CUTLASS Template Library
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;38
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;39
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;include/                     # client applications should target this directory in their build&amp;#39;s include paths
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  cutlass/                   # CUDA Templates for Linear Algebra Subroutines and Solvers - headers only
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    arch/                    # direct exposure of architecture features (including instruction-level GEMMs)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    conv/                    # code specialized for convolution
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    epilogue/                # code specialized for the epilogue of gemm/convolution
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    gemm/                    # code specialized for general matrix product computations
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    layout/                  # layout definitions for matrices, tensors, and other mathematical objects in memory
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    platform/                # CUDA-capable Standard Library components
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    reduction/               # bandwidth-limited reduction kernels that do not fit the &amp;#34;gemm&amp;#34; model
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    thread/                  # simt code that can be performed within a CUDA thread
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    transform/               # code specialized for layout, type, and domain transformations
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    *                        # core vocabulary types, containers, and basic numeric operations
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  cute/                      # CuTe Layout, layout algebra, MMA/Copy atoms, tiled MMA/Copy
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    algorithm/               # Definitions of core operations such as copy, gemm, and operations on cute::tuples
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    arch/                    # Bare bones PTX wrapper structs for copy and math instructions
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    atom/                    # Meta-information either link to or built from arch/ operators
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      mma_atom.hpp           # cute::Mma_Atom and cute::TiledMma
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      copy_atom.hpp          # cute::Copy_Atom and cute::TiledCopy
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      *sm*.hpp               # Arch specific meta-information for copy and math operations
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    *                        # Core library types such as Shape, Stride, Layout, Tensor, and associated operations
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;cutlass-sdk-examples&#34;&gt;CUTLASS SDK Examples
&lt;/h3&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/NVIDIA/cutlass/tree/main/examples&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CUTLASS SDK examples&lt;/a&gt; apply CUTLASS templates to implement basic computations.&lt;/p&gt;
&lt;h3 id=&#34;tools&#34;&gt;Tools
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;tools&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;library&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;                   &lt;span class=&#34;c1&#34;&gt;# CUTLASS Instance Library - contains instantiations of all supported CUTLASS templates&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;include&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;n&#34;&gt;cutlass&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;library&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;profiler&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;                  &lt;span class=&#34;c1&#34;&gt;# CUTLASS Profiler         - command-line utility for executing operations in the&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                             &lt;span class=&#34;c1&#34;&gt;#                            CUTLASS Library&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;n&#34;&gt;util&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;                      &lt;span class=&#34;c1&#34;&gt;# CUTLASS Utilities        - contains numerous helper classes for&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;include&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;                 &lt;span class=&#34;c1&#34;&gt;#                            managing tensors in device memory, reference&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;n&#34;&gt;cutlass&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;               &lt;span class=&#34;c1&#34;&gt;#                            implementations for GEMM, random initialization&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;n&#34;&gt;util&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;                &lt;span class=&#34;c1&#34;&gt;#                            of tensors, and I/O.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;test&#34;&gt;Test
&lt;/h3&gt;&lt;p&gt;The &lt;code&gt;test/unit/&lt;/code&gt; directory consist of unit tests implemented with Google Test that demonstrate
basic usage of Core API components and complete tests of the CUTLASS GEMM computations.&lt;/p&gt;
&lt;p&gt;Instructions for building and running the Unit tests are described in the &lt;a class=&#34;link&#34; href=&#34;https://docs.nvidia.com/cutlass/media/docs/cpp/quickstart.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Quickstart guide&lt;/a&gt;.&lt;/p&gt;
&lt;h1 id=&#34;performance-profiling&#34;&gt;Performance Profiling
&lt;/h1&gt;&lt;p&gt;The &lt;code&gt;tools/profiler/&lt;/code&gt; directory contains a command-line utility for launching each of the GEMM kernels.
It can be built as follows:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ make cutlass_profiler -j16
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;building-all-gemm-and-convolution-kernels-long-build-times&#34;&gt;Building all GEMM and Convolution kernels (&lt;em&gt;long&lt;/em&gt; build times)
&lt;/h2&gt;&lt;p&gt;By default, only one tile size is instantiated for each data type, math instruction, and layout.
To instantiate all, set the following environment variable when running CMake from an empty &lt;code&gt;build/&lt;/code&gt; directory.
Beware, this results in &lt;em&gt;tens of thousands&lt;/em&gt; of kernels and long build times.
This would also result in a large binary size and on some platforms linker to fail on building the library.
Therefore, it&amp;rsquo;s highly recommended to generate only a subset of kernels as demonstrated in the sub-section below.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ cmake .. -DCUTLASS_NVCC_ARCHS&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;90a -DCUTLASS_LIBRARY_KERNELS&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;all
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ make cutlass_profiler -j16
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;building-a-subset-of-gemm-and-convolution-kernels-reduced-build-times&#34;&gt;Building a subset of GEMM and Convolution kernels (&lt;em&gt;reduced&lt;/em&gt; build times)
&lt;/h2&gt;&lt;p&gt;To compile strictly one kernel or a small set of kernels, a comma-delimited list of kernel names with
wildcard characters may be used to reduce the set of kernels. The following examples show building exactly one
or a subset of kernels for NVIDIA Ampere and Turing architecture:&lt;/p&gt;
&lt;h3 id=&#34;building-a-subset-tensor-core-gemm-kernels&#34;&gt;Building a subset Tensor Core GEMM kernels
&lt;/h3&gt;&lt;p&gt;To compile a subset of Tensor Core GEMM kernels with FP32 accumulation and FP16 input targeting NVIDIA Ampere and Turing architecture,
use the below cmake command line:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ cmake .. -DCUTLASS_NVCC_ARCHS&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;75;80&amp;#39;&lt;/span&gt; -DCUTLASS_LIBRARY_KERNELS&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;cutlass_tensorop_s*gemm_f16_*_nt_align8
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ make cutlass_profiler -j16
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Example command line for profiling a subset of Tensor Core GEMM kernels is as follows:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./tools/profiler/cutlass_profiler --kernels&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;cutlass_tensorop_s*gemm_f16_*_nt_align8 --m&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;3456&lt;/span&gt; --n&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;4096&lt;/span&gt; --k&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;4096&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;=============================&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  Problem ID: &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Provider: CUTLASS
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   OperationKind: gemm
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       Operation: cutlass_tensorop_s1688gemm_f16_256x128_32x2_nt_align8
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          Status: Success
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    Verification: ON
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     Disposition: Passed
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;reference_device: Passed
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          cuBLAS: Passed
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       Arguments: --gemm_kind&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;universal --m&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;3456&lt;/span&gt; --n&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;4096&lt;/span&gt; --k&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;4096&lt;/span&gt; --A&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;f16:column --B&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;f16:row --C&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;f32:column --alpha&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;  &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                  --beta&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; --split_k_slices&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; --batch_count&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; --op_class&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;tensorop --accum&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;f32 --cta_m&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;256&lt;/span&gt; --cta_n&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;128&lt;/span&gt;  &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                  --cta_k&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;32&lt;/span&gt; --stages&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;2&lt;/span&gt; --warps_m&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;4&lt;/span&gt; --warps_n&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;2&lt;/span&gt; --warps_k&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; --inst_m&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;16&lt;/span&gt; --inst_n&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;8&lt;/span&gt; --inst_k&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;8&lt;/span&gt; --min_cc&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;75&lt;/span&gt;  &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                  --max_cc&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1024&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;           Bytes: &lt;span class=&#34;m&#34;&gt;118489088&lt;/span&gt;  bytes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;           FLOPs: &lt;span class=&#34;m&#34;&gt;115992428544&lt;/span&gt;  flops
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;         Runtime: 1.55948  ms
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          Memory: 70.7616 GiB/s
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            Math: 74378.8 GFLOP/s
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;=============================&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;building-one-cuda-core-gemm-kernel&#34;&gt;Building one CUDA Core GEMM kernel
&lt;/h3&gt;&lt;p&gt;To compile one SGEMM kernel targeting NVIDIA Ampere and Turing architecture, use the below cmake command line:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ cmake .. -DCUTLASS_NVCC_ARCHS&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;75;80&amp;#39;&lt;/span&gt; -DCUTLASS_LIBRARY_KERNELS&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;cutlass_simt_sgemm_128x128_8x2_nn_align1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ make cutlass_profiler -j16
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Example command line for profiling single SGEMM CUDA kernel is as follows:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ ./tools/profiler/cutlass_profiler --kernels&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;sgemm --m&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;3456&lt;/span&gt; --n&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;4096&lt;/span&gt; --k&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;4096&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;=============================&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  Problem ID: &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Provider: CUTLASS
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   OperationKind: gemm
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       Operation: cutlass_simt_sgemm_128x128_8x2_nn_align1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          Status: Success
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    Verification: ON
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     Disposition: Passed
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          cuBLAS: Passed
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       Arguments: --m&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;3456&lt;/span&gt; --n&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;4096&lt;/span&gt; --k&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;4096&lt;/span&gt; --A&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;f32:column --B&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;f32:column --C&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;f32:column --alpha&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; --beta&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; --split_k_slices&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;  &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                  --batch_count&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; --op_class&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;simt --accum&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;f32 --cta_m&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;128&lt;/span&gt; --cta_n&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;128&lt;/span&gt; --cta_k&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;8&lt;/span&gt; --stages&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;2&lt;/span&gt; --warps_m&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;4&lt;/span&gt;  &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                  --warps_n&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;2&lt;/span&gt; --warps_k&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; --inst_m&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; --inst_n&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; --inst_k&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; --min_cc&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;50&lt;/span&gt; --max_cc&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1024&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;           Bytes: &lt;span class=&#34;m&#34;&gt;180355072&lt;/span&gt;  bytes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;           FLOPs: &lt;span class=&#34;m&#34;&gt;115992428544&lt;/span&gt;  flops
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;         Runtime: 6.73655  ms
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          Memory: 24.934 GiB/s
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            Math: 17218.4 GFLOP/s
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;=============================&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;building-a-subset-of-tensor-core-convolution-kernels&#34;&gt;Building a subset of Tensor Core Convolution kernels
&lt;/h3&gt;&lt;p&gt;To compile a subset of Tensor core convolution kernels implementing forward propagation (fprop) with FP32 accumulation
and FP16 input targeting NVIDIA Ampere and Turing architecture, use the below cmake command line:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ cmake .. -DCUTLASS_NVCC_ARCHS&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;75;80&amp;#39;&lt;/span&gt; -DCUTLASS_LIBRARY_KERNELS&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;cutlass_tensorop_s*fprop_optimized_f16
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ make cutlass_profiler -j16
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Example command line for profiling a subset of Tensor Core convolution kernels is as follows:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ ./tools/profiler/cutlass_profiler --kernels&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;cutlass_tensorop_s*fprop_optimized_f16 --n&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;8&lt;/span&gt; --h&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;224&lt;/span&gt; --w&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;224&lt;/span&gt; --c&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;128&lt;/span&gt; --k&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;128&lt;/span&gt; --r&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;3&lt;/span&gt; --s&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;=============================&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  Problem ID: &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Provider: CUTLASS
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   OperationKind: conv2d
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       Operation: cutlass_tensorop_s16816fprop_optimized_f16_128x128_32x5_nhwc
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          Status: Success
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    Verification: ON
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     Disposition: Passed
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;reference_device: Passed
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       Arguments: --conv_kind&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;fprop --n&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;8&lt;/span&gt; --h&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;224&lt;/span&gt; --w&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;224&lt;/span&gt; --c&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;128&lt;/span&gt; --k&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;128&lt;/span&gt; --r&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;3&lt;/span&gt; --s&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;3&lt;/span&gt; --p&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;224&lt;/span&gt; --q&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;224&lt;/span&gt; --pad_h&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; --pad_w&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;  &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                  --stride_h&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; --stride_w&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; --dilation_h&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; --dilation_w&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; --Activation&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;f16:nhwc --Filter&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;f16:nhwc --Output&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;f32:nhwc  &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                  --conv_mode&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;cross --iterator_algorithm&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;optimized --alpha&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; --beta&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; --split_k_mode&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;serial --split_k_slices&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;  &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                  --eq_gemm_provider&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;none --op_class&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;tensorop --accum&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;f32 --cta_m&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;128&lt;/span&gt; --cta_n&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;128&lt;/span&gt; --cta_k&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;32&lt;/span&gt; --stages&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;5&lt;/span&gt;  &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                  --warps_m&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;2&lt;/span&gt; --warps_n&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;2&lt;/span&gt; --warps_k&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; --inst_m&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;16&lt;/span&gt; --inst_n&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;8&lt;/span&gt; --inst_k&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;16&lt;/span&gt; --min_cc&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;80&lt;/span&gt; --max_cc&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1024&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;           Bytes: &lt;span class=&#34;m&#34;&gt;1130659840&lt;/span&gt;  bytes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;           FLOPs: &lt;span class=&#34;m&#34;&gt;118482796544&lt;/span&gt;  flops
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;         Runtime: 0.711496  ms
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          Memory: 1479.99 GiB/s
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            Math: &lt;span class=&#34;m&#34;&gt;166526&lt;/span&gt; GFLOP/s
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;=============================&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;building-one-convolution-cuda-kernel&#34;&gt;Building one Convolution CUDA kernel
&lt;/h3&gt;&lt;p&gt;To compile and run one CUDA Core convolution kernel implementing forward propagation (fprop) with F32 accumulation
and FP32 input targeting NVIDIA Ampere and Turing architecture, use the below cmake command line:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ cmake .. -DCUTLASS_NVCC_ARCHS&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;75;80&amp;#39;&lt;/span&gt; -DCUTLASS_LIBRARY_KERNELS&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;cutlass_simt_sfprop_optimized_128x128_8x2_nhwc
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ make cutlass_profiler -j16
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Example command line for profiling one CUDA Core convolution kernel:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ ./tools/profiler/cutlass_profiler --kernels&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;cutlass_simt_sfprop_optimized_128x128_8x2_nhwc --n&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;8&lt;/span&gt; --h&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;224&lt;/span&gt; --w&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;224&lt;/span&gt; --c&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;128&lt;/span&gt; --k&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;128&lt;/span&gt; --r&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;3&lt;/span&gt; --s&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;=============================&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  Problem ID: &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        Provider: CUTLASS
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   OperationKind: conv2d
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       Operation: cutlass_simt_sfprop_optimized_128x128_8x2_nhwc
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          Status: Success
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    Verification: ON
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;     Disposition: Passed
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;reference_device: Passed
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       Arguments: --conv_kind&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;fprop --n&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;8&lt;/span&gt; --h&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;224&lt;/span&gt; --w&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;224&lt;/span&gt; --c&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;128&lt;/span&gt; --k&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;128&lt;/span&gt; --r&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;3&lt;/span&gt; --s&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;3&lt;/span&gt; --p&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;224&lt;/span&gt; --q&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;224&lt;/span&gt; --pad_h&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; --pad_w&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;  &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                  --stride_h&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; --stride_w&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; --dilation_h&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; --dilation_w&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; --Activation&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;f32:nhwc --Filter&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;f32:nhwc --Output&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;f32:nhwc  &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                  --conv_mode&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;cross --iterator_algorithm&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;optimized --alpha&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; --beta&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; --split_k_mode&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;serial --split_k_slices&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;  &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                  --eq_gemm_provider&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;none --op_class&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;simt --accum&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;f32 --cta_m&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;128&lt;/span&gt; --cta_n&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;128&lt;/span&gt; --cta_k&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;8&lt;/span&gt; --stages&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;2&lt;/span&gt; --warps_m&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;4&lt;/span&gt;  &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                  --warps_n&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;2&lt;/span&gt; --warps_k&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; --inst_m&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; --inst_n&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; --inst_k&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; --min_cc&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;50&lt;/span&gt; --max_cc&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1024&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;           Bytes: &lt;span class=&#34;m&#34;&gt;2055798784&lt;/span&gt;  bytes
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;           FLOPs: &lt;span class=&#34;m&#34;&gt;118482796544&lt;/span&gt;  flops
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;         Runtime: 7.34266  ms
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          Memory: 260.752 GiB/s
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            Math: 16136.2 GFLOP/s
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;=============================&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;more-details-on-compiling-cutlass-kernels-and-cutlass-profiler&#34;&gt;More Details on Compiling CUTLASS Kernels and CUTLASS Profiler
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Please follow the links for more CMake examples on selectively compiling CUTLASS kernels:
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.nvidia.com/cutlass/media/docs/cpp/quickstart.html#gemm-cmake-examples&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GEMM CMake Examples&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.nvidia.com/cutlass/media/docs/cpp/quickstart.html#convolution-cmake-examples&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Implicit GEMM convolution CMake Examples&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://docs.nvidia.com/cutlass/media/docs/cpp/profiler.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Further details about the CUTLASS Profiler are described here.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;about&#34;&gt;About
&lt;/h1&gt;&lt;p&gt;CUTLASS is released by NVIDIA Corporation as Open Source software under the
&lt;a class=&#34;link&#34; href=&#34;LICENSE.txt&#34; &gt;3-clause &amp;ldquo;New&amp;rdquo; BSD license&lt;/a&gt;.&lt;/p&gt;
&lt;h1 id=&#34;contributors&#34;&gt;Contributors
&lt;/h1&gt;&lt;p&gt;The official list of CUTLASS developers and contributors is available here: &lt;a class=&#34;link&#34; href=&#34;CONTRIBUTORS.md&#34; &gt;CONTRIBUTORS&lt;/a&gt;.&lt;/p&gt;
&lt;h1 id=&#34;copyright&#34;&gt;Copyright
&lt;/h1&gt;&lt;p&gt;Copyright (c) 2017 - 2025 NVIDIA CORPORATION &amp;amp; AFFILIATES. All rights reserved.
SPDX-License-Identifier: BSD-3-Clause&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  Redistribution and use in source and binary forms, with or without
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  modification, are permitted provided that the following conditions are met:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  1. Redistributions of source code must retain the above copyright notice, this
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  list of conditions and the following disclaimer.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  2. Redistributions in binary form must reproduce the above copyright notice,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  this list of conditions and the following disclaimer in the documentation
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  and/or other materials provided with the distribution.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  3. Neither the name of the copyright holder nor the names of its
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  contributors may be used to endorse or promote products derived from
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  this software without specific prior written permission.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &amp;#34;AS IS&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
        </item>
        <item>
        <title>ZLUDA</title>
        <link>https://producthunt.programnotes.cn/en/p/zluda/</link>
        <pubDate>Mon, 07 Jul 2025 15:31:03 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/zluda/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1736452221254-ae8d76bf3c79?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NTE4NzM0MjZ8&amp;ixlib=rb-4.1.0" alt="Featured image of post ZLUDA" /&gt;&lt;h1 id=&#34;vosenzluda&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/vosen/ZLUDA&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;vosen/ZLUDA&lt;/a&gt;
&lt;/h1&gt;&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://discord.gg/sg6BNzXuc7&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/badge/Discord-%235865F2.svg?style=for-the-badge&amp;amp;logo=discord&amp;amp;logoColor=white&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Discord&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1 id=&#34;zluda&#34;&gt;ZLUDA
&lt;/h1&gt;&lt;p&gt;ZLUDA is a drop-in replacement for CUDA on non-NVIDIA GPU. ZLUDA allows to run unmodified CUDA applications using non-NVIDIA GPUs with near-native performance.&lt;/p&gt;
&lt;p&gt;ZLUDA supports AMD Radeon RX 5000 series and newer GPUs (both desktop and integrated).&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://producthunt.programnotes.cn/geekbench.svg&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;GeekBench 5.5.1 chart&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;ZLUDA is work in progress. Follow development here and say hi on &lt;a class=&#34;link&#34; href=&#34;https://discord.gg/sg6BNzXuc7&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Discord&lt;/a&gt;. For more details see the announcement: &lt;a class=&#34;link&#34; href=&#34;https://vosen.github.io/ZLUDA/blog/zludas-third-life/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://vosen.github.io/ZLUDA/blog/zludas-third-life/&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;usage&#34;&gt;Usage
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Warning&lt;/strong&gt;: This version ZLUDA is under heavy development (more &lt;a class=&#34;link&#34; href=&#34;https://vosen.github.io/ZLUDA/blog/zludas-third-life/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;here&lt;/a&gt;) and right now only supports Geekbench. ZLUDA probably will not work with your application just yet.&lt;/p&gt;
&lt;h3 id=&#34;windows&#34;&gt;Windows
&lt;/h3&gt;&lt;p&gt;You should have recent AMD GPU driver (&amp;ldquo;AMD Software: Adrenalin Edition&amp;rdquo;) installed.&lt;br&gt;
To run your application you should etiher:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;(Recommended approach) Copy ZLUDA-provided &lt;code&gt;nvcuda.dll&lt;/code&gt; and &lt;code&gt;nvml.dll&lt;/code&gt; from &lt;code&gt;target\release&lt;/code&gt; (if built from sources) or &lt;code&gt;zluda&lt;/code&gt; (if downloaded a zip package) into a path which your application uses to load CUDA. Paths vary application to application, but usually it&amp;rsquo;s the directory where the .exe file is located&lt;/li&gt;
&lt;li&gt;Use ZLUDA launcher like below. ZLUDA launcher is known to be buggy and incomplete:
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;lt;ZLUDA_DIRECTORY&amp;gt;\zluda_with.exe -- &amp;lt;APPLICATION&amp;gt; &amp;lt;APPLICATIONS_ARGUMENTS&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;linux&#34;&gt;Linux
&lt;/h3&gt;&lt;p&gt;Run your application like this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;LD_LIBRARY_PATH=&amp;lt;ZLUDA_DIRECTORY&amp;gt; &amp;lt;APPLICATION&amp;gt; &amp;lt;APPLICATIONS_ARGUMENTS&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;where &lt;code&gt;&amp;lt;ZLUDA_DIRECTORY&amp;gt;&lt;/code&gt; is the directory which contains ZLUDA-provided &lt;code&gt;libcuda.so&lt;/code&gt;: &lt;code&gt;target/release&lt;/code&gt; if you built from sources or &lt;code&gt;zluda&lt;/code&gt; if you downloaded prebuilt package.&lt;/p&gt;
&lt;h3 id=&#34;macos&#34;&gt;MacOS
&lt;/h3&gt;&lt;p&gt;Not supported&lt;/p&gt;
&lt;h2 id=&#34;building&#34;&gt;Building
&lt;/h2&gt;&lt;h3 id=&#34;dependencies&#34;&gt;Dependencies
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Git&lt;/li&gt;
&lt;li&gt;CMake&lt;/li&gt;
&lt;li&gt;Python 3&lt;/li&gt;
&lt;li&gt;Rust compiler (recent version)&lt;/li&gt;
&lt;li&gt;C++ compiler&lt;/li&gt;
&lt;li&gt;(Optional, but recommended) &lt;a class=&#34;link&#34; href=&#34;https://ninja-build.org/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Ninja build system&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;build-steps&#34;&gt;Build steps
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Git clone the repo (make sure to use &lt;code&gt;--recursive&lt;/code&gt; option to fetch submodules):&lt;br&gt;
&lt;code&gt;git clone --recursive https://github.com/vosen/ZLUDA.git&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Enter freshly cloned &lt;code&gt;ZLUDA&lt;/code&gt; directory and build with cargo (this takes a while):&lt;br&gt;
&lt;code&gt;cargo xtask --release&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;contributing&#34;&gt;Contributing
&lt;/h2&gt;&lt;p&gt;ZLUDA project has a commercial backing and &lt;em&gt;does not&lt;/em&gt; accept donations.
ZLUDA project accepts pull requests and other non-monetary contributions.&lt;/p&gt;
&lt;p&gt;If you want to contribute a code fix or documentation update feel free to open a Pull Request.&lt;/p&gt;
&lt;h3 id=&#34;getting-started&#34;&gt;Getting started
&lt;/h3&gt;&lt;p&gt;There&amp;rsquo;s no architecture document (yet). Two most important crates in ZLUDA are &lt;code&gt;ptx&lt;/code&gt; (PTX compiler) and &lt;code&gt;zluda&lt;/code&gt; (AMD GPU runtime). A good starting point to tinkering the project is to run one of the &lt;code&gt;ptx&lt;/code&gt; unit tests under a debugger and understand what it is doing. &lt;code&gt;cargo test -p ptx -- ::add_hip&lt;/code&gt; is a simple test that adds two numbers.&lt;/p&gt;
&lt;p&gt;Github issues tagged with &lt;a class=&#34;link&#34; href=&#34;https://github.com/vosen/ZLUDA/issues?q=is%3Aissue&amp;#43;is%3Aopen&amp;#43;label%3A%22help&amp;#43;wanted%22&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&amp;ldquo;help wanted&amp;rdquo;&lt;/a&gt; are tasks that are self-containted. Their level of difficulty varies, they are not always good beginner tasks, but they defined unambiguously.&lt;/p&gt;
&lt;p&gt;If you have questions feel free to ask on &lt;a class=&#34;link&#34; href=&#34;https://discord.com/channels/1273316903783497778/1303329281409159270&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;#devtalk channel on Discord&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;license&#34;&gt;License
&lt;/h2&gt;&lt;p&gt;This software is dual-licensed under either the Apache 2.0 license or the MIT license. See &lt;a class=&#34;link&#34; href=&#34;LICENSE-APACHE&#34; &gt;LICENSE-APACHE&lt;/a&gt; or &lt;a class=&#34;link&#34; href=&#34;LICENSE-MIT&#34; &gt;LICENSE-MIT&lt;/a&gt; for details&lt;/p&gt;
</description>
        </item>
        <item>
        <title>less_slow.cpp</title>
        <link>https://producthunt.programnotes.cn/en/p/less_slow.cpp/</link>
        <pubDate>Mon, 21 Apr 2025 15:29:19 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/less_slow.cpp/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1485871981521-5b1fd3805eee?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NDUyMjA0NjF8&amp;ixlib=rb-4.0.3" alt="Featured image of post less_slow.cpp" /&gt;&lt;h1 id=&#34;ashvardanianless_&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/ashvardanian/less_slow.cpp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ashvardanian/less_slow.cpp&lt;/a&gt;
&lt;/h1&gt;&lt;h1 id=&#34;playing-around-less-slow-coding-practices-for-c-cuda-and-assembly-code&#34;&gt;Playing Around &lt;em&gt;Less Slow&lt;/em&gt; Coding Practices for C++, CUDA, and Assembly Code
&lt;/h1&gt;&lt;blockquote&gt;
&lt;p&gt;The benchmarks in this repository don&amp;rsquo;t aim to cover every topic entirely, but they help form a mindset and intuition for performance-oriented software design.
It also provides an example of using some non-&lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/Standard_Template_Library&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;STL&lt;/a&gt; but de facto standard libraries in C++, importing them via CMake and compiling from source.
For higher-level abstractions and languages, check out &lt;a class=&#34;link&#34; href=&#34;https://github.com/ashvardanian/less_slow.rs&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;less_slow.rs&lt;/code&gt;&lt;/a&gt; and &lt;a class=&#34;link&#34; href=&#34;https://github.com/ashvardanian/less_slow.py&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;less_slow.py&lt;/code&gt;&lt;/a&gt;.
I needed many of these measurements to reconsider my own coding habits, but hopefully they&amp;rsquo;re helpful to others as well.
Most of the code is organized in very long, ordered, and nested &lt;code&gt;#pragma&lt;/code&gt; sections — not necessarily the preferred form for everyone.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Much of modern code suffers from common pitfalls — bugs, security vulnerabilities, and &lt;strong&gt;performance bottlenecks&lt;/strong&gt;.
University curricula and coding bootcamps tend to stick to traditional coding styles and standard features, rarely exposing the more fun, unusual, and potentially efficient design opportunities.
This repository explores just that.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://github.com/ashvardanian/ashvardanian/blob/master/repositories/less_slow.cpp.jpg?raw=true&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Less Slow C&amp;#43;&amp;#43;&#34;
	
	
&gt;&lt;/p&gt;
&lt;p&gt;The code leverages C++20 and CUDA features and is designed primarily for GCC, Clang, and NVCC compilers on Linux, though it may work on other platforms.
The topics range from basic micro-kernels executing in a few nanoseconds to more complex constructs involving parallel algorithms, coroutines, and polymorphism.
Some of the highlights include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;100x cheaper random inputs?!&lt;/strong&gt; Discover how input generation sometimes costs more than the algorithm.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;1% error in trigonometry at 1/40 cost:&lt;/strong&gt; Approximate STL functions like &lt;a class=&#34;link&#34; href=&#34;https://en.cppreference.com/w/cpp/numeric/math/sin&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;std::sin&lt;/code&gt;&lt;/a&gt; in just 3 lines of code.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;4x faster lazy-logic&lt;/strong&gt; with custom &lt;a class=&#34;link&#34; href=&#34;https://en.cppreference.com/w/cpp/ranges&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;std::ranges&lt;/code&gt;&lt;/a&gt; and iterators!&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compiler optimizations beyond &lt;code&gt;-O3&lt;/code&gt;:&lt;/strong&gt; Learn about less obvious flags and techniques for another 2x speedup.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Multiplying matrices?&lt;/strong&gt; Check how a 3x3x3 GEMM can be 70% slower than 4x4x4, despite 60% fewer ops.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scaling AI?&lt;/strong&gt; Measure the gap between theoretical &lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/Arithmetic_logic_unit&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ALU&lt;/a&gt; throughput and your &lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/Basic_Linear_Algebra_Subprograms&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;BLAS&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;How many if conditions are too many?&lt;/strong&gt; Test your CPU&amp;rsquo;s branch predictor with just 10 lines of code.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prefer recursion to iteration?&lt;/strong&gt; Measure the depth at which your algorithm will &lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/Segmentation_fault&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;SEGFAULT&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Why avoid exceptions?&lt;/strong&gt; Take &lt;code&gt;std::error_code&lt;/code&gt; or &lt;a class=&#34;link&#34; href=&#34;https://en.cppreference.com/w/cpp/utility/variant&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;std::variant&lt;/code&gt;&lt;/a&gt;-like wrappers?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scaling to many cores?&lt;/strong&gt; Learn how to use &lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/OpenMP&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;OpenMP&lt;/a&gt;, Intel&amp;rsquo;s oneTBB, or your custom thread pool.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;How to handle &lt;a class=&#34;link&#34; href=&#34;https://www.json.org/json-en.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;JSON&lt;/a&gt; avoiding memory allocations?&lt;/strong&gt; Is it easier with C++ 20 or old-school C 99 tools?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;How to properly use STL&amp;rsquo;s associative containers&lt;/strong&gt; with custom keys and transparent comparators?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;How to beat a hand-written parser&lt;/strong&gt; with &lt;a class=&#34;link&#34; href=&#34;https://en.cppreference.com/w/cpp/language/consteval&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;consteval&lt;/code&gt;&lt;/a&gt; RegEx engines?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Is the pointer size really 64 bits&lt;/strong&gt; and how to exploit &lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/Tagged_pointer&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;pointer-tagging&lt;/a&gt;?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;How many packets is &lt;a class=&#34;link&#34; href=&#34;https://www.cloudflare.com/learning/ddos/glossary/user-datagram-protocol-udp/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;UDP&lt;/a&gt; dropping&lt;/strong&gt; and how to serve web requests in &lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/Io_uring&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;io_uring&lt;/code&gt;&lt;/a&gt; from user-space?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scatter and Gather&lt;/strong&gt; for 50% faster vectorized disjoint memory operations.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Intel&amp;rsquo;s oneAPI vs Nvidia&amp;rsquo;s CCCL?&lt;/strong&gt; What&amp;rsquo;s so special about &lt;code&gt;&amp;lt;thrust&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;cub&amp;gt;&lt;/code&gt;?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CUDA C++, &lt;a class=&#34;link&#34; href=&#34;https://en.wikipedia.org/wiki/Parallel_Thread_Execution&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;PTX&lt;/a&gt; Intermediate Representations, and SASS&lt;/strong&gt;, and how do they differ from CPU code?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;How to choose between intrinsics, inline &lt;code&gt;asm&lt;/code&gt;, and separate &lt;code&gt;.S&lt;/code&gt; files&lt;/strong&gt; for your performance-critical code?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tensor Cores &amp;amp; Memory&lt;/strong&gt; differences on CPUs, and Volta, Ampere, Hopper, and Blackwell GPUs!&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;How coding FPGA differs from GPU&lt;/strong&gt; and what is High-Level Synthesis, Verilog, and VHDL? 🔜 #36&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;What are Encrypted Enclaves&lt;/strong&gt; and what&amp;rsquo;s the latency of Intel SGX, AMD SEV, and ARM Realm? 🔜 #31&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To read, jump to the &lt;a class=&#34;link&#34; href=&#34;https://github.com/ashvardanian/less_slow.cpp/blob/main/less_slow.cpp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;code&gt;less_slow.cpp&lt;/code&gt; source file&lt;/a&gt; and read the code snippets and comments.
Keep in mind, that most modern IDEs have a navigation bar to help you view and jump between &lt;code&gt;#pragma region&lt;/code&gt; sections.
Follow the instructions below to run the code in your environment and compare it to the comments as you read through the source.&lt;/p&gt;
&lt;h2 id=&#34;running-the-benchmarks&#34;&gt;Running the Benchmarks
&lt;/h2&gt;&lt;p&gt;The project aims to be compatible with GCC, Clang, and MSVC compilers on Linux, MacOS, and Windows.
That said, to cover the broadest functionality, using GCC on Linux is recommended:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If you are on Windows, it&amp;rsquo;s recommended that you set up a Linux environment using &lt;a class=&#34;link&#34; href=&#34;https://docs.microsoft.com/en-us/windows/wsl/install&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;WSL&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;If you are on MacOS, consider using the non-native distribution of Clang from &lt;a class=&#34;link&#34; href=&#34;https://brew.sh&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Homebrew&lt;/a&gt; or &lt;a class=&#34;link&#34; href=&#34;https://www.macports.org&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;MacPorts&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;If you are on Linux, make sure to install CMake and a recent version of GCC or Clang compilers to support C++20 features.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you are familiar with C++ and want to review code and measurements as you read, you can clone the repository and execute the following commands.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/ashvardanian/less_slow.cpp.git &lt;span class=&#34;c1&#34;&gt;# Clone the repository&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; less_slow.cpp                                            &lt;span class=&#34;c1&#34;&gt;# Change the directory&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pip install cmake --upgrade                                 &lt;span class=&#34;c1&#34;&gt;# PyPI has a newer version of CMake&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt-get install -y build-essential g++                 &lt;span class=&#34;c1&#34;&gt;# Install default build tools&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt-get install -y pkg-config liburing-dev             &lt;span class=&#34;c1&#34;&gt;# Install liburing for kernel-bypass&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt-get install -y libopenblas-base                    &lt;span class=&#34;c1&#34;&gt;# Install numerics libraries&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cmake -B build_release -D &lt;span class=&#34;nv&#34;&gt;CMAKE_BUILD_TYPE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;Release          &lt;span class=&#34;c1&#34;&gt;# Generate the build files&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cmake --build build_release --config Release                &lt;span class=&#34;c1&#34;&gt;# Build the project&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;build_release/less_slow                                     &lt;span class=&#34;c1&#34;&gt;# Run the benchmarks&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;The build will pull and compile several third-party dependencies from the source:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Google&amp;rsquo;s &lt;a class=&#34;link&#34; href=&#34;https://github.com/google/benchmark&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Benchmark&lt;/a&gt; is used for profiling.&lt;/li&gt;
&lt;li&gt;Intel&amp;rsquo;s &lt;a class=&#34;link&#34; href=&#34;https://github.com/uxlfoundation/oneTBB&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;oneTBB&lt;/a&gt; is used as the Parallel STL backend.&lt;/li&gt;
&lt;li&gt;Meta&amp;rsquo;s &lt;a class=&#34;link&#34; href=&#34;https://github.com/facebookexperimental/libunifex&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;libunifex&lt;/a&gt; is used for senders &amp;amp; executors.&lt;/li&gt;
&lt;li&gt;Eric Niebler&amp;rsquo;s &lt;a class=&#34;link&#34; href=&#34;https://github.com/ericniebler/range-v3&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;range-v3&lt;/a&gt; replaces &lt;code&gt;std::ranges&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Victor Zverovich&amp;rsquo;s &lt;a class=&#34;link&#34; href=&#34;https://github.com/fmtlib/fmt&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;fmt&lt;/a&gt; replaces &lt;code&gt;std::format&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Ash Vardanian&amp;rsquo;s &lt;a class=&#34;link&#34; href=&#34;https://github.com/ashvardanian/stringzilla&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;StringZilla&lt;/a&gt; replaces &lt;code&gt;std::string&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Hana Dusíková&amp;rsquo;s &lt;a class=&#34;link&#34; href=&#34;https://github.com/hanickadot/compile-time-regular-expressions&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CTRE&lt;/a&gt; replaces &lt;code&gt;std::regex&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Niels Lohmann&amp;rsquo;s &lt;a class=&#34;link&#34; href=&#34;https://github.com/nlohmann/json&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;json&lt;/a&gt; is used for JSON deserialization.&lt;/li&gt;
&lt;li&gt;Yaoyuan Guo&amp;rsquo;s &lt;a class=&#34;link&#34; href=&#34;https://github.com/ibireme/yyjson&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;yyjson&lt;/a&gt; for faster JSON processing.&lt;/li&gt;
&lt;li&gt;Google&amp;rsquo;s &lt;a class=&#34;link&#34; href=&#34;https://github.com/abseil/abseil-cpp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Abseil&lt;/a&gt; replaces STL&amp;rsquo;s associative containers.&lt;/li&gt;
&lt;li&gt;Lewis Baker&amp;rsquo;s &lt;a class=&#34;link&#34; href=&#34;https://github.com/lewissbaker/cppcoro&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;cppcoro&lt;/a&gt; implements C++20 coroutines.&lt;/li&gt;
&lt;li&gt;Jens Axboe&amp;rsquo;s &lt;a class=&#34;link&#34; href=&#34;https://github.com/axboe/liburing&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;liburing&lt;/a&gt; to simplify Linux kernel-bypass.&lt;/li&gt;
&lt;li&gt;Chris Kohlhoff&amp;rsquo;s &lt;a class=&#34;link&#34; href=&#34;https://github.com/chriskohlhoff/asio&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;ASIO&lt;/a&gt; as a &lt;a class=&#34;link&#34; href=&#34;https://en.cppreference.com/w/cpp/experimental/networking&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;networking TS&lt;/a&gt; extension.&lt;/li&gt;
&lt;li&gt;Nvidia&amp;rsquo;s &lt;a class=&#34;link&#34; href=&#34;https://github.com/nvidia/cccl&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CCCL&lt;/a&gt; for GPU-accelerated algorithms.&lt;/li&gt;
&lt;li&gt;Nvidia&amp;rsquo;s &lt;a class=&#34;link&#34; href=&#34;https://github.com/nvidia/cutlass&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CUTLASS&lt;/a&gt; for GPU-accelerated Linear Algebra.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To build without Parallel STL, Intel TBB, and CUDA:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cmake -B build_release -D &lt;span class=&#34;nv&#34;&gt;CMAKE_BUILD_TYPE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;Release -D &lt;span class=&#34;nv&#34;&gt;USE_INTEL_TBB&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;OFF -D &lt;span class=&#34;nv&#34;&gt;USE_NVIDIA_CCCL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;OFF
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cmake --build build_release --config Release
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;To control the output or run specific benchmarks, use the following flags:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;build_release/less_slow --benchmark_format&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;json             &lt;span class=&#34;c1&#34;&gt;# Output in JSON format&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;build_release/less_slow --benchmark_out&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;results.json        &lt;span class=&#34;c1&#34;&gt;# Save the results to a file instead of `stdout`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;build_release/less_slow --benchmark_filter&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;std_sort         &lt;span class=&#34;c1&#34;&gt;# Run only benchmarks containing `std_sort` in their name&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;To enhance stability and reproducibility, disable Simultaneous Multi-Threading &lt;strong&gt;(SMT)&lt;/strong&gt; on your CPU and use the &lt;code&gt;--benchmark_enable_random_interleaving=true&lt;/code&gt; flag, which shuffles and interleaves benchmarks as described &lt;a class=&#34;link&#34; href=&#34;https://github.com/google/benchmark/blob/main/docs/random_interleaving.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;build_release/less_slow --benchmark_enable_random_interleaving&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Google Benchmark supports &lt;a class=&#34;link&#34; href=&#34;https://github.com/google/benchmark/blob/main/docs/perf_counters.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;User-Requested Performance Counters&lt;/a&gt; through &lt;code&gt;libpmf&lt;/code&gt;.
Note that collecting these may require &lt;code&gt;sudo&lt;/code&gt; privileges.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo build_release/less_slow --benchmark_enable_random_interleaving&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;true&lt;/span&gt; --benchmark_format&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;json --benchmark_perf_counters&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;CYCLES,INSTRUCTIONS&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Alternatively, use the Linux &lt;code&gt;perf&lt;/code&gt; tool for performance counter collection:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo perf stat taskset 0xEFFFEFFFEFFFEFFFEFFFEFFFEFFFEFFF build_release/less_slow --benchmark_enable_random_interleaving&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;true&lt;/span&gt; --benchmark_filter&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;super_sort
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;project-structure&#34;&gt;Project Structure
&lt;/h2&gt;&lt;p&gt;The primary file of this repository is clearly the &lt;code&gt;less_slow.cpp&lt;/code&gt; C++ file with CPU-side code.
Several other files for different hardware-specific optimizations are created:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ tree .
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── CMakeLists.txt          &lt;span class=&#34;c1&#34;&gt;# Build &amp;amp; assembly instructions for all files&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── less_slow.cpp           &lt;span class=&#34;c1&#34;&gt;# Primary CPU-side benchmarking code with the majority of examples&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── less_slow_amd64.S       &lt;span class=&#34;c1&#34;&gt;# Hand-written Assembly kernels for 64-bit x86 CPUs&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── less_slow_aarch64.S     &lt;span class=&#34;c1&#34;&gt;# Hand-written Assembly kernels for 64-bit Arm CPUs&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── less_slow.cu            &lt;span class=&#34;c1&#34;&gt;# CUDA C++ examples for parallel algorithms for Nvidia GPUs&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── less_slow_sm70.ptx      &lt;span class=&#34;c1&#34;&gt;# Hand-written PTX IR kernels for Nvidia Volta GPUs&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└── less_slow_sm90a.ptx     &lt;span class=&#34;c1&#34;&gt;# Hand-written PTX IR kernels for Nvidia Hopper GPUs&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;memes-and-references&#34;&gt;Memes and References
&lt;/h2&gt;&lt;p&gt;Educational content without memes?!
Come on!&lt;/p&gt;
&lt;table&gt;
  &lt;tr&gt;
    &lt;td&gt;&lt;img src=&#34;https://github.com/ashvardanian/ashvardanian/blob/master/memes/ieee764-vs-gnu-compiler.jpg?raw=true&#34; alt=&#34;IEEE 754 vs GNU Compiler&#34;&gt;&lt;/td&gt;
    &lt;td&gt;&lt;img src=&#34;https://github.com/ashvardanian/ashvardanian/blob/master/memes/no-easter-bunny-no-free-abstractions.jpg?raw=true&#34; alt=&#34;No Easter Bunny, No Free Abstractions&#34;&gt;&lt;/td&gt;
  &lt;/tr&gt;
&lt;/table&gt;
&lt;h2 id=&#34;google-benchmark-functionality&#34;&gt;Google Benchmark Functionality
&lt;/h2&gt;&lt;p&gt;This benchmark suite uses most of the features provided by Google Benchmark.
If you write a lot of benchmarks and avoid going to the full &lt;a class=&#34;link&#34; href=&#34;https://github.com/google/benchmark/blob/main/docs/user_guide.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;User Guide&lt;/a&gt;, here is a condensed list of the most useful features:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-&amp;gt;Args({x, y})&lt;/code&gt; - Pass multiple arguments to parameterized benchmarks&lt;/li&gt;
&lt;li&gt;&lt;code&gt;BENCHMARK()&lt;/code&gt; - Register a basic benchmark function&lt;/li&gt;
&lt;li&gt;&lt;code&gt;BENCHMARK_CAPTURE()&lt;/code&gt; - Create variants of benchmarks with different captured values&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Counter::kAvgThreads&lt;/code&gt; - Specify thread-averaged counters&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DoNotOptimize()&lt;/code&gt; - Prevent compiler from optimizing away operations&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ClobberMemory()&lt;/code&gt; - Force memory synchronization&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-&amp;gt;Complexity(oNLogN)&lt;/code&gt; - Specify and validate algorithmic complexity&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-&amp;gt;SetComplexityN(n)&lt;/code&gt; - Set input size for complexity calculations&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-&amp;gt;ComputeStatistics(&amp;quot;max&amp;quot;, ...)&lt;/code&gt; - Calculate custom statistics across runs&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-&amp;gt;Iterations(n)&lt;/code&gt; - Control exact number of iterations&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-&amp;gt;MinTime(n)&lt;/code&gt; - Set minimum benchmark duration&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-&amp;gt;MinWarmUpTime(n)&lt;/code&gt; - To warm up the data caches&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-&amp;gt;Name(&amp;quot;...&amp;quot;)&lt;/code&gt; - Assign custom benchmark names&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-&amp;gt;Range(start, end)&lt;/code&gt; - Profile for a range of input sizes&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-&amp;gt;RangeMultiplier(n)&lt;/code&gt; - Set multiplier between range values&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-&amp;gt;ReportAggregatesOnly()&lt;/code&gt; - Show only aggregated statistics&lt;/li&gt;
&lt;li&gt;&lt;code&gt;state.counters[&amp;quot;name&amp;quot;]&lt;/code&gt; - Create custom performance counters&lt;/li&gt;
&lt;li&gt;&lt;code&gt;state.PauseTiming()&lt;/code&gt;, &lt;code&gt;ResumeTiming()&lt;/code&gt; - Control timing measurement&lt;/li&gt;
&lt;li&gt;&lt;code&gt;state.SetBytesProcessed(n)&lt;/code&gt; - Record number of bytes processed&lt;/li&gt;
&lt;li&gt;&lt;code&gt;state.SkipWithError()&lt;/code&gt; - Skip benchmark with error message&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-&amp;gt;Threads(n)&lt;/code&gt; - Run benchmark with specified number of threads&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-&amp;gt;Unit(kMicrosecond)&lt;/code&gt; - Set time unit for reporting&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-&amp;gt;UseRealTime()&lt;/code&gt; - Measure real time instead of CPU time&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-&amp;gt;UseManualTime()&lt;/code&gt; - To feed custom timings for GPU and IO benchmarks&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>cuda-python</title>
        <link>https://producthunt.programnotes.cn/en/p/cuda-python/</link>
        <pubDate>Fri, 11 Apr 2025 15:27:47 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/cuda-python/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1538558940285-e76825003c99?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3NDQzNTY0MTZ8&amp;ixlib=rb-4.0.3" alt="Featured image of post cuda-python" /&gt;&lt;h1 id=&#34;nvidiacuda-python&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/NVIDIA/cuda-python&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;NVIDIA/cuda-python&lt;/a&gt;
&lt;/h1&gt;&lt;h1 id=&#34;cuda-python&#34;&gt;cuda-python
&lt;/h1&gt;&lt;p&gt;CUDA Python is the home for accessing NVIDIA’s CUDA platform from Python. It consists of multiple components:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://nvidia.github.io/cuda-python/cuda-core/latest&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;cuda.core&lt;/a&gt;: Pythonic access to CUDA Runtime and other core functionalities&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://nvidia.github.io/cuda-python/cuda-bindings/latest&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;cuda.bindings&lt;/a&gt;: Low-level Python bindings to CUDA C APIs&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://nvidia.github.io/cccl/cuda_cooperative/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;cuda.cooperative&lt;/a&gt;: A Python package providing CCCL&amp;rsquo;s reusable block-wide and warp-wide &lt;em&gt;device&lt;/em&gt; primitives for use within Numba CUDA kernels&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://nvidia.github.io/cccl/cuda_parallel/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;cuda.parallel&lt;/a&gt;: A Python package for easy access to CCCL&amp;rsquo;s highly efficient and customizable parallel algorithms, like &lt;code&gt;sort&lt;/code&gt;, &lt;code&gt;scan&lt;/code&gt;, &lt;code&gt;reduce&lt;/code&gt;, &lt;code&gt;transform&lt;/code&gt;, etc, that are callable on the &lt;em&gt;host&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://nvidia.github.io/numba-cuda/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;numba.cuda&lt;/a&gt;: Numba&amp;rsquo;s target for CUDA GPU programming by directly compiling a restricted subset of Python code into CUDA kernels and device functions following the CUDA execution model.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For access to NVIDIA CPU &amp;amp; GPU Math Libraries, please refer to &lt;a class=&#34;link&#34; href=&#34;https://docs.nvidia.com/cuda/nvmath-python/latest&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;nvmath-python&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;CUDA Python is currently undergoing an overhaul to improve existing and bring up new components. All of the previously available functionalities from the &lt;code&gt;cuda-python&lt;/code&gt; package will continue to be available, please refer to the &lt;a class=&#34;link&#34; href=&#34;https://nvidia.github.io/cuda-python/cuda-bindings/latest&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;cuda.bindings&lt;/a&gt; documentation for installation guide and further detail.&lt;/p&gt;
&lt;h2 id=&#34;cuda-python-as-a-metapackage&#34;&gt;cuda-python as a metapackage
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;cuda-python&lt;/code&gt; is being re-structured to become a metapackage that contains a collection of subpackages. Each subpackage is versioned independently, allowing installation of each component as needed.&lt;/p&gt;
&lt;h3 id=&#34;subpackage-cudacore&#34;&gt;Subpackage: &lt;code&gt;cuda.core&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;The &lt;code&gt;cuda.core&lt;/code&gt; package offers idiomatic, pythonic access to CUDA Runtime and other functionalities.&lt;/p&gt;
&lt;p&gt;The goals are to&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Provide &lt;strong&gt;idiomatic (&amp;ldquo;pythonic&amp;rdquo;)&lt;/strong&gt; access to CUDA Driver, Runtime, and JIT compiler toolchain&lt;/li&gt;
&lt;li&gt;Focus on &lt;strong&gt;developer productivity&lt;/strong&gt; by ensuring end-to-end CUDA development can be performed quickly and entirely in Python&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Avoid homegrown&lt;/strong&gt; Python abstractions for CUDA for new Python GPU libraries starting from scratch&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ease&lt;/strong&gt; developer &lt;strong&gt;burden of maintaining&lt;/strong&gt; and catching up with latest CUDA features&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Flatten the learning curve&lt;/strong&gt; for current and future generations of CUDA developers&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;subpackage-cudabindings&#34;&gt;Subpackage: &lt;code&gt;cuda.bindings&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;The &lt;code&gt;cuda.bindings&lt;/code&gt; package is a standard set of low-level interfaces, providing full coverage of and access to the CUDA host APIs from Python.&lt;/p&gt;
&lt;p&gt;The list of available interfaces are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CUDA Driver&lt;/li&gt;
&lt;li&gt;CUDA Runtime&lt;/li&gt;
&lt;li&gt;NVRTC&lt;/li&gt;
&lt;li&gt;nvJitLink&lt;/li&gt;
&lt;li&gt;NVVM&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        
    </channel>
</rss>
