{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,8,28]],"date-time":"2026-08-28T06:40:35Z","timestamp":1787899235104,"version":"build-2784847793"},"reference-count":79,"publisher":"Institute of Electrical and Electronics Engineers (IEEE)","issue":"5","license":[{"start":{"date-parts":[[2025,5,1]],"date-time":"2025-05-01T00:00:00Z","timestamp":1746057600000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/ieeexplore.ieee.org\/Xplorehelp\/downloads\/license-information\/IEEE.html"},{"start":{"date-parts":[[2025,5,1]],"date-time":"2025-05-01T00:00:00Z","timestamp":1746057600000},"content-version":"am","delay-in-days":0,"URL":"https:\/\/ieeexplore.ieee.org\/Xplorehelp\/downloads\/license-information\/IEEE.html"},{"start":{"date-parts":[[2025,5,1]],"date-time":"2025-05-01T00:00:00Z","timestamp":1746057600000},"content-version":"stm-asf","delay-in-days":0,"URL":"https:\/\/doi.org\/10.15223\/policy-029"},{"start":{"date-parts":[[2025,5,1]],"date-time":"2025-05-01T00:00:00Z","timestamp":1746057600000},"content-version":"stm-asf","delay-in-days":0,"URL":"https:\/\/doi.org\/10.15223\/policy-037"}],"funder":[{"DOI":"10.13039\/501100000781","name":"European Research Council","doi-asserted-by":"publisher","award":["678880"],"award-info":[{"award-number":["678880"]}],"id":[{"id":"10.13039\/501100000781","id-type":"DOI","asserted-by":"publisher"}]},{"DOI":"10.13039\/501100000781","name":"European Research Council","doi-asserted-by":"publisher","award":["801039"],"award-info":[{"award-number":["801039"]}],"id":[{"id":"10.13039\/501100000781","id-type":"DOI","asserted-by":"publisher"}]},{"DOI":"10.13039\/501100000781","name":"European Research Council","doi-asserted-by":"publisher","award":["955606"],"award-info":[{"award-number":["955606"]}],"id":[{"id":"10.13039\/501100000781","id-type":"DOI","asserted-by":"publisher"}]},{"DOI":"10.13039\/501100001711","name":"Schweizerischer Nationalfonds zur F\u00f6rderung der Wissenschaftlichen Forschung","doi-asserted-by":"publisher","award":["PZ00P2_185778"],"award-info":[{"award-number":["PZ00P2_185778"]}],"id":[{"id":"10.13039\/501100001711","id-type":"DOI","asserted-by":"publisher"}]},{"DOI":"10.13039\/501100001711","name":"Schweizerischer Nationalfonds zur F\u00f6rderung der Wissenschaftlichen Forschung","doi-asserted-by":"publisher","award":["209358"],"award-info":[{"award-number":["209358"]}],"id":[{"id":"10.13039\/501100001711","id-type":"DOI","asserted-by":"publisher"}]},{"DOI":"10.13039\/501100001711","name":"Schweizerischer Nationalfonds zur F\u00f6rderung der Wissenschaftlichen Forschung","doi-asserted-by":"publisher","award":["185778"],"award-info":[{"award-number":["185778"]}],"id":[{"id":"10.13039\/501100001711","id-type":"DOI","asserted-by":"publisher"}]},{"DOI":"10.13039\/501100001711","name":"Schweizerischer Nationalfonds zur F\u00f6rderung der Wissenschaftlichen Forschung","doi-asserted-by":"publisher","award":["209358"],"award-info":[{"award-number":["209358"]}],"id":[{"id":"10.13039\/501100001711","id-type":"DOI","asserted-by":"publisher"}]},{"DOI":"10.13039\/501100001711","name":"Schweizerischer Nationalfonds zur F\u00f6rderung der Wissenschaftlichen Forschung","doi-asserted-by":"publisher","award":["185778"],"award-info":[{"award-number":["185778"]}],"id":[{"id":"10.13039\/501100001711","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["IEEE Trans. Parallel Distrib. Syst."],"published-print":{"date-parts":[[2025,5]]},"DOI":"10.1109\/tpds.2025.3549310","type":"journal-article","created":{"date-parts":[[2025,4,9]],"date-time":"2025-04-09T17:57:00Z","timestamp":1744221420000},"page":"804-820","source":"Crossref","is-referenced-by-count":2,"title":["Productivity, Portability, Performance, and Reproducibility: Data-Centric Python"],"prefix":"10.1109","volume":"36","author":[{"ORCID":"https:\/\/orcid.org\/0000-0002-4328-9751","authenticated-orcid":false,"given":"Alexandros Nikolaos","family":"Ziogas","sequence":"first","affiliation":[{"name":"Department of Information Technology and Electrical Engineering, ETH Zurich, Zurich, Switzerland"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Timo","family":"Schneider","sequence":"additional","affiliation":[{"name":"Department of Computer Science, ETH Zurich, Zurich, Switzerland"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Tal","family":"Ben-Nun","sequence":"additional","affiliation":[{"name":"Center for Applied Scientific Computing, Lawrence Livermore National Laboratory, Livermore, CA, USA"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Alexandru","family":"Calotoiu","sequence":"additional","affiliation":[{"name":"Department of Computer Science, ETH Zurich, Zurich, Switzerland"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Tiziano","family":"De Matteis","sequence":"additional","affiliation":[{"name":"Department of Computer Science, Vrije Universiteit Amsterdam, Amsterdam, Netherlands"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Johannes","family":"de Fine Licht","sequence":"additional","affiliation":[{"name":"NextSilicon, Zurich, Switzerland"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Luca","family":"Lavarini","sequence":"additional","affiliation":[{"name":"1plusX, Zurich, Switzerland"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"Torsten","family":"Hoefler","sequence":"additional","affiliation":[{"name":"Department of Computer Science, ETH Zurich, Zurich, Switzerland"}],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"263","reference":[{"key":"ref1","article-title":"The 2020 state of the octoverse","year":"2020"},{"key":"ref2","doi-asserted-by":"publisher","DOI":"10.5555\/1953048.2078195"},{"key":"ref3","doi-asserted-by":"publisher","DOI":"10.25080\/Majora-92bf1922-00a"},{"key":"ref4","first-page":"87","article-title":"Jupyter notebooks - A publishing format for reproducible computational workflows","volume-title":"Positioning and Power in Academic Publishing: Players, Agents and Agendas","author":"Kluyver","year":"2016"},{"key":"ref5","first-page":"8024","article-title":"PyTorch: An imperative style, high-performance deep learning library","volume-title":"Proc. Adv. Neural Inf. Process. Syst.","author":"Paszke"},{"key":"ref6","article-title":"TensorFlow: Large-scale machine learning on heterogeneous systems","author":"Abadi","year":"2015"},{"key":"ref7","article-title":"Gt4py","year":"2014"},{"key":"ref8","doi-asserted-by":"publisher","DOI":"10.1145\/3295500.3357156"},{"key":"ref9","doi-asserted-by":"publisher","DOI":"10.1038\/s41586-020-2649-2"},{"key":"ref10","doi-asserted-by":"publisher","DOI":"10.1109\/ICSE.2015.90"},{"key":"ref11","doi-asserted-by":"publisher","DOI":"10.1109\/P3HPC51967.2020.00011"},{"key":"ref12","article-title":"JAX: Composable transformations of Python NumPy programs","author":"Bradbury","year":"2018"},{"key":"ref13","doi-asserted-by":"publisher","DOI":"10.1109\/PyHPC.2016.013"},{"key":"ref14","article-title":"Cupy","author":"Networks","year":"2021"},{"issue":"9","key":"ref15","first-page":"1124","article-title":"Parallel distributed computing using python","volume-title":"Adv. Water Resources","volume":"34","author":"Dalcin","year":"2011"},{"key":"ref16","doi-asserted-by":"publisher","DOI":"10.1109\/MCSE.2010.118"},{"key":"ref17","first-page":"1","article-title":"Bohrium: Unmodified numpy code on CPU, GPU, and cluster","volume-title":"Proc. Workshop Python High Perform. Sci. Comput.","author":"Kristensen","year":"2013"},{"key":"ref18","doi-asserted-by":"publisher","DOI":"10.1145\/3295500.3356175"},{"key":"ref19","doi-asserted-by":"publisher","DOI":"10.1145\/2833157.2833162"},{"key":"ref20","doi-asserted-by":"publisher","DOI":"10.1088\/1749-4680\/8\/1\/014001"},{"key":"ref21","article-title":"Dask: Library for dynamic task scheduling","year":"2016"},{"key":"ref22","doi-asserted-by":"publisher","DOI":"10.5555\/3291168.3291210"},{"key":"ref23","doi-asserted-by":"publisher","DOI":"10.1145\/3295500.3356173"},{"key":"ref24","doi-asserted-by":"publisher","DOI":"10.1145\/3458817.3476176"},{"key":"ref25","article-title":"CPU 2017 metrics","year":"2020"},{"key":"ref26","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-46423-9_8"},{"key":"ref27","doi-asserted-by":"publisher","DOI":"10.1109\/CGO51591.2021.9370315"},{"key":"ref28","doi-asserted-by":"publisher","DOI":"10.1017\/s0885715613000924"},{"key":"ref29","doi-asserted-by":"publisher","DOI":"10.21105\/jose.00021"},{"key":"ref30","article-title":"nbody-python: Create your own n-body simulation (with python)","author":"Mocz","year":"2020"},{"key":"ref31","doi-asserted-by":"publisher","DOI":"10.1063\/1.4990384"},{"key":"ref32","article-title":"Cython for numpy users","author":"Behnel","year":"2025"},{"key":"ref33","article-title":"A 5 minute guide to numba","year":"2012"},{"key":"ref34","article-title":"rougier\/from-python-to-numpy: Version 1.1. zenodo","author":"Rougier","year":"2016"},{"key":"ref35","article-title":"Implementation of crc16 (crc-16-ccitt) in python","year":"2018"},{"key":"ref36","article-title":"Example: Histogram","year":"2017"},{"key":"ref37","article-title":"Development of stockham fast fourier transform using data-centric parallel programming","author":"Bengtsson","year":"2020"},{"key":"ref38","doi-asserted-by":"publisher","DOI":"10.1162\/neco.1989.1.4.541"},{"key":"ref39","doi-asserted-by":"publisher","DOI":"10.1109\/CVPR.2016.90"},{"key":"ref40","doi-asserted-by":"publisher","DOI":"10.1175\/MWR-D-10-05013.1"},{"key":"ref41","article-title":"Consortium for small-scale modeling","year":"1998"},{"key":"ref42","article-title":"PolyBench: The polyhedral benchmark suite","author":"Pouchet","year":"2012"},{"key":"ref43","article-title":"Pep 465\u2013A dedicated infix operator for matrix multiplication","author":"Foundation","year":"2014"},{"key":"ref44","article-title":"Pythran","author":"Guelton","year":"2012"},{"key":"ref45","doi-asserted-by":"publisher","DOI":"10.1145\/2807591.2807644"},{"key":"ref46","doi-asserted-by":"publisher","DOI":"10.1007\/978-1-4612-4380-9_41"},{"key":"ref47","article-title":"Cupy: User-defined kernels","year":"2015"},{"key":"ref48","doi-asserted-by":"publisher","DOI":"10.1109\/TPDS.2020.3039409"},{"key":"ref49","first-page":"711","article-title":"Data movement is all you need: A case study on optimizing transformers","volume-title":"Proc. 4th Conf. Mach. Learn. Syst.","author":"Ivanov"},{"key":"ref50","article-title":"Pblas","year":"1995"},{"key":"ref51","doi-asserted-by":"publisher","DOI":"10.1007\/s00607-013-0330-4"},{"key":"ref52","article-title":"Blacs","year":"1995"},{"key":"ref53","article-title":"Legate: High productivity performance computing","year":"2021"},{"key":"ref54","article-title":"Dask array","year":"2014"},{"key":"ref55","doi-asserted-by":"publisher","DOI":"10.1145\/3295500.3356181"},{"key":"ref56","doi-asserted-by":"publisher","DOI":"10.1109\/SC.2012.71"},{"key":"ref57","first-page":"138","article-title":"GASNet-EX: A high-performance, portable communication library for exascale","volume-title":"Proc. Lang. Compilers Parallel Comput.","author":"Bonachea"},{"key":"ref58","article-title":"Pep 318\u2013decorators for functions and methods","author":"Foundation","year":"2003"},{"issue":"2","key":"ref59","first-page":"79","article-title":"Dawn: A high-level domain-specific language compiler toolchain for weather and climate applications","volume":"7","author":"Osuna","year":"2020","journal-title":"Supercomput. Front. Innovations"},{"key":"ref60","doi-asserted-by":"publisher","DOI":"10.1145\/2807591.2807629"},{"key":"ref61","doi-asserted-by":"publisher","DOI":"10.1145\/2601097.2601174"},{"key":"ref62","doi-asserted-by":"publisher","DOI":"10.1145\/3218176.3218226"},{"key":"ref63","doi-asserted-by":"publisher","DOI":"10.1109\/CGO.2004.1281665"},{"key":"ref64","doi-asserted-by":"publisher","DOI":"10.1109\/CGO51591.2021.9370308"},{"key":"ref65","doi-asserted-by":"publisher","DOI":"10.1145\/3469030"},{"key":"ref66","doi-asserted-by":"publisher","DOI":"10.1145\/2491956.2462176"},{"key":"ref67","article-title":"Definition - performance portability","year":"2016"},{"key":"ref68","doi-asserted-by":"publisher","DOI":"10.1109\/99.660313"},{"key":"ref69","article-title":"OpenACC","author":"Organization","year":"2021"},{"key":"ref70","article-title":"OpenCL","author":"Group","year":"2021"},{"key":"ref71","article-title":"Sycl","year":"2021"},{"key":"ref72","doi-asserted-by":"publisher","DOI":"10.1145\/3388333.3388653"},{"key":"ref73","doi-asserted-by":"publisher","DOI":"10.1177\/1094342007078442"},{"key":"ref74","doi-asserted-by":"publisher","DOI":"10.1145\/174223.158909"},{"key":"ref75","doi-asserted-by":"publisher","DOI":"10.1016\/j.jpdc.2014.07.003"},{"key":"ref76","article-title":"RAJA performance portability layer","year":"2019"},{"key":"ref77","article-title":"Numpy benchmarks","author":"Guelton","year":"2019"},{"key":"ref78","doi-asserted-by":"publisher","DOI":"10.1145\/3447818.3460360"},{"key":"ref79","doi-asserted-by":"publisher","DOI":"10.1109\/PDP.2010.67"}],"container-title":["IEEE Transactions on Parallel and Distributed Systems"],"original-title":[],"link":[{"URL":"https:\/\/ieeexplore.ieee.org\/ielam\/71\/10960276\/10960277-aam.pdf","content-type":"application\/pdf","content-version":"am","intended-application":"syndication"},{"URL":"http:\/\/xplorestaging.ieee.org\/ielx8\/71\/10960276\/10960277.pdf?arnumber=10960277","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,4,14]],"date-time":"2025-04-14T17:41:04Z","timestamp":1744652464000},"score":1,"resource":{"primary":{"URL":"https:\/\/ieeexplore.ieee.org\/document\/10960277\/"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2025,5]]},"references-count":79,"journal-issue":{"issue":"5"},"URL":"https:\/\/doi.org\/10.1109\/tpds.2025.3549310","relation":{},"ISSN":["1045-9219","1558-2183","2161-9883"],"issn-type":[{"value":"1045-9219","type":"print"},{"value":"1558-2183","type":"electronic"},{"value":"2161-9883","type":"electronic"}],"subject":[],"published":{"date-parts":[[2025,5]]}}}