{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,3,26]],"date-time":"2025-03-26T00:37:26Z","timestamp":1742949446574,"version":"3.40.3"},"publisher-location":"Cham","reference-count":15,"publisher":"Springer International Publishing","isbn-type":[{"type":"print","value":"9783030852610"},{"type":"electronic","value":"9783030852627"}],"license":[{"start":{"date-parts":[[2021,1,1]],"date-time":"2021-01-01T00:00:00Z","timestamp":1609459200000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0"},{"start":{"date-parts":[[2021,9,8]],"date-time":"2021-09-08T00:00:00Z","timestamp":1631059200000},"content-version":"vor","delay-in-days":250,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0"}],"content-domain":{"domain":["link.springer.com"],"crossmark-restriction":false},"short-container-title":[],"published-print":{"date-parts":[[2021]]},"abstract":"<jats:title>Abstract<\/jats:title><jats:p>Since the introduction of the \u201ctarget\u201d directive in the 4.0 specification, the usage of OpenMP for heterogeneous computing programming has increased significantly. However, the compiler support limits its usage because the code for the accelerated region has to be generated in compile time. This restricts the usage of accelerator-specific design flows (e.g. FPGA hardware synthesis) and the support of new devices that typically requires extending and modifying the compiler itself.<\/jats:p><jats:p>This paper explores a solution to these limitations: a generic device that is supported by the OpenMP compiler but whose functionality is defined at runtime. The generic device framework has been integrated in an OpenMP compiler (LLVM\/Clang). It acts as a device type for the compiler and interfaces with the physical devices to execute the accelerated code. The framework has an API that provides support for new devices and accelerated code without additional OpenMP compiler modifications. It also includes a code generator that extracts the source code of OpenMP target regions for external compilation chains.<\/jats:p><jats:p>In order to evaluate the approach, we present a new device implementation that allows executing OpenCL code as an OpenMP target region. We study the overhead that the framework produces and show that it is minimal and comparable to other OpenMP devices.<\/jats:p>","DOI":"10.1007\/978-3-030-85262-7_12","type":"book-chapter","created":{"date-parts":[[2021,9,7]],"date-time":"2021-09-07T23:04:59Z","timestamp":1631055899000},"page":"170-182","update-policy":"https:\/\/doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":0,"title":["FOTV: A Generic Device Offloading Framework for OpenMP"],"prefix":"10.1007","author":[{"given":"Jose Luis","family":"Vazquez","sequence":"first","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Pablo","family":"Sanchez","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"297","published-online":{"date-parts":[[2021,9,8]]},"reference":[{"key":"12_CR1","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"109","DOI":"10.1007\/978-3-030-28596-8_8","volume-title":"OpenMP: Conquering the Full Hardware Spectrum","author":"\u00c1 \u00c1lvarez","year":"2019","unstructured":"\u00c1lvarez, \u00c1., Ugarte, \u00cd., Fern\u00e1ndez, V., S\u00e1nchez, P.: OpenMP dynamic device offloading in heterogeneous platforms. In: Fan, X., de Supinski, B.R., Sinnen, O., Giacaman, N. (eds.) IWOMP 2019. LNCS, vol. 11718, pp. 109\u2013122. Springer, Cham (2019). https:\/\/doi.org\/10.1007\/978-3-030-28596-8_8"},{"key":"12_CR2","unstructured":"Khronos Group, \u201cOpenCL: The open standard for parallel programming of heterogeneous systems\u201d (2010). https:\/\/www.khronos.org\/opencl\/"},{"key":"12_CR3","unstructured":"NVIDIA, CUDA \u2013 Compute Unified Device Architecture. https:\/\/developer.nvidia.com\/cuda-zone"},{"key":"12_CR4","unstructured":"Open MP API Specification. Version 5.0 (November 2018). https:\/\/www.openmp.org\/specifications\/"},{"key":"12_CR5","doi-asserted-by":"crossref","unstructured":"Bertolli, C., et al.: Integrating GPU support for OpenMP offloading directives into Clang. In: LLVM-HPC2015, Austin, Texas, USA, 15\u201320 November 2015","DOI":"10.1145\/2833157.2833161"},{"key":"12_CR6","doi-asserted-by":"crossref","unstructured":"Antao, S.F., et al.: Offloading support for OpenMP in Clang and LLVM. In: LLVM-HPC2016, Salt Lake City, Utah, USA, 13\u201318 November 2016","DOI":"10.1109\/LLVM-HPC.2016.006"},{"key":"12_CR7","unstructured":"Clang 13 documentation: OpenMP Support. https:\/\/clang.llvm.org\/docs\/OpenMPSupport.html"},{"key":"12_CR8","unstructured":"Offloading support in GCC. https:\/\/gcc.gnu.org\/wiki\/Offloading"},{"key":"12_CR9","doi-asserted-by":"crossref","unstructured":"Cramer, T., R\u00f6mmer, M., Kosmynin, B., Focht, E., M\u00fcller, M.S.: OpenMP target device offloading for the SX-Aurora TSUBASA vector engine. Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics), 12043 LNCS, pp. 237\u2013249 (2020)","DOI":"10.1007\/978-3-030-43229-4_21"},{"key":"12_CR10","doi-asserted-by":"crossref","unstructured":"Yviquel, H., Cruz, L., Araujo, G.: Cluster programming using the OpenMP accelerator model. ACM Trans. Archit. Code Optim. 15(3), 1\u201323 (2018)","DOI":"10.1145\/3226112"},{"key":"12_CR11","doi-asserted-by":"crossref","unstructured":"\u00d6zen, G., Atzeni, S., Wolfe, M., Southwell, A., Klimowicz, G.: OpenMP GPU offload in flang and LLVM. In: 2018 IEEE\/ACM 5th Workshop on the LLVM Compiler Infrastructure in HPC (LLVM-HPC), 2018, pp. 1\u20139 (2018)","DOI":"10.1109\/LLVM-HPC.2018.8639434"},{"key":"12_CR12","doi-asserted-by":"crossref","unstructured":"Sommer, L., Korinth, J., Koch, A.: OpenMP device offloading to FPGA accelerators. In: 2017 IEEE 28th International Conference on Application-specific Systems, Architectures and Processors (ASAP), 2017, pp. 201\u2013205 (2017)","DOI":"10.1109\/ASAP.2017.7995280"},{"key":"12_CR13","doi-asserted-by":"crossref","unstructured":"Knaust, M., Mayer, F., Steinke, T.: OpenMP to FPGA offloading prototype using OpenCL SDK. In: 2019 IEEE International Parallel and Distributed Processing Symposium Workshops (IPDPSW), 2019, pp. 387\u2013390 (2019)","DOI":"10.1109\/IPDPSW.2019.00072"},{"key":"12_CR14","doi-asserted-by":"publisher","unstructured":"Huthmann, J., Sommer, L., Podobas, A., Koch, A., Sano, K.: OpenMP device offloading to FPGAs using the nymble infrastructure. In: Milfeld, K., de Supinski, B., Koesterke, L., Klinkenberg, J. (eds.) OpenMP: Portable Multi-Level Parallelism on Modern Systems. IWOMP 2020. Lecture Notes in Computer Science, vol. 12295. Springer, Cham (2020). https:\/\/doi.org\/10.1007\/978-3-030-58144-2_17","DOI":"10.1007\/978-3-030-58144-2_17"},{"key":"12_CR15","doi-asserted-by":"publisher","unstructured":"Solanti, J., Babej, M., Ikkala, J., J\u00e4\u00e4skel\u00e4inen, P.: POCL-R: distributed OpenCL runtime for low latency remote offloading. In: Proceedings of the International Workshop on OpenCL (IWOCL 2020). Association for Computing Machinery, New York, NY, USA, Article 19, pp. 1\u20132 (2020). https:\/\/doi.org\/10.1145\/3388333.3388642","DOI":"10.1145\/3388333.3388642"}],"container-title":["Lecture Notes in Computer Science","OpenMP: Enabling Massive Node-Level Parallelism"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/978-3-030-85262-7_12","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2021,9,7]],"date-time":"2021-09-07T23:08:30Z","timestamp":1631056110000},"score":1,"resource":{"primary":{"URL":"https:\/\/link.springer.com\/10.1007\/978-3-030-85262-7_12"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2021]]},"ISBN":["9783030852610","9783030852627"],"references-count":15,"URL":"https:\/\/doi.org\/10.1007\/978-3-030-85262-7_12","relation":{},"ISSN":["0302-9743","1611-3349"],"issn-type":[{"type":"print","value":"0302-9743"},{"type":"electronic","value":"1611-3349"}],"subject":[],"published":{"date-parts":[[2021]]},"assertion":[{"value":"8 September 2021","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":"Bristol","order":3,"name":"conference_city","label":"Conference City","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"United Kingdom","order":4,"name":"conference_country","label":"Conference Country","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"2021","order":5,"name":"conference_year","label":"Conference Year","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"14 September 2021","order":7,"name":"conference_start_date","label":"Conference Start Date","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"16 September 2021","order":8,"name":"conference_end_date","label":"Conference End Date","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"17","order":9,"name":"conference_number","label":"Conference Number","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"iwomp2021","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"}},{"value":"Single-blind","order":1,"name":"type","label":"Type","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"EasyChair","order":2,"name":"conference_management_system","label":"Conference Management System","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"18","order":3,"name":"number_of_submissions_sent_for_review","label":"Number of Submissions Sent for Review","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"15","order":4,"name":"number_of_full_papers_accepted","label":"Number of Full Papers Accepted","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"0","order":5,"name":"number_of_short_papers_accepted","label":"Number of Short Papers Accepted","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"83% - The value is computed by the equation \"Number of Full Papers Accepted \/ Number of Submissions Sent for Review * 100\" and then rounded to a whole number.","order":6,"name":"acceptance_rate_of_full_papers","label":"Acceptance Rate of Full Papers","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"5","order":7,"name":"average_number_of_reviews_per_paper","label":"Average Number of Reviews per Paper","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"4","order":8,"name":"average_number_of_papers_per_reviewer","label":"Average Number of Papers per Reviewer","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"Yes","order":9,"name":"external_reviewers_involved","label":"External Reviewers Involved","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"The workshop was held virtually.","order":10,"name":"additional_info_on_review_process","label":"Additional Info on Review Process","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}}]}}