{"id":657,"date":"2015-01-16T18:43:48","date_gmt":"2015-01-16T18:43:48","guid":{"rendered":"http:\/\/payne.org\/blog\/?p=657"},"modified":"2022-10-08T19:40:04","modified_gmt":"2022-10-08T19:40:04","slug":"gpu-overshadows-cpu","status":"publish","type":"post","link":"https:\/\/payne.org\/blog\/gpu-overshadows-cpu\/","title":{"rendered":"The GPU Overshadows the CPU"},"content":{"rendered":"<p>Ask a teenager about GPUs (<a href=\"http:\/\/en.wikipedia.org\/wiki\/Graphics_processing_unit\">Graphics Processing Unit)<\/a> and you might get a surprisingly informed response. &nbsp;As I watch my kids, nephews, and their friends&nbsp;build &#8220;gaming PCs&#8221; while I contentedly play <a href=\"https:\/\/joywallet.com\/article\/best-bingo-apps-to-win-real-money\/\">bingo real money<\/a> games on my phone, they all seem quite current on the relative performance of AMD <em>vs<\/em> Nvidia, the merits of GPU memory, power issues, etc. &nbsp;(And one important side effect: &nbsp;a fairly healthy family ecosystem of hand-me-down GPUs).<\/p>\n<p>While it&#8217;s great to run Battlefield 4 at 60fps on ultra detail across three HD monitors, what&#8217;s <strong>most<\/strong> interesting is how GPU capabilities are generalizing&nbsp;beyond graphics. This is one of my absolute&nbsp;favorite disruption patterns: &#8220;commodization+crossover&#8221;, where a technology is commoditized by demand for one application and then applied elsewhere.<\/p>\n<p>GPUs began&nbsp;as very specialized&nbsp;(and expensive) 2D &amp; 3D hardware accelerators. Things began&nbsp;to change in the 1990s, <a href=\"http:\/\/en.wikipedia.org\/wiki\/Graphics_processing_unit#1990s\">driven by demand for 3D games<\/a>, first with arcade units&nbsp;and consoles, and then PCs. In 1999, Nvidia coined the term &#8220;GPU&#8221;, starting a consumer-driven 15yr+ price\/performance ramp&nbsp;with no end in sight.<\/p>\n<p>GPUs are also getting much more generalized. &nbsp;The first, fairly rigid 3D-transform computation pipelines have gradually given way to more general stream processors. &nbsp;So called graphics &#8220;<a href=\"http:\/\/en.wikipedia.org\/wiki\/Shader\">shaders<\/a>&#8221; are now nearly fully programmable:&nbsp; GPU developers write&nbsp;compute &#8220;<a href=\"http:\/\/en.wikipedia.org\/wiki\/General-purpose_computing_on_graphics_processing_units#Kernels\">kernels<\/a>&#8221; in C-like languages (such as Open GL <a href=\"https:\/\/www.opengl.org\/documentation\/glsl\/\">GLSL<\/a> or DirectX <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/windows\/desktop\/bb509561%28v=vs.85%29.aspx\">HLSL<\/a>) that then run on hundreds or thousands of compute units on the GPU. &nbsp;And more recent technologies,&nbsp;such as Nvidia&#8217;s <a href=\"http:\/\/en.wikipedia.org\/wiki\/CUDA\">CUDA<\/a> and the&nbsp;<a href=\"http:\/\/en.wikipedia.org\/wiki\/OpenCL\">OpenCL<\/a>&nbsp;platforms, dispense with the graphics-centric worldview entirely,<\/p>\n<p>Because of their parallel architecture,&nbsp;GPUs have continued to scale&nbsp;while <a href=\"http:\/\/www.gotw.ca\/publications\/concurrency-ddj.htm\">single CPU performance has effectively flattened.<\/a> &nbsp;For certain &#8220;<a href=\"http:\/\/en.wikipedia.org\/wiki\/Embarrassingly_parallel\">embarrasingly parallel<\/a>&#8221; problems where a repeated operation is applied to large amounts of data, they are hard to beat. For example, <a href=\"http:\/\/www.newegg.com\/Product\/ProductList.aspx?N=100007709%20600536049&amp;IsNodeId=1&amp;Submit=ENE\">$350<\/a> gets you ~3.4 trillion&nbsp;floating point ops\/second, 42,000x&nbsp;faster&nbsp;than the original Cray supercomputer! &nbsp;Amazon offers <a href=\"http:\/\/docs.aws.amazon.com\/AWSEC2\/latest\/UserGuide\/using_cluster_computing.html\">GPU instances<\/a>, and even Intel has conceded in a way: &nbsp;on a modern x86 multi-core processor, almost <a href=\"http:\/\/http:\/\/www.anandtech.com\/show\/7003\/the-haswell-review-intel-core-i74770k-i54560k-tested\/5\">2\/3rds of the die area is GPU<\/a>.<\/p>\n<p>It&#8217;s not surprising to see GPU horsepower applied to more and more non-graphics applications, such as <a href=\"https:\/\/developer.nvidia.com\/gameworks-physx-overview\">simulating physics<\/a>, <a href=\"http:\/\/seqbarracuda.sourceforge.net\/\">aligning genome sequences<\/a>, and training <a href=\"https:\/\/www.youtube.com\/watch?v=zsVsUvx8ieo\">deep neural networks.<\/a>&nbsp; I think this pattern will continue, with the GPU firmly entrenched in computing systems&nbsp;as a highly scalable vector&nbsp;co-processor.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ask a teenager about GPUs (Graphics Processing Unit) and you might get a surprisingly informed response. &nbsp;As I watch my kids, nephews, and their friends&nbsp;build &#8220;gaming PCs&#8221; while I contentedly play bingo real money games on my phone, they all &hellip; <a href=\"https:\/\/payne.org\/blog\/gpu-overshadows-cpu\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-657","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/payne.org\/blog\/wp-json\/wp\/v2\/posts\/657","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/payne.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/payne.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/payne.org\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/payne.org\/blog\/wp-json\/wp\/v2\/comments?post=657"}],"version-history":[{"count":3,"href":"https:\/\/payne.org\/blog\/wp-json\/wp\/v2\/posts\/657\/revisions"}],"predecessor-version":[{"id":855,"href":"https:\/\/payne.org\/blog\/wp-json\/wp\/v2\/posts\/657\/revisions\/855"}],"wp:attachment":[{"href":"https:\/\/payne.org\/blog\/wp-json\/wp\/v2\/media?parent=657"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/payne.org\/blog\/wp-json\/wp\/v2\/categories?post=657"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/payne.org\/blog\/wp-json\/wp\/v2\/tags?post=657"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}