{"id":3436,"date":"2011-05-06T12:10:21","date_gmt":"2011-05-06T11:10:21","guid":{"rendered":"http:\/\/www.walkingrandomly.com\/?p=3436"},"modified":"2016-06-13T12:29:31","modified_gmt":"2016-06-13T11:29:31","slug":"gpu-support-in-mathematica-maple-matlab-and-mathcad-prime","status":"publish","type":"post","link":"https:\/\/walkingrandomly.com\/?p=3436","title":{"rendered":"GPU support in Mathematica, Maple, MATLAB and Mathcad Prime"},"content":{"rendered":"<p><strong>Updated January 4th 2011<\/strong><\/p>\n<p>It is becoming increasingly common for programmers to make use of\u00a0<a href=\"http:\/\/en.wikipedia.org\/wiki\/Graphics_processing_unit\">GPUs<\/a> (Graphical Processing Units) to speed up their\u00a0programs\u00a0substantially. \u00a0There are three major low-level programming libraries that allow you to do this in languages such as C; namely <a href=\"http:\/\/www.nvidia.com\/object\/cuda_home_new.html\">CUDA<\/a>, <a href=\"http:\/\/www.khronos.org\/opencl\/\">OpenCL<\/a> and <a href=\"http:\/\/en.wikipedia.org\/wiki\/DirectCompute\">Microsoft DirectCompute<\/a>. \u00a0Of these three, CUDA is the most developed but it only works on Nvidia graphics cards.<\/p>\n<p>I am often asked if the major\u00a0commercial\u00a0math packages support GPU computing and I find myself writing the same summary email over and over again. \u00a0So, here is a very brief breakdown of what is currently on offer.\u00a0 I plan to expand the information contained in this page over time so if you have any information about GPU computing in these packages then let me know.<\/p>\n<p><strong>MATLAB<\/strong><\/p>\n<p>Core MATLAB contains no support for GPU computing but several organizations (including The Mathworks themselves) have produced add-on toolboxes that add such support:<\/p>\n<ul>\n<li><a href=\"http:\/\/www.accelereyes.com\/\">Jacket<\/a> &#8211; This is a product from a company called AccelerEyes and is possibly the most advanced and well developed GPU solution for MATLAB currently\u00a0available. \u00a0As of version 2.0 it supports both OpenCL and CUDA frameworks.<\/li>\n<li>The Mathworks&#8217; <a href=\"http:\/\/www.mathworks.com\/products\/parallel-computing\/\">Parallel Computing Toolbox (PCT)<\/a> &#8211; If you want to do your MATLAB GPU computing the officially supported way then this is the product you need.\u00a0 As a bonus, it also allows you to make better use of the multicore processor that almost certainly resides in your machine.\u00a0 Like many of the offerings on this page, only the CUDA framework is supported so you are out of luck if you don&#8217;t have an NVidia graphics card.\u00a0 Even if you do have an NVidia graphics card then you still might be out of luck since the <a href=\"https:\/\/www.walkingrandomly.com\/?p=2860\">PCT only supports cards that have compute level 1.3 or above<\/a> (i.e. double precision only).<\/li>\n<li><em><a href=\"www.culatools.com\">CULA<\/a><\/em> is a set of GPU-accelerated linear algebra libraries utilizing the NVIDIA CUDA parallel computing architecture and it has a MATLAB interface.<\/li>\n<li><a href=\"http:\/\/gp-you.org\/\">GPUmat<\/a> &#8211; This product is <strong>completely free<\/strong> but is less developed than the commercial offerings above.\u00a0 Again. it is CUDA only<\/li>\n<li><a href=\"http:\/\/code.google.com\/p\/opencl-toolbox\/\">OpenCL toolbox<\/a> &#8211; The only OpenCL solution for MATLAB I could find.\u00a0 It is free but development seems to have stalled.<\/li>\n<\/ul>\n<p><strong>Mathematica<\/strong><\/p>\n<p>Mathematica 8 has support for <a href=\"http:\/\/www.wolfram.com\/mathematica\/new-in-8\/cuda-and-opencl-support\/\">both CUDA and OpenCL<\/a> built in so no need for any add-ons.\u00a0 Furthermore, it supports both single and double precision GPUs so you can experiment with GPU computing on older, cheaper cards.<\/p>\n<p><strong>Maple<\/strong><\/p>\n<p>Maple has had some CUDA-only GPU support since version 14. \u00a0On the face of it, the\u00a0<a href=\"http:\/\/www.maplesoft.com\/support\/help\/Maple\/view.aspx?path=CUDA\">CUDA package<\/a> only appears to contain one accelerated function&#8211;Matrix-Matrix multiplication&#8211; but when you load this function it accelerates many functions that use matrix-matrix multiply internally. \u00a0I&#8217;ve never found a definitive list of such functions though.<\/p>\n<p><strong>Mathcad<\/strong><\/p>\n<p>Mathcad 15 and Mathcad Prime have no support for GPU enhanced computing.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Updated January 4th 2011 It is becoming increasingly common for programmers to make use of\u00a0GPUs (Graphical Processing Units) to speed up their\u00a0programs\u00a0substantially. \u00a0There are three major low-level programming libraries that allow you to do this in languages such as C; namely CUDA, OpenCL and Microsoft DirectCompute. \u00a0Of these three, CUDA is the most developed but [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[44,51,25,4,17,8,11,50,41],"tags":[],"class_list":["post-3436","post","type-post","status-publish","format-standard","hentry","category-cuda","category-gpu","category-maple","category-math-software","category-mathcad","category-mathematica","category-matlab","category-opencl","category-parallel-programming"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p3swhs-Tq","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/walkingrandomly.com\/index.php?rest_route=\/wp\/v2\/posts\/3436","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/walkingrandomly.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/walkingrandomly.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/walkingrandomly.com\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/walkingrandomly.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3436"}],"version-history":[{"count":8,"href":"https:\/\/walkingrandomly.com\/index.php?rest_route=\/wp\/v2\/posts\/3436\/revisions"}],"predecessor-version":[{"id":6132,"href":"https:\/\/walkingrandomly.com\/index.php?rest_route=\/wp\/v2\/posts\/3436\/revisions\/6132"}],"wp:attachment":[{"href":"https:\/\/walkingrandomly.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3436"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/walkingrandomly.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3436"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/walkingrandomly.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3436"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}