SafeGPU: Contract- and library-based GPGPU for object-oriented languages

Using GPUs as general-purpose processors has revolutionized parallel computing by providing, for a large and growing set of algorithms, massive data-parallelization on desktop machines. An obstacle to their widespread adoption, however, is the difficulty of programming them and the low-level control...

Ausführliche Beschreibung

Gespeichert in:
Bibliographische Detailangaben
Veröffentlicht in:Computer languages, systems & structures systems & structures, 2017-06, Vol.48, p.68-88
Hauptverfasser: Kolesnichenko, Alexey, Poskitt, Christopher M., Nanz, Sebastian
Format: Artikel
Sprache:eng
Schlagworte:
Online-Zugang:Volltext
Tags: Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
container_end_page 88
container_issue
container_start_page 68
container_title Computer languages, systems & structures
container_volume 48
creator Kolesnichenko, Alexey
Poskitt, Christopher M.
Nanz, Sebastian
description Using GPUs as general-purpose processors has revolutionized parallel computing by providing, for a large and growing set of algorithms, massive data-parallelization on desktop machines. An obstacle to their widespread adoption, however, is the difficulty of programming them and the low-level control of the hardware required to achieve good performance. This paper proposes a programming approach, SafeGPU, that aims to make GPU data-parallel operations accessible through high-level libraries for object-oriented languages, while maintaining the performance benefits of lower-level code. The approach provides data-parallel operations for collections that can be chained and combined to express compound computations, with data synchronization and device management all handled automatically. It also integrates the design-by-contract methodology, which increases confidence in functional program correctness by embedding executable specifications into the program text. We present a prototype of SafeGPU for Eiffel, and show that it leads to modular and concise code that is accessible for GPGPU non-experts, while still providing performance comparable with that of hand-written CUDA code. We also describe our first steps towards porting it to C#, highlighting some challenges, solutions, and insights for implementing the approach in different managed languages. Finally, we show that runtime contract-checking becomes feasible in SafeGPU, as the contracts can be executed on the GPU. •A library-based GPU programming approach for object-oriented languages; implemented for Eiffel, and partially ported to C#.•Supports modular, efficient, and customizable GPU programming.•Automatically generates and optimizes CUDA kernels from high-level code.•Handles the transfer of primitives, simple classes, and function abstractions to C++ and CUDA.•Supports contracts and efficient runtime assertion checking on the GPU.
doi_str_mv 10.1016/j.cl.2016.08.002
format Article
fullrecord <record><control><sourceid>proquest_cross</sourceid><recordid>TN_cdi_proquest_miscellaneous_1880017617</recordid><sourceformat>XML</sourceformat><sourcesystem>PC</sourcesystem><els_id>S1477842416300057</els_id><sourcerecordid>1880017617</sourcerecordid><originalsourceid>FETCH-LOGICAL-c322t-c47533f2c93660965eee8a4e6a2e0d86ce1d3a3eef85f748483e7997b174a48c3</originalsourceid><addsrcrecordid>eNp1kM1LAzEQxYMoWKt3j3v0smu-Nsn2JkWrULCgPYdsdlKybDc12Qr-96bUq6d5ML83zHsI3RNcEUzEY1_ZoaJZVVhVGNMLNCNKslIoIS6z5lKWilN-jW5S6jOAFa9n6PXDOFhttotiGcYpGjuVhRm7YvBtNPGnbE2CrlhtMlK4EIvQ9pCZED2MU94MZtwdzQ7SLbpyZkhw9zfnaPvy_Ll8Ldfvq7fl07q0jNKptFzWjDlqGyYEbkQNAMpwEIYC7pSwQDpmGIBTtZNcccVANo1sieSGK8vm6OF89xDD1xHSpPc-WRjyIxCOSROlMCZSEJlRfEZtDClFcPoQ_T6n0gTrU2m613bQp9I0Vjp3ki2LswVyhG8PUSebk1rofMy5dRf8_-ZfQVNyVA</addsrcrecordid><sourcetype>Aggregation Database</sourcetype><iscdi>true</iscdi><recordtype>article</recordtype><pqid>1880017617</pqid></control><display><type>article</type><title>SafeGPU: Contract- and library-based GPGPU for object-oriented languages</title><source>Elsevier ScienceDirect Journals</source><creator>Kolesnichenko, Alexey ; Poskitt, Christopher M. ; Nanz, Sebastian</creator><creatorcontrib>Kolesnichenko, Alexey ; Poskitt, Christopher M. ; Nanz, Sebastian</creatorcontrib><description>Using GPUs as general-purpose processors has revolutionized parallel computing by providing, for a large and growing set of algorithms, massive data-parallelization on desktop machines. An obstacle to their widespread adoption, however, is the difficulty of programming them and the low-level control of the hardware required to achieve good performance. This paper proposes a programming approach, SafeGPU, that aims to make GPU data-parallel operations accessible through high-level libraries for object-oriented languages, while maintaining the performance benefits of lower-level code. The approach provides data-parallel operations for collections that can be chained and combined to express compound computations, with data synchronization and device management all handled automatically. It also integrates the design-by-contract methodology, which increases confidence in functional program correctness by embedding executable specifications into the program text. We present a prototype of SafeGPU for Eiffel, and show that it leads to modular and concise code that is accessible for GPGPU non-experts, while still providing performance comparable with that of hand-written CUDA code. We also describe our first steps towards porting it to C#, highlighting some challenges, solutions, and insights for implementing the approach in different managed languages. Finally, we show that runtime contract-checking becomes feasible in SafeGPU, as the contracts can be executed on the GPU. •A library-based GPU programming approach for object-oriented languages; implemented for Eiffel, and partially ported to C#.•Supports modular, efficient, and customizable GPU programming.•Automatically generates and optimizes CUDA kernels from high-level code.•Handles the transfer of primitives, simple classes, and function abstractions to C++ and CUDA.•Supports contracts and efficient runtime assertion checking on the GPU.</description><identifier>ISSN: 1477-8424</identifier><identifier>EISSN: 1873-6866</identifier><identifier>DOI: 10.1016/j.cl.2016.08.002</identifier><language>eng</language><publisher>Elsevier Ltd</publisher><subject>Accessibility ; Algorithms ; Design-by-contract ; Generative programming ; GPGPU ; Languages ; Managed languages ; Object oriented ; Object-orientation ; Object-oriented programming ; Obstacles ; Parallel computing ; Program correctness ; Programming ; Run time (computers) ; Runtime code generation</subject><ispartof>Computer languages, systems &amp; structures, 2017-06, Vol.48, p.68-88</ispartof><rights>2016 Elsevier Ltd</rights><lds50>peer_reviewed</lds50><oa>free_for_read</oa><woscitedreferencessubscribed>false</woscitedreferencessubscribed><cites>FETCH-LOGICAL-c322t-c47533f2c93660965eee8a4e6a2e0d86ce1d3a3eef85f748483e7997b174a48c3</cites></display><links><openurl>$$Topenurl_article</openurl><openurlfulltext>$$Topenurlfull_article</openurlfulltext><thumbnail>$$Tsyndetics_thumb_exl</thumbnail><linktohtml>$$Uhttps://www.sciencedirect.com/science/article/pii/S1477842416300057$$EHTML$$P50$$Gelsevier$$H</linktohtml><link.rule.ids>314,776,780,3537,27901,27902,65306</link.rule.ids></links><search><creatorcontrib>Kolesnichenko, Alexey</creatorcontrib><creatorcontrib>Poskitt, Christopher M.</creatorcontrib><creatorcontrib>Nanz, Sebastian</creatorcontrib><title>SafeGPU: Contract- and library-based GPGPU for object-oriented languages</title><title>Computer languages, systems &amp; structures</title><description>Using GPUs as general-purpose processors has revolutionized parallel computing by providing, for a large and growing set of algorithms, massive data-parallelization on desktop machines. An obstacle to their widespread adoption, however, is the difficulty of programming them and the low-level control of the hardware required to achieve good performance. This paper proposes a programming approach, SafeGPU, that aims to make GPU data-parallel operations accessible through high-level libraries for object-oriented languages, while maintaining the performance benefits of lower-level code. The approach provides data-parallel operations for collections that can be chained and combined to express compound computations, with data synchronization and device management all handled automatically. It also integrates the design-by-contract methodology, which increases confidence in functional program correctness by embedding executable specifications into the program text. We present a prototype of SafeGPU for Eiffel, and show that it leads to modular and concise code that is accessible for GPGPU non-experts, while still providing performance comparable with that of hand-written CUDA code. We also describe our first steps towards porting it to C#, highlighting some challenges, solutions, and insights for implementing the approach in different managed languages. Finally, we show that runtime contract-checking becomes feasible in SafeGPU, as the contracts can be executed on the GPU. •A library-based GPU programming approach for object-oriented languages; implemented for Eiffel, and partially ported to C#.•Supports modular, efficient, and customizable GPU programming.•Automatically generates and optimizes CUDA kernels from high-level code.•Handles the transfer of primitives, simple classes, and function abstractions to C++ and CUDA.•Supports contracts and efficient runtime assertion checking on the GPU.</description><subject>Accessibility</subject><subject>Algorithms</subject><subject>Design-by-contract</subject><subject>Generative programming</subject><subject>GPGPU</subject><subject>Languages</subject><subject>Managed languages</subject><subject>Object oriented</subject><subject>Object-orientation</subject><subject>Object-oriented programming</subject><subject>Obstacles</subject><subject>Parallel computing</subject><subject>Program correctness</subject><subject>Programming</subject><subject>Run time (computers)</subject><subject>Runtime code generation</subject><issn>1477-8424</issn><issn>1873-6866</issn><fulltext>true</fulltext><rsrctype>article</rsrctype><creationdate>2017</creationdate><recordtype>article</recordtype><recordid>eNp1kM1LAzEQxYMoWKt3j3v0smu-Nsn2JkWrULCgPYdsdlKybDc12Qr-96bUq6d5ML83zHsI3RNcEUzEY1_ZoaJZVVhVGNMLNCNKslIoIS6z5lKWilN-jW5S6jOAFa9n6PXDOFhttotiGcYpGjuVhRm7YvBtNPGnbE2CrlhtMlK4EIvQ9pCZED2MU94MZtwdzQ7SLbpyZkhw9zfnaPvy_Ll8Ldfvq7fl07q0jNKptFzWjDlqGyYEbkQNAMpwEIYC7pSwQDpmGIBTtZNcccVANo1sieSGK8vm6OF89xDD1xHSpPc-WRjyIxCOSROlMCZSEJlRfEZtDClFcPoQ_T6n0gTrU2m613bQp9I0Vjp3ki2LswVyhG8PUSebk1rofMy5dRf8_-ZfQVNyVA</recordid><startdate>201706</startdate><enddate>201706</enddate><creator>Kolesnichenko, Alexey</creator><creator>Poskitt, Christopher M.</creator><creator>Nanz, Sebastian</creator><general>Elsevier Ltd</general><scope>AAYXX</scope><scope>CITATION</scope><scope>7SC</scope><scope>8FD</scope><scope>JQ2</scope><scope>L7M</scope><scope>L~C</scope><scope>L~D</scope></search><sort><creationdate>201706</creationdate><title>SafeGPU: Contract- and library-based GPGPU for object-oriented languages</title><author>Kolesnichenko, Alexey ; Poskitt, Christopher M. ; Nanz, Sebastian</author></sort><facets><frbrtype>5</frbrtype><frbrgroupid>cdi_FETCH-LOGICAL-c322t-c47533f2c93660965eee8a4e6a2e0d86ce1d3a3eef85f748483e7997b174a48c3</frbrgroupid><rsrctype>articles</rsrctype><prefilter>articles</prefilter><language>eng</language><creationdate>2017</creationdate><topic>Accessibility</topic><topic>Algorithms</topic><topic>Design-by-contract</topic><topic>Generative programming</topic><topic>GPGPU</topic><topic>Languages</topic><topic>Managed languages</topic><topic>Object oriented</topic><topic>Object-orientation</topic><topic>Object-oriented programming</topic><topic>Obstacles</topic><topic>Parallel computing</topic><topic>Program correctness</topic><topic>Programming</topic><topic>Run time (computers)</topic><topic>Runtime code generation</topic><toplevel>peer_reviewed</toplevel><toplevel>online_resources</toplevel><creatorcontrib>Kolesnichenko, Alexey</creatorcontrib><creatorcontrib>Poskitt, Christopher M.</creatorcontrib><creatorcontrib>Nanz, Sebastian</creatorcontrib><collection>CrossRef</collection><collection>Computer and Information Systems Abstracts</collection><collection>Technology Research Database</collection><collection>ProQuest Computer Science Collection</collection><collection>Advanced Technologies Database with Aerospace</collection><collection>Computer and Information Systems Abstracts – Academic</collection><collection>Computer and Information Systems Abstracts Professional</collection><jtitle>Computer languages, systems &amp; structures</jtitle></facets><delivery><delcategory>Remote Search Resource</delcategory><fulltext>fulltext</fulltext></delivery><addata><au>Kolesnichenko, Alexey</au><au>Poskitt, Christopher M.</au><au>Nanz, Sebastian</au><format>journal</format><genre>article</genre><ristype>JOUR</ristype><atitle>SafeGPU: Contract- and library-based GPGPU for object-oriented languages</atitle><jtitle>Computer languages, systems &amp; structures</jtitle><date>2017-06</date><risdate>2017</risdate><volume>48</volume><spage>68</spage><epage>88</epage><pages>68-88</pages><issn>1477-8424</issn><eissn>1873-6866</eissn><abstract>Using GPUs as general-purpose processors has revolutionized parallel computing by providing, for a large and growing set of algorithms, massive data-parallelization on desktop machines. An obstacle to their widespread adoption, however, is the difficulty of programming them and the low-level control of the hardware required to achieve good performance. This paper proposes a programming approach, SafeGPU, that aims to make GPU data-parallel operations accessible through high-level libraries for object-oriented languages, while maintaining the performance benefits of lower-level code. The approach provides data-parallel operations for collections that can be chained and combined to express compound computations, with data synchronization and device management all handled automatically. It also integrates the design-by-contract methodology, which increases confidence in functional program correctness by embedding executable specifications into the program text. We present a prototype of SafeGPU for Eiffel, and show that it leads to modular and concise code that is accessible for GPGPU non-experts, while still providing performance comparable with that of hand-written CUDA code. We also describe our first steps towards porting it to C#, highlighting some challenges, solutions, and insights for implementing the approach in different managed languages. Finally, we show that runtime contract-checking becomes feasible in SafeGPU, as the contracts can be executed on the GPU. •A library-based GPU programming approach for object-oriented languages; implemented for Eiffel, and partially ported to C#.•Supports modular, efficient, and customizable GPU programming.•Automatically generates and optimizes CUDA kernels from high-level code.•Handles the transfer of primitives, simple classes, and function abstractions to C++ and CUDA.•Supports contracts and efficient runtime assertion checking on the GPU.</abstract><pub>Elsevier Ltd</pub><doi>10.1016/j.cl.2016.08.002</doi><tpages>21</tpages><oa>free_for_read</oa></addata></record>
fulltext fulltext
identifier ISSN: 1477-8424
ispartof Computer languages, systems & structures, 2017-06, Vol.48, p.68-88
issn 1477-8424
1873-6866
language eng
recordid cdi_proquest_miscellaneous_1880017617
source Elsevier ScienceDirect Journals
subjects Accessibility
Algorithms
Design-by-contract
Generative programming
GPGPU
Languages
Managed languages
Object oriented
Object-orientation
Object-oriented programming
Obstacles
Parallel computing
Program correctness
Programming
Run time (computers)
Runtime code generation
title SafeGPU: Contract- and library-based GPGPU for object-oriented languages
url https://sfx.bib-bvb.de/sfx_tum?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&ctx_tim=2025-02-03T00%3A43%3A13IST&url_ver=Z39.88-2004&url_ctx_fmt=infofi/fmt:kev:mtx:ctx&rfr_id=info:sid/primo.exlibrisgroup.com:primo3-Article-proquest_cross&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft.genre=article&rft.atitle=SafeGPU:%20Contract-%20and%20library-based%20GPGPU%20for%20object-oriented%20languages&rft.jtitle=Computer%20languages,%20systems%20&%20structures&rft.au=Kolesnichenko,%20Alexey&rft.date=2017-06&rft.volume=48&rft.spage=68&rft.epage=88&rft.pages=68-88&rft.issn=1477-8424&rft.eissn=1873-6866&rft_id=info:doi/10.1016/j.cl.2016.08.002&rft_dat=%3Cproquest_cross%3E1880017617%3C/proquest_cross%3E%3Curl%3E%3C/url%3E&disable_directlink=true&sfx.directlink=off&sfx.report_link=0&rft_id=info:oai/&rft_pqid=1880017617&rft_id=info:pmid/&rft_els_id=S1477842416300057&rfr_iscdi=true