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...
Gespeichert in:
Veröffentlicht in: | IEEE access 2022, Vol.10, p.1-1 |
---|---|
Hauptverfasser: | , , , , , |
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 & 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 |