Errors Classification and Static Detection Techniques for Dual-programming Model (OpenMP and OpenACC)

Recently, incorporating more than one programming model into a system designed for high performance computing (HPC) has become a popular solution to implementing parallel systems. Since traditional programming languages, such as C, C++, and Fortran, do not support parallelism, many programmers add o...

Ausführliche Beschreibung

Gespeichert in:
Bibliographische Detailangaben
Veröffentlicht in:IEEE access 2022, Vol.10, p.1-1
Hauptverfasser: Basloom, Huda S., Dahab, Mohamed Y., Alghamdi, Ahmed M., Eassa, Fathy E., AL-Malaise AL-Ghamdi, Abdullah S., Haridi, Seif
Format: Artikel
Sprache:eng
Schlagworte:
Online-Zugang:Volltext
Tags: Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
container_end_page 1
container_issue
container_start_page 1
container_title IEEE access
container_volume 10
creator Basloom, Huda S.
Dahab, Mohamed Y.
Alghamdi, Ahmed M.
Eassa, Fathy E.
AL-Malaise AL-Ghamdi, Abdullah S.
Haridi, Seif
description Recently, incorporating more than one programming model into a system designed for high performance computing (HPC) has become a popular solution to implementing parallel systems. Since traditional programming languages, such as C, C++, and Fortran, do not support parallelism, many programmers add one or more programming models to achieve parallelism and accelerate computation efficiently. These models include Open Accelerators (OpenACC) and Open Multi-Processing (OpenMP), which have recently been used with various models, including Message Passing Interface (MPI) and Compute Unified Device Architecture (CUDA). Due to the difficulty of predicting the behavior of threads, runtime errors cannot be predicted. The compiler cannot identify runtime errors such as data races, race conditions, deadlocks, or livelocks. Many studies have been conducted on the development of testing tools to detect runtime errors when using programming models, such as the combinations of OpenACC with MPI models and OpenMP with MPI. Although more applications use OpenACC and OpenMP together, no testing tools have been developed to test these applications to date. This paper presents a testing tool for detecting runtime using a static testing technique. This tool can detect actual and potential runtime errors during the integration of the OpenACC and OpenMP models into systems developed in C++. This tool implement error dependency graphs, which are proposed in this paper. Additionally, a dependency graph of the errors is provided, along with a classification of runtime errors that result from combining the two programming models mentioned earlier.
doi_str_mv 10.1109/ACCESS.2022.3219406
format Article
fullrecord <record><control><sourceid>proquest_ieee_</sourceid><recordid>TN_cdi_ieee_primary_9938978</recordid><sourceformat>XML</sourceformat><sourcesystem>PC</sourcesystem><ieee_id>9938978</ieee_id><doaj_id>oai_doaj_org_article_6f27f85b1c954d3691111fd039077121</doaj_id><sourcerecordid>2736886358</sourcerecordid><originalsourceid>FETCH-LOGICAL-c376t-188367139f0535d18230d40c93fc9a424065cd08907c438ca603e10bd4b8022d3</originalsourceid><addsrcrecordid>eNpVkU1LAzEQhhdRUNRf4GXBix62JpndbHIs2_oBikLVa0jzUVO3m5psEf-9aVdE55JheOch77xZdobRCGPEr8ZNM53NRgQRMgKCeYnoXnZEMOUFVED3__SH2WmMS5SKpVFVH2VmGoIPMW9aGaOzTsne-S6Xnc5nfepVPjG9Ubvhs1FvnfvYmJhbH_LJRrbFOvhFkKuV6xb5g9emzS8e16Z7eNohtm363uVJdmBlG83pz3ucvVxPn5vb4v7x5q4Z3xcKatoXmDGgNQZuUQWVxowA0iVSHKzisiTJWaU0YhzVqgSmJEVgMJrrcs6Sew3H2d3A1V4uxTq4lQxfwksndgMfFkKGZKo1glpSW1bNseJVqYFynMpqBAleY4ITqxhY8dOsN_N_tIl7He9o7_2bAEIIgqQ_H_TpJNsb9WLpN6FLdgWpgTJGoWJJBYNKBR9jMPaXi5HYximGOMU2TvETZ9o6G7acMeZ3g3NgvGbwDUo1mF0</addsrcrecordid><sourcetype>Open Website</sourcetype><iscdi>true</iscdi><recordtype>article</recordtype><pqid>2736886358</pqid></control><display><type>article</type><title>Errors Classification and Static Detection Techniques for Dual-programming Model (OpenMP and OpenACC)</title><source>IEEE Open Access Journals</source><source>DOAJ Directory of Open Access Journals</source><source>Elektronische Zeitschriftenbibliothek - Frei zugängliche E-Journals</source><source>SWEPUB Freely available online</source><creator>Basloom, Huda S. ; Dahab, Mohamed Y. ; Alghamdi, Ahmed M. ; Eassa, Fathy E. ; AL-Malaise AL-Ghamdi, Abdullah S. ; Haridi, Seif</creator><creatorcontrib>Basloom, Huda S. ; Dahab, Mohamed Y. ; Alghamdi, Ahmed M. ; Eassa, Fathy E. ; AL-Malaise AL-Ghamdi, Abdullah S. ; Haridi, Seif</creatorcontrib><description>Recently, incorporating more than one programming model into a system designed for high performance computing (HPC) has become a popular solution to implementing parallel systems. Since traditional programming languages, such as C, C++, and Fortran, do not support parallelism, many programmers add one or more programming models to achieve parallelism and accelerate computation efficiently. These models include Open Accelerators (OpenACC) and Open Multi-Processing (OpenMP), which have recently been used with various models, including Message Passing Interface (MPI) and Compute Unified Device Architecture (CUDA). Due to the difficulty of predicting the behavior of threads, runtime errors cannot be predicted. The compiler cannot identify runtime errors such as data races, race conditions, deadlocks, or livelocks. Many studies have been conducted on the development of testing tools to detect runtime errors when using programming models, such as the combinations of OpenACC with MPI models and OpenMP with MPI. Although more applications use OpenACC and OpenMP together, no testing tools have been developed to test these applications to date. This paper presents a testing tool for detecting runtime using a static testing technique. This tool can detect actual and potential runtime errors during the integration of the OpenACC and OpenMP models into systems developed in C++. This tool implement error dependency graphs, which are proposed in this paper. Additionally, a dependency graph of the errors is provided, along with a classification of runtime errors that result from combining the two programming models mentioned earlier.</description><identifier>ISSN: 2169-3536</identifier><identifier>EISSN: 2169-3536</identifier><identifier>DOI: 10.1109/ACCESS.2022.3219406</identifier><identifier>CODEN: IAECCG</identifier><language>eng</language><publisher>Piscataway: IEEE</publisher><subject>Accelerators ; C++ (programming language) ; C++ languages ; Classification ; Computational modeling ; Computer architecture ; Deadlock ; Errors ; Exascale Systems ; Graphics processing units ; High-Performance Computing ; Message passing ; Microprocessors ; OpenACC ; OpenMP ; Parallel processing ; Parallel Programming ; Programming ; Programming Models ; Race Condition ; Run time (computers) ; Runtime ; Runtime errors ; Software Testing ; Static Testing ; Testing ; Testing Tools Classifications</subject><ispartof>IEEE access, 2022, Vol.10, p.1-1</ispartof><rights>Copyright The Institute of Electrical and Electronics Engineers, Inc. (IEEE) 2022</rights><lds50>peer_reviewed</lds50><oa>free_for_read</oa><woscitedreferencessubscribed>false</woscitedreferencessubscribed><citedby>FETCH-LOGICAL-c376t-188367139f0535d18230d40c93fc9a424065cd08907c438ca603e10bd4b8022d3</citedby><cites>FETCH-LOGICAL-c376t-188367139f0535d18230d40c93fc9a424065cd08907c438ca603e10bd4b8022d3</cites><orcidid>0000-0002-6718-0144 ; 0000-0001-7644-5039 ; 0000-0001-9259-4536 ; 0000-0002-5849-8871 ; 0000-0003-3987-9051 ; 0000-0003-2567-715X</orcidid></display><links><openurl>$$Topenurl_article</openurl><openurlfulltext>$$Topenurlfull_article</openurlfulltext><thumbnail>$$Tsyndetics_thumb_exl</thumbnail><linktohtml>$$Uhttps://ieeexplore.ieee.org/document/9938978$$EHTML$$P50$$Gieee$$Hfree_for_read</linktohtml><link.rule.ids>230,314,552,780,784,864,885,2102,4024,27633,27923,27924,27925,54933</link.rule.ids><backlink>$$Uhttps://urn.kb.se/resolve?urn=urn:nbn:se:kth:diva-322203$$DView record from Swedish Publication Index$$Hfree_for_read</backlink></links><search><creatorcontrib>Basloom, Huda S.</creatorcontrib><creatorcontrib>Dahab, Mohamed Y.</creatorcontrib><creatorcontrib>Alghamdi, Ahmed M.</creatorcontrib><creatorcontrib>Eassa, Fathy E.</creatorcontrib><creatorcontrib>AL-Malaise AL-Ghamdi, Abdullah S.</creatorcontrib><creatorcontrib>Haridi, Seif</creatorcontrib><title>Errors Classification and Static Detection Techniques for Dual-programming Model (OpenMP and OpenACC)</title><title>IEEE access</title><addtitle>Access</addtitle><description>Recently, incorporating more than one programming model into a system designed for high performance computing (HPC) has become a popular solution to implementing parallel systems. Since traditional programming languages, such as C, C++, and Fortran, do not support parallelism, many programmers add one or more programming models to achieve parallelism and accelerate computation efficiently. These models include Open Accelerators (OpenACC) and Open Multi-Processing (OpenMP), which have recently been used with various models, including Message Passing Interface (MPI) and Compute Unified Device Architecture (CUDA). Due to the difficulty of predicting the behavior of threads, runtime errors cannot be predicted. The compiler cannot identify runtime errors such as data races, race conditions, deadlocks, or livelocks. Many studies have been conducted on the development of testing tools to detect runtime errors when using programming models, such as the combinations of OpenACC with MPI models and OpenMP with MPI. Although more applications use OpenACC and OpenMP together, no testing tools have been developed to test these applications to date. This paper presents a testing tool for detecting runtime using a static testing technique. This tool can detect actual and potential runtime errors during the integration of the OpenACC and OpenMP models into systems developed in C++. This tool implement error dependency graphs, which are proposed in this paper. Additionally, a dependency graph of the errors is provided, along with a classification of runtime errors that result from combining the two programming models mentioned earlier.</description><subject>Accelerators</subject><subject>C++ (programming language)</subject><subject>C++ languages</subject><subject>Classification</subject><subject>Computational modeling</subject><subject>Computer architecture</subject><subject>Deadlock</subject><subject>Errors</subject><subject>Exascale Systems</subject><subject>Graphics processing units</subject><subject>High-Performance Computing</subject><subject>Message passing</subject><subject>Microprocessors</subject><subject>OpenACC</subject><subject>OpenMP</subject><subject>Parallel processing</subject><subject>Parallel Programming</subject><subject>Programming</subject><subject>Programming Models</subject><subject>Race Condition</subject><subject>Run time (computers)</subject><subject>Runtime</subject><subject>Runtime errors</subject><subject>Software Testing</subject><subject>Static Testing</subject><subject>Testing</subject><subject>Testing Tools Classifications</subject><issn>2169-3536</issn><issn>2169-3536</issn><fulltext>true</fulltext><rsrctype>article</rsrctype><creationdate>2022</creationdate><recordtype>article</recordtype><sourceid>ESBDL</sourceid><sourceid>RIE</sourceid><sourceid>D8T</sourceid><sourceid>DOA</sourceid><recordid>eNpVkU1LAzEQhhdRUNRf4GXBix62JpndbHIs2_oBikLVa0jzUVO3m5psEf-9aVdE55JheOch77xZdobRCGPEr8ZNM53NRgQRMgKCeYnoXnZEMOUFVED3__SH2WmMS5SKpVFVH2VmGoIPMW9aGaOzTsne-S6Xnc5nfepVPjG9Ubvhs1FvnfvYmJhbH_LJRrbFOvhFkKuV6xb5g9emzS8e16Z7eNohtm363uVJdmBlG83pz3ucvVxPn5vb4v7x5q4Z3xcKatoXmDGgNQZuUQWVxowA0iVSHKzisiTJWaU0YhzVqgSmJEVgMJrrcs6Sew3H2d3A1V4uxTq4lQxfwksndgMfFkKGZKo1glpSW1bNseJVqYFynMpqBAleY4ITqxhY8dOsN_N_tIl7He9o7_2bAEIIgqQ_H_TpJNsb9WLpN6FLdgWpgTJGoWJJBYNKBR9jMPaXi5HYximGOMU2TvETZ9o6G7acMeZ3g3NgvGbwDUo1mF0</recordid><startdate>2022</startdate><enddate>2022</enddate><creator>Basloom, Huda S.</creator><creator>Dahab, Mohamed Y.</creator><creator>Alghamdi, Ahmed M.</creator><creator>Eassa, Fathy E.</creator><creator>AL-Malaise AL-Ghamdi, Abdullah S.</creator><creator>Haridi, Seif</creator><general>IEEE</general><general>The Institute of Electrical and Electronics Engineers, Inc. (IEEE)</general><scope>97E</scope><scope>ESBDL</scope><scope>RIA</scope><scope>RIE</scope><scope>AAYXX</scope><scope>CITATION</scope><scope>7SC</scope><scope>7SP</scope><scope>7SR</scope><scope>8BQ</scope><scope>8FD</scope><scope>JG9</scope><scope>JQ2</scope><scope>L7M</scope><scope>L~C</scope><scope>L~D</scope><scope>ADTPV</scope><scope>AFDQA</scope><scope>AOWAS</scope><scope>D8T</scope><scope>D8V</scope><scope>ZZAVC</scope><scope>DOA</scope><orcidid>https://orcid.org/0000-0002-6718-0144</orcidid><orcidid>https://orcid.org/0000-0001-7644-5039</orcidid><orcidid>https://orcid.org/0000-0001-9259-4536</orcidid><orcidid>https://orcid.org/0000-0002-5849-8871</orcidid><orcidid>https://orcid.org/0000-0003-3987-9051</orcidid><orcidid>https://orcid.org/0000-0003-2567-715X</orcidid></search><sort><creationdate>2022</creationdate><title>Errors Classification and Static Detection Techniques for Dual-programming Model (OpenMP and OpenACC)</title><author>Basloom, Huda S. ; Dahab, Mohamed Y. ; Alghamdi, Ahmed M. ; Eassa, Fathy E. ; AL-Malaise AL-Ghamdi, Abdullah S. ; Haridi, Seif</author></sort><facets><frbrtype>5</frbrtype><frbrgroupid>cdi_FETCH-LOGICAL-c376t-188367139f0535d18230d40c93fc9a424065cd08907c438ca603e10bd4b8022d3</frbrgroupid><rsrctype>articles</rsrctype><prefilter>articles</prefilter><language>eng</language><creationdate>2022</creationdate><topic>Accelerators</topic><topic>C++ (programming language)</topic><topic>C++ languages</topic><topic>Classification</topic><topic>Computational modeling</topic><topic>Computer architecture</topic><topic>Deadlock</topic><topic>Errors</topic><topic>Exascale Systems</topic><topic>Graphics processing units</topic><topic>High-Performance Computing</topic><topic>Message passing</topic><topic>Microprocessors</topic><topic>OpenACC</topic><topic>OpenMP</topic><topic>Parallel processing</topic><topic>Parallel Programming</topic><topic>Programming</topic><topic>Programming Models</topic><topic>Race Condition</topic><topic>Run time (computers)</topic><topic>Runtime</topic><topic>Runtime errors</topic><topic>Software Testing</topic><topic>Static Testing</topic><topic>Testing</topic><topic>Testing Tools Classifications</topic><toplevel>peer_reviewed</toplevel><toplevel>online_resources</toplevel><creatorcontrib>Basloom, Huda S.</creatorcontrib><creatorcontrib>Dahab, Mohamed Y.</creatorcontrib><creatorcontrib>Alghamdi, Ahmed M.</creatorcontrib><creatorcontrib>Eassa, Fathy E.</creatorcontrib><creatorcontrib>AL-Malaise AL-Ghamdi, Abdullah S.</creatorcontrib><creatorcontrib>Haridi, Seif</creatorcontrib><collection>IEEE All-Society Periodicals Package (ASPP) 2005-present</collection><collection>IEEE Open Access Journals</collection><collection>IEEE All-Society Periodicals Package (ASPP) 1998-Present</collection><collection>IEEE Electronic Library (IEL)</collection><collection>CrossRef</collection><collection>Computer and Information Systems Abstracts</collection><collection>Electronics &amp; Communications Abstracts</collection><collection>Engineered Materials Abstracts</collection><collection>METADEX</collection><collection>Technology Research Database</collection><collection>Materials Research Database</collection><collection>ProQuest Computer Science Collection</collection><collection>Advanced Technologies Database with Aerospace</collection><collection>Computer and Information Systems Abstracts – Academic</collection><collection>Computer and Information Systems Abstracts Professional</collection><collection>SwePub</collection><collection>SWEPUB Kungliga Tekniska Högskolan full text</collection><collection>SwePub Articles</collection><collection>SWEPUB Freely available online</collection><collection>SWEPUB Kungliga Tekniska Högskolan</collection><collection>SwePub Articles full text</collection><collection>DOAJ Directory of Open Access Journals</collection><jtitle>IEEE access</jtitle></facets><delivery><delcategory>Remote Search Resource</delcategory><fulltext>fulltext</fulltext></delivery><addata><au>Basloom, Huda S.</au><au>Dahab, Mohamed Y.</au><au>Alghamdi, Ahmed M.</au><au>Eassa, Fathy E.</au><au>AL-Malaise AL-Ghamdi, Abdullah S.</au><au>Haridi, Seif</au><format>journal</format><genre>article</genre><ristype>JOUR</ristype><atitle>Errors Classification and Static Detection Techniques for Dual-programming Model (OpenMP and OpenACC)</atitle><jtitle>IEEE access</jtitle><stitle>Access</stitle><date>2022</date><risdate>2022</risdate><volume>10</volume><spage>1</spage><epage>1</epage><pages>1-1</pages><issn>2169-3536</issn><eissn>2169-3536</eissn><coden>IAECCG</coden><abstract>Recently, incorporating more than one programming model into a system designed for high performance computing (HPC) has become a popular solution to implementing parallel systems. Since traditional programming languages, such as C, C++, and Fortran, do not support parallelism, many programmers add one or more programming models to achieve parallelism and accelerate computation efficiently. These models include Open Accelerators (OpenACC) and Open Multi-Processing (OpenMP), which have recently been used with various models, including Message Passing Interface (MPI) and Compute Unified Device Architecture (CUDA). Due to the difficulty of predicting the behavior of threads, runtime errors cannot be predicted. The compiler cannot identify runtime errors such as data races, race conditions, deadlocks, or livelocks. Many studies have been conducted on the development of testing tools to detect runtime errors when using programming models, such as the combinations of OpenACC with MPI models and OpenMP with MPI. Although more applications use OpenACC and OpenMP together, no testing tools have been developed to test these applications to date. This paper presents a testing tool for detecting runtime using a static testing technique. This tool can detect actual and potential runtime errors during the integration of the OpenACC and OpenMP models into systems developed in C++. This tool implement error dependency graphs, which are proposed in this paper. Additionally, a dependency graph of the errors is provided, along with a classification of runtime errors that result from combining the two programming models mentioned earlier.</abstract><cop>Piscataway</cop><pub>IEEE</pub><doi>10.1109/ACCESS.2022.3219406</doi><tpages>1</tpages><orcidid>https://orcid.org/0000-0002-6718-0144</orcidid><orcidid>https://orcid.org/0000-0001-7644-5039</orcidid><orcidid>https://orcid.org/0000-0001-9259-4536</orcidid><orcidid>https://orcid.org/0000-0002-5849-8871</orcidid><orcidid>https://orcid.org/0000-0003-3987-9051</orcidid><orcidid>https://orcid.org/0000-0003-2567-715X</orcidid><oa>free_for_read</oa></addata></record>
fulltext fulltext
identifier ISSN: 2169-3536
ispartof IEEE access, 2022, Vol.10, p.1-1
issn 2169-3536
2169-3536
language eng
recordid cdi_ieee_primary_9938978
source IEEE Open Access Journals; DOAJ Directory of Open Access Journals; Elektronische Zeitschriftenbibliothek - Frei zugängliche E-Journals; SWEPUB Freely available online
subjects Accelerators
C++ (programming language)
C++ languages
Classification
Computational modeling
Computer architecture
Deadlock
Errors
Exascale Systems
Graphics processing units
High-Performance Computing
Message passing
Microprocessors
OpenACC
OpenMP
Parallel processing
Parallel Programming
Programming
Programming Models
Race Condition
Run time (computers)
Runtime
Runtime errors
Software Testing
Static Testing
Testing
Testing Tools Classifications
title Errors Classification and Static Detection Techniques for Dual-programming Model (OpenMP and OpenACC)
url https://sfx.bib-bvb.de/sfx_tum?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&ctx_tim=2024-12-19T08%3A53%3A51IST&url_ver=Z39.88-2004&url_ctx_fmt=infofi/fmt:kev:mtx:ctx&rfr_id=info:sid/primo.exlibrisgroup.com:primo3-Article-proquest_ieee_&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft.genre=article&rft.atitle=Errors%20Classification%20and%20Static%20Detection%20Techniques%20for%20Dual-programming%20Model%20(OpenMP%20and%20OpenACC)&rft.jtitle=IEEE%20access&rft.au=Basloom,%20Huda%20S.&rft.date=2022&rft.volume=10&rft.spage=1&rft.epage=1&rft.pages=1-1&rft.issn=2169-3536&rft.eissn=2169-3536&rft.coden=IAECCG&rft_id=info:doi/10.1109/ACCESS.2022.3219406&rft_dat=%3Cproquest_ieee_%3E2736886358%3C/proquest_ieee_%3E%3Curl%3E%3C/url%3E&disable_directlink=true&sfx.directlink=off&sfx.report_link=0&rft_id=info:oai/&rft_pqid=2736886358&rft_id=info:pmid/&rft_ieee_id=9938978&rft_doaj_id=oai_doaj_org_article_6f27f85b1c954d3691111fd039077121&rfr_iscdi=true