{"id":301,"date":"2022-03-30T16:27:21","date_gmt":"2022-03-30T14:27:21","guid":{"rendered":"https:\/\/threedots.ovh\/blog\/?p=301"},"modified":"2022-03-31T18:17:59","modified_gmt":"2022-03-31T16:17:59","slug":"open-source-drivers-according-to-habana","status":"publish","type":"post","link":"https:\/\/threedots.ovh\/blog\/2022\/03\/open-source-drivers-according-to-habana\/","title":{"rendered":"Open-source drivers according to Habana"},"content":{"rendered":"\n<p>Habana is an Intel company that designs machine learning accelerators for both training and inference. Their kernel driver is available upstream in the Linux kernel.<\/p>\n\n\n\n<p>This resulted in <a href=\"https:\/\/lwn.net\/Articles\/867168\/\" target=\"_blank\" rel=\"noreferrer noopener\">issues<\/a> with the Linux kernel community in the past, resulting in the release of an open-source <em>very minimally functional<\/em> user-mode driver stack.<\/p>\n\n\n\n<p>Does that mean that the software stack for that silicon is open-source? No, definitely not.<\/p>\n\n\n\n<p>Let&#8217;s look at that repository: <a href=\"https:\/\/github.com\/HabanaAI\/SynapseAI_Core\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/github.com\/HabanaAI\/SynapseAI_Core<\/a><\/p>\n\n\n\n<p>The limitation section is pretty huge, and is full of dealbreakers for any kind of production use. For illustrative purposes, we&#8217;ll pick two of them:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>This version of the library doesn&#8217;t implement any operations itself. This means for an operation like reshape or split, the user has to resolve it themselves, or write a TPC kernel to perform it.<\/p><\/blockquote>\n\n\n\n<p>This means that the actual <em>MMA<\/em> machine learning accelerators will not be used, with the general-purpose TPCs being used for all operators instead.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>The implementation is limited to single-node graphs. Calling synNodeCreate on a graph that already contains a node will fail.<\/p><\/blockquote>\n\n\n\n<p>Enough said, this means that this open-source user-mode driver stack is not suitable for any kind of production use whatsoever.<\/p>\n\n\n\n<p>The release of that stack was announced <a rel=\"noreferrer noopener\" href=\"https:\/\/lkml.iu.edu\/hypermail\/linux\/kernel\/2109.1\/03495.html\" target=\"_blank\">on the LKML<\/a>, which had this gem in the message:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>SynapseAI Core contains all the necessary building blocks to run Deep Learning training on Gaudi, although not as optimized as the closed-source library.<\/p><\/blockquote>\n\n\n\n<p>What an understatement.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Habana is an Intel company that designs machine learning accelerators for both training and inference. Their kernel driver is available upstream in the Linux kernel. This resulted in issues with the Linux kernel community in the past, resulting in the release of an open-source very minimally functional user-mode driver stack. Does that mean that the&hellip;&nbsp;<a href=\"https:\/\/threedots.ovh\/blog\/2022\/03\/open-source-drivers-according-to-habana\/\" rel=\"bookmark\">Read More &raquo;<span class=\"screen-reader-text\">Open-source drivers according to Habana<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-301","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/threedots.ovh\/blog\/wp-json\/wp\/v2\/posts\/301","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/threedots.ovh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/threedots.ovh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/threedots.ovh\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/threedots.ovh\/blog\/wp-json\/wp\/v2\/comments?post=301"}],"version-history":[{"count":2,"href":"https:\/\/threedots.ovh\/blog\/wp-json\/wp\/v2\/posts\/301\/revisions"}],"predecessor-version":[{"id":304,"href":"https:\/\/threedots.ovh\/blog\/wp-json\/wp\/v2\/posts\/301\/revisions\/304"}],"wp:attachment":[{"href":"https:\/\/threedots.ovh\/blog\/wp-json\/wp\/v2\/media?parent=301"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/threedots.ovh\/blog\/wp-json\/wp\/v2\/categories?post=301"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/threedots.ovh\/blog\/wp-json\/wp\/v2\/tags?post=301"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}