Buckets:
| import{s as Kt,n as el,o as tl}from"../chunks/scheduler.f3b1e791.js";import{S as ll,i as nl,e as a,s as i,c as d,h as il,a as r,d as l,b as s,f as qt,g as p,j as o,k as kt,l as sl,m as n,n as c,t as h,o as u,p as M}from"../chunks/index.023a9934.js";import{C as al}from"../chunks/CopyLLMTxtMenu.c780467c.js";import{C as y}from"../chunks/CodeBlock.fc650646.js";import{H as m,E as rl}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.fb377ec3.js";function dl($t){let b,Te,fe,xe,T,we,x,ke,w,$e,f,Jt=`<p>The <a href="writing-kernels#quick-install">install script</a> automates | |
| the Nix and kernel-builder setup described below. Use these manual | |
| instructions if you prefer step-by-step control.</p>`,Je,k,Ue,$,Ut=`The kernel builder uses Nix for building kernels. You can build or | |
| run the kernels directly if you have Nix installed on your system. | |
| We recommend installing Nix in the following way:`,je,J,jt=`<li>Linux: use the <a href="https://nixos.org/download/" rel="nofollow">official Nix installer</a>.</li> <li>macOS: use the <a href="https://docs.determinate.systems/determinate-nix/" rel="nofollow">Determinate Nix installer</a>. | |
| In addition, Xcode 16.x is currently required to build kernels.</li>`,Ce,U,Ie,j,Ct=`Since the kernel builder depends on many packages (e.g. every supported | |
| PyTorch version), it is recommended to enable the huggingface cache | |
| to avoid expensive rebuilds.`,Ge,C,It="To use the cache, you can either install cachix and configure it:",ve,I,Ne,G,Gt="Or run it once without installing cachix permanently:",Ze,v,We,N,He,Z,vt=`The kernel builder also provides Nix development shells with all Torch | |
| and CUDA/ROCm dependencies needed to develop kernels (see below). If | |
| you want to test your kernels inside a Nix development shell and you | |
| are not using NixOS, <a href="https://danieldk.eu/Nix-CUDA-on-non-NixOS-systems#make-runopengl-driverlib-and-symlink-the-driver-library" rel="nofollow">make sure that the CUDA driver is visible</a> to Torch.`,Ve,W,Be,H,Nt=`The easiest way to start a new kernel is using the <code>kernel-builder init</code> | |
| subcommand, which is discussed in <a href="writing-kernels">Writing Kernels</a>. | |
| The commands discussed in the following sections will also work on | |
| existing kernel sources that have <code>build.toml</code>/<code>flake.nix</code>.`,Ee,V,Le,B,Zt=`A kernel can be built with the <code>kernel-builder build-and-copy</code> command. | |
| For example:`,Ye,E,Se,L,Wt=`The <code>-L</code> option prints out build logs in the terminal, which can be handy | |
| for monitoring the build. The compiled kernel will then be in the local | |
| <code>build/</code> directory.`,ze,Y,Re,S,Ht=`<code>kernel-builder</code> provides shells for developing kernels. In such a shell, | |
| all required dependencies are available, as well as <code>kernel-builder</code> for generating | |
| project files. For example:`,Qe,z,Ae,R,Vt=`If you want to test the kernel as a Python package, you can do so. | |
| <code>kernel-builder devshell</code> will automatically create a virtual environment in | |
| the <code>.venv</code> and activate it. You can install the kernel as a regular | |
| Python package in this virtual environment:`,Xe,Q,Fe,A,Bt=`Development shells are available for every build configuration. For | |
| instance, you can get a Torch 2.11 development shell for ROCm kernels | |
| using:`,De,X,_e,F,Et=`For an editor-driven workflow with <code>direnv</code> activating the devshell on | |
| <code>cd</code>, see <a href="./ide-setup">IDE Setup</a>.`,Oe,D,Lt=`You can list the variants that the kernel supports with the <code>list-variants</code> | |
| subcommand:`,Pe,_,qe,O,Ke,P,Yt=`You can also start a test shell. This will give you a Python interpreter | |
| with the kernel in Python’s search path. This makes it more convenient to run | |
| tests:`,et,q,tt,K,St=`<code>testshell</code> also supports the <code>--variant</code> option, so you can test a particular | |
| kernel variant.`,lt,ee,nt,te,zt=`You can add test dependencies to a development or testing shell. Adapt | |
| the kernel’s <code>flake.nix</code> to use the <code>pythonCheckInputs</code> option:`,it,le,st,ne,Rt='The available packages can be found on <a href="https://search.nixos.org/packages?channel=25.05&query=python312Packages" rel="nofollow">search.nixos.org</a>.',at,ie,Qt=`Keep in mind that these additional dependencies will only be available to | |
| the Nix shells, not the final kernel uploaded to the Hub.`,rt,se,dt,ae,At=`Finally, when you are ready to make a kernel release, you can build and | |
| upload a kernel to the Hub:`,pt,re,ot,g,Xt=`<p>Uploads go to a <code>kernel</code>-type Hub repository (the first-class kernel | |
| repository type). The owning user or org must have kernel-creation | |
| access. Request it from | |
| <a href="https://huggingface.co/settings/account" rel="nofollow">huggingface.co/settings/account</a> | |
| (“Request Kernels Creation”).</p>`,ct,de,Ft=`Aside from building and uploading the kernel itself, this will also fill | |
| the card template and upload it as <code>README.md</code> to the Hub if the card | |
| template is provided in the source repository as <code>CARD.md</code>.`,ht,pe,Dt=`The repository to upload to is determined by the <code>repo-id</code> and <code>version</code> | |
| fields in <code>build.toml</code>. For example, with the following <code>build.toml</code>, the | |
| kernel will be uploaded to the repository <code>kernels-community/flash-attn4</code> | |
| in the <code>v1</code> version branch:`,ut,oe,Mt,ce,_t=`See <a href="writing-kernels">Writing Kernels</a> for more details on the <code>build.toml</code> | |
| format.`,mt,he,yt,ue,Ot=`The kernel’s dependencies are fully pinned down in the <code>flake.lock</code> that | |
| is shipped with the kernel. We periodically release new versions of the | |
| build toolchain that includes bug fixes and supports newer Torch and compute backend | |
| versions. To update the kernel build toolchain, run <code>nix flake update</code> | |
| in the kernel directory:`,bt,Me,ft,me,gt,ye,Pt=`<code>kernel-builder</code> verifies that a kernel can be | |
| imported with the <a href="https://github.com/huggingface/kernels" rel="nofollow"><code>kernels</code></a> | |
| package. This check can be disabled by passing <code>doGetKernelCheck = false</code> | |
| to <code>genKernelFlakeOutputs</code>. <strong>Warning:</strong> it is strongly recommended to keep | |
| this check enabled, as it is one of the checks that validates that a kernel | |
| is compliant. This option is primarily intended for kernels with | |
| <code>triton.autotune</code> decorators, which can fail because there is no GPU available | |
| in the build sandbox.`,Tt,be,xt,ge,wt;return T=new al({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),x=new m({props:{title:"Using the kernel builder with Nix",local:"using-the-kernel-builder-with-nix",headingTag:"h1"}}),w=new m({props:{title:"Installation",local:"installation",headingTag:"h2"}}),k=new m({props:{title:"Installing Nix",local:"installing-nix",headingTag:"h3"}}),U=new m({props:{title:"Using the Hugging Face binary cache",local:"using-the-hugging-face-binary-cache",headingTag:"h3"}}),I=new y({props:{code:"JTIzJTIwSW5zdGFsbCUyMGNhY2hpeCUyMGFuZCUyMGNvbmZpZ3VyZSUyMHRoZSUyMGNhY2hlJTBBY2FjaGl4JTIwdXNlJTIwaHVnZ2luZ2ZhY2U=",highlighted:`<span class="hljs-comment"># Install cachix and configure the cache</span> | |
| cachix use huggingface`,lang:"bash",wrap:!1}}),v=new y({props:{code:"JTIzJTIwVXNlJTIwY2FjaGl4JTIwd2l0aG91dCUyMGluc3RhbGxpbmclMjBpdCUwQW5peCUyMHJ1biUyMG5peHBrZ3MlMjNjYWNoaXglMjAtLSUyMHVzZSUyMGh1Z2dpbmdmYWNl",highlighted:`<span class="hljs-comment"># Use cachix without installing it</span> | |
| nix run nixpkgs<span class="hljs-comment">#cachix -- use huggingface</span>`,lang:"bash",wrap:!1}}),N=new m({props:{title:"GPU library configuration",local:"gpu-library-configuration",headingTag:"h3"}}),W=new m({props:{title:"Getting started",local:"getting-started",headingTag:"h2"}}),V=new m({props:{title:"Building a kernel",local:"building-a-kernel",headingTag:"h2"}}),E=new y({props:{code:"Y2QlMjBleGFtcGxlcyUyRnJlbHUlMEFrZXJuZWwtYnVpbGRlciUyMGJ1aWxkLWFuZC1jb3B5JTIwLUw=",highlighted:`<span class="hljs-built_in">cd</span> examples/relu | |
| kernel-builder build-and-copy -L`,lang:"bash",wrap:!1}}),Y=new m({props:{title:"Shell for local development",local:"shell-for-local-development",headingTag:"h2"}}),z=new y({props:{code:"JTI0JTIwa2VybmVsLWJ1aWxkZXIlMjBkZXZzaGVsbCUwQSUyMyUyMEElMjBkZXZzaGVsbCUyMGlzJTIwb3BlbmVkJTIwaW4lMjB3aGljaCUyMHlvdSUyMGNhbiUyMHJ1biUyMHRoZSUyMGZvbGxvd2luZyUyMGNvbW1hbmRzJTNBJTBBJTI0JTIwa2VybmVsLWJ1aWxkZXIlMjBjcmVhdGUtcHlwcm9qZWN0JTBBJTI0JTIwY21ha2UlMjAtQiUyMGJ1aWxkLWV4dCUwQSUyNCUyMGNtYWtlJTIwLS1idWlsZCUyMGJ1aWxkLWV4dA==",highlighted:`$ kernel-builder devshell | |
| <span class="hljs-comment"># A devshell is opened in which you can run the following commands:</span> | |
| $ kernel-builder create-pyproject | |
| $ cmake -B build-ext | |
| $ cmake --build build-ext`,lang:"bash",wrap:!1}}),Q=new y({props:{code:"JTI0JTIwa2VybmVsLWJ1aWxkZXIlMjBkZXZzaGVsbCUwQSUyNCUyMGtlcm5lbC1idWlsZGVyJTIwY3JlYXRlLXB5cHJvamVjdCUwQSUyNCUyMHBpcCUyMGluc3RhbGwlMjAtLW5vLWJ1aWxkLWlzb2xhdGlvbiUyMC1lJTIwLg==",highlighted:`$ kernel-builder devshell | |
| $ kernel-builder create-pyproject | |
| $ pip install --no-build-isolation -e .`,lang:"bash",wrap:!1}}),X=new y({props:{code:"JTI0JTIwcm0lMjAtcmYlMjAudmVudiUyMCUyMCUyMyUyMFJlbW92ZSUyMGV4aXN0aW5nJTIwdmVudiUyMGlmJTIwYW55LiUwQSUyNCUyMGtlcm5lbC1idWlsZGVyJTIwZGV2c2hlbGwlMjAtLXZhcmlhbnQlMjB0b3JjaDIxMS1jeHgxMS1yb2NtNzEteDg2XzY0LWxpbnV4",highlighted:`$ <span class="hljs-built_in">rm</span> -rf .venv <span class="hljs-comment"># Remove existing venv if any.</span> | |
| $ kernel-builder devshell --variant torch211-cxx11-rocm71-x86_64-linux`,lang:"bash",wrap:!1}}),_=new y({props:{code:"JTI0JTIwa2VybmVsLWJ1aWxkZXIlMjBsaXN0LXZhcmlhbnRzJTBBdG9yY2gyOS1jeHgxMS1jdTEyOS14ODZfNjQtbGludXglMEF0b3JjaDIxMC1jeHgxMS1jdTEyNi14ODZfNjQtbGludXglMEF0b3JjaDIxMC1jeHgxMS1jdTEyOC14ODZfNjQtbGludXglMEF0b3JjaDIxMC1jeHgxMS1jdTEzMC14ODZfNjQtbGludXglMEF0b3JjaDIxMC1jeHgxMS1yb2NtNzAteDg2XzY0LWxpbnV4JTBBdG9yY2gyMTAtY3h4MTEtcm9jbTcxLXg4Nl82NC1saW51eCUwQXRvcmNoMjEwLWN4eDExLWNwdS14ODZfNjQtbGludXglMEF0b3JjaDIxMC1jeHgxMS14cHUyMDI1My14ODZfNjQtbGludXglMEF0b3JjaDIxMS1jeHgxMS1jcHUteDg2XzY0LWxpbnV4JTBBdG9yY2gyMTEtY3h4MTEtY3UxMjYteDg2XzY0LWxpbnV4JTBBdG9yY2gyMTEtY3h4MTEtY3UxMjgteDg2XzY0LWxpbnV4JTBBdG9yY2gyMTEtY3h4MTEtY3UxMzAteDg2XzY0LWxpbnV4JTBBdG9yY2gyMTEtY3h4MTEtcm9jbTcxLXg4Nl82NC1saW51eCUwQXRvcmNoMjExLWN4eDExLXJvY203Mi14ODZfNjQtbGludXglMEF0b3JjaDIxMS1jeHgxMS14cHUyMDI1My14ODZfNjQtbGludXg=",highlighted:`$ kernel-builder list-variants | |
| torch29-cxx11-cu129-x86_64-linux | |
| torch210-cxx11-cu126-x86_64-linux | |
| torch210-cxx11-cu128-x86_64-linux | |
| torch210-cxx11-cu130-x86_64-linux | |
| torch210-cxx11-rocm70-x86_64-linux | |
| torch210-cxx11-rocm71-x86_64-linux | |
| torch210-cxx11-cpu-x86_64-linux | |
| torch210-cxx11-xpu20253-x86_64-linux | |
| torch211-cxx11-cpu-x86_64-linux | |
| torch211-cxx11-cu126-x86_64-linux | |
| torch211-cxx11-cu128-x86_64-linux | |
| torch211-cxx11-cu130-x86_64-linux | |
| torch211-cxx11-rocm71-x86_64-linux | |
| torch211-cxx11-rocm72-x86_64-linux | |
| torch211-cxx11-xpu20253-x86_64-linux`,lang:"bash",wrap:!1}}),O=new m({props:{title:"Shell for testing a kernel",local:"shell-for-testing-a-kernel",headingTag:"h2"}}),q=new y({props:{code:"Y2QlMjBleGFtcGxlcyUyRnJlbHUlMEFrZXJuZWwtYnVpbGRlciUyMHRlc3RzaGVsbCUwQXB5dGhvbiUyMC1tJTIwcHl0ZXN0JTIwdGVzdHM=",highlighted:`<span class="hljs-built_in">cd</span> examples/relu | |
| kernel-builder testshell | |
| python -m pytest tests`,lang:"bash",wrap:!1}}),ee=new m({props:{title:"Adding test dependencies to development shells",local:"adding-test-dependencies-to-development-shells",headingTag:"h2"}}),le=new y({props:{code:"JTdCJTBBJTIwJTIwZGVzY3JpcHRpb24lMjAlM0QlMjAlMjJGbGFrZSUyMGZvciUyMG15JTIwa2VybmVsJTIyJTNCJTBBJTBBJTIwJTIwaW5wdXRzJTIwJTNEJTIwJTdCJTBBJTIwJTIwJTIwJTIwYnVpbGRlci51cmwlMjAlM0QlMjAlMjJnaXRodWIlM0FodWdnaW5nZmFjZSUyRmtlcm5lbHMlMjIlM0IlMEElMjAlMjAlN0QlM0IlMEElMEElMjAlMjBvdXRwdXRzJTIwJTNEJTBBJTIwJTIwJTIwJTIwJTdCJTBBJTIwJTIwJTIwJTIwJTIwJTIwc2VsZiUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMGJ1aWxkZXIlMkMlMEElMjAlMjAlMjAlMjAlN0QlM0ElMEElMjAlMjAlMjAlMjBidWlsZGVyLmxpYi5nZW5LZXJuZWxGbGFrZU91dHB1dHMlMjAlN0IlMEElMjAlMjAlMjAlMjAlMjAlMjBpbmhlcml0JTIwc2VsZiUzQiUwQSUyMCUyMCUyMCUyMCUyMCUyMHBhdGglMjAlM0QlMjAuJTJGLiUzQiUwQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMyUyMFRoZSUyMGVpbm9wcyUyMGFuZCUyMG51bXB5JTIwdGVzdCUyMGRlcGVuZGVuY2llcyUyMGFyZSUyMGFkZGVkJTIwaGVyZSUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMHB5dGhvbkNoZWNrSW5wdXRzJTIwJTNEJTIwcGtncyUzQSUyMHdpdGglMjBwa2dzJTNCJTIwJTVCJTIwbnVtcHklMjAlNUQlM0IlMEElMjAlMjAlMjAlMjAlN0QlM0IlMEElN0Q=",highlighted:`{ | |
| <span class="hljs-attr">description</span> = <span class="hljs-string">"Flake for my kernel"</span>; | |
| <span class="hljs-attr">inputs</span> = { | |
| builder.<span class="hljs-attr">url</span> = <span class="hljs-string">"github:huggingface/kernels"</span>; | |
| }; | |
| <span class="hljs-attr">outputs</span> = | |
| { | |
| self, | |
| builder, | |
| }: | |
| builder.lib.genKernelFlakeOutputs { | |
| <span class="hljs-keyword">inherit</span> self; | |
| <span class="hljs-attr">path</span> = ./.; | |
| <span class="hljs-comment"># The einops and numpy test dependencies are added here:</span> | |
| <span class="hljs-attr">pythonCheckInputs</span> = pkgs: <span class="hljs-keyword">with</span> pkgs; [ numpy ]; | |
| }; | |
| }`,lang:"nix",wrap:!1}}),se=new m({props:{title:"Uploading your kernel to the Hub",local:"uploading-your-kernel-to-the-hub",headingTag:"h2"}}),re=new y({props:{code:"JTI0JTIwY2QlMjBteWtlcm5lbCUwQSUyNCUyMGtlcm5lbC1idWlsZGVyJTIwYnVpbGQtYW5kLXVwbG9hZA==",highlighted:`$ <span class="hljs-built_in">cd</span> mykernel | |
| $ kernel-builder build-and-upload`,lang:"bash",wrap:!1}}),oe=new y({props:{code:"JTVCZ2VuZXJhbCU1RCUwQSUyMyUyMC4uLiUwQXZlcnNpb24lMjAlM0QlMjAxJTBBJTBBJTVCZ2VuZXJhbC5odWIlNUQlMEFyZXBvLWlkJTIwJTNEJTIwJTIya2VybmVscy1jb21tdW5pdHklMkZmbGFzaC1hdHRuNCUyMg==",highlighted:`<span class="hljs-section">[general]</span> | |
| <span class="hljs-comment"># ...</span> | |
| <span class="hljs-attr">version</span> = <span class="hljs-number">1</span> | |
| <span class="hljs-section">[general.hub]</span> | |
| <span class="hljs-attr">repo-id</span> = <span class="hljs-string">"kernels-community/flash-attn4"</span>`,lang:"toml",wrap:!1}}),he=new m({props:{title:"Updating the kernel build toolchain",local:"updating-the-kernel-build-toolchain",headingTag:"h2"}}),Me=new y({props:{code:"JUUyJTlEJUFGJTIwbml4JTIwZmxha2UlMjB1cGRhdGUlMEElRTIlODAlQTIlMjBBZGRlZCUyMGlucHV0JTIwJ2tlcm5lbC1idWlsZGVyJyUzQSUwQSUyMCUyMCUyMCUyMCdnaXRodWIlM0FodWdnaW5nZmFjZSUyRmtlcm5lbHMlMkY4YWQ4YTUwOTRmMWIzYzQyNWY3MDkwMDY5OWVkNjkwZDY1ZDg3OGMzJTNGbmFySGFzaCUzRHNoYTI1Ni1tOHRCbnRDSWxIJTJGclk0QmNJdjVYNSUyNTJCZHRnU1MxeVFpODgzQ28lMjUyQmo1Y3VkSSUyNTNEJyUyMCgyMDI2LTA0LTA5KSUwQSVFMiU4MCVBMiUyMEFkZGVkJTIwaW5wdXQlMjAna2VybmVsLWJ1aWxkZXIlMkZmbGFrZS1jb21wYXQnJTNBJTBBJTIwJTIwJTIwJTIwJ2dpdGh1YiUzQWVkb2xzdHJhJTJGZmxha2UtY29tcGF0JTJGNWVkZjExYzQ0YmM3OGEwZDMzNGY2MzM0Y2RhZjdkNjBkNzMyZGFhYiUzRm5hckhhc2glM0RzaGEyNTYtdk5wVVNwRjVOdXc4eHZETGoyS0N3d2tzSWJqdWEyTFpDcWhWMUxOUkRucyUyNTNEJyUyMCgyMDI1LTEyLTI5KSUwQSVFMiU4MCVBMiUyMEFkZGVkJTIwaW5wdXQlMjAna2VybmVsLWJ1aWxkZXIlMkZmbGFrZS11dGlscyclM0ElMEElMjAlMjAlMjAlMjAnZ2l0aHViJTNBbnVtdGlkZSUyRmZsYWtlLXV0aWxzJTJGMTE3MDdkYzJmNjE4ZGQ1NGNhODczOWIzMDllYzRmYzAyNGRlNTc4YiUzRm5hckhhc2glM0RzaGEyNTYtbDBLRmc1SGpyc2ZzTyUyRkpwRyUyNTJCcjdmUnJxbTEya3pGSHlVSHFIQ1ZwTU1iSSUyNTNEJyUyMCgyMDI0LTExLTEzKSUwQSVFMiU4MCVBMiUyMEFkZGVkJTIwaW5wdXQlMjAna2VybmVsLWJ1aWxkZXIlMkZmbGFrZS11dGlscyUyRnN5c3RlbXMnJTNBJTBBJTIwJTIwJTIwJTIwJ2dpdGh1YiUzQW5peC1zeXN0ZW1zJTJGZGVmYXVsdCUyRmRhNjcwOTZhM2I5YmY1NmE5MWQxNjkwMTI5M2U1MWJhNWI0OWEyN2UlM0ZuYXJIYXNoJTNEc2hhMjU2LVZ5MXJxNUFhUnVMek94Y3Q4bno0VDZ3bGd5VVI3ekxVMzA5azltQkM3NjglMjUzRCclMjAoMjAyMy0wNC0wOSklMEElRTIlODAlQTIlMjBBZGRlZCUyMGlucHV0JTIwJ2tlcm5lbC1idWlsZGVyJTJGbml4cGtncyclM0ElMEElMjAlMjAlMjAlMjAnZ2l0aHViJTNBTml4T1MlMkZuaXhwa2dzJTJGMmY0ZmQ1ZTFhYmY5YmFjOGMxZDIyNzUwYzcwMWE3YTVlNmI1MjRjNiUzRm5hckhhc2glM0RzaGEyNTYtTWg2YkxjWUFjRU5CQVprM1JvTVBNRkNHR01abWZhR01FUkU0c2laT2dQNCUyNTNEJyUyMCgyMDI2LTAzLTMxKSUwQSVFMiU4MCVBMiUyMEFkZGVkJTIwaW5wdXQlMjAna2VybmVsLWJ1aWxkZXIlMkZydXN0LW92ZXJsYXknJTNBJTBBJTIwJTIwJTIwJTIwJ2dpdGh1YiUzQW94YWxpY2ElMkZydXN0LW92ZXJsYXklMkY5NjJhMDkzNGQwZTMyZjQyZDFiNWU0OTE4NmY5NTk1ZjliMTc4ZDJkJTNGbmFySGFzaCUzRHNoYTI1Ni1KTWREWW4wRiUyNTJCc3dZQklMbHBDZUhEYkNTeXpxa2VTR054WiUyRlE1SjU4NGpNJTI1M0QnJTIwKDIwMjYtMDMtMzEpJTBBJUUyJTgwJUEyJTIwQWRkZWQlMjBpbnB1dCUyMCdrZXJuZWwtYnVpbGRlciUyRnJ1c3Qtb3ZlcmxheSUyRm5peHBrZ3MnJTNBJTBBJTIwJTIwJTIwJTIwZm9sbG93cyUyMCdrZXJuZWwtYnVpbGRlciUyRm5peHBrZ3Mn",highlighted:`❯ nix flake update | |
| • Added input <span class="hljs-string">'kernel-builder'</span>: | |
| <span class="hljs-string">'github:huggingface/kernels/8ad8a5094f1b3c425f70900699ed690d65d878c3?narHash=sha256-m8tBntCIlH/rY4BcIv5X5%2BdtgSS1yQi883Co%2Bj5cudI%3D'</span> (2026-04-09) | |
| • Added input <span class="hljs-string">'kernel-builder/flake-compat'</span>: | |
| <span class="hljs-string">'github:edolstra/flake-compat/5edf11c44bc78a0d334f6334cdaf7d60d732daab?narHash=sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns%3D'</span> (2025-12-29) | |
| • Added input <span class="hljs-string">'kernel-builder/flake-utils'</span>: | |
| <span class="hljs-string">'github:numtide/flake-utils/11707dc2f618dd54ca8739b309ec4fc024de578b?narHash=sha256-l0KFg5HjrsfsO/JpG%2Br7fRrqm12kzFHyUHqHCVpMMbI%3D'</span> (2024-11-13) | |
| • Added input <span class="hljs-string">'kernel-builder/flake-utils/systems'</span>: | |
| <span class="hljs-string">'github:nix-systems/default/da67096a3b9bf56a91d16901293e51ba5b49a27e?narHash=sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768%3D'</span> (2023-04-09) | |
| • Added input <span class="hljs-string">'kernel-builder/nixpkgs'</span>: | |
| <span class="hljs-string">'github:NixOS/nixpkgs/2f4fd5e1abf9bac8c1d22750c701a7a5e6b524c6?narHash=sha256-Mh6bLcYAcENBAZk3RoMPMFCGGMZmfaGMERE4siZOgP4%3D'</span> (2026-03-31) | |
| • Added input <span class="hljs-string">'kernel-builder/rust-overlay'</span>: | |
| <span class="hljs-string">'github:oxalica/rust-overlay/962a0934d0e32f42d1b5e49186f9595f9b178d2d?narHash=sha256-JMdDYn0F%2BswYBILlpCeHDbCSyzqkeSGNxZ/Q5J584jM%3D'</span> (2026-03-31) | |
| • Added input <span class="hljs-string">'kernel-builder/rust-overlay/nixpkgs'</span>: | |
| follows <span class="hljs-string">'kernel-builder/nixpkgs'</span>`,lang:"bash",wrap:!1}}),me=new m({props:{title:"Skipping the get_kernel check",local:"skipping-the-getkernel-check",headingTag:"h2"}}),be=new rl({props:{source:"https://github.com/huggingface/kernels/blob/main/docs/source/builder/build.md"}}),{c(){b=a("meta"),Te=i(),fe=a("p"),xe=i(),d(T.$$.fragment),we=i(),d(x.$$.fragment),ke=i(),d(w.$$.fragment),$e=i(),f=a("blockquote"),f.innerHTML=Jt,Je=i(),d(k.$$.fragment),Ue=i(),$=a("p"),$.textContent=Ut,je=i(),J=a("ul"),J.innerHTML=jt,Ce=i(),d(U.$$.fragment),Ie=i(),j=a("p"),j.textContent=Ct,Ge=i(),C=a("p"),C.textContent=It,ve=i(),d(I.$$.fragment),Ne=i(),G=a("p"),G.textContent=Gt,Ze=i(),d(v.$$.fragment),We=i(),d(N.$$.fragment),He=i(),Z=a("p"),Z.innerHTML=vt,Ve=i(),d(W.$$.fragment),Be=i(),H=a("p"),H.innerHTML=Nt,Ee=i(),d(V.$$.fragment),Le=i(),B=a("p"),B.innerHTML=Zt,Ye=i(),d(E.$$.fragment),Se=i(),L=a("p"),L.innerHTML=Wt,ze=i(),d(Y.$$.fragment),Re=i(),S=a("p"),S.innerHTML=Ht,Qe=i(),d(z.$$.fragment),Ae=i(),R=a("p"),R.innerHTML=Vt,Xe=i(),d(Q.$$.fragment),Fe=i(),A=a("p"),A.textContent=Bt,De=i(),d(X.$$.fragment),_e=i(),F=a("p"),F.innerHTML=Et,Oe=i(),D=a("p"),D.innerHTML=Lt,Pe=i(),d(_.$$.fragment),qe=i(),d(O.$$.fragment),Ke=i(),P=a("p"),P.textContent=Yt,et=i(),d(q.$$.fragment),tt=i(),K=a("p"),K.innerHTML=St,lt=i(),d(ee.$$.fragment),nt=i(),te=a("p"),te.innerHTML=zt,it=i(),d(le.$$.fragment),st=i(),ne=a("p"),ne.innerHTML=Rt,at=i(),ie=a("p"),ie.textContent=Qt,rt=i(),d(se.$$.fragment),dt=i(),ae=a("p"),ae.textContent=At,pt=i(),d(re.$$.fragment),ot=i(),g=a("blockquote"),g.innerHTML=Xt,ct=i(),de=a("p"),de.innerHTML=Ft,ht=i(),pe=a("p"),pe.innerHTML=Dt,ut=i(),d(oe.$$.fragment),Mt=i(),ce=a("p"),ce.innerHTML=_t,mt=i(),d(he.$$.fragment),yt=i(),ue=a("p"),ue.innerHTML=Ot,bt=i(),d(Me.$$.fragment),ft=i(),d(me.$$.fragment),gt=i(),ye=a("p"),ye.innerHTML=Pt,Tt=i(),d(be.$$.fragment),xt=i(),ge=a("p"),this.h()},l(e){const t=il("svelte-u9bgzb",document.head);b=r(t,"META",{name:!0,content:!0}),t.forEach(l),Te=s(e),fe=r(e,"P",{}),qt(fe).forEach(l),xe=s(e),p(T.$$.fragment,e),we=s(e),p(x.$$.fragment,e),ke=s(e),p(w.$$.fragment,e),$e=s(e),f=r(e,"BLOCKQUOTE",{class:!0,"data-svelte-h":!0}),o(f)!=="svelte-1sf6dmq"&&(f.innerHTML=Jt),Je=s(e),p(k.$$.fragment,e),Ue=s(e),$=r(e,"P",{"data-svelte-h":!0}),o($)!=="svelte-5zbxl"&&($.textContent=Ut),je=s(e),J=r(e,"UL",{"data-svelte-h":!0}),o(J)!=="svelte-yt841z"&&(J.innerHTML=jt),Ce=s(e),p(U.$$.fragment,e),Ie=s(e),j=r(e,"P",{"data-svelte-h":!0}),o(j)!=="svelte-1gt1gp0"&&(j.textContent=Ct),Ge=s(e),C=r(e,"P",{"data-svelte-h":!0}),o(C)!=="svelte-ephjfc"&&(C.textContent=It),ve=s(e),p(I.$$.fragment,e),Ne=s(e),G=r(e,"P",{"data-svelte-h":!0}),o(G)!=="svelte-vbvwso"&&(G.textContent=Gt),Ze=s(e),p(v.$$.fragment,e),We=s(e),p(N.$$.fragment,e),He=s(e),Z=r(e,"P",{"data-svelte-h":!0}),o(Z)!=="svelte-1edfy9h"&&(Z.innerHTML=vt),Ve=s(e),p(W.$$.fragment,e),Be=s(e),H=r(e,"P",{"data-svelte-h":!0}),o(H)!=="svelte-oshv1y"&&(H.innerHTML=Nt),Ee=s(e),p(V.$$.fragment,e),Le=s(e),B=r(e,"P",{"data-svelte-h":!0}),o(B)!=="svelte-106kaqs"&&(B.innerHTML=Zt),Ye=s(e),p(E.$$.fragment,e),Se=s(e),L=r(e,"P",{"data-svelte-h":!0}),o(L)!=="svelte-mql59w"&&(L.innerHTML=Wt),ze=s(e),p(Y.$$.fragment,e),Re=s(e),S=r(e,"P",{"data-svelte-h":!0}),o(S)!=="svelte-z48w5c"&&(S.innerHTML=Ht),Qe=s(e),p(z.$$.fragment,e),Ae=s(e),R=r(e,"P",{"data-svelte-h":!0}),o(R)!=="svelte-mpebzc"&&(R.innerHTML=Vt),Xe=s(e),p(Q.$$.fragment,e),Fe=s(e),A=r(e,"P",{"data-svelte-h":!0}),o(A)!=="svelte-n51o54"&&(A.textContent=Bt),De=s(e),p(X.$$.fragment,e),_e=s(e),F=r(e,"P",{"data-svelte-h":!0}),o(F)!=="svelte-1txqxl"&&(F.innerHTML=Et),Oe=s(e),D=r(e,"P",{"data-svelte-h":!0}),o(D)!=="svelte-ewx7y5"&&(D.innerHTML=Lt),Pe=s(e),p(_.$$.fragment,e),qe=s(e),p(O.$$.fragment,e),Ke=s(e),P=r(e,"P",{"data-svelte-h":!0}),o(P)!=="svelte-1imq8kt"&&(P.textContent=Yt),et=s(e),p(q.$$.fragment,e),tt=s(e),K=r(e,"P",{"data-svelte-h":!0}),o(K)!=="svelte-m0u3an"&&(K.innerHTML=St),lt=s(e),p(ee.$$.fragment,e),nt=s(e),te=r(e,"P",{"data-svelte-h":!0}),o(te)!=="svelte-1f12544"&&(te.innerHTML=zt),it=s(e),p(le.$$.fragment,e),st=s(e),ne=r(e,"P",{"data-svelte-h":!0}),o(ne)!=="svelte-1yhwali"&&(ne.innerHTML=Rt),at=s(e),ie=r(e,"P",{"data-svelte-h":!0}),o(ie)!=="svelte-1p7pfs6"&&(ie.textContent=Qt),rt=s(e),p(se.$$.fragment,e),dt=s(e),ae=r(e,"P",{"data-svelte-h":!0}),o(ae)!=="svelte-1095wd7"&&(ae.textContent=At),pt=s(e),p(re.$$.fragment,e),ot=s(e),g=r(e,"BLOCKQUOTE",{class:!0,"data-svelte-h":!0}),o(g)!=="svelte-k9g5at"&&(g.innerHTML=Xt),ct=s(e),de=r(e,"P",{"data-svelte-h":!0}),o(de)!=="svelte-12hsqds"&&(de.innerHTML=Ft),ht=s(e),pe=r(e,"P",{"data-svelte-h":!0}),o(pe)!=="svelte-1qvgavi"&&(pe.innerHTML=Dt),ut=s(e),p(oe.$$.fragment,e),Mt=s(e),ce=r(e,"P",{"data-svelte-h":!0}),o(ce)!=="svelte-1bunmp3"&&(ce.innerHTML=_t),mt=s(e),p(he.$$.fragment,e),yt=s(e),ue=r(e,"P",{"data-svelte-h":!0}),o(ue)!=="svelte-1h1noce"&&(ue.innerHTML=Ot),bt=s(e),p(Me.$$.fragment,e),ft=s(e),p(me.$$.fragment,e),gt=s(e),ye=r(e,"P",{"data-svelte-h":!0}),o(ye)!=="svelte-czbbir"&&(ye.innerHTML=Pt),Tt=s(e),p(be.$$.fragment,e),xt=s(e),ge=r(e,"P",{}),qt(ge).forEach(l),this.h()},h(){kt(b,"name","hf:doc:metadata"),kt(b,"content",pl),kt(f,"class","note"),kt(g,"class","note")},m(e,t){sl(document.head,b),n(e,Te,t),n(e,fe,t),n(e,xe,t),c(T,e,t),n(e,we,t),c(x,e,t),n(e,ke,t),c(w,e,t),n(e,$e,t),n(e,f,t),n(e,Je,t),c(k,e,t),n(e,Ue,t),n(e,$,t),n(e,je,t),n(e,J,t),n(e,Ce,t),c(U,e,t),n(e,Ie,t),n(e,j,t),n(e,Ge,t),n(e,C,t),n(e,ve,t),c(I,e,t),n(e,Ne,t),n(e,G,t),n(e,Ze,t),c(v,e,t),n(e,We,t),c(N,e,t),n(e,He,t),n(e,Z,t),n(e,Ve,t),c(W,e,t),n(e,Be,t),n(e,H,t),n(e,Ee,t),c(V,e,t),n(e,Le,t),n(e,B,t),n(e,Ye,t),c(E,e,t),n(e,Se,t),n(e,L,t),n(e,ze,t),c(Y,e,t),n(e,Re,t),n(e,S,t),n(e,Qe,t),c(z,e,t),n(e,Ae,t),n(e,R,t),n(e,Xe,t),c(Q,e,t),n(e,Fe,t),n(e,A,t),n(e,De,t),c(X,e,t),n(e,_e,t),n(e,F,t),n(e,Oe,t),n(e,D,t),n(e,Pe,t),c(_,e,t),n(e,qe,t),c(O,e,t),n(e,Ke,t),n(e,P,t),n(e,et,t),c(q,e,t),n(e,tt,t),n(e,K,t),n(e,lt,t),c(ee,e,t),n(e,nt,t),n(e,te,t),n(e,it,t),c(le,e,t),n(e,st,t),n(e,ne,t),n(e,at,t),n(e,ie,t),n(e,rt,t),c(se,e,t),n(e,dt,t),n(e,ae,t),n(e,pt,t),c(re,e,t),n(e,ot,t),n(e,g,t),n(e,ct,t),n(e,de,t),n(e,ht,t),n(e,pe,t),n(e,ut,t),c(oe,e,t),n(e,Mt,t),n(e,ce,t),n(e,mt,t),c(he,e,t),n(e,yt,t),n(e,ue,t),n(e,bt,t),c(Me,e,t),n(e,ft,t),c(me,e,t),n(e,gt,t),n(e,ye,t),n(e,Tt,t),c(be,e,t),n(e,xt,t),n(e,ge,t),wt=!0},p:el,i(e){wt||(h(T.$$.fragment,e),h(x.$$.fragment,e),h(w.$$.fragment,e),h(k.$$.fragment,e),h(U.$$.fragment,e),h(I.$$.fragment,e),h(v.$$.fragment,e),h(N.$$.fragment,e),h(W.$$.fragment,e),h(V.$$.fragment,e),h(E.$$.fragment,e),h(Y.$$.fragment,e),h(z.$$.fragment,e),h(Q.$$.fragment,e),h(X.$$.fragment,e),h(_.$$.fragment,e),h(O.$$.fragment,e),h(q.$$.fragment,e),h(ee.$$.fragment,e),h(le.$$.fragment,e),h(se.$$.fragment,e),h(re.$$.fragment,e),h(oe.$$.fragment,e),h(he.$$.fragment,e),h(Me.$$.fragment,e),h(me.$$.fragment,e),h(be.$$.fragment,e),wt=!0)},o(e){u(T.$$.fragment,e),u(x.$$.fragment,e),u(w.$$.fragment,e),u(k.$$.fragment,e),u(U.$$.fragment,e),u(I.$$.fragment,e),u(v.$$.fragment,e),u(N.$$.fragment,e),u(W.$$.fragment,e),u(V.$$.fragment,e),u(E.$$.fragment,e),u(Y.$$.fragment,e),u(z.$$.fragment,e),u(Q.$$.fragment,e),u(X.$$.fragment,e),u(_.$$.fragment,e),u(O.$$.fragment,e),u(q.$$.fragment,e),u(ee.$$.fragment,e),u(le.$$.fragment,e),u(se.$$.fragment,e),u(re.$$.fragment,e),u(oe.$$.fragment,e),u(he.$$.fragment,e),u(Me.$$.fragment,e),u(me.$$.fragment,e),u(be.$$.fragment,e),wt=!1},d(e){e&&(l(Te),l(fe),l(xe),l(we),l(ke),l($e),l(f),l(Je),l(Ue),l($),l(je),l(J),l(Ce),l(Ie),l(j),l(Ge),l(C),l(ve),l(Ne),l(G),l(Ze),l(We),l(He),l(Z),l(Ve),l(Be),l(H),l(Ee),l(Le),l(B),l(Ye),l(Se),l(L),l(ze),l(Re),l(S),l(Qe),l(Ae),l(R),l(Xe),l(Fe),l(A),l(De),l(_e),l(F),l(Oe),l(D),l(Pe),l(qe),l(Ke),l(P),l(et),l(tt),l(K),l(lt),l(nt),l(te),l(it),l(st),l(ne),l(at),l(ie),l(rt),l(dt),l(ae),l(pt),l(ot),l(g),l(ct),l(de),l(ht),l(pe),l(ut),l(Mt),l(ce),l(mt),l(yt),l(ue),l(bt),l(ft),l(gt),l(ye),l(Tt),l(xt),l(ge)),l(b),M(T,e),M(x,e),M(w,e),M(k,e),M(U,e),M(I,e),M(v,e),M(N,e),M(W,e),M(V,e),M(E,e),M(Y,e),M(z,e),M(Q,e),M(X,e),M(_,e),M(O,e),M(q,e),M(ee,e),M(le,e),M(se,e),M(re,e),M(oe,e),M(he,e),M(Me,e),M(me,e),M(be,e)}}}const pl='{"title":"Using the kernel builder with Nix","local":"using-the-kernel-builder-with-nix","sections":[{"title":"Installation","local":"installation","sections":[{"title":"Installing Nix","local":"installing-nix","sections":[],"depth":3},{"title":"Using the Hugging Face binary cache","local":"using-the-hugging-face-binary-cache","sections":[],"depth":3},{"title":"GPU library configuration","local":"gpu-library-configuration","sections":[],"depth":3}],"depth":2},{"title":"Getting started","local":"getting-started","sections":[],"depth":2},{"title":"Building a kernel","local":"building-a-kernel","sections":[],"depth":2},{"title":"Shell for local development","local":"shell-for-local-development","sections":[],"depth":2},{"title":"Shell for testing a kernel","local":"shell-for-testing-a-kernel","sections":[],"depth":2},{"title":"Adding test dependencies to development shells","local":"adding-test-dependencies-to-development-shells","sections":[],"depth":2},{"title":"Uploading your kernel to the Hub","local":"uploading-your-kernel-to-the-hub","sections":[],"depth":2},{"title":"Updating the kernel build toolchain","local":"updating-the-kernel-build-toolchain","sections":[],"depth":2},{"title":"Skipping the get_kernel check","local":"skipping-the-getkernel-check","sections":[],"depth":2}],"depth":1}';function ol($t){return tl(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class yl extends ll{constructor(b){super(),nl(this,b,ol,dl,Kt,{})}}export{yl as component}; | |
Xet Storage Details
- Size:
- 27.9 kB
- Xet hash:
- 082dd1b698b9181928b7fc8343a8eefae47a0495f38b8110d418c5faa4efe2ba
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.