import{s as X,n as j,o as D}from"../chunks/scheduler.f3b1e791.js";import{S as I,i as K,e as h,s as i,c as L,h as V,a as f,d as n,b as s,f as R,g as M,j as C,k as W,l as B,m as a,n as E,t as U,o as S,p as z}from"../chunks/index.023a9934.js";import{C as J}from"../chunks/CopyLLMTxtMenu.ee636735.js";import{H as N,E as Q}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.9b009efe.js";function Y(A){let l,y,g,k,r,v,o,$,u,F="Our goal with the <code>kernels</code> package is manifold:",w,d,O=`<li>Establish a standard way of structuring and building kernels. The
<code>builder</code> component takes kernel source in a pre-defined layout, with
a declarative build configuration, and produces compiled kernels for
a wide matrix of compute backends (e.g., CUDA, ROCM, and XPU), operating
systems, and architectures. The builder also enforces the reproducibility of
the build environment and build steps.</li> <li>Provide a standard way of distributing and loading kernels. Kernels
are distributed through the Hugging Face Hub and can be loaded through
the kernels Python package. <code>kernels</code> fetches the right kernel build for
the system that it runs, avoiding long local, sometimes hours-long,
builds. It also supports loading of multiple versions of the same
kernel, effectively eliminating “dependency hell”.</li> <li>Provide kernel builds across all supported PyTorch versions,
accelerators, and capabilities. This is particularly important
because local kernel builds can become unusable once the base
machine learning framework (e.g., PyTorch) is updated to a recent version.</li>`,_,c,q=`Additionally, there are several advantages to hosting the pre-built
kernels on the Hugging Face Hub platform:`,x,m,G=`<li>Trends — kinds of models using a kernel more than others,
<a href="https://huggingface.co/spaces" rel="nofollow">applications</a> using a particular kernel, etc.</li> <li>Users immediately know if their hardware supports a kernel
without having to run any installation locally.</li> <li>General features of the Hub platform:
<ul><li>Seamless versioning</li> <li>Fast download and upload powered by <a href="https://huggingface.co/docs/hub/xet/index" rel="nofollow">XET</a></li> <li>Visibility into the download stats</li></ul></li>`,T,p,P,b,H;return r=new J({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),o=new N({props:{title:"Why kernels?",local:"why-kernels",headingTag:"h1"}}),p=new Q({props:{source:"https://github.com/huggingface/kernels/blob/main/docs/source/why_kernels.md"}}),{c(){l=h("meta"),y=i(),g=h("p"),k=i(),L(r.$$.fragment),v=i(),L(o.$$.fragment),$=i(),u=h("p"),u.innerHTML=F,w=i(),d=h("ul"),d.innerHTML=O,_=i(),c=h("p"),c.textContent=q,x=i(),m=h("ul"),m.innerHTML=G,T=i(),L(p.$$.fragment),P=i(),b=h("p"),this.h()},l(e){const t=V("svelte-u9bgzb",document.head);l=f(t,"META",{name:!0,content:!0}),t.forEach(n),y=s(e),g=f(e,"P",{}),R(g).forEach(n),k=s(e),M(r.$$.fragment,e),v=s(e),M(o.$$.fragment,e),$=s(e),u=f(e,"P",{"data-svelte-h":!0}),C(u)!=="svelte-lrlyn5"&&(u.innerHTML=F),w=s(e),d=f(e,"UL",{"data-svelte-h":!0}),C(d)!=="svelte-b2eusu"&&(d.innerHTML=O),_=s(e),c=f(e,"P",{"data-svelte-h":!0}),C(c)!=="svelte-1nzyvvq"&&(c.textContent=q),x=s(e),m=f(e,"UL",{"data-svelte-h":!0}),C(m)!=="svelte-1p0x3wc"&&(m.innerHTML=G),T=s(e),M(p.$$.fragment,e),P=s(e),b=f(e,"P",{}),R(b).forEach(n),this.h()},h(){W(l,"name","hf:doc:metadata"),W(l,"content",Z)},m(e,t){B(document.head,l),a(e,y,t),a(e,g,t),a(e,k,t),E(r,e,t),a(e,v,t),E(o,e,t),a(e,$,t),a(e,u,t),a(e,w,t),a(e,d,t),a(e,_,t),a(e,c,t),a(e,x,t),a(e,m,t),a(e,T,t),E(p,e,t),a(e,P,t),a(e,b,t),H=!0},p:j,i(e){H||(U(r.$$.fragment,e),U(o.$$.fragment,e),U(p.$$.fragment,e),H=!0)},o(e){S(r.$$.fragment,e),S(o.$$.fragment,e),S(p.$$.fragment,e),H=!1},d(e){e&&(n(y),n(g),n(k),n(v),n($),n(u),n(w),n(d),n(_),n(c),n(x),n(m),n(T),n(P),n(b)),n(l),z(r,e),z(o,e),z(p,e)}}}const Z='{"title":"Why kernels?","local":"why-kernels","sections":[],"depth":1}';function ee(A){return D(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class ie extends I{constructor(l){super(),K(this,l,ee,Y,X,{})}}export{ie as component};
