{"id":2717,"date":"2022-11-29T08:29:04","date_gmt":"2022-11-29T08:29:04","guid":{"rendered":"https:\/\/iot-ngin.eu\/?p=2717"},"modified":"2022-11-29T08:29:05","modified_gmt":"2022-11-29T08:29:05","slug":"cricket-distributed-execution-of-cuda-applications","status":"publish","type":"post","link":"https:\/\/iot-ngin.eu\/index.php\/2022\/11\/29\/cricket-distributed-execution-of-cuda-applications\/","title":{"rendered":"Cricket: Distributed Execution of CUDA Applications"},"content":{"rendered":"\n<p>When it comes to heterogeneous computing, the combination of a CPU and a GPUs is probably the most used combination of very different architectures. Originating from games and media applications, they are nowadays used for all kinds of computations, because they allow massive parallelism. The number of GPU accelerators employed in high-performance clusters is close to 30% of the Top 500 list<a href=\"#_ftn1\">[1]<\/a>, and 7 of the 10 largest clusters utilize them.<\/p>\n\n\n\n<p>It is evident that also in cloud and edge-cloud scenarios, the advantages of GPUs are desirable. However, not in all cases a physical GPU can be added to the installation and complex virtualization setups can be a challenge.<\/p>\n\n\n\n<p>This is where a technology pushed in the IoT-NGIN project could come to play: Cricket\u00a0 is a software which allows the transparent execution of CUDA code on remote systems. This enables separating the CPU-intensive work from GPU-intensive work, promising more efficiency by means of higher utilization because of more flexible GPU allocations.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/iot-ngin.eu\/wp-content\/uploads\/2022\/11\/Picture-1-4.png\" alt=\"\" class=\"wp-image-2720\" width=\"464\" height=\"149\" srcset=\"https:\/\/iot-ngin.eu\/wp-content\/uploads\/2022\/11\/Picture-1-4.png 450w, https:\/\/iot-ngin.eu\/wp-content\/uploads\/2022\/11\/Picture-1-4-300x96.png 300w\" sizes=\"(max-width: 464px) 100vw, 464px\" \/><\/figure><\/div>\n\n\n\n<p>Cricket emulates a CUDA device and relays the GPU related functionalities to a different system containing a GPU. No recompilation is required, preloading the cricket library is sufficient.<\/p>\n\n\n\n<p>With this approach, a single GPU can be shared across multiple systems, as depicted in the following picture:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/iot-ngin.eu\/wp-content\/uploads\/2022\/11\/Picture-1-5.png\" alt=\"\" class=\"wp-image-2721\" width=\"425\" height=\"313\" srcset=\"https:\/\/iot-ngin.eu\/wp-content\/uploads\/2022\/11\/Picture-1-5.png 450w, https:\/\/iot-ngin.eu\/wp-content\/uploads\/2022\/11\/Picture-1-5-300x221.png 300w\" sizes=\"(max-width: 425px) 100vw, 425px\" \/><\/figure><\/div>\n\n\n\n<p>This scenario is especially relevant in the context of cloud computing, where often dozens of lightweight virtual machines are utilized, GPU access is hard, and CUDA drivers increase the footprint of the VM.<\/p>\n\n\n\n<p>If you are interested in this technology, the following publications describe the technology in more detail:<\/p>\n\n\n\n<ul class=\"ul-custom\"><li><a href=\"https:\/\/onlinelibrary.wiley.com\/doi\/10.1002\/cpe.6474\">https:\/\/onlinelibrary.wiley.com\/doi\/10.1002\/cpe.6474<\/a><\/li><li><a href=\"https:\/\/link.springer.com\/chapter\/10.1007\/978-3-030-71593-9_13\">https:\/\/link.springer.com\/chapter\/10.1007\/978-3-030-71593-9_13<\/a><\/li><\/ul>\n\n\n\n<p>And the code of Cricket can be found at:<\/p>\n\n\n\n<ul class=\"ul-custom\"><li><a href=\"https:\/\/github.com\/RWTH-ACS\/cricket\">https:\/\/github.com\/RWTH-ACS\/cricket<\/a><\/li><\/ul>\n\n\n\n<hr class=\"wp-block-separator is-style-wide\">\n<p><meta charset=\"utf-8\"><strong>References<\/strong><\/p>\n\n\n\n<p><a href=\"#_ftnref1\">[1]<\/a> https:\/\/www.top500.org\/<\/p>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>When it comes to heterogeneous computing, the combination of a CPU and a GPUs is probably the most used combination of very different architectures. Originating from games and media applications, they are nowadays used for all kinds of computations, because &hellip;<\/p>\n","protected":false},"author":2,"featured_media":2722,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_mi_skip_tracking":false,"footnotes":""},"categories":[17],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v17.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Cricket: Distributed Execution of CUDA Applications - IOT NGIN<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/iot-ngin.eu\/index.php\/2022\/11\/29\/cricket-distributed-execution-of-cuda-applications\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Cricket: Distributed Execution of CUDA Applications - IOT NGIN\" \/>\n<meta property=\"og:description\" content=\"When it comes to heterogeneous computing, the combination of a CPU and a GPUs is probably the most used combination of very different architectures. Originating from games and media applications, they are nowadays used for all kinds of computations, because &hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/iot-ngin.eu\/index.php\/2022\/11\/29\/cricket-distributed-execution-of-cuda-applications\/\" \/>\n<meta property=\"og:site_name\" content=\"IOT NGIN\" \/>\n<meta property=\"article:published_time\" content=\"2022-11-29T08:29:04+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-11-29T08:29:05+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/iot-ngin.eu\/wp-content\/uploads\/2022\/11\/cricket.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1347\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Giannis Tsichlas\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https:\/\/iot-ngin.eu\/#website\",\"url\":\"https:\/\/iot-ngin.eu\/\",\"name\":\"IOT NGIN\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/iot-ngin.eu\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/iot-ngin.eu\/index.php\/2022\/11\/29\/cricket-distributed-execution-of-cuda-applications\/#primaryimage\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/iot-ngin.eu\/wp-content\/uploads\/2022\/11\/cricket.jpeg\",\"contentUrl\":\"https:\/\/iot-ngin.eu\/wp-content\/uploads\/2022\/11\/cricket.jpeg\",\"width\":1920,\"height\":1347},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/iot-ngin.eu\/index.php\/2022\/11\/29\/cricket-distributed-execution-of-cuda-applications\/#webpage\",\"url\":\"https:\/\/iot-ngin.eu\/index.php\/2022\/11\/29\/cricket-distributed-execution-of-cuda-applications\/\",\"name\":\"Cricket: Distributed Execution of CUDA Applications - IOT NGIN\",\"isPartOf\":{\"@id\":\"https:\/\/iot-ngin.eu\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/iot-ngin.eu\/index.php\/2022\/11\/29\/cricket-distributed-execution-of-cuda-applications\/#primaryimage\"},\"datePublished\":\"2022-11-29T08:29:04+00:00\",\"dateModified\":\"2022-11-29T08:29:05+00:00\",\"author\":{\"@id\":\"https:\/\/iot-ngin.eu\/#\/schema\/person\/dac2bc3c10805a89083986685c5801d1\"},\"breadcrumb\":{\"@id\":\"https:\/\/iot-ngin.eu\/index.php\/2022\/11\/29\/cricket-distributed-execution-of-cuda-applications\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/iot-ngin.eu\/index.php\/2022\/11\/29\/cricket-distributed-execution-of-cuda-applications\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/iot-ngin.eu\/index.php\/2022\/11\/29\/cricket-distributed-execution-of-cuda-applications\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/iot-ngin.eu\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Cricket: Distributed Execution of CUDA Applications\"}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/iot-ngin.eu\/#\/schema\/person\/dac2bc3c10805a89083986685c5801d1\",\"name\":\"Giannis Tsichlas\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/iot-ngin.eu\/#personlogo\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/740c19c414d2291ee24fcbe553ee2609?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/740c19c414d2291ee24fcbe553ee2609?s=96&d=mm&r=g\",\"caption\":\"Giannis Tsichlas\"},\"url\":\"https:\/\/iot-ngin.eu\/index.php\/author\/tsichlas\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Cricket: Distributed Execution of CUDA Applications - IOT NGIN","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/iot-ngin.eu\/index.php\/2022\/11\/29\/cricket-distributed-execution-of-cuda-applications\/","og_locale":"en_US","og_type":"article","og_title":"Cricket: Distributed Execution of CUDA Applications - IOT NGIN","og_description":"When it comes to heterogeneous computing, the combination of a CPU and a GPUs is probably the most used combination of very different architectures. Originating from games and media applications, they are nowadays used for all kinds of computations, because &hellip;","og_url":"https:\/\/iot-ngin.eu\/index.php\/2022\/11\/29\/cricket-distributed-execution-of-cuda-applications\/","og_site_name":"IOT NGIN","article_published_time":"2022-11-29T08:29:04+00:00","article_modified_time":"2022-11-29T08:29:05+00:00","og_image":[{"width":1920,"height":1347,"url":"https:\/\/iot-ngin.eu\/wp-content\/uploads\/2022\/11\/cricket.jpeg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Written by":"Giannis Tsichlas","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebSite","@id":"https:\/\/iot-ngin.eu\/#website","url":"https:\/\/iot-ngin.eu\/","name":"IOT NGIN","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/iot-ngin.eu\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"ImageObject","@id":"https:\/\/iot-ngin.eu\/index.php\/2022\/11\/29\/cricket-distributed-execution-of-cuda-applications\/#primaryimage","inLanguage":"en-US","url":"https:\/\/iot-ngin.eu\/wp-content\/uploads\/2022\/11\/cricket.jpeg","contentUrl":"https:\/\/iot-ngin.eu\/wp-content\/uploads\/2022\/11\/cricket.jpeg","width":1920,"height":1347},{"@type":"WebPage","@id":"https:\/\/iot-ngin.eu\/index.php\/2022\/11\/29\/cricket-distributed-execution-of-cuda-applications\/#webpage","url":"https:\/\/iot-ngin.eu\/index.php\/2022\/11\/29\/cricket-distributed-execution-of-cuda-applications\/","name":"Cricket: Distributed Execution of CUDA Applications - IOT NGIN","isPartOf":{"@id":"https:\/\/iot-ngin.eu\/#website"},"primaryImageOfPage":{"@id":"https:\/\/iot-ngin.eu\/index.php\/2022\/11\/29\/cricket-distributed-execution-of-cuda-applications\/#primaryimage"},"datePublished":"2022-11-29T08:29:04+00:00","dateModified":"2022-11-29T08:29:05+00:00","author":{"@id":"https:\/\/iot-ngin.eu\/#\/schema\/person\/dac2bc3c10805a89083986685c5801d1"},"breadcrumb":{"@id":"https:\/\/iot-ngin.eu\/index.php\/2022\/11\/29\/cricket-distributed-execution-of-cuda-applications\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/iot-ngin.eu\/index.php\/2022\/11\/29\/cricket-distributed-execution-of-cuda-applications\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/iot-ngin.eu\/index.php\/2022\/11\/29\/cricket-distributed-execution-of-cuda-applications\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/iot-ngin.eu\/"},{"@type":"ListItem","position":2,"name":"Cricket: Distributed Execution of CUDA Applications"}]},{"@type":"Person","@id":"https:\/\/iot-ngin.eu\/#\/schema\/person\/dac2bc3c10805a89083986685c5801d1","name":"Giannis Tsichlas","image":{"@type":"ImageObject","@id":"https:\/\/iot-ngin.eu\/#personlogo","inLanguage":"en-US","url":"https:\/\/secure.gravatar.com\/avatar\/740c19c414d2291ee24fcbe553ee2609?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/740c19c414d2291ee24fcbe553ee2609?s=96&d=mm&r=g","caption":"Giannis Tsichlas"},"url":"https:\/\/iot-ngin.eu\/index.php\/author\/tsichlas\/"}]}},"cc_featured_image_caption":{"caption_text":"","source_text":"","source_url":""},"_links":{"self":[{"href":"https:\/\/iot-ngin.eu\/index.php\/wp-json\/wp\/v2\/posts\/2717"}],"collection":[{"href":"https:\/\/iot-ngin.eu\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/iot-ngin.eu\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/iot-ngin.eu\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/iot-ngin.eu\/index.php\/wp-json\/wp\/v2\/comments?post=2717"}],"version-history":[{"count":5,"href":"https:\/\/iot-ngin.eu\/index.php\/wp-json\/wp\/v2\/posts\/2717\/revisions"}],"predecessor-version":[{"id":2727,"href":"https:\/\/iot-ngin.eu\/index.php\/wp-json\/wp\/v2\/posts\/2717\/revisions\/2727"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/iot-ngin.eu\/index.php\/wp-json\/wp\/v2\/media\/2722"}],"wp:attachment":[{"href":"https:\/\/iot-ngin.eu\/index.php\/wp-json\/wp\/v2\/media?parent=2717"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/iot-ngin.eu\/index.php\/wp-json\/wp\/v2\/categories?post=2717"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/iot-ngin.eu\/index.php\/wp-json\/wp\/v2\/tags?post=2717"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}