{"id":3217,"date":"2010-01-25T19:47:52","date_gmt":"2010-01-26T02:47:52","guid":{"rendered":"http:\/\/mozillalabs.com\/?p=3217"},"modified":"2010-01-25T19:47:52","modified_gmt":"2010-01-26T02:47:52","slug":"elevating-javascript-performance-through-gpu-power","status":"publish","type":"post","link":"https:\/\/blog.mozilla.org\/labs\/2010\/01\/elevating-javascript-performance-through-gpu-power\/","title":{"rendered":"Elevating JavaScript Performance Through GPU Power"},"content":{"rendered":"<p>My name is Alex. I am one of developers who helped  make it possible to utilize <a href=\"http:\/\/en.wikipedia.org\/wiki\/CUDA\" target=\"_blank\">CUDA<\/a> from within <a href=\"http:\/\/mozillalabs.com\/jetpack\/\" target=\"_blank\">Jetpack<\/a>. (See  the <a href=\"http:\/\/mozillalabs.com\/jetpack\/2009\/11\/10\/jetpack-0-5-contest-a-winner\/\" target=\"_blank\">Jetpack-to-CUDA project<\/a>) Andrey is Ph.D. at Moscow  Institute of Physics and Technology, his interests include parallel computing and distributed algorithm development. The goal of this article is to share  our ideas of how to elevate JavaScript performance by utilizing the  GPU&#8217;s parallel processing power. Some of these ideas formed the basis for the &#8220;Jetpack-to-CUDA&#8221; project.<\/p>\n<h2>So, Why does this matter?<\/h2>\n<p>People are using the internet to collaborate more  than ever before. Collaboration on the internet has been evolving at a  rapid pace, and the applications and technology that will drive the next  wave of internet collaboration will require even greater technical  complexity and more significant computing resources than is currently  available through the browser environment today. While text documents,  videos, music, and image-base forms of collaboration are now common place, there are many  needs require a level of compute performace beyond the web platform as  it exists today, such as:<\/p>\n<ul>\n<li>consumption of high-quality digital video or music streams,<\/li>\n<li>complex image or speech recognition,<\/li>\n<li>manipulation and  processing large pictures of nature or space,<\/li>\n<li>processing large sets of tabular data locally  in the browser,<\/li>\n<li>complex animations with  DOM elements (via DirectX or OpenGL),<\/li>\n<li>exploring 3D worlds, such  as <a href=\"http:\/\/en.wikipedia.org\/wiki\/Second_life\" target=\"_blank\">SecondLife<\/a> or an <a href=\"http:\/\/en.wikipedia.org\/wiki\/OpenSimulator#Public_grids\" target=\"_blank\">OpenSim Grid<\/a>,<\/li>\n<li>real-time audio and video  editing,<\/li>\n<li>having an integrated development environment that runs entirely in the browser<\/li>\n<\/ul>\n<p>There are endless examples of such complex uses of  the internet platform that are just not feasible with the status quo web  platform. Developers have tried to overcome such barriers in the past  with client-side enhancements like ActiveX, Netscape Plugins, Java  Applets, but each in its own way was flawed and failed to gain mass  adoption. It is possible that the <a href=\"http:\/\/code.google.com\/p\/nativeclient\/\" target=\"_blank\">Native  Client<\/a> project will change all this, but standardization of such initiatives  across the browser landscape is a lengthy endeavor. For the near future  the tools that the developer uses to provide a rich user experience  remain JavaScript and ActionScript, plug-ins, such as the ones  previously mentioned, are significantly limited by the architectural  mismatch of performance requirements they place on the CPU.<\/p>\n<p><a href=\"http:\/\/mozillalabs.com\/jetpack\/2010\/01\/25\/elevating-javascript-performance-through-gpu-power\/\"><\/p>\n<h1>Read more&#8230;<\/h1>\n<p><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>My name is Alex. I am one of developers who helped make it possible to utilize CUDA from within Jetpack. (See the Jetpack-to-CUDA project) Andrey is Ph.D. at Moscow Institute of Physics and Technology, his interests include parallel computing and &hellip; <a class=\"go\" href=\"https:\/\/blog.mozilla.org\/labs\/2010\/01\/elevating-javascript-performance-through-gpu-power\/\">Continue reading<\/a><\/p>\n","protected":false},"author":473,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[22915],"_links":{"self":[{"href":"https:\/\/blog.mozilla.org\/labs\/wp-json\/wp\/v2\/posts\/3217"}],"collection":[{"href":"https:\/\/blog.mozilla.org\/labs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.mozilla.org\/labs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.mozilla.org\/labs\/wp-json\/wp\/v2\/users\/473"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.mozilla.org\/labs\/wp-json\/wp\/v2\/comments?post=3217"}],"version-history":[{"count":0,"href":"https:\/\/blog.mozilla.org\/labs\/wp-json\/wp\/v2\/posts\/3217\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.mozilla.org\/labs\/wp-json\/wp\/v2\/media?parent=3217"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.mozilla.org\/labs\/wp-json\/wp\/v2\/categories?post=3217"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.mozilla.org\/labs\/wp-json\/wp\/v2\/tags?post=3217"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}