{"id":9102,"date":"2013-04-01T00:03:43","date_gmt":"2013-03-31T21:03:43","guid":{"rendered":"http:\/\/hgpu.org\/?p=9102"},"modified":"2013-04-01T00:03:43","modified_gmt":"2013-03-31T21:03:43","slug":"geometric-algebra-computing-technology-for-accelerated-processing-units","status":"publish","type":"post","link":"https:\/\/hgpu.org\/?p=9102","title":{"rendered":"Geometric Algebra Computing Technology for Accelerated Processing Units"},"content":{"rendered":"<p>Development on embedded devices, even on today&#8217;s hardware, limits us to a minimum of third party-library dependencies due to hardware memory and power restrictions. In setups requiring intense geometric operations on limited hardware, such as in robotics, this problem can often lead to a tedious reimplementation of matrix, vector, and quaternion operations. Furthermore, certain unnecessary floating point operations are hard to avoid, because C++-features like expression template libraries such as eigen [2] can possibly not be used, because of strict C enforcement. Memory accesses are often the most limiting factor in today&#8217;s applications due to high memory latency. Yet traditional programming techniques unfortunately steer into the wrong direction by not easing data-oriented programming, which is often cumbersome to implement in C or C++. Many of the restrictions above are in a similar form the case on modern heterogeneous architectures such as AMD&#8217;s embedded Accelerated Processing Units or in GPGPU written in OpenCL\/CUDA. Our technology based on Geometric Algebra and a Domain Specific language called CLUCalc will especially excel under these conditions. The focus of this work is Gaalop Precompiler, a new technology combining the advanced processing power of Accelerated Processing Units (APU) with the geometric intuitiveness of a new mathematical concept named Geometric Algebra [6]. The combination of both not only promises a more compact and maintainable code for graphics, vision, robotics and other scientific and engineering applications, but also automatically exploits parallelism on GPU or combined computing unit (APU) through OpenCL [8] or CUDA [9]. C\/C++ CPU targeting is also supported. It is presented in the following, after a short introduction on Geometric Algebra.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Development on embedded devices, even on today&#8217;s hardware, limits us to a minimum of third party-library dependencies due to hardware memory and power restrictions. In setups requiring intense geometric operations on limited hardware, such as in robotics, this problem can often lead to a tedious reimplementation of matrix, vector, and quaternion operations. Furthermore, certain unnecessary [&hellip;]<\/p>\n","protected":false},"author":351,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":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":[11,89,90,3],"tags":[1782,14,452,20,1793,70],"class_list":["post-9102","post","type-post","status-publish","format-standard","hentry","category-computer-science","category-nvidia-cuda","category-opencl","category-paper","tag-computer-science","tag-cuda","tag-heterogeneous-systems","tag-nvidia","tag-opencl","tag-programming-techniques"],"views":2409,"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/hgpu.org\/index.php?rest_route=\/wp\/v2\/posts\/9102","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hgpu.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hgpu.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hgpu.org\/index.php?rest_route=\/wp\/v2\/users\/351"}],"replies":[{"embeddable":true,"href":"https:\/\/hgpu.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=9102"}],"version-history":[{"count":0,"href":"https:\/\/hgpu.org\/index.php?rest_route=\/wp\/v2\/posts\/9102\/revisions"}],"wp:attachment":[{"href":"https:\/\/hgpu.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=9102"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hgpu.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=9102"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hgpu.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=9102"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}