{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,4,7]],"date-time":"2026-04-07T22:27:04Z","timestamp":1775600824058,"version":"3.50.1"},"reference-count":47,"publisher":"IEEE","content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":[],"published-print":{"date-parts":[[2018,12]]},"DOI":"10.1109\/padsw.2018.8644541","type":"proceedings-article","created":{"date-parts":[[2019,2,21]],"date-time":"2019-02-21T23:23:38Z","timestamp":1550791418000},"page":"408-416","source":"Crossref","is-referenced-by-count":5,"title":["OCAL: An Abstraction for Host-Code Programming with OpenCL and CUDA"],"prefix":"10.1109","author":[{"given":"Ari","family":"Rasch","sequence":"first","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Martin","family":"Wrodarczyk","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Richard","family":"Schulze","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Sergei","family":"Gorlatch","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"263","reference":[{"key":"ref39","year":"2014","journal-title":"Ambient Occlusion Benchmark (AOBench)"},{"key":"ref38","year":"2018","journal-title":"Unified Memory for CUDA Beginners"},{"key":"ref33","first-page":"1","article-title":"A Performance Comparison of CUDA and OpenCL","author":"karimi","year":"2010","journal-title":"CoRR"},{"key":"ref32","doi-asserted-by":"publisher","DOI":"10.1016\/j.parco.2011.10.002"},{"key":"ref31","year":"2012","journal-title":"OpenCL Samples"},{"key":"ref30","first-page":"238","article-title":"Go Meta! A Case for Generative Programming and DSLs in Performance Critical Systems","author":"rompf","year":"2015","journal-title":"Leibniz International Proceedings in Informatics"},{"key":"ref37","year":"2018","journal-title":"How to overlap data transfers in CUDA C\/C++"},{"key":"ref36","article-title":"Siamese Neural Networks for One-shot Image Recognition","author":"koch","year":"0","journal-title":"ICML Deep Learning Workshop 2015"},{"key":"ref35","doi-asserted-by":"publisher","DOI":"10.1145\/2647868.2654889"},{"key":"ref34","first-page":"1","article-title":"CLBlast: A Tuned OpenCL BLAS Library","author":"nugteren","year":"2017","journal-title":"CoRR"},{"key":"ref10","first-page":"1417","author":"gorlatch","year":"2011","journal-title":"Parallel Skeletons"},{"key":"ref40","year":"2018","journal-title":"Code Samples"},{"key":"ref11","doi-asserted-by":"crossref","first-page":"859","DOI":"10.1007\/978-3-642-32820-6_85","article-title":"OpenACC - First Experiences with Real-World Applications","author":"wienke","year":"2012","journal-title":"booktitle= &#x201C;Euro-Par Parallel Processing"},{"key":"ref12","doi-asserted-by":"publisher","DOI":"10.1109\/99.660313"},{"key":"ref13","doi-asserted-by":"publisher","DOI":"10.1109\/SC.2010.36"},{"key":"ref14","doi-asserted-by":"publisher","DOI":"10.1145\/2884045.2884051"},{"key":"ref15","doi-asserted-by":"publisher","DOI":"10.1145\/2039312.2039318"},{"key":"ref16","article-title":"Maestro: Data Orchestration and Tuning for OpenCL Devices","author":"spafford","year":"2010","journal-title":"Euro-Par 96 Parallel Processing"},{"key":"ref17","first-page":"1","article-title":"Boost. Compute: A Parallel Computing Library for C++ Based on OpenCL","author":"szuppe","year":"2016","journal-title":"International Workshop on OpenCL"},{"key":"ref18","first-page":"110","article-title":"Improving OpenCL Programmability with the Heterogeneous Programming Library","year":"2015","journal-title":"Procedia Computer Science"},{"key":"ref19","doi-asserted-by":"publisher","DOI":"10.1016\/j.parco.2011.09.001"},{"key":"ref28","year":"2018","journal-title":"Hyper-Q"},{"key":"ref4","year":"2018","journal-title":"How to optimize data transfers in CUDA C\/C++"},{"key":"ref27","year":"2018","journal-title":"CUDA Toolkit 9 1"},{"key":"ref3","year":"2018","journal-title":"How to Increase Performance by Minimizing Buffer Copies on Intel Processor Graphics"},{"key":"ref6","doi-asserted-by":"publisher","DOI":"10.1145\/1863482.1863487"},{"key":"ref29","article-title":"Standard C++ Foundation Foundation Members","year":"2018","journal-title":"ISO C++"},{"key":"ref5","doi-asserted-by":"publisher","DOI":"10.1109\/Trustcom.2015.628"},{"key":"ref8","doi-asserted-by":"publisher","DOI":"10.1145\/2951913.2951920"},{"key":"ref7","first-page":"1176","article-title":"SkeICL - A Portable Skeleton Library for High-Level GPU Programming","author":"steuwer","year":"2011","journal-title":"IEEE IPDPS Workshops"},{"key":"ref2","year":"2018","journal-title":"CUDA-MEMCHECK"},{"key":"ref9","first-page":"509","article-title":"Data Parallel Skeletons for GPU Clusters and Multi-GPU Systems","author":"ernsting","year":"2011","journal-title":"PARCO"},{"key":"ref1","doi-asserted-by":"publisher","DOI":"10.1145\/3110355.3110356"},{"key":"ref46","year":"2016","journal-title":"Halstead Metrics Tool"},{"key":"ref20","first-page":"1","article-title":"Multi-device Controllers: A Library to Simplify Parallel Heterogeneous Programming","author":"moreton-fernandez","year":"2017","journal-title":"International Journal of Parallel Programming"},{"key":"ref45","author":"david","year":"2018","journal-title":"SLOCCount"},{"key":"ref22","first-page":"673","article-title":"SYCL: Single-source C++ accelerator programming","author":"reyes","year":"2015","journal-title":"PARCO"},{"key":"ref47","doi-asserted-by":"publisher","DOI":"10.1145\/73141.74840"},{"key":"ref21","doi-asserted-by":"publisher","DOI":"10.1109\/LLVM-HPC.2014.9"},{"key":"ref42","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.1976.233837"},{"key":"ref24","first-page":"187","article-title":"StarPU: a unified platform for task scheduling on heterogeneous multicore architectures","author":"cedric","year":"2011","journal-title":"Concurrency and Computation Practice and Experience"},{"key":"ref41","doi-asserted-by":"publisher","DOI":"10.1007\/BF02249046"},{"key":"ref23","doi-asserted-by":"publisher","DOI":"10.1142\/S0129626411000151"},{"key":"ref44","author":"arnold","year":"2005","journal-title":"Project Documentation"},{"key":"ref26","doi-asserted-by":"publisher","DOI":"10.1145\/1996130.1996168"},{"key":"ref43","author":"halstead","year":"1977","journal-title":"Elements of Software Science"},{"key":"ref25","doi-asserted-by":"crossref","first-page":"1195","DOI":"10.1007\/s00607-013-0371-8","article-title":"The PEPPHER composition tool: performance-aware composition for GPU-based systems","author":"dastgeer","year":"2014","journal-title":"Computing"}],"event":{"name":"2018 IEEE 24th International Conference on Parallel and Distributed Systems (ICPADS)","location":"Singapore, Singapore","start":{"date-parts":[[2018,12,11]]},"end":{"date-parts":[[2018,12,13]]}},"container-title":["2018 IEEE 24th International Conference on Parallel and Distributed Systems (ICPADS)"],"original-title":[],"link":[{"URL":"http:\/\/xplorestaging.ieee.org\/ielx7\/8635632\/8644527\/08644541.pdf?arnumber=8644541","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2022,1,27]],"date-time":"2022-01-27T07:31:06Z","timestamp":1643268666000},"score":1,"resource":{"primary":{"URL":"https:\/\/ieeexplore.ieee.org\/document\/8644541\/"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2018,12]]},"references-count":47,"URL":"https:\/\/doi.org\/10.1109\/padsw.2018.8644541","relation":{},"subject":[],"published":{"date-parts":[[2018,12]]}}}