{"id":12686,"date":"2022-09-05T12:00:32","date_gmt":"2022-09-05T10:00:32","guid":{"rendered":"https:\/\/blog.rwth-aachen.de\/itc\/?p=12686"},"modified":"2023-06-09T08:50:30","modified_gmt":"2023-06-09T06:50:30","slug":"must","status":"publish","type":"post","link":"https:\/\/blog.rwth-aachen.de\/itc\/en\/2022\/09\/05\/must\/","title":{"rendered":"MUST <br \/> MPI Runtime Correctness Analysis"},"content":{"rendered":"<div class=\"twoclick_social_bookmarks_post_12686 social_share_privacy clearfix 1.6.4 locale-en_US sprite-en_US\"><\/div><div class=\"twoclick-js\"><script type=\"text\/javascript\">\/* <![CDATA[ *\/\njQuery(document).ready(function($){if($('.twoclick_social_bookmarks_post_12686')){$('.twoclick_social_bookmarks_post_12686').socialSharePrivacy({\"txt_help\":\"Wenn Sie diese Felder durch einen Klick aktivieren, werden Informationen an Facebook, Twitter, Flattr, Xing, t3n, LinkedIn, Pinterest oder Google eventuell ins Ausland \\u00fcbertragen und unter Umst\\u00e4nden auch dort gespeichert. N\\u00e4heres erfahren Sie durch einen Klick auf das <em>i<\\\/em>.\",\"settings_perma\":\"Dauerhaft aktivieren und Daten\\u00fcber-tragung zustimmen:\",\"info_link\":\"http:\\\/\\\/www.heise.de\\\/ct\\\/artikel\\\/2-Klicks-fuer-mehr-Datenschutz-1333879.html\",\"uri\":\"https:\\\/\\\/blog.rwth-aachen.de\\\/itc\\\/en\\\/2022\\\/09\\\/05\\\/must\\\/\",\"post_id\":12686,\"post_title_referrer_track\":\"MUST++MPI+Runtime+Correctness+Analysis\",\"display_infobox\":\"on\"});}});\n\/* ]]> *\/<\/script><\/div><p><div id=\"attachment_12696\" style=\"width: 310px\" class=\"wp-caption alignright\"><a href=\"https:\/\/blog.rwth-aachen.de\/itc\/files\/2022\/09\/must-1.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-12696\" class=\"wp-image-12696 size-medium\" src=\"https:\/\/blog.rwth-aachen.de\/itc\/files\/2022\/09\/must-1-300x124.png\" alt=\"logo MUST\" width=\"300\" height=\"124\" srcset=\"https:\/\/blog.rwth-aachen.de\/itc\/files\/2022\/09\/must-1-300x124.png 300w, https:\/\/blog.rwth-aachen.de\/itc\/files\/2022\/09\/must-1.png 631w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-12696\" class=\"wp-caption-text\">Source: Own illustration<\/p><\/div><\/p>\n<p>High performance computing (HPC) is largely concerned with parallelizing programs, especially complex simulations such as models for weather forecasting or climate. To ensure that computations finish quickly, the work to be done is divided among different processes in parallel. Depending on the use case, the processes must exchange their intermediate results with other processes at program runtime.<\/p>\n<p><!--more--><\/p>\n<p>&nbsp;<\/p>\n<p>The <a href=\"https:\/\/hpc-wiki.info\/hpc\/MPI\">Message Passing Interface<\/a> (MPI) is a standard method of exchanging messages between multiple processes or computers on which a program uses distributed memory. If MPI is used incorrectly, errors can occur, some of which are very difficult to detect. The <a href=\"https:\/\/itc.rwth-aachen.de\/MUST\">Marmot Umpire Scalable Tool<\/a> (MUST) is a runtime correctness analysis tool that automatically detects non-standard use of MPI. MUST is being developed by the HPC group at the IT Center in cooperation with Lawrence Livermore National Laboratory and TU Darmstadt. MUST is available as open source software.<\/p>\n<p>&nbsp;<\/p>\n<h3><strong><span style=\"color: #00549f;\">Application of MUST<\/span><br \/>\n<\/strong><\/h3>\n<p>MUST is placed before the target application, intercepts its MPI calls, and thereby performs correctness analysis at program runtime.<br \/>\nA typical error when using MPI is a deadlock. A deadlock is in computer science a condition in which at least two processes waiting for resources that are allocated by the other process.<\/p>\n<p>&nbsp;<\/p>\n<h3><span style=\"color: #00549f;\"><strong>Example: Deadlock<\/strong><\/span><\/h3>\n<p>There are four cars approaching an intersection and competing to be the first to proceed. The right-before-left rule applies. A deadlock has occurred because no car can proceed without further communication. This deadlock can only be resolved when a person decides which car is allowed to drive on first.<\/p>\n<div id=\"attachment_12697\" style=\"width: 310px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-12697\" class=\"wp-image-12697 size-medium\" src=\"https:\/\/blog.rwth-aachen.de\/itc\/files\/2022\/09\/DeadlockAutos-1-300x178.jpg\" alt=\"Four colorful vehicles drive towards an intersection at the same time\" width=\"300\" height=\"178\" srcset=\"https:\/\/blog.rwth-aachen.de\/itc\/files\/2022\/09\/DeadlockAutos-1-300x178.jpg 300w, https:\/\/blog.rwth-aachen.de\/itc\/files\/2022\/09\/DeadlockAutos-1.jpg 711w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><p id=\"caption-attachment-12697\" class=\"wp-caption-text\">Source: Own illustration<\/p><\/div>\n<p>In MPI, this would mean waiting indefinitely for a message to resolve the situation when such a deadlock occurs. MUST detects the deadlock by pre-switching and reports it to the developer. The developer can then correct the error in the program so that this deadlock does not occur again. MUST detects such errors directly during execution, so that in the case of calculations that run over several days, the developer detects the error promptly.<\/p>\n<p>&nbsp;<\/p>\n<h3><strong><span style=\"color: #00549f;\">Further Use Cases of MUST<\/span><br \/>\n<\/strong><\/h3>\n<p>A deadlock is only one of numerous potential errors in MPI programming. MUST also detects:<\/p>\n<p>&#8211; Illegal or incorrect arguments<br \/>\n&#8211; Resource usage errors and leaks<br \/>\n&#8211; Data type mismatches<br \/>\n&#8211; Overlaps in communication buffers<br \/>\n&#8211; Data races involving MPI function calls<\/p>\n<p>Currently, MUST provides a comprehensive set of correctness checks where checks are needed for MPI programs with many parallel processes.<br \/>\nSource code and documentation of MUST are available on our <a href=\"https:\/\/itc.rwth-aachen.de\/MUST\">website<\/a> and more information on MUST can be found on the <a href=\"https:\/\/hpc-wiki.info\/hpc\/MUST\">HPC wiki<\/a>.<\/p>\n<p>Responsible for the content of this article are <a href=\"https:\/\/www.itc.rwth-aachen.de\/cms\/IT-Center\/IT-Center\/Team\/~epvp\/Mitarbeiter-CAMPUS-\/?allou=1&amp;gguid=0x9774D4BC6CF14142A640B59EFAFA510D&amp;lidx=1\">Simon Schwitanski<\/a> and <a href=\"https:\/\/www.itc.rwth-aachen.de\/cms\/IT-Center\/IT-Center\/Team\/~epvp\/Mitarbeiter-CAMPUS-\/?allou=1&amp;gguid=0x592B0D17C73A1249AC2C233FADF6EE96&amp;lidx=1\">Janin Vreydal<\/a>.<\/p>","protected":false},"excerpt":{"rendered":"<p>Sorry, this entry is only available in Deutsch.<\/p>\n","protected":false},"author":3351,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"c2c_always_allow_admin_comments":false,"footnotes":""},"categories":[924,316,315],"tags":[23,629,628],"class_list":["post-12686","post","type-post","status-publish","format-standard","hentry","category-hpcnews","category-projekte-kooperationen","category-services-support","tag-hpc","tag-mpi","tag-must"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/blog.rwth-aachen.de\/itc\/en\/wp-json\/wp\/v2\/posts\/12686","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.rwth-aachen.de\/itc\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.rwth-aachen.de\/itc\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.rwth-aachen.de\/itc\/en\/wp-json\/wp\/v2\/users\/3351"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.rwth-aachen.de\/itc\/en\/wp-json\/wp\/v2\/comments?post=12686"}],"version-history":[{"count":12,"href":"https:\/\/blog.rwth-aachen.de\/itc\/en\/wp-json\/wp\/v2\/posts\/12686\/revisions"}],"predecessor-version":[{"id":15465,"href":"https:\/\/blog.rwth-aachen.de\/itc\/en\/wp-json\/wp\/v2\/posts\/12686\/revisions\/15465"}],"wp:attachment":[{"href":"https:\/\/blog.rwth-aachen.de\/itc\/en\/wp-json\/wp\/v2\/media?parent=12686"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.rwth-aachen.de\/itc\/en\/wp-json\/wp\/v2\/categories?post=12686"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.rwth-aachen.de\/itc\/en\/wp-json\/wp\/v2\/tags?post=12686"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}