{"id":3661,"date":"2023-10-05T08:00:05","date_gmt":"2023-10-05T00:00:05","guid":{"rendered":"http:\/\/www.superscalar.io\/?p=3661"},"modified":"2023-11-17T17:43:23","modified_gmt":"2023-11-17T09:43:23","slug":"quick-overview-of-the-halo2-gpu-acceleration-solution","status":"publish","type":"post","link":"http:\/\/www.superscalar.io\/index.php\/2023\/10\/05\/quick-overview-of-the-halo2-gpu-acceleration-solution\/","title":{"rendered":"Quick Overview of the Halo2 GPU Acceleration Solution"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"3661\" class=\"elementor elementor-3661\">\n\t\t\t\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-25b3f0f elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"25b3f0f\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-5c53cd3\" data-id=\"5c53cd3\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-e86b8c6 elementor-widget elementor-widget-heading\" data-id=\"e86b8c6\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.7.8 - 02-10-2022 *\/\n.elementor-heading-title{padding:0;margin:0;line-height:1}.elementor-widget-heading .elementor-heading-title[class*=elementor-size-]>a{color:inherit;font-size:inherit;line-height:inherit}.elementor-widget-heading .elementor-heading-title.elementor-size-small{font-size:15px}.elementor-widget-heading .elementor-heading-title.elementor-size-medium{font-size:19px}.elementor-widget-heading .elementor-heading-title.elementor-size-large{font-size:29px}.elementor-widget-heading .elementor-heading-title.elementor-size-xl{font-size:39px}.elementor-widget-heading .elementor-heading-title.elementor-size-xxl{font-size:59px}<\/style><h1 class=\"elementor-heading-title elementor-size-default elementor-heading-title elementor-size-default elementor-align-after-center\"><p>Quick Overview of the Halo2 GPU Acceleration Solution<\/p><p><br><\/p><p><br><\/p><\/h1>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-7ea86a3 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"7ea86a3\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-57290397\" data-id=\"57290397\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-13a1cbba elementor-widget elementor-widget-text-editor\" data-id=\"13a1cbba\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.7.8 - 02-10-2022 *\/\n.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:#818a91;color:#fff}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap{color:#818a91;border:3px solid;background-color:transparent}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap{margin-top:8px}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap-letter{width:1em;height:1em}.elementor-widget-text-editor .elementor-drop-cap{float:left;text-align:center;line-height:1;font-size:50px}.elementor-widget-text-editor .elementor-drop-cap-letter{display:inline-block}<\/style>\t\t\t\t<p><span style=\"color: #999999;\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-3662 aligncenter\" src=\"https:\/\/www.superscalar.io\/wp-content\/uploads\/2023\/11\/2-1.png\" alt=\"\" width=\"1024\" height=\"1024\" srcset=\"http:\/\/www.superscalar.io\/wp-content\/uploads\/2023\/11\/2-1.png 1024w, http:\/\/www.superscalar.io\/wp-content\/uploads\/2023\/11\/2-1-300x300.png 300w, http:\/\/www.superscalar.io\/wp-content\/uploads\/2023\/11\/2-1-150x150.png 150w, http:\/\/www.superscalar.io\/wp-content\/uploads\/2023\/11\/2-1-768x768.png 768w, http:\/\/www.superscalar.io\/wp-content\/uploads\/2023\/11\/2-1-600x600.png 600w, http:\/\/www.superscalar.io\/wp-content\/uploads\/2023\/11\/2-1-100x100.png 100w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/span><\/p><p><span style=\"color: #999999;\">\u00a0<\/span><\/p><p><span style=\"color: #999999;\">SuperScalar, a pioneering company in the realm of accelerated verifiable computation, offers a comprehensive range of products encompassing GPU, FPGA, and ASIC solutions. This article delves into the GPU acceleration solution that SuperScalar has not only been diligently developing but also successfully deployed in Zero-Knowledge Proof (ZKP) projects, including Taiko.<\/span><\/p><p><span style=\"color: #999999;\">Background<\/span><\/p><p><span style=\"color: #999999;\">Currently, many leading Zero-Knowledge Proof (ZKP) projects are widely adopting the Halo2 algorithm, such as PSE, Taiko, Scroll, and others. These projects typically employ the CPU version for proof generation. However, due to the substantial hardware resources required for handling large-scale circuits, generating ZKP proofs using CPU can be time-consuming, ranging from seconds to several minutes, or even longer. Hence, there is an urgent need to explore an acceleration solution.<\/span><\/p><p><span style=\"color: #999999;\">GPU are known to excel at parallel computing.Algorithms such as Multi-Scalar Multiplication (MSM) and Number Theoretic Transform (NTT) in the Halo2 algorithm are time-consuming and involve large-scale parallel computation, making use of GPU ideal.From a technical perspective, GPU offer comprehensive development tools, including programming languages like CUDA, which contribute to shorter development cycles.From a commercialization perspective, GPU are easy to access, have a strong supply chain and a mature ecosystem.Therefore, utilizing GPU acceleration is seen as the ideal direction for ZKP acceleration, and GPU hold immense potential in the field of ZKP acceleration.<\/span><\/p><p><span style=\"color: #999999;\">Some projects and teams have already started utilizing GPU to accelerate ZKP such as ALEO, as well as some more professional competitions, such as ZPrize. With the aid of GPU acceleration, it is expected to promote the further development and wide application of ZKP, providing more potential possibilities in areas such as privacy protection, secure encryption and blockchain.<\/span><\/p><p><span style=\"color: #999999;\">Motivation to accelerate Halo2 with GPU<\/span><\/p><p><span style=\"color: #999999;\">&#8211; The CPU version of Halo2 proof generation is very slow<\/span><\/p><p><span style=\"color: #999999;\">Currently, the CPU version of the Halo2 algorithm requires a significant amount of time for proof generation, resulting in a relatively slow proof generation speed, which may take several minutes or even longer.<\/span><\/p><p><span style=\"color: #999999;\">&#8211; MSM, NTT and Evaluation calculations take a high proportion of time<\/span><\/p><p><span style=\"color: #999999;\">During the generation of Halo2 proof,Calculations such as MSM and NTT account for a considerable proportion of the total time required.The specific distribution of time may vary depending on the circuit, with some circuits exhibiting a particularly high proportion of time allocated to Evaluation.By optimizing calculations such as MSM, NTT, and Evaluation, it is possible to substantially reduce the time required for proof generation.<\/span><\/p><p><span style=\"color: #999999;\">&#8211; To Integrate Hardware Acceleration into the Halo2 Framework<\/span><\/p><p><span style=\"color: #999999;\">In order to take full advantage of the computing power of GPU,we need to integrate hardware acceleration into the Halo2 framework. This requires a unified design of module management and memory management to take into account the overall computing characteristics of Halo2.In this way, you can speed up proof generation and improve overall performance.<\/span><\/p><p><span style=\"color: #999999;\">Solution Overview<\/span><\/p><p><span style=\"color: #999999;\">Architecture<\/span><\/p><p><span style=\"color: #999999;\">\u00a0<\/span><\/p><p><span style=\"color: #999999;\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-3663 aligncenter\" src=\"https:\/\/www.superscalar.io\/wp-content\/uploads\/2023\/11\/2-2.png\" alt=\"\" width=\"837\" height=\"894\" srcset=\"http:\/\/www.superscalar.io\/wp-content\/uploads\/2023\/11\/2-2.png 837w, http:\/\/www.superscalar.io\/wp-content\/uploads\/2023\/11\/2-2-281x300.png 281w, http:\/\/www.superscalar.io\/wp-content\/uploads\/2023\/11\/2-2-768x820.png 768w, http:\/\/www.superscalar.io\/wp-content\/uploads\/2023\/11\/2-2-600x641.png 600w\" sizes=\"auto, (max-width: 837px) 100vw, 837px\" \/><\/span><\/p><p><span style=\"color: #999999;\">\u00a0<\/span><\/p><p><span style=\"color: #999999;\">The GPU framework includes an internal GPU manager module, which comprises Rust code for modules like MSM, NTT, and others.The primary responsibility of this module is to provide external interfaces while internally being capable of invoking CUDA code and performing certain management operations.This module interfaces with CUDA code through GPU FFI (Foreign Function Interface).In the context of the Halo2 algorithm, the most fundamental calculations involve finite field computations, whereas modules like MSM, NTT, and Evaluation are built upon these finite field calculations.<\/span><\/p><p><span style=\"color: #999999;\">Algorithm optimization<\/span><\/p><p><span style=\"color: #999999;\">&#8211;\u00a0In finite field calculations, we optimize the computation process using Montgomery modular multiplication and implement acceleration through assembly language.<\/span><\/p><p><span style=\"color: #999999;\">&#8211; For MSM module, we employ the Pippenger algorithm for grouping to reduce computation overhead, enhance parallelism, and utilize point addition operations with lower computational complexity. Additionally, we incorporate excellent algorithmic optimizations from the industry, such as those observed in ZPrize.<\/span><\/p><p><span style=\"color: #999999;\">&#8211; In the NTT module, we utilize the Fast Fourier Transform (FFT) algorithm.<\/span><\/p><p><span style=\"color: #999999;\">&#8211; Field calculations encompass various computations based on finite fields, including batch inversion.<\/span><\/p><p><span style=\"color: #999999;\">Data Transfer<\/span><\/p><p><span style=\"color: #999999;\">Precomputation: For specific circuits, the base points for MSM and the omegas for FFT are often fixed. These data can be transmitted to the GPU memory during GPU initialization, eliminating the need to transmit these bases every time MSM and FFT calculations are performed. This approach helps save on additional data transfer overhead.<\/span><\/p><p><span style=\"color: #999999;\">Reduce Redundant Data Transfers: Through combined computations, such as performing FFT followed immediately by MSM calculations, the result of FFT can be used directly as input for MSM. This avoids the necessity of transferring data from GPU to CPU and back to GPU, reducing the complexity and cost associated with data transfer.<\/span><\/p><p><span style=\"color: #999999;\">Extensible compatibility<\/span><\/p><p><span style=\"color: #999999;\">By configuring the curve, we can achieve compatibility with bn264 and other different curves. This means that our system can flexibly adapt to various curve parameter configurations to meet diverse needs and application scenarios.<\/span><\/p><p><span style=\"color: #999999;\">Benchmark<\/span><\/p><p><span style=\"color: #999999;\">Configuration:<\/span><\/p><p><span style=\"color: #999999;\">8-core AMD Ryzen 7 7800X3D 8-Core Processor<\/span><\/p><p><span style=\"color: #999999;\">64GB RAM<\/span><\/p><p><span style=\"color: #999999;\">NVIDIA RTX 3090 GPU with 24GB of VRAM<\/span><\/p><p><span style=\"color: #999999;\">MSM:<\/span><\/p><p><span style=\"color: #999999;\">\u00a0<\/span><\/p><p><span style=\"color: #999999;\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-3664 aligncenter\" src=\"https:\/\/www.superscalar.io\/wp-content\/uploads\/2023\/11\/2-3.png\" alt=\"\" width=\"1276\" height=\"438\" srcset=\"http:\/\/www.superscalar.io\/wp-content\/uploads\/2023\/11\/2-3.png 1276w, http:\/\/www.superscalar.io\/wp-content\/uploads\/2023\/11\/2-3-300x103.png 300w, http:\/\/www.superscalar.io\/wp-content\/uploads\/2023\/11\/2-3-1024x351.png 1024w, http:\/\/www.superscalar.io\/wp-content\/uploads\/2023\/11\/2-3-768x264.png 768w, http:\/\/www.superscalar.io\/wp-content\/uploads\/2023\/11\/2-3-600x206.png 600w\" sizes=\"auto, (max-width: 1276px) 100vw, 1276px\" \/><\/span><\/p><p><span style=\"color: #999999;\">\u00a0<\/span><\/p><p><span style=\"color: #999999;\">NTT:<\/span><\/p><p><span style=\"color: #999999;\">\u00a0<\/span><\/p><p><span style=\"color: #999999;\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-3665 aligncenter\" src=\"https:\/\/www.superscalar.io\/wp-content\/uploads\/2023\/11\/2-4.png\" alt=\"\" width=\"1274\" height=\"438\" srcset=\"http:\/\/www.superscalar.io\/wp-content\/uploads\/2023\/11\/2-4.png 1274w, http:\/\/www.superscalar.io\/wp-content\/uploads\/2023\/11\/2-4-300x103.png 300w, http:\/\/www.superscalar.io\/wp-content\/uploads\/2023\/11\/2-4-1024x352.png 1024w, http:\/\/www.superscalar.io\/wp-content\/uploads\/2023\/11\/2-4-768x264.png 768w, http:\/\/www.superscalar.io\/wp-content\/uploads\/2023\/11\/2-4-600x206.png 600w\" sizes=\"auto, (max-width: 1274px) 100vw, 1274px\" \/><\/span><\/p><p><span style=\"color: #999999;\">\u00a0<\/span><\/p><p><span style=\"color: #999999;\">Note: GPU time includes the time taken to transfer data from the CPU to the GPU and back to the GPU.<\/span><\/p><p><span style=\"color: #999999;\">The above is our baseline result, and through further optimization, we have the potential to improve performance by an additional 1 to 2 times.<\/span><\/p><p><span style=\"color: #999999;\">Reference<\/span><\/p><p><span style=\"color: #999999;\"><u>ZPrize:<\/u><u>\u00a0<\/u><a style=\"color: #999999;\" href=\"https:\/\/github.com\/z-prize\/2022-entries\"><u>https:\/\/github.com\/z-prize\/2022-entries<\/u><\/a><\/span><\/p><p><span style=\"color: #999999;\"><u>zkSync:<\/u><u>\u00a0<\/u><a style=\"color: #999999;\" href=\"https:\/\/github.com\/matter-labs\/era-bellman-cuda\"><u>https:\/\/github.com\/matter-labs\/era-bellman-cuda<\/u><\/a><\/span><\/p><p><span style=\"color: #999999;\">More Information About SuperScalar<\/span><\/p><p><span style=\"color: #999999;\"><u>Website<\/u><u>\uff1a<\/u><a style=\"color: #999999;\" href=\"https:\/\/www.superscalar.io\/\"><u>https:\/\/www.superscalar.io\/<\/u><\/a><u><br \/><\/u><u>Twitter<\/u><u>\uff1a<\/u><a style=\"color: #999999;\" href=\"https:\/\/twitter.com\/SuperScalar_io\"><u>https:\/\/twitter.com\/SuperScalar_io<\/u><\/a><u><br \/><\/u><u>Github<\/u><u>\uff1a<\/u><a style=\"color: #999999;\" href=\"https:\/\/github.com\/superscalar-io\"><u>https:\/\/github.com\/superscalar-io<\/u><\/a><u><br \/><\/u><u>Discord<\/u><u>\uff1a<\/u><a style=\"color: #999999;\" href=\"https:\/\/discord.gg\/EJXBDZg7WD\"><u>https:\/\/discord.gg\/EJXBDZg7WD<\/u><\/a><u><br \/><\/u><u>Medium<\/u><u>\uff1a<\/u><a style=\"color: #999999;\" href=\"https:\/\/medium.com\/@SuperScalar_io\"><u>https:\/\/medium.com\/@SuperScalar_io<\/u><\/a><\/span><\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-4db0a05 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"4db0a05\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-105dab5\" data-id=\"105dab5\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-5e135a7 e-grid-align-right elementor-shape-rounded elementor-grid-0 elementor-widget elementor-widget-social-icons\" data-id=\"5e135a7\" data-element_type=\"widget\" data-widget_type=\"social-icons.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.7.8 - 02-10-2022 *\/\n.elementor-widget-social-icons.elementor-grid-0 .elementor-widget-container,.elementor-widget-social-icons.elementor-grid-mobile-0 .elementor-widget-container,.elementor-widget-social-icons.elementor-grid-tablet-0 .elementor-widget-container{line-height:1;font-size:0}.elementor-widget-social-icons:not(.elementor-grid-0):not(.elementor-grid-tablet-0):not(.elementor-grid-mobile-0) .elementor-grid{display:inline-grid}.elementor-widget-social-icons .elementor-grid{grid-column-gap:var(--grid-column-gap,5px);grid-row-gap:var(--grid-row-gap,5px);grid-template-columns:var(--grid-template-columns);-webkit-box-pack:var(--justify-content,center);-ms-flex-pack:var(--justify-content,center);justify-content:var(--justify-content,center);justify-items:var(--justify-content,center)}.elementor-icon.elementor-social-icon{font-size:var(--icon-size,25px);line-height:var(--icon-size,25px);width:calc(var(--icon-size, 25px) + (2 * var(--icon-padding, .5em)));height:calc(var(--icon-size, 25px) + (2 * var(--icon-padding, .5em)))}.elementor-social-icon{--e-social-icon-icon-color:#fff;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;background-color:#818a91;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center;cursor:pointer}.elementor-social-icon i{color:var(--e-social-icon-icon-color)}.elementor-social-icon svg{fill:var(--e-social-icon-icon-color)}.elementor-social-icon:last-child{margin:0}.elementor-social-icon:hover{opacity:.9;color:#fff}.elementor-social-icon-android{background-color:#a4c639}.elementor-social-icon-apple{background-color:#999}.elementor-social-icon-behance{background-color:#1769ff}.elementor-social-icon-bitbucket{background-color:#205081}.elementor-social-icon-codepen{background-color:#000}.elementor-social-icon-delicious{background-color:#39f}.elementor-social-icon-deviantart{background-color:#05cc47}.elementor-social-icon-digg{background-color:#005be2}.elementor-social-icon-dribbble{background-color:#ea4c89}.elementor-social-icon-elementor{background-color:#d30c5c}.elementor-social-icon-envelope{background-color:#ea4335}.elementor-social-icon-facebook,.elementor-social-icon-facebook-f{background-color:#3b5998}.elementor-social-icon-flickr{background-color:#0063dc}.elementor-social-icon-foursquare{background-color:#2d5be3}.elementor-social-icon-free-code-camp,.elementor-social-icon-freecodecamp{background-color:#006400}.elementor-social-icon-github{background-color:#333}.elementor-social-icon-gitlab{background-color:#e24329}.elementor-social-icon-globe{background-color:#818a91}.elementor-social-icon-google-plus,.elementor-social-icon-google-plus-g{background-color:#dd4b39}.elementor-social-icon-houzz{background-color:#7ac142}.elementor-social-icon-instagram{background-color:#262626}.elementor-social-icon-jsfiddle{background-color:#487aa2}.elementor-social-icon-link{background-color:#818a91}.elementor-social-icon-linkedin,.elementor-social-icon-linkedin-in{background-color:#0077b5}.elementor-social-icon-medium{background-color:#00ab6b}.elementor-social-icon-meetup{background-color:#ec1c40}.elementor-social-icon-mixcloud{background-color:#273a4b}.elementor-social-icon-odnoklassniki{background-color:#f4731c}.elementor-social-icon-pinterest{background-color:#bd081c}.elementor-social-icon-product-hunt{background-color:#da552f}.elementor-social-icon-reddit{background-color:#ff4500}.elementor-social-icon-rss{background-color:#f26522}.elementor-social-icon-shopping-cart{background-color:#4caf50}.elementor-social-icon-skype{background-color:#00aff0}.elementor-social-icon-slideshare{background-color:#0077b5}.elementor-social-icon-snapchat{background-color:#fffc00}.elementor-social-icon-soundcloud{background-color:#f80}.elementor-social-icon-spotify{background-color:#2ebd59}.elementor-social-icon-stack-overflow{background-color:#fe7a15}.elementor-social-icon-steam{background-color:#00adee}.elementor-social-icon-stumbleupon{background-color:#eb4924}.elementor-social-icon-telegram{background-color:#2ca5e0}.elementor-social-icon-thumb-tack{background-color:#1aa1d8}.elementor-social-icon-tripadvisor{background-color:#589442}.elementor-social-icon-tumblr{background-color:#35465c}.elementor-social-icon-twitch{background-color:#6441a5}.elementor-social-icon-twitter{background-color:#1da1f2}.elementor-social-icon-viber{background-color:#665cac}.elementor-social-icon-vimeo{background-color:#1ab7ea}.elementor-social-icon-vk{background-color:#45668e}.elementor-social-icon-weibo{background-color:#dd2430}.elementor-social-icon-weixin{background-color:#31a918}.elementor-social-icon-whatsapp{background-color:#25d366}.elementor-social-icon-wordpress{background-color:#21759b}.elementor-social-icon-xing{background-color:#026466}.elementor-social-icon-yelp{background-color:#af0606}.elementor-social-icon-youtube{background-color:#cd201f}.elementor-social-icon-500px{background-color:#0099e5}.elementor-shape-rounded .elementor-icon.elementor-social-icon{border-radius:10%}.elementor-shape-circle .elementor-icon.elementor-social-icon{border-radius:50%}<\/style>\t\t<div class=\"elementor-social-icons-wrapper elementor-grid\">\n\t\t\t\t\t\t\t<span class=\"elementor-grid-item\">\n\t\t\t\t\t<a class=\"elementor-icon elementor-social-icon elementor-social-icon-medium elementor-repeater-item-20a5afd\" href=\"https:\/\/medium.com\/@SuperScalar_io\/quick-overview-of-the-halo2-gpu-acceleration-solution-f68c00652552\" target=\"_blank\">\n\t\t\t\t\t\t<span class=\"elementor-screen-only\">Medium<\/span>\n\t\t\t\t\t\t<i class=\"fab fa-medium\"><\/i>\t\t\t\t\t<\/a>\n\t\t\t\t<\/span>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Quick Overview of the Halo2 GPU Acceleration Solution \u00a0 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":3662,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"elementor_canvas","format":"standard","meta":{"footnotes":""},"categories":[16],"tags":[],"class_list":["post-3661","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-textile-news"],"_links":{"self":[{"href":"http:\/\/www.superscalar.io\/index.php\/wp-json\/wp\/v2\/posts\/3661","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.superscalar.io\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.superscalar.io\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.superscalar.io\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.superscalar.io\/index.php\/wp-json\/wp\/v2\/comments?post=3661"}],"version-history":[{"count":13,"href":"http:\/\/www.superscalar.io\/index.php\/wp-json\/wp\/v2\/posts\/3661\/revisions"}],"predecessor-version":[{"id":3679,"href":"http:\/\/www.superscalar.io\/index.php\/wp-json\/wp\/v2\/posts\/3661\/revisions\/3679"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/www.superscalar.io\/index.php\/wp-json\/wp\/v2\/media\/3662"}],"wp:attachment":[{"href":"http:\/\/www.superscalar.io\/index.php\/wp-json\/wp\/v2\/media?parent=3661"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.superscalar.io\/index.php\/wp-json\/wp\/v2\/categories?post=3661"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.superscalar.io\/index.php\/wp-json\/wp\/v2\/tags?post=3661"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}