{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,6,30]],"date-time":"2026-06-30T01:17:02Z","timestamp":1782782222240,"version":"3.54.5"},"reference-count":25,"publisher":"Springer Science and Business Media LLC","issue":"6","license":[{"start":{"date-parts":[[2021,5,19]],"date-time":"2021-05-19T00:00:00Z","timestamp":1621382400000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0"},{"start":{"date-parts":[[2021,5,19]],"date-time":"2021-05-19T00:00:00Z","timestamp":1621382400000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0"}],"funder":[{"DOI":"10.13039\/100010661","name":"Horizon 2020 Framework Programme","doi-asserted-by":"publisher","award":["801015"],"award-info":[{"award-number":["801015"]}],"id":[{"id":"10.13039\/100010661","id-type":"DOI","asserted-by":"publisher"}]},{"DOI":"10.13039\/501100010752","name":"National Graduate School in Computer Science","doi-asserted-by":"publisher","id":[{"id":"10.13039\/501100010752","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":["link.springer.com"],"crossmark-restriction":false},"short-container-title":["Int J Parallel Prog"],"published-print":{"date-parts":[[2021,12]]},"abstract":"<jats:title>Abstract<\/jats:title><jats:p>We present the third generation of the C++-based open-source skeleton programming framework SkePU. Its main new features include new skeletons, new data container types, support for returning multiple objects from skeleton instances and user functions, support for specifying alternative platform-specific user functions to exploit e.g. custom SIMD instructions, generalized scheduling variants for the multicore CPU backends, and a new cluster-backend targeting the custom MPI interface provided by the StarPU task-based runtime system. We have also revised the smart data containers\u2019 memory consistency model for automatic data sharing between main and device memory. The new features are the result of a two-year co-design effort collecting feedback from HPC application partners in the EU H2020 project EXA2PRO, and target especially the HPC application domain and HPC platforms. We evaluate the performance effects of the new features on high-end multicore CPU and GPU systems and on HPC clusters.<\/jats:p>","DOI":"10.1007\/s10766-021-00704-3","type":"journal-article","created":{"date-parts":[[2021,5,19]],"date-time":"2021-05-19T17:03:00Z","timestamp":1621443780000},"page":"846-866","update-policy":"https:\/\/doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":24,"title":["SkePU 3: Portable High-Level Programming of Heterogeneous Systems and HPC Clusters"],"prefix":"10.1007","volume":"49","author":[{"ORCID":"https:\/\/orcid.org\/0000-0001-6514-4601","authenticated-orcid":false,"given":"August","family":"Ernstsson","sequence":"first","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Johan","family":"Ahlqvist","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Stavroula","family":"Zouzoula","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-5241-0026","authenticated-orcid":false,"given":"Christoph","family":"Kessler","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"297","published-online":{"date-parts":[[2021,5,19]]},"reference":[{"key":"704_CR1","doi-asserted-by":"crossref","unstructured":"Aldinucci, M., Campa, S., Danelutto, M., Kilpatrick, P., Torquati, M.: Targeting distributed systems in FastFlow. In: Euro-Par 2012: Parallel Processing Workshops. LNCS 7640, pp. 47\u201356. Springer, Berlin (2013)","DOI":"10.1007\/978-3-642-36949-0_7"},{"key":"704_CR2","doi-asserted-by":"crossref","unstructured":"Augonnet C, Aumage O, Furmento N, Namyst R, Thibault S: StarPU-MPI: Task Programming Over Clusters of Machines Enhanced with Accelerators. In: Jesper\u00a0Larsson Tr\u00e4ff, Siegfried Benkner, and Jack\u00a0J. Dongarra, editors, Recent Advances in the Message Passing Interface, pages 298\u2013299. Springer, Berlin (2012)","DOI":"10.1007\/978-3-642-33518-1_40"},{"key":"704_CR3","doi-asserted-by":"crossref","unstructured":"Augonnet, C\u00e9dric., Thibault, Samuel, Namyst, Raymond, Wacrenier, Pierre-Andr\u00e9.: StarPU: A Unified Platform for Task Scheduling on Heterogeneous Multicore Architectures. Concurrency and Computation: Practice and Experience 23(2), 187\u2013198 (2011)","DOI":"10.1002\/cpe.1631"},{"key":"704_CR4","unstructured":"Ciechanowicz P, Poldner M, Kuchen H: The M\u00fcnster Skeleton Library Muesli - a Comprehensive Overview. ERCIS Working Paper No. 7 (2009)"},{"issue":"3","key":"704_CR5","doi-asserted-by":"publisher","first-page":"389","DOI":"10.1016\/j.parco.2003.12.002","volume":"30","author":"Murray Cole","year":"2004","unstructured":"Cole, Murray: Bringing skeletons out of the closet: a pragmatic manifesto for skeletal parallel programming. Parall. Comput 30(3), 389\u2013406 (2004)","journal-title":"Parall. Comput"},{"key":"704_CR6","volume-title":"Algorithmic Skeletons: Structured Management of Parallel Computation","author":"Murray I Cole","year":"1989","unstructured":"Cole, Murray I.: Algorithmic Skeletons: Structured Management of Parallel Computation. Pitman and MIT Press, Cambridge, Mass (1989)"},{"key":"704_CR7","doi-asserted-by":"crossref","unstructured":"Danelutto, Marco: Torquati, Massimo: Structured Parallel Programming with \u201ccore\u201d FastFlow. Central European Functional Programming School. volume 8606 of LNCS, pp. 29\u201375. Springer, Berlin (2015)","DOI":"10.1007\/978-3-319-15940-9_2"},{"key":"704_CR8","doi-asserted-by":"crossref","unstructured":"Dastgeer, Usman, Enmyren, Johan, Kessler, Christoph\u00a0W.: Auto-tuning SkePU: A multi-backend skeleton programming framework for multi-GPU systems. In Proc. 4th International Workshop on Multicore Software Engineering, pages 25\u201332. ACM, (2011)","DOI":"10.1145\/1984693.1984697"},{"issue":"3","key":"704_CR9","doi-asserted-by":"publisher","first-page":"506","DOI":"10.1007\/s10766-015-0357-6","volume":"44","author":"U Dastgeer","year":"2016","unstructured":"Dastgeer, U., Kessler, C.: Smart containers and skeleton programming for GPU-based systems. Int J Parall Programm 44(3), 506\u2013530 (2016)","journal-title":"Int J Parall Programm"},{"key":"704_CR10","doi-asserted-by":"crossref","unstructured":"del Rio Astorga, David, Dolz, Manuel\u00a0F., Fern\u00e1ndez, Javier, Daniel Garc\u00eda, J.: A generic parallel pattern interface for stream and data processing. Concurrency and Computation: Practice and Experience, 29(24):e4175, (2017)","DOI":"10.1002\/cpe.4175"},{"key":"704_CR11","doi-asserted-by":"crossref","unstructured":"Enmyren, Johan, Kessler, Christoph\u00a0W.: SkePU: A multi-backend skeleton programming library for multi-GPU systems. In Proceedings of the fourth international workshop on High-level parallel programming and applications, pages 5\u201314. ACM, (2010)","DOI":"10.1145\/1863482.1863487"},{"key":"704_CR12","first-page":"129","volume":"7","author":"S Ernsting","year":"2012","unstructured":"Ernsting, S., Kuchen, H.: Algorithmic skeletons for multi-core, multi-GPU systems and clusters. Int J of High Perf Comput Netw 7, 129\u2013138 (2012)","journal-title":"Int J of High Perf Comput Netw"},{"key":"704_CR13","doi-asserted-by":"publisher","DOI":"10.3384\/lic.diva-170194","volume-title":"Designing a Modern Skeleton Programming Framework for Parallel and Heterogeneous Systems","author":"August Ernstsson","year":"2020","unstructured":"Ernstsson, August: Designing a Modern Skeleton Programming Framework for Parallel and Heterogeneous Systems. Link\u00d6ping University Electronic Press, Sweden (2020)"},{"issue":"5","key":"704_CR14","doi-asserted-by":"publisher","first-page":"e5003","DOI":"10.1002\/cpe.5003","volume":"31","author":"A Ernstsson","year":"2019","unstructured":"Ernstsson, A., Kessler, C.: Extending smart containers for data locality-aware skeleton programming. Concurrency and Computation: Practice and Experience 31(5), e5003 (2019)","journal-title":"Concurrency and Computation: Practice and Experience"},{"key":"704_CR15","unstructured":"Ernstsson, August, Kessler, Christoph: Multi-variant user functions for platform-aware skeleton programming. In Proc. of ParCo-2019 conference, Prague, Sep. 2019, In: I. Foster et\u00a0al. (Eds.), Parallel Computing: Technology Trends, series: Advances in Parallel Computing, vol. 36, IOS press, pages 475\u2013484, (2020)"},{"key":"704_CR16","first-page":"1","volume":"46","author":"August Ernstsson","year":"2017","unstructured":"Ernstsson, August, Li, Lu, Kessler, C.: SkePU 2: Flexible and type-safe skeleton programming for heterogeneous parallel systems. Int J Parall Program 46, 1\u201319 (2017)","journal-title":"Int J Parall Program"},{"key":"704_CR17","unstructured":"Kessler, Christoph, Ernstsson, August, Memeti, Suejb, Ahlqvist, Johan: Embracing heterogeneity for exascale computing: The EXA2PRO high-level programming model. Proc. Work-in-progress session at PDP\u201920 conference, V\u00e4ster\u00e5s, Sweden, Report SEA-SR-55-4, Johannes-Kepler Univ. Linz, Austria, (2020) ISBN 978-3-902457-55-4"},{"issue":"3","key":"704_CR18","doi-asserted-by":"publisher","first-page":"444","DOI":"10.1016\/j.jpdc.2005.09.003","volume":"66","author":"Matthias Korch","year":"2006","unstructured":"Korch, Matthias, Rauber, Thomas: Optimizing locality and scalability of embedded Runge-Kutta solvers using block-based pipelining. J. Parall Distribut Comput 66(3), 444\u2013468 (2006)","journal-title":"J. Parall Distribut Comput"},{"issue":"53","key":"704_CR19","doi-asserted-by":"publisher","first-page":"2373","DOI":"10.21105\/joss.02373","volume":"5","author":"Abel Marin-Lafl\u00e8che","year":"2020","unstructured":"Marin-Lafl\u00e8che, Abel, Haefele, Matthieu, Scalfi, Laura, Coretti, Alessandro, Dufils, Thomas, Jeanmairet, Guillaume, Reed, Stewart K., Serva, Alessandra, Berthin, Roxanne, Bacon, Camille, Bonella, Sara, Rotenberg, Benjamin, Madden, Paul A., Salanne, Mathieu: Metalwalls: A classical molecular dynamics software dedicated to the simulation of electrochemical systems. Journal of Open Source Software 5(53), 2373 (2020)","journal-title":"Journal of Open Source Software"},{"key":"704_CR20","doi-asserted-by":"crossref","unstructured":"Matsuzaki, Kiminori, Emoto, Kento: Implementing fusion-equipped parallel skeletons by expression templates. In Marco\u00a0T. Moraz\u00e1n and Sven-Bodo Scholz, editors, Implementation and Application of Functional Languages, pages 72\u201389. Springer, Sweden (2010)","DOI":"10.1007\/978-3-642-16478-1_5"},{"key":"704_CR21","doi-asserted-by":"crossref","unstructured":"Panagiotou, Sotirios, Ernstsson, August, Ahlqvist, Johan, Papadopoulos, Lazaros, Kessler, Christoph, Soudris, Dimitrios: Portable exploitation of parallel and heterogeneous HPC architectures in neural simulation using SkePU. In Proc. SCOPES\u201920. ACM, (2020)","DOI":"10.1145\/3378678.3391889"},{"key":"704_CR22","doi-asserted-by":"crossref","unstructured":"Christoph Rieger, Fabian Wrede, and Herbert Kuchen. Musket: a domain-specific language for high-level parallel programming with algorithmic skeletons. In Proc. Symposium on Applied Computing (SAC\u201919), pages 1534\u20131543. ACM, (2019)","DOI":"10.1145\/3297280.3297434"},{"key":"704_CR23","unstructured":"Oskar Sj\u00f6str\u00f6m, Soon-Heum Ko, Usman Dastgeer, Lu\u00a0Li, and Christoph Kessler. Portable parallelization of the EDGE CFD application for GPU-based systems using the SkePU skeleton programming library. In Gerhard\u00a0R. Joubert, Hugh Leather, Mark Parsons, Frans Peters, and Mark Sawyer, editors, Advances in Parallel Computing, Volume 27: Parallel Computing: On the Road to Exascale. Proc. of ParCo-2015 conference, Edinburgh, UK, Sep.\u00a02015., pages 135\u2013144. IOS Press, (2016)"},{"issue":"4","key":"704_CR24","doi-asserted-by":"publisher","first-page":"601","DOI":"10.1007\/s10766-013-0265-6","volume":"42","author":"Michel Steuwer","year":"2013","unstructured":"Steuwer, Michel: Friese, Malte, Albers, Sebastian, Gorlatch, Sergei: Introducing and implementing the AllPairs skeleton for programming multi-GPU systems. Int J Parall Program 42(4), 601\u2013618 (2013)","journal-title":"Int J Parall Program"},{"key":"704_CR25","doi-asserted-by":"crossref","unstructured":"Michel Steuwer, Philipp Kegel, and Sergei Gorlatch. SkelCL\u2013a portable skeleton library for high-level GPU programming. In 16th International Workshop on High-Level Parallel Programming Models and Supportive Environments (HIPS\u201911), (2011)","DOI":"10.1109\/IPDPS.2011.269"}],"container-title":["International Journal of Parallel Programming"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/s10766-021-00704-3.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/link.springer.com\/article\/10.1007\/s10766-021-00704-3\/fulltext.html","content-type":"text\/html","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/s10766-021-00704-3.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2021,10,21]],"date-time":"2021-10-21T22:03:46Z","timestamp":1634853826000},"score":1,"resource":{"primary":{"URL":"https:\/\/link.springer.com\/10.1007\/s10766-021-00704-3"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2021,5,19]]},"references-count":25,"journal-issue":{"issue":"6","published-print":{"date-parts":[[2021,12]]}},"alternative-id":["704"],"URL":"https:\/\/doi.org\/10.1007\/s10766-021-00704-3","relation":{},"ISSN":["0885-7458","1573-7640"],"issn-type":[{"value":"0885-7458","type":"print"},{"value":"1573-7640","type":"electronic"}],"subject":[],"published":{"date-parts":[[2021,5,19]]},"assertion":[{"value":"16 November 2020","order":1,"name":"received","label":"Received","group":{"name":"ArticleHistory","label":"Article History"}},{"value":"2 March 2021","order":2,"name":"accepted","label":"Accepted","group":{"name":"ArticleHistory","label":"Article History"}},{"value":"19 May 2021","order":3,"name":"first_online","label":"First Online","group":{"name":"ArticleHistory","label":"Article History"}}]}}