Buckets:
| import{s as Ot,n as Pt,o as qt}from"../chunks/scheduler.f3b1e791.js";import{S as Kt,i as el,e as a,s as i,c as d,h as tl,a as r,d as l,b as s,f as _t,g as p,j as M,k as xt,l as ll,m as n,n as o,t as c,o as h,p as u}from"../chunks/index.023a9934.js";import{C as nl}from"../chunks/CopyLLMTxtMenu.d8c1f5b0.js";import{C as y}from"../chunks/CodeBlock.436ee8e3.js";import{H as m,E as il}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.11da6958.js";function sl(wt){let f,Te,fe,ge,g,xe,x,we,w,ke,b,kt=`<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>`,$e,k,Je,$,$t=`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:`,Ue,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>`,je,U,Ce,j,Ut=`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.`,Ie,C,jt="To use the cache, you can either install cachix and configure it:",Ge,I,ve,G,Ct="Or run it once without installing cachix permanently:",Ne,v,Ze,N,We,Z,It=`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,He,V,Gt=`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>.`,Be,H,Ee,B,vt=`A kernel can be built with the <code>kernel-builder build-and-copy</code> command. | |
| For example:`,Ye,E,Le,Y,Nt=`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.`,Se,L,ze,S,Zt=`<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:`,Re,z,Qe,R,Wt=`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:`,Ae,Q,Xe,A,Vt=`Development shells are available for every build configuration. For | |
| instance, you can get a Torch 2.11 development shell for ROCm kernels | |
| using:`,Fe,X,De,F,Ht=`You can list the variants that the kernel supports with the <code>list-variants</code> | |
| subcommand:`,_e,D,Oe,_,Pe,O,Bt=`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:`,qe,P,Ke,q,Et=`<code>testshell</code> also supports the <code>--variant</code> option, so you can test a particular | |
| kernel variant.`,et,K,tt,ee,Yt=`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:`,lt,te,nt,le,Lt='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>.',it,ne,St=`Keep in mind that these additional dependencies will only be available to | |
| the Nix shells, not the final kernel uploaded to the Hub.`,st,ie,at,se,zt=`Finally, when you are ready to make a kernel release, you can build and | |
| upload a kernel to the Hub:`,rt,ae,dt,T,Rt=`<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>`,pt,re,Qt=`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>.`,ot,de,At=`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:`,ct,pe,ht,oe,Xt=`See <a href="writing-kernels">Writing Kernels</a> for more details on the <code>build.toml</code> | |
| format.`,ut,ce,Mt,he,Ft=`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:`,mt,ue,yt,Me,ft,me,Dt=`<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.`,bt,ye,Tt,be,gt;return g=new nl({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`,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>`,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"}}),H=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`,wrap:!1}}),L=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`,wrap:!1}}),Q=new y({props:{code:"JTI0JTIwa2VybmVsLWJ1aWxkZXIlMjBkZXZzaGVsbCUwQSUyNCUyMGtlcm5lbC1idWlsZGVyJTIwY3JlYXRlLXB5cHJvamVjdCUwQSUyNCUyMHBpcCUyMGluc3RhbGwlMjAtLW5vLWJ1aWxkLWlzb2xhdGlvbiUyMC1lJTIwLg==",highlighted:`$ kernel-builder devshell | |
| $ kernel-builder create-pyproject | |
| $ pip install --no-build-isolation -e .`,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`,wrap:!1}}),D=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`,wrap:!1}}),_=new m({props:{title:"Shell for testing a kernel",local:"shell-for-testing-a-kernel",headingTag:"h2"}}),P=new y({props:{code:"Y2QlMjBleGFtcGxlcyUyRnJlbHUlMEFrZXJuZWwtYnVpbGRlciUyMHRlc3RzaGVsbCUwQXB5dGhvbiUyMC1tJTIwcHl0ZXN0JTIwdGVzdHM=",highlighted:`<span class="hljs-built_in">cd</span> examples/relu | |
| kernel-builder testshell | |
| python -m pytest tests`,wrap:!1}}),K=new m({props:{title:"Adding test dependencies to development shells",local:"adding-test-dependencies-to-development-shells",headingTag:"h2"}}),te=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 ]; | |
| }; | |
| }`,wrap:!1}}),ie=new m({props:{title:"Uploading your kernel to the Hub",local:"uploading-your-kernel-to-the-hub",headingTag:"h2"}}),ae=new y({props:{code:"JTI0JTIwY2QlMjBteWtlcm5lbCUwQSUyNCUyMGtlcm5lbC1idWlsZGVyJTIwYnVpbGQtYW5kLXVwbG9hZA==",highlighted:`$ <span class="hljs-built_in">cd</span> mykernel | |
| $ kernel-builder build-and-upload`,wrap:!1}}),pe=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>`,wrap:!1}}),ce=new m({props:{title:"Updating the kernel build toolchain",local:"updating-the-kernel-build-toolchain",headingTag:"h2"}}),ue=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>`,wrap:!1}}),Me=new m({props:{title:"Skipping the get_kernel check",local:"skipping-the-getkernel-check",headingTag:"h2"}}),ye=new il({props:{source:"https://github.com/huggingface/kernels/blob/main/docs/source/builder/build.md"}}),{c(){f=a("meta"),Te=i(),fe=a("p"),ge=i(),d(g.$$.fragment),xe=i(),d(x.$$.fragment),we=i(),d(w.$$.fragment),ke=i(),b=a("blockquote"),b.innerHTML=kt,$e=i(),d(k.$$.fragment),Je=i(),$=a("p"),$.textContent=$t,Ue=i(),J=a("ul"),J.innerHTML=Jt,je=i(),d(U.$$.fragment),Ce=i(),j=a("p"),j.textContent=Ut,Ie=i(),C=a("p"),C.textContent=jt,Ge=i(),d(I.$$.fragment),ve=i(),G=a("p"),G.textContent=Ct,Ne=i(),d(v.$$.fragment),Ze=i(),d(N.$$.fragment),We=i(),Z=a("p"),Z.innerHTML=It,Ve=i(),d(W.$$.fragment),He=i(),V=a("p"),V.innerHTML=Gt,Be=i(),d(H.$$.fragment),Ee=i(),B=a("p"),B.innerHTML=vt,Ye=i(),d(E.$$.fragment),Le=i(),Y=a("p"),Y.innerHTML=Nt,Se=i(),d(L.$$.fragment),ze=i(),S=a("p"),S.innerHTML=Zt,Re=i(),d(z.$$.fragment),Qe=i(),R=a("p"),R.innerHTML=Wt,Ae=i(),d(Q.$$.fragment),Xe=i(),A=a("p"),A.textContent=Vt,Fe=i(),d(X.$$.fragment),De=i(),F=a("p"),F.innerHTML=Ht,_e=i(),d(D.$$.fragment),Oe=i(),d(_.$$.fragment),Pe=i(),O=a("p"),O.textContent=Bt,qe=i(),d(P.$$.fragment),Ke=i(),q=a("p"),q.innerHTML=Et,et=i(),d(K.$$.fragment),tt=i(),ee=a("p"),ee.innerHTML=Yt,lt=i(),d(te.$$.fragment),nt=i(),le=a("p"),le.innerHTML=Lt,it=i(),ne=a("p"),ne.textContent=St,st=i(),d(ie.$$.fragment),at=i(),se=a("p"),se.textContent=zt,rt=i(),d(ae.$$.fragment),dt=i(),T=a("blockquote"),T.innerHTML=Rt,pt=i(),re=a("p"),re.innerHTML=Qt,ot=i(),de=a("p"),de.innerHTML=At,ct=i(),d(pe.$$.fragment),ht=i(),oe=a("p"),oe.innerHTML=Xt,ut=i(),d(ce.$$.fragment),Mt=i(),he=a("p"),he.innerHTML=Ft,mt=i(),d(ue.$$.fragment),yt=i(),d(Me.$$.fragment),ft=i(),me=a("p"),me.innerHTML=Dt,bt=i(),d(ye.$$.fragment),Tt=i(),be=a("p"),this.h()},l(e){const t=tl("svelte-u9bgzb",document.head);f=r(t,"META",{name:!0,content:!0}),t.forEach(l),Te=s(e),fe=r(e,"P",{}),_t(fe).forEach(l),ge=s(e),p(g.$$.fragment,e),xe=s(e),p(x.$$.fragment,e),we=s(e),p(w.$$.fragment,e),ke=s(e),b=r(e,"BLOCKQUOTE",{class:!0,"data-svelte-h":!0}),M(b)!=="svelte-1sf6dmq"&&(b.innerHTML=kt),$e=s(e),p(k.$$.fragment,e),Je=s(e),$=r(e,"P",{"data-svelte-h":!0}),M($)!=="svelte-5zbxl"&&($.textContent=$t),Ue=s(e),J=r(e,"UL",{"data-svelte-h":!0}),M(J)!=="svelte-yt841z"&&(J.innerHTML=Jt),je=s(e),p(U.$$.fragment,e),Ce=s(e),j=r(e,"P",{"data-svelte-h":!0}),M(j)!=="svelte-1gt1gp0"&&(j.textContent=Ut),Ie=s(e),C=r(e,"P",{"data-svelte-h":!0}),M(C)!=="svelte-ephjfc"&&(C.textContent=jt),Ge=s(e),p(I.$$.fragment,e),ve=s(e),G=r(e,"P",{"data-svelte-h":!0}),M(G)!=="svelte-vbvwso"&&(G.textContent=Ct),Ne=s(e),p(v.$$.fragment,e),Ze=s(e),p(N.$$.fragment,e),We=s(e),Z=r(e,"P",{"data-svelte-h":!0}),M(Z)!=="svelte-1edfy9h"&&(Z.innerHTML=It),Ve=s(e),p(W.$$.fragment,e),He=s(e),V=r(e,"P",{"data-svelte-h":!0}),M(V)!=="svelte-oshv1y"&&(V.innerHTML=Gt),Be=s(e),p(H.$$.fragment,e),Ee=s(e),B=r(e,"P",{"data-svelte-h":!0}),M(B)!=="svelte-106kaqs"&&(B.innerHTML=vt),Ye=s(e),p(E.$$.fragment,e),Le=s(e),Y=r(e,"P",{"data-svelte-h":!0}),M(Y)!=="svelte-mql59w"&&(Y.innerHTML=Nt),Se=s(e),p(L.$$.fragment,e),ze=s(e),S=r(e,"P",{"data-svelte-h":!0}),M(S)!=="svelte-z48w5c"&&(S.innerHTML=Zt),Re=s(e),p(z.$$.fragment,e),Qe=s(e),R=r(e,"P",{"data-svelte-h":!0}),M(R)!=="svelte-mpebzc"&&(R.innerHTML=Wt),Ae=s(e),p(Q.$$.fragment,e),Xe=s(e),A=r(e,"P",{"data-svelte-h":!0}),M(A)!=="svelte-n51o54"&&(A.textContent=Vt),Fe=s(e),p(X.$$.fragment,e),De=s(e),F=r(e,"P",{"data-svelte-h":!0}),M(F)!=="svelte-ewx7y5"&&(F.innerHTML=Ht),_e=s(e),p(D.$$.fragment,e),Oe=s(e),p(_.$$.fragment,e),Pe=s(e),O=r(e,"P",{"data-svelte-h":!0}),M(O)!=="svelte-1imq8kt"&&(O.textContent=Bt),qe=s(e),p(P.$$.fragment,e),Ke=s(e),q=r(e,"P",{"data-svelte-h":!0}),M(q)!=="svelte-m0u3an"&&(q.innerHTML=Et),et=s(e),p(K.$$.fragment,e),tt=s(e),ee=r(e,"P",{"data-svelte-h":!0}),M(ee)!=="svelte-1f12544"&&(ee.innerHTML=Yt),lt=s(e),p(te.$$.fragment,e),nt=s(e),le=r(e,"P",{"data-svelte-h":!0}),M(le)!=="svelte-1yhwali"&&(le.innerHTML=Lt),it=s(e),ne=r(e,"P",{"data-svelte-h":!0}),M(ne)!=="svelte-1p7pfs6"&&(ne.textContent=St),st=s(e),p(ie.$$.fragment,e),at=s(e),se=r(e,"P",{"data-svelte-h":!0}),M(se)!=="svelte-1095wd7"&&(se.textContent=zt),rt=s(e),p(ae.$$.fragment,e),dt=s(e),T=r(e,"BLOCKQUOTE",{class:!0,"data-svelte-h":!0}),M(T)!=="svelte-k9g5at"&&(T.innerHTML=Rt),pt=s(e),re=r(e,"P",{"data-svelte-h":!0}),M(re)!=="svelte-12hsqds"&&(re.innerHTML=Qt),ot=s(e),de=r(e,"P",{"data-svelte-h":!0}),M(de)!=="svelte-1qvgavi"&&(de.innerHTML=At),ct=s(e),p(pe.$$.fragment,e),ht=s(e),oe=r(e,"P",{"data-svelte-h":!0}),M(oe)!=="svelte-1bunmp3"&&(oe.innerHTML=Xt),ut=s(e),p(ce.$$.fragment,e),Mt=s(e),he=r(e,"P",{"data-svelte-h":!0}),M(he)!=="svelte-1h1noce"&&(he.innerHTML=Ft),mt=s(e),p(ue.$$.fragment,e),yt=s(e),p(Me.$$.fragment,e),ft=s(e),me=r(e,"P",{"data-svelte-h":!0}),M(me)!=="svelte-czbbir"&&(me.innerHTML=Dt),bt=s(e),p(ye.$$.fragment,e),Tt=s(e),be=r(e,"P",{}),_t(be).forEach(l),this.h()},h(){xt(f,"name","hf:doc:metadata"),xt(f,"content",al),xt(b,"class","note"),xt(T,"class","note")},m(e,t){ll(document.head,f),n(e,Te,t),n(e,fe,t),n(e,ge,t),o(g,e,t),n(e,xe,t),o(x,e,t),n(e,we,t),o(w,e,t),n(e,ke,t),n(e,b,t),n(e,$e,t),o(k,e,t),n(e,Je,t),n(e,$,t),n(e,Ue,t),n(e,J,t),n(e,je,t),o(U,e,t),n(e,Ce,t),n(e,j,t),n(e,Ie,t),n(e,C,t),n(e,Ge,t),o(I,e,t),n(e,ve,t),n(e,G,t),n(e,Ne,t),o(v,e,t),n(e,Ze,t),o(N,e,t),n(e,We,t),n(e,Z,t),n(e,Ve,t),o(W,e,t),n(e,He,t),n(e,V,t),n(e,Be,t),o(H,e,t),n(e,Ee,t),n(e,B,t),n(e,Ye,t),o(E,e,t),n(e,Le,t),n(e,Y,t),n(e,Se,t),o(L,e,t),n(e,ze,t),n(e,S,t),n(e,Re,t),o(z,e,t),n(e,Qe,t),n(e,R,t),n(e,Ae,t),o(Q,e,t),n(e,Xe,t),n(e,A,t),n(e,Fe,t),o(X,e,t),n(e,De,t),n(e,F,t),n(e,_e,t),o(D,e,t),n(e,Oe,t),o(_,e,t),n(e,Pe,t),n(e,O,t),n(e,qe,t),o(P,e,t),n(e,Ke,t),n(e,q,t),n(e,et,t),o(K,e,t),n(e,tt,t),n(e,ee,t),n(e,lt,t),o(te,e,t),n(e,nt,t),n(e,le,t),n(e,it,t),n(e,ne,t),n(e,st,t),o(ie,e,t),n(e,at,t),n(e,se,t),n(e,rt,t),o(ae,e,t),n(e,dt,t),n(e,T,t),n(e,pt,t),n(e,re,t),n(e,ot,t),n(e,de,t),n(e,ct,t),o(pe,e,t),n(e,ht,t),n(e,oe,t),n(e,ut,t),o(ce,e,t),n(e,Mt,t),n(e,he,t),n(e,mt,t),o(ue,e,t),n(e,yt,t),o(Me,e,t),n(e,ft,t),n(e,me,t),n(e,bt,t),o(ye,e,t),n(e,Tt,t),n(e,be,t),gt=!0},p:Pt,i(e){gt||(c(g.$$.fragment,e),c(x.$$.fragment,e),c(w.$$.fragment,e),c(k.$$.fragment,e),c(U.$$.fragment,e),c(I.$$.fragment,e),c(v.$$.fragment,e),c(N.$$.fragment,e),c(W.$$.fragment,e),c(H.$$.fragment,e),c(E.$$.fragment,e),c(L.$$.fragment,e),c(z.$$.fragment,e),c(Q.$$.fragment,e),c(X.$$.fragment,e),c(D.$$.fragment,e),c(_.$$.fragment,e),c(P.$$.fragment,e),c(K.$$.fragment,e),c(te.$$.fragment,e),c(ie.$$.fragment,e),c(ae.$$.fragment,e),c(pe.$$.fragment,e),c(ce.$$.fragment,e),c(ue.$$.fragment,e),c(Me.$$.fragment,e),c(ye.$$.fragment,e),gt=!0)},o(e){h(g.$$.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(H.$$.fragment,e),h(E.$$.fragment,e),h(L.$$.fragment,e),h(z.$$.fragment,e),h(Q.$$.fragment,e),h(X.$$.fragment,e),h(D.$$.fragment,e),h(_.$$.fragment,e),h(P.$$.fragment,e),h(K.$$.fragment,e),h(te.$$.fragment,e),h(ie.$$.fragment,e),h(ae.$$.fragment,e),h(pe.$$.fragment,e),h(ce.$$.fragment,e),h(ue.$$.fragment,e),h(Me.$$.fragment,e),h(ye.$$.fragment,e),gt=!1},d(e){e&&(l(Te),l(fe),l(ge),l(xe),l(we),l(ke),l(b),l($e),l(Je),l($),l(Ue),l(J),l(je),l(Ce),l(j),l(Ie),l(C),l(Ge),l(ve),l(G),l(Ne),l(Ze),l(We),l(Z),l(Ve),l(He),l(V),l(Be),l(Ee),l(B),l(Ye),l(Le),l(Y),l(Se),l(ze),l(S),l(Re),l(Qe),l(R),l(Ae),l(Xe),l(A),l(Fe),l(De),l(F),l(_e),l(Oe),l(Pe),l(O),l(qe),l(Ke),l(q),l(et),l(tt),l(ee),l(lt),l(nt),l(le),l(it),l(ne),l(st),l(at),l(se),l(rt),l(dt),l(T),l(pt),l(re),l(ot),l(de),l(ct),l(ht),l(oe),l(ut),l(Mt),l(he),l(mt),l(yt),l(ft),l(me),l(bt),l(Tt),l(be)),l(f),u(g,e),u(x,e),u(w,e),u(k,e),u(U,e),u(I,e),u(v,e),u(N,e),u(W,e),u(H,e),u(E,e),u(L,e),u(z,e),u(Q,e),u(X,e),u(D,e),u(_,e),u(P,e),u(K,e),u(te,e),u(ie,e),u(ae,e),u(pe,e),u(ce,e),u(ue,e),u(Me,e),u(ye,e)}}}const al='{"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 rl(wt){return qt(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class ul extends Kt{constructor(f){super(),el(this,f,rl,sl,Ot,{})}}export{ul as component}; | |
Xet Storage Details
- Size:
- 27.4 kB
- Xet hash:
- 1859abf439238851da2a4d916343098eec0d7276c46c92b3e49398c9fc8d3ceb
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.