{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,9,28]],"date-time":"2025-09-28T14:40:16Z","timestamp":1759070416233,"version":"3.44.0"},"publisher-location":"Cham","reference-count":32,"publisher":"Springer Nature Switzerland","isbn-type":[{"value":"9783032063427","type":"print"},{"value":"9783032063434","type":"electronic"}],"license":[{"start":{"date-parts":[[2025,9,29]],"date-time":"2025-09-29T00:00:00Z","timestamp":1759104000000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/www.springernature.com\/gp\/researchers\/text-and-data-mining"},{"start":{"date-parts":[[2025,9,29]],"date-time":"2025-09-29T00:00:00Z","timestamp":1759104000000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.springernature.com\/gp\/researchers\/text-and-data-mining"}],"content-domain":{"domain":["link.springer.com"],"crossmark-restriction":false},"short-container-title":[],"published-print":{"date-parts":[[2026]]},"DOI":"10.1007\/978-3-032-06343-4_14","type":"book-chapter","created":{"date-parts":[[2025,9,28]],"date-time":"2025-09-28T13:24:04Z","timestamp":1759065844000},"page":"212-226","update-policy":"https:\/\/doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":0,"title":["Programming GPUs with\u00a0OpenMP and\u00a0Python"],"prefix":"10.1007","author":[{"given":"Giorgis","family":"Georgakoudis","sequence":"first","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Todd A.","family":"Anderson","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Stuart","family":"Archibald","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Bronis R. de","family":"Supinski","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Timothy G.","family":"Mattson","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"297","published-online":{"date-parts":[[2025,9,29]]},"reference":[{"key":"14_CR1","unstructured":"Automatic Parallelization with @jit. https:\/\/numba.pydata.org\/numba-doc\/latest\/user\/parallel.html. Accessed 25 Mar 2024"},{"key":"14_CR2","unstructured":"Cython : Using Parallelism. https:\/\/cython.readthedocs.io\/en\/latest\/src\/userguide\/parallelism.html. Accessed 27 Mar 2024"},{"key":"14_CR3","unstructured":"GitHub - lark-parser\/lark: lark is a parsing toolkit for Python, built with a focus on ergonomics, performance and modularity. \u2014 github.com. https:\/\/github.com\/lark-parser\/lark. Accessed 20 Mar 2024"},{"key":"14_CR4","unstructured":"github repository for PyOMP code. https:\/\/github.com\/Python-for-HPC\/NumbaWithOpenmp. Accessed 25 Mar 2024"},{"key":"14_CR5","unstructured":"HIP Python \u2014 HIP Python. https:\/\/rocm.docs.amd.com\/projects\/hip-python\/en\/latest\/"},{"key":"14_CR6","unstructured":"llvm::OpenMPIRBuilder Class Reference. https:\/\/llvm.org\/doxygen\/classllvm_1_1OpenMPIRBuilder.html. Accessed 25 Mar 2024"},{"key":"14_CR7","unstructured":"llvm::TargetOptions Class Reference. https:\/\/llvm.org\/doxygen\/classllvm_1_1TargetOptions.html. Accessed 27 Mar 2024"},{"key":"14_CR8","unstructured":"mpi4py github repository. https:\/\/github.com\/mpi4py\/mpi4py\/. Accessed 25 Mar 2024"},{"key":"14_CR9","unstructured":"Numba for CUDA GPUs. https:\/\/numba.pydata.org\/numba-doc\/latest\/cuda\/index.html. Accessed 27 Mar 2024"},{"key":"14_CR10","unstructured":"PopularitY of Programing Languages. https:\/\/pypl.github.io\/PYPL.html. Accessed 25 Mar 2024"},{"key":"14_CR11","unstructured":"Py-Pkgs Introduction. https:\/\/py-pkgs.org\/01-introduction.html. Accessed 25 Mar 2024"},{"key":"14_CR12","unstructured":"pymp. https:\/\/github.com\/classner\/pymp. Accessed 27 Mar 2024"},{"key":"14_CR13","unstructured":"Pythran : Adding OpenMP Directives. https:\/\/pythran.readthedocs.io\/en\/latest\/MANUAL.html#adding-openmp-directives. Accessed 27 Mar 2024"},{"key":"14_CR14","unstructured":"TIOBE index. https:\/\/www.tiobe.com\/tiobe-index\/. Accessed 25 Mar 2024"},{"key":"14_CR15","doi-asserted-by":"publisher","unstructured":"Al\u00a0Awar, N., Zhu, S., Biros, G., Gligoric, M.: A performance portability framework for Python. In: Proceedings of the ACM International Conference on Supercomputing, ICS \u201921, pp. 467\u2013478. Association for Computing Machinery, New York (2021). https:\/\/doi.org\/10.1145\/3447818.3460376","DOI":"10.1145\/3447818.3460376"},{"key":"14_CR16","doi-asserted-by":"publisher","unstructured":"Ardito, L., et al.: Rust-code-analysis: a rust library to analyze and extract maintainability information from source codes. SoftwareX 12, 100635 (2020). https:\/\/doi.org\/10.1016\/j.softx.2020.100635, https:\/\/www.sciencedirect.com\/science\/article\/pii\/S2352711020303484","DOI":"10.1016\/j.softx.2020.100635"},{"key":"14_CR17","doi-asserted-by":"publisher","unstructured":"Ben-Nun, T., de\u00a0Fine\u00a0Licht, J., Ziogas, A.N., Schneider, T., Hoefler, T.: Stateful dataflow multigraphs: a data-centric model for performance portability on heterogeneous architectures. In: Proceedings of the International Conference for High Performance Computing, Networking, Storage and Analysis, SC \u20191. Association for Computing Machinery, New York (2019). https:\/\/doi.org\/10.1145\/3295500.3356173","DOI":"10.1145\/3295500.3356173"},{"key":"14_CR18","unstructured":"Bradbury, J., et al.: JAX: composable transformations of Python+NumPy programs (2018). http:\/\/github.com\/google\/jax"},{"key":"14_CR19","doi-asserted-by":"crossref","unstructured":"Deakin, T., Mattson, T.G.: Programming your GPU with OpenMP. The MIT Press (2023)","DOI":"10.7551\/mitpress\/14866.001.0001"},{"key":"14_CR20","volume-title":"Elements of Software Science (Operating and Programming Systems Series)","author":"MH Halstead","year":"1977","unstructured":"Halstead, M.H.: Elements of Software Science (Operating and Programming Systems Series). Elsevier Science Inc., USA (1977)"},{"key":"14_CR21","doi-asserted-by":"publisher","unstructured":"Hu, Y., Li, T.M., Anderson, L., Ragan-Kelley, J., Durand, F.: Taichi: a language for high-performance computation on spatially sparse data structures. ACM Trans. Graph. 38(6) (2019). https:\/\/doi.org\/10.1145\/3355089.3356506","DOI":"10.1145\/3355089.3356506"},{"key":"14_CR22","doi-asserted-by":"publisher","unstructured":"Jin, Z., Vetter, J.S.: A benchmark suite for improving performance portability of the SYCL programming model. In: 2023 IEEE International Symposium on Performance Analysis of Systems and Software (ISPASS), pp. 325\u2013327 (2023). https:\/\/doi.org\/10.1109\/ISPASS57527.2023.00041","DOI":"10.1109\/ISPASS57527.2023.00041"},{"key":"14_CR23","doi-asserted-by":"crossref","unstructured":"Kadosh, T., Hasabnis, N., Mattson, T.G., Pinter, Y., Oren, G.: Quantifying OpenMP: statistical insights into usage and adoption. In: IEEE High Performance Extreme Computing (HPEC) (2023)","DOI":"10.1109\/HPEC58863.2023.10363459"},{"key":"14_CR24","doi-asserted-by":"publisher","unstructured":"Kl\u00f6ckner, A., Pinto, N., Lee, Y., Catanzaro, B., Ivanov, P., Fasih, A.: PyCUDA and PyOpenCL: a scripting-based approach to GPU run-time code generation. Parallel Comput. 38(3), 157\u2013174 (2012). https:\/\/doi.org\/10.1016\/j.parco.2011.09.001, http:\/\/www.sciencedirect.com\/science\/article\/pii\/S0167819111001281","DOI":"10.1016\/j.parco.2011.09.001"},{"key":"14_CR25","doi-asserted-by":"crossref","unstructured":"Kl\u00f6ckner, A., Pinto, N., Catanzaro, B., Lee, Y., Ivanov, P., Fasih, A.: GPU scripting and code generation with PyCUDA (2013)","DOI":"10.1016\/B978-0-12-385963-1.00027-7"},{"key":"14_CR26","doi-asserted-by":"publisher","unstructured":"Lam, S.K., Pitrou, A., Seibert, S.: Numba: a LLVM-based Python JIT compiler. In: Proceedings of the Second Workshop on the LLVM Compiler Infrastructure in HPC, LLVM \u201915. Association for Computing Machinery, New York (2015). https:\/\/doi.org\/10.1145\/2833157.2833162","DOI":"10.1145\/2833157.2833162"},{"issue":"6","key":"14_CR27","doi-asserted-by":"publisher","first-page":"77","DOI":"10.1109\/MCSE.2021.3128806","volume":"23","author":"TG Mattson","year":"2021","unstructured":"Mattson, T.G., Anderson, T.A., Georgakoudis, G.: PyOMP: multithreaded parallel programming in Python. Comput. Sci. Eng. 23(6), 77\u201380 (2021). https:\/\/doi.org\/10.1109\/MCSE.2021.3128806","journal-title":"Comput. Sci. Eng."},{"key":"14_CR28","unstructured":"Okuta, R., Unno, Y., Nishino, D., Hido, S., Loomis, C.: CuPy: a NumPy-compatible library for NVIDIA GPU calculations. In: Proceedings of Workshop on Machine Learning Systems (LearningSys) in The Thirty-first Annual Conference on Neural Information Processing Systems (NIPS) (2017). http:\/\/learningsys.org\/nips17\/assets\/papers\/paper_16.pdf"},{"key":"14_CR29","unstructured":"Paszke, A., et al.: PyTorch: an imperative style, high-performance deep learning library. In: Wallach, H., Larochelle, H., Beygelzimer, A., d\u2019Alch\u00e9-Buc, F., Fox, E., Garnett, R. (eds.) Advances in Neural Information Processing Systems, vol.\u00a032. Curran Associates, Inc. (2019). https:\/\/proceedings.neurips.cc\/paper_files\/paper\/2019\/file\/bdbca288fee7f92f2bfa9f7012727740-Paper.pdf"},{"issue":"11","key":"14_CR30","doi-asserted-by":"publisher","first-page":"2004","DOI":"10.1109\/JPROC.2018.2853600","volume":"106","author":"BR Supinski","year":"2018","unstructured":"Supinski, B.R., et al.: The ongoing evolution of OpenMP. Proc. IEEE 106(11), 2004\u20132019 (2018). https:\/\/doi.org\/10.1109\/JPROC.2018.2853600","journal-title":"Proc. IEEE"},{"issue":"5","key":"14_CR31","doi-asserted-by":"publisher","first-page":"10","DOI":"10.1109\/MCSE.2021.3098509","volume":"23","author":"C Trott","year":"2021","unstructured":"Trott, C., et al.: The Kokkos EcoSystem: comprehensive performance portability for high performance computing. Comput. Sci. Eng. 23(5), 10\u201318 (2021). https:\/\/doi.org\/10.1109\/MCSE.2021.3098509","journal-title":"Comput. Sci. Eng."},{"key":"14_CR32","doi-asserted-by":"publisher","unstructured":"Ziogas, A.N., et al.: Productivity, portability, performance: data-centric Python. In: Proceedings of the International Conference for High Performance Computing, Networking, Storage and Analysis, SC \u201921. Association for Computing Machinery, New York (2021). https:\/\/doi.org\/10.1145\/3458817.3476176","DOI":"10.1145\/3458817.3476176"}],"container-title":["Lecture Notes in Computer Science","OpenMP: Balancing Productivity and Performance Portability"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/978-3-032-06343-4_14","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,9,28]],"date-time":"2025-09-28T14:02:48Z","timestamp":1759068168000},"score":1,"resource":{"primary":{"URL":"https:\/\/link.springer.com\/10.1007\/978-3-032-06343-4_14"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2025,9,29]]},"ISBN":["9783032063427","9783032063434"],"references-count":32,"URL":"https:\/\/doi.org\/10.1007\/978-3-032-06343-4_14","relation":{},"ISSN":["0302-9743","1611-3349"],"issn-type":[{"value":"0302-9743","type":"print"},{"value":"1611-3349","type":"electronic"}],"subject":[],"published":{"date-parts":[[2025,9,29]]},"assertion":[{"value":"29 September 2025","order":1,"name":"first_online","label":"First Online","group":{"name":"ChapterHistory","label":"Chapter History"}},{"value":"IWOMP","order":1,"name":"conference_acronym","label":"Conference Acronym","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"International Workshop on OpenMP","order":2,"name":"conference_name","label":"Conference Name","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"Charlotte, NC","order":3,"name":"conference_city","label":"Conference City","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"USA","order":4,"name":"conference_country","label":"Conference Country","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"2025","order":5,"name":"conference_year","label":"Conference Year","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"29 September 2025","order":7,"name":"conference_start_date","label":"Conference Start Date","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"3 October 2025","order":8,"name":"conference_end_date","label":"Conference End Date","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"21","order":9,"name":"conference_number","label":"Conference Number","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"iwomp2025","order":10,"name":"conference_id","label":"Conference ID","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"https:\/\/www.iwomp.org\/","order":11,"name":"conference_url","label":"Conference URL","group":{"name":"ConferenceInfo","label":"Conference Information"}}]}}