{"id":137,"date":"2006-11-09T08:14:34","date_gmt":"2006-11-09T00:14:34","guid":{"rendered":"http:\/\/nick.onetwenty.org\/index.php\/2006\/11\/09\/nvidia-gpu-programming-in-standard-c\/"},"modified":"2006-11-09T08:14:34","modified_gmt":"2006-11-09T00:14:34","slug":"nvidia-gpu-programming-in-standard-c","status":"publish","type":"post","link":"https:\/\/nick.onetwenty.org\/index.php\/2006\/11\/09\/nvidia-gpu-programming-in-standard-c\/","title":{"rendered":"NVIDIA GPU programming in standard C"},"content":{"rendered":"<p><a href=\"http:\/\/www.nvidia.com\/\">NVIDIA<\/a> have announced a new computing architecture which allows for <em>direct access<\/em> to <a href=\"http:\/\/en.wikipedia.org\/wiki\/Graphics_processing_unit\">GPUs<\/a>. This is <em>huge news<\/em> for anyone in involved in <a href=\"http:\/\/en.wikipedia.org\/wiki\/High-performance_computing\">HPC<\/a> or games programming!<\/p>\n<p>This should finally make the <a href=\"http:\/\/en.wikipedia.org\/wiki\/Stream_processing\">stream processing<\/a> capabilities of GPUs available to a programmer without the need for them to refactor all processing into a computer graphics model. <a href=\"http:\/\/en.wikipedia.org\/wiki\/GPGPU\">Current methods<\/a> for stream processing on a GPU use image buffers to store data and process the data using fragment shaders, written in custom languages such as <a href=\"http:\/\/www.opengl.org\/documentation\/glsl\/\">GLSL<\/a> and <a href=\"http:\/\/developer.nvidia.com\/page\/cg_main.html\">Cg<\/a>.<\/p>\n<p>From the <a href=\"http:\/\/developer.nvidia.com\/object\/cuda.html\">CUDA webpage<\/a> (I italicised some key points):<\/p>\n<blockquote><p><strong>Developing with CUDA<\/strong><br \/>\nThe CUDA software development kit (SDK) is a complete software development solution for programming CUDA-enabled GPUs.  The SDK includes standard FFT and BLAS libraries, a <em>C-compiler for the NVIDIA GPU<\/em> and a runtime driver.  The CUDA runtime driver is a <em>separate standalone driver<\/em> that interoperates with OpenGL and Microsoft\u00c3\u201a\u00c2\u00ae DirectX\u00c3\u201a\u00c2\u00ae drivers from NVIDIA.  CUDA technology is equally supported on both the Linux and Microsoft\u00c3\u201a\u00c2\u00ae Windows\u00c3\u201a\u00c2\u00ae XP operating systems.<\/p><\/blockquote>\n<p>It&#8217;s great that they are using <a href=\"http:\/\/en.wikipedia.org\/wiki\/C_programming_language\">standard C<\/a>. Hopefully it means that one can create libraries in C for use in higher level languages (like <a href=\"http:\/\/www.python.org\/\">python<\/a> or <a href=\"http:\/\/www.ruby-lang.org\/\">Ruby<\/a>). I expect that the interaction with <a href=\"http:\/\/opengl.org\/about\/overview\/\">OpenGL<\/a> will be through NVIDIA OpenGL extensions. This interaction alleviates one of my immediate concerns when I read heard about CUDA: that the GPU may have to be &#8220;locked into&#8221; <a href=\"http:\/\/www.gpgpu.org\/\">GPGPU<\/a> mode. Thankfully, it doesn&#8217;t look like this is that case!<\/p>\n<p>Via <a href=\"http:\/\/www.reghardware.co.uk\/2006\/11\/08\/nvidia_launches_cuda\/\">Reg Hardware<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>NVIDIA have announced a new computing architecture which allows for direct access to GPUs. This is huge news for anyone in involved in HPC or games programming! This should finally make the stream processing capabilities of GPUs available to a programmer without the need for them to refactor all processing into a computer graphics model. &hellip; <a href=\"https:\/\/nick.onetwenty.org\/index.php\/2006\/11\/09\/nvidia-gpu-programming-in-standard-c\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;NVIDIA GPU programming in standard C&#8221;<\/span><\/a><\/p>\n","protected":false},"author":67,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spay_email":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false},"categories":[1],"tags":[],"jetpack_featured_media_url":"","jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/paLsRH-2d","_links":{"self":[{"href":"https:\/\/nick.onetwenty.org\/index.php\/wp-json\/wp\/v2\/posts\/137"}],"collection":[{"href":"https:\/\/nick.onetwenty.org\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nick.onetwenty.org\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nick.onetwenty.org\/index.php\/wp-json\/wp\/v2\/users\/67"}],"replies":[{"embeddable":true,"href":"https:\/\/nick.onetwenty.org\/index.php\/wp-json\/wp\/v2\/comments?post=137"}],"version-history":[{"count":0,"href":"https:\/\/nick.onetwenty.org\/index.php\/wp-json\/wp\/v2\/posts\/137\/revisions"}],"wp:attachment":[{"href":"https:\/\/nick.onetwenty.org\/index.php\/wp-json\/wp\/v2\/media?parent=137"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nick.onetwenty.org\/index.php\/wp-json\/wp\/v2\/categories?post=137"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nick.onetwenty.org\/index.php\/wp-json\/wp\/v2\/tags?post=137"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}