{"id":"https://openalex.org/W4414984257","doi":"https://doi.org/10.5753/sblp.2025.13152","title":"Towards GPU Parallelism Abstractions in Rust: A Case Study with Linear Pipelines","display_name":"Towards GPU Parallelism Abstractions in Rust: A Case Study with Linear Pipelines","publication_year":2025,"publication_date":"2025-09-22","ids":{"openalex":"https://openalex.org/W4414984257","doi":"https://doi.org/10.5753/sblp.2025.13152"},"language":"en","primary_location":{"id":"doi:10.5753/sblp.2025.13152","is_oa":true,"landing_page_url":"https://doi.org/10.5753/sblp.2025.13152","pdf_url":"https://sol.sbc.org.br/index.php/sblp/article/download/36951/36736","source":null,"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Anais do XXIX Simp\u00f3sio Brasileiro de Linguagens de Programa\u00e7\u00e3o (SBLP 2025)","raw_type":"proceedings-article"},"type":"article","indexed_in":["crossref"],"open_access":{"is_oa":true,"oa_status":"gold","oa_url":"https://sol.sbc.org.br/index.php/sblp/article/download/36951/36736","any_repository_has_fulltext":null},"authorships":[{"author_position":"first","author":{"id":"https://openalex.org/A5041047127","display_name":"Leonardo G. Fa\u00e9","orcid":"https://orcid.org/0009-0008-0323-8950"},"institutions":[{"id":"https://openalex.org/I45643870","display_name":"Pontif\u00edcia Universidade Cat\u00f3lica do Rio Grande do Sul","ror":"https://ror.org/025vmq686","country_code":"BR","type":"education","lineage":["https://openalex.org/I45643870"]}],"countries":["BR"],"is_corresponding":true,"raw_author_name":"Leonardo Gibrowski Fa\u00e9","raw_affiliation_strings":["PUCRS"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"PUCRS","institution_ids":["https://openalex.org/I45643870"]}]},{"author_position":"last","author":{"id":"https://openalex.org/A5086071233","display_name":"Dalvan Griebler","orcid":"https://orcid.org/0000-0002-4690-3964"},"institutions":[{"id":"https://openalex.org/I45643870","display_name":"Pontif\u00edcia Universidade Cat\u00f3lica do Rio Grande do Sul","ror":"https://ror.org/025vmq686","country_code":"BR","type":"education","lineage":["https://openalex.org/I45643870"]}],"countries":["BR"],"is_corresponding":false,"raw_author_name":"Dalvan Griebler","raw_affiliation_strings":["PUCRS"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"PUCRS","institution_ids":["https://openalex.org/I45643870"]}]}],"institutions":[],"countries_distinct_count":1,"institutions_distinct_count":2,"corresponding_author_ids":["https://openalex.org/A5041047127"],"corresponding_institution_ids":["https://openalex.org/I45643870"],"apc_list":null,"apc_paid":null,"fwci":0.0,"has_fulltext":true,"cited_by_count":0,"citation_normalized_percentile":{"value":0.33762032,"is_in_top_1_percent":false,"is_in_top_10_percent":false},"cited_by_percentile_year":null,"biblio":{"volume":null,"issue":null,"first_page":"75","last_page":"83"},"is_retracted":false,"is_paratext":false,"is_xpac":false,"primary_topic":{"id":"https://openalex.org/T12696","display_name":"Icing and De-icing Technologies","score":0.9871000051498413,"subfield":{"id":"https://openalex.org/subfields/2202","display_name":"Aerospace Engineering"},"field":{"id":"https://openalex.org/fields/22","display_name":"Engineering"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},"topics":[{"id":"https://openalex.org/T12696","display_name":"Icing and De-icing Technologies","score":0.9871000051498413,"subfield":{"id":"https://openalex.org/subfields/2202","display_name":"Aerospace Engineering"},"field":{"id":"https://openalex.org/fields/22","display_name":"Engineering"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},{"id":"https://openalex.org/T12163","display_name":"Aerosol Filtration and Electrostatic Precipitation","score":0.9126999974250793,"subfield":{"id":"https://openalex.org/subfields/2208","display_name":"Electrical and Electronic Engineering"},"field":{"id":"https://openalex.org/fields/22","display_name":"Engineering"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}}],"keywords":[{"id":"https://openalex.org/keywords/compiler","display_name":"Compiler","score":0.5339000225067139},{"id":"https://openalex.org/keywords/cuda","display_name":"CUDA","score":0.5073000192642212},{"id":"https://openalex.org/keywords/benchmark","display_name":"Benchmark (surveying)","score":0.4602999985218048},{"id":"https://openalex.org/keywords/general-purpose-computing-on-graphics-processing-units","display_name":"General-purpose computing on graphics processing units","score":0.4544000029563904},{"id":"https://openalex.org/keywords/pipeline","display_name":"Pipeline (software)","score":0.45089998841285706},{"id":"https://openalex.org/keywords/rust","display_name":"Rust (programming language)","score":0.4487000107765198},{"id":"https://openalex.org/keywords/abstraction","display_name":"Abstraction","score":0.41760000586509705},{"id":"https://openalex.org/keywords/static-analysis","display_name":"Static analysis","score":0.3882000148296356},{"id":"https://openalex.org/keywords/macro","display_name":"Macro","score":0.37560001015663147},{"id":"https://openalex.org/keywords/code-generation","display_name":"Code generation","score":0.36890000104904175}],"concepts":[{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.9013000130653381},{"id":"https://openalex.org/C173608175","wikidata":"https://www.wikidata.org/wiki/Q232661","display_name":"Parallel computing","level":1,"score":0.5986999869346619},{"id":"https://openalex.org/C169590947","wikidata":"https://www.wikidata.org/wiki/Q47506","display_name":"Compiler","level":2,"score":0.5339000225067139},{"id":"https://openalex.org/C2778119891","wikidata":"https://www.wikidata.org/wiki/Q477690","display_name":"CUDA","level":2,"score":0.5073000192642212},{"id":"https://openalex.org/C185798385","wikidata":"https://www.wikidata.org/wiki/Q1161707","display_name":"Benchmark (surveying)","level":2,"score":0.4602999985218048},{"id":"https://openalex.org/C50630238","wikidata":"https://www.wikidata.org/wiki/Q971505","display_name":"General-purpose computing on graphics processing units","level":3,"score":0.4544000029563904},{"id":"https://openalex.org/C43521106","wikidata":"https://www.wikidata.org/wiki/Q2165493","display_name":"Pipeline (software)","level":2,"score":0.45089998841285706},{"id":"https://openalex.org/C197781089","wikidata":"https://www.wikidata.org/wiki/Q575650","display_name":"Rust (programming language)","level":2,"score":0.4487000107765198},{"id":"https://openalex.org/C124304363","wikidata":"https://www.wikidata.org/wiki/Q673661","display_name":"Abstraction","level":2,"score":0.41760000586509705},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.4131999909877777},{"id":"https://openalex.org/C97686452","wikidata":"https://www.wikidata.org/wiki/Q7604153","display_name":"Static analysis","level":2,"score":0.3882000148296356},{"id":"https://openalex.org/C166955791","wikidata":"https://www.wikidata.org/wiki/Q629579","display_name":"Macro","level":2,"score":0.37560001015663147},{"id":"https://openalex.org/C133162039","wikidata":"https://www.wikidata.org/wiki/Q1061077","display_name":"Code generation","level":3,"score":0.36890000104904175},{"id":"https://openalex.org/C2779960059","wikidata":"https://www.wikidata.org/wiki/Q7113681","display_name":"Overhead (engineering)","level":2,"score":0.3686999976634979},{"id":"https://openalex.org/C2776760102","wikidata":"https://www.wikidata.org/wiki/Q5139990","display_name":"Code (set theory)","level":3,"score":0.3659000098705292},{"id":"https://openalex.org/C76782552","wikidata":"https://www.wikidata.org/wiki/Q110546","display_name":"Just-in-time compilation","level":3,"score":0.36500000953674316},{"id":"https://openalex.org/C21442007","wikidata":"https://www.wikidata.org/wiki/Q1027879","display_name":"Graphics","level":2,"score":0.36480000615119934},{"id":"https://openalex.org/C98045186","wikidata":"https://www.wikidata.org/wiki/Q205663","display_name":"Process (computing)","level":2,"score":0.3630000054836273},{"id":"https://openalex.org/C175309249","wikidata":"https://www.wikidata.org/wiki/Q725864","display_name":"Pipeline transport","level":2,"score":0.35519999265670776},{"id":"https://openalex.org/C202491316","wikidata":"https://www.wikidata.org/wiki/Q272683","display_name":"Instruction set","level":2,"score":0.34540000557899475},{"id":"https://openalex.org/C36503486","wikidata":"https://www.wikidata.org/wiki/Q11235244","display_name":"Domain (mathematical analysis)","level":2,"score":0.32659998536109924},{"id":"https://openalex.org/C519991488","wikidata":"https://www.wikidata.org/wiki/Q28865","display_name":"Python (programming language)","level":2,"score":0.3203999996185303},{"id":"https://openalex.org/C137287247","wikidata":"https://www.wikidata.org/wiki/Q1329550","display_name":"Static program analysis","level":4,"score":0.3068000078201294},{"id":"https://openalex.org/C45374587","wikidata":"https://www.wikidata.org/wiki/Q12525525","display_name":"Computation","level":2,"score":0.3019999861717224},{"id":"https://openalex.org/C135257023","wikidata":"https://www.wikidata.org/wiki/Q691358","display_name":"Domain-specific language","level":2,"score":0.29190000891685486},{"id":"https://openalex.org/C43126263","wikidata":"https://www.wikidata.org/wiki/Q128751","display_name":"Source code","level":2,"score":0.290800005197525},{"id":"https://openalex.org/C118524514","wikidata":"https://www.wikidata.org/wiki/Q173212","display_name":"Computer architecture","level":1,"score":0.28999999165534973},{"id":"https://openalex.org/C2781172179","wikidata":"https://www.wikidata.org/wiki/Q853109","display_name":"Parallelism (grammar)","level":2,"score":0.2888999879360199},{"id":"https://openalex.org/C157764524","wikidata":"https://www.wikidata.org/wiki/Q1383412","display_name":"Throughput","level":3,"score":0.28519999980926514},{"id":"https://openalex.org/C140763907","wikidata":"https://www.wikidata.org/wiki/Q2714055","display_name":"Instruction-level parallelism","level":3,"score":0.2736000120639801},{"id":"https://openalex.org/C147358964","wikidata":"https://www.wikidata.org/wiki/Q1200992","display_name":"Abstraction layer","level":3,"score":0.2728999853134155},{"id":"https://openalex.org/C107027933","wikidata":"https://www.wikidata.org/wiki/Q2006448","display_name":"Stream processing","level":2,"score":0.2727999985218048},{"id":"https://openalex.org/C548217200","wikidata":"https://www.wikidata.org/wiki/Q251","display_name":"Java","level":2,"score":0.2630999982357025},{"id":"https://openalex.org/C113775141","wikidata":"https://www.wikidata.org/wiki/Q428691","display_name":"Computer engineering","level":1,"score":0.2599000036716461},{"id":"https://openalex.org/C190902152","wikidata":"https://www.wikidata.org/wiki/Q1325106","display_name":"Optimizing compiler","level":3,"score":0.25839999318122864},{"id":"https://openalex.org/C2778361913","wikidata":"https://www.wikidata.org/wiki/Q7248437","display_name":"Program transformation","level":2,"score":0.25769999623298645},{"id":"https://openalex.org/C115168132","wikidata":"https://www.wikidata.org/wiki/Q55813","display_name":"Machine code","level":3,"score":0.25369998812675476}],"mesh":[],"locations_count":1,"locations":[{"id":"doi:10.5753/sblp.2025.13152","is_oa":true,"landing_page_url":"https://doi.org/10.5753/sblp.2025.13152","pdf_url":"https://sol.sbc.org.br/index.php/sblp/article/download/36951/36736","source":null,"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Anais do XXIX Simp\u00f3sio Brasileiro de Linguagens de Programa\u00e7\u00e3o (SBLP 2025)","raw_type":"proceedings-article"}],"best_oa_location":{"id":"doi:10.5753/sblp.2025.13152","is_oa":true,"landing_page_url":"https://doi.org/10.5753/sblp.2025.13152","pdf_url":"https://sol.sbc.org.br/index.php/sblp/article/download/36951/36736","source":null,"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Anais do XXIX Simp\u00f3sio Brasileiro de Linguagens de Programa\u00e7\u00e3o (SBLP 2025)","raw_type":"proceedings-article"},"sustainable_development_goals":[],"awards":[{"id":"https://openalex.org/G2554800379","display_name":null,"funder_award_id":"Code 001","funder_id":"https://openalex.org/F4320322502","funder_display_name":"Funda\u00e7\u00e3o de Amparo \u00e0 Pesquisa do Estado do Rio Grande do Sul"},{"id":"https://openalex.org/G4342047834","display_name":null,"funder_award_id":"24/2551-0001400-4","funder_id":"https://openalex.org/F4320322502","funder_display_name":"Funda\u00e7\u00e3o de Amparo \u00e0 Pesquisa do Estado do Rio Grande do Sul"},{"id":"https://openalex.org/G7511921402","display_name":null,"funder_award_id":"09/2023","funder_id":"https://openalex.org/F4320322025","funder_display_name":"Conselho Nacional de Desenvolvimento Cient\u00edfico e Tecnol\u00f3gico"}],"funders":[{"id":"https://openalex.org/F4320321091","display_name":"Coordena\u00e7\u00e3o de Aperfei\u00e7oamento de Pessoal de N\u00edvel Superior","ror":"https://ror.org/00x0ma614"},{"id":"https://openalex.org/F4320322025","display_name":"Conselho Nacional de Desenvolvimento Cient\u00edfico e Tecnol\u00f3gico","ror":"https://ror.org/03swz6y49"},{"id":"https://openalex.org/F4320322502","display_name":"Funda\u00e7\u00e3o de Amparo \u00e0 Pesquisa do Estado do Rio Grande do Sul","ror":"https://ror.org/05k49za97"}],"has_content":{"pdf":true,"grobid_xml":false},"content_urls":{"pdf":"https://content.openalex.org/works/W4414984257.pdf"},"referenced_works_count":20,"referenced_works":["https://openalex.org/W189545204","https://openalex.org/W2017745767","https://openalex.org/W2060990118","https://openalex.org/W2117242079","https://openalex.org/W2593611378","https://openalex.org/W2912210087","https://openalex.org/W2972295229","https://openalex.org/W3082389863","https://openalex.org/W3092962901","https://openalex.org/W3155528695","https://openalex.org/W3157428835","https://openalex.org/W3187696456","https://openalex.org/W3195293013","https://openalex.org/W4297101927","https://openalex.org/W4316657864","https://openalex.org/W4387377652","https://openalex.org/W4388214479","https://openalex.org/W4388214494","https://openalex.org/W4394825350","https://openalex.org/W4403427389"],"related_works":[],"abstract_inverted_index":{"Programming":[0],"Graphics":[1],"Processing":[2],"Units":[3],"(GPUs)":[4],"for":[5,62,108],"general-purpose":[6],"computation":[7],"remains":[8],"a":[9,28,68,121,129,146,185],"daunting":[10],"task,":[11],"often":[12,48],"requiring":[13],"specialized":[14],"knowledge":[15],"of":[16,117],"low-level":[17],"APIs":[18],"like":[19],"CUDA":[20],"or":[21,53,143,204],"OpenCL.":[22],"While":[23],"Rust":[24,60,84,137],"has":[25],"emerged":[26],"as":[27,140],"modern,":[29],"safe,":[30],"and":[31,115,160,169],"performant":[32],"systems":[33],"programming":[34],"language,":[35],"its":[36],"adoption":[37],"in":[38,72,132,145,189,199],"the":[39,89,106,113,153],"GPU":[40,63],"computing":[41],"domain":[42],"is":[43],"still":[44],"nascent.":[45],"Existing":[46],"approaches":[47],"involve":[49],"intricate":[50],"compiler":[51],"modifications":[52],"complex":[54,109],"static":[55,110],"analysis":[56],"to":[57,77,209],"adapt":[58],"CPU-centric":[59],"code":[61,81,90],"execution.":[64],"This":[65],"paper":[66],"presents":[67],"novel":[69],"high-level":[70],"abstraction":[71,119],"Rust,":[73],"leveraging":[74],"procedural":[75],"macros":[76],"automatically":[78],"generate":[79],"GPU-executable":[80],"from":[82],"constrained":[83],"functions.":[85],"Our":[86,179],"approach":[87,193],"simplifies":[88],"generation":[91],"process":[92],"by":[93],"imposing":[94],"specific":[95],"limitations":[96],"on":[97,152],"how":[98],"these":[99],"functions":[100,138],"can":[101],"be":[102],"written,":[103],"thereby":[104],"avoiding":[105],"need":[107],"analysis.We":[111],"demonstrate":[112],"feasibility":[114],"effectiveness":[116],"our":[118,157,192],"through":[120],"case":[122],"study":[123],"involving":[124],"linear":[125],"pipeline":[126],"parallel":[127],"patterns,":[128],"common":[130],"structure":[131],"data-parallel":[133],"applications.":[134],"By":[135],"transforming":[136],"annotated":[139],"source,":[141],"stage,":[142],"sink":[144],"pipeline,":[147],"we":[148],"enable":[149],"straightforward":[150],"execution":[151],"GPU.":[154],"We":[155],"evaluate":[156],"abstraction\u2019s":[158],"performance":[159,187],"programmability":[161],"using":[162],"two":[163],"benchmark":[164],"applications:":[165],"sobel":[166],"(image":[167],"filtering)":[168],"latbol":[170],"(fluid":[171],"simulation),":[172],"comparing":[173],"it":[174],"against":[175],"manual":[176],"OpenCL":[177],"implementations.":[178],"results":[180],"indicate":[181],"that":[182],"while":[183],"incurring":[184],"small":[186],"overhead":[188],"some":[190],"cases,":[191],"significantly":[194],"reduces":[195],"development":[196],"effort":[197],"and,":[198],"certain":[200],"scenarios,":[201],"achieves":[202],"comparable":[203],"even":[205],"superior":[206],"throughput":[207],"compared":[208],"CPU-based":[210],"parallelism.":[211]},"counts_by_year":[],"updated_date":"2026-06-02T09:04:35.204637","created_date":"2025-10-10T00:00:00"}
