{"title":"Paper: Togpu: Automatic Source Transformation from C++ to CUDA using Clang/LLVM","authors":"Matthew Marangoni, T. Wischgoll","doi":"10.2352/ISSN.2470-1173.2016.1.VDA-487","DOIUrl":null,"url":null,"abstract":"Parallel processing using GPUs provides substantial increases in algorithm performance across many disciplines including image processing. Serial algorithms are commonly translated to parallel CUDA or OpenCL algorithms. To perform this translation a user must first overcome various GPU development entry barriers. These obstacles change depending on the user but in general may include learning to program using the chosen API, understanding the intricacies of parallel processing and optimization, and other issues such as the upkeep of two sets of code. Such barriers are experienced by experts and novices alike. Leveraging the unique source to source transformation tools provided by Clang/LLVM we have created a tool to generate CUDA from C++. Such transformations reduce obstacles experienced in developing GPU software and can increase efficiency and revision speed regardless of experience. Image processing algorithms specifically benefit greatly from a quick revision cycle which our tool facilitates. This manuscript details togpu, an open source, cross platform tool which performs C++ to CUDA source to source transformations. We present experimentation results using common image processing algorithms. The tool lowers entrance barriers while preserving a singular code base and readability. Providing core tools enhancing GPU developer facilitates further developments to improve high performance, parallel computing.","PeriodicalId":89305,"journal":{"name":"Visualization and data analysis","volume":"48 1","pages":"1-9"},"PeriodicalIF":0.0000,"publicationDate":"2016-02-14","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"7","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"Visualization and data analysis","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.2352/ISSN.2470-1173.2016.1.VDA-487","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 7
Abstract
Parallel processing using GPUs provides substantial increases in algorithm performance across many disciplines including image processing. Serial algorithms are commonly translated to parallel CUDA or OpenCL algorithms. To perform this translation a user must first overcome various GPU development entry barriers. These obstacles change depending on the user but in general may include learning to program using the chosen API, understanding the intricacies of parallel processing and optimization, and other issues such as the upkeep of two sets of code. Such barriers are experienced by experts and novices alike. Leveraging the unique source to source transformation tools provided by Clang/LLVM we have created a tool to generate CUDA from C++. Such transformations reduce obstacles experienced in developing GPU software and can increase efficiency and revision speed regardless of experience. Image processing algorithms specifically benefit greatly from a quick revision cycle which our tool facilitates. This manuscript details togpu, an open source, cross platform tool which performs C++ to CUDA source to source transformations. We present experimentation results using common image processing algorithms. The tool lowers entrance barriers while preserving a singular code base and readability. Providing core tools enhancing GPU developer facilitates further developments to improve high performance, parallel computing.