{"id":22354,"date":"2025-06-27T11:30:17","date_gmt":"2025-06-27T09:30:17","guid":{"rendered":"https:\/\/blog.rwth-aachen.de\/itc\/?p=22354"},"modified":"2025-06-27T11:34:20","modified_gmt":"2025-06-27T09:34:20","slug":"fehlerfrei-durch-mpi-mit-den-neuen-funktionen-in-must-1-11-0","status":"publish","type":"post","link":"https:\/\/blog.rwth-aachen.de\/itc\/2025\/06\/27\/fehlerfrei-durch-mpi-mit-den-neuen-funktionen-in-must-1-11-0\/","title":{"rendered":"Fehlerfrei durch MPI \u2013 mit den neuen Funktionen in MUST 1.11.0"},"content":{"rendered":"<div class=\"twoclick_social_bookmarks_post_22354 social_share_privacy clearfix 1.6.4 locale-de_DE sprite-de_DE\"><\/div><div class=\"twoclick-js\"><script type=\"text\/javascript\">\/* <![CDATA[ *\/\njQuery(document).ready(function($){if($('.twoclick_social_bookmarks_post_22354')){$('.twoclick_social_bookmarks_post_22354').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\\\/2025\\\/06\\\/27\\\/fehlerfrei-durch-mpi-mit-den-neuen-funktionen-in-must-1-11-0\\\/\",\"post_id\":22354,\"post_title_referrer_track\":\"Fehlerfrei+durch+MPI+%E2%80%93+mit+den+neuen+Funktionen+in+MUST+1.11.0\",\"display_infobox\":\"on\"});}});\n\/* ]]> *\/<\/script><\/div><p><div id=\"attachment_22355\" style=\"width: 310px\" class=\"wp-caption alignright\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-22355\" class=\"size-medium wp-image-22355\" src=\"https:\/\/blog.rwth-aachen.de\/itc\/files\/2025\/06\/Blog-Layout-300x200.png\" alt=\"MUST Logo\" width=\"300\" height=\"200\" srcset=\"https:\/\/blog.rwth-aachen.de\/itc\/files\/2025\/06\/Blog-Layout-300x200.png 300w, https:\/\/blog.rwth-aachen.de\/itc\/files\/2025\/06\/Blog-Layout-1024x683.png 1024w, https:\/\/blog.rwth-aachen.de\/itc\/files\/2025\/06\/Blog-Layout-768x512.png 768w, https:\/\/blog.rwth-aachen.de\/itc\/files\/2025\/06\/Blog-Layout-1536x1024.png 1536w, https:\/\/blog.rwth-aachen.de\/itc\/files\/2025\/06\/Blog-Layout-2048x1365.png 2048w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><p id=\"caption-attachment-22355\" class=\"wp-caption-text\">Quelle: Eigene Darstellung<\/p><\/div><\/p>\n<p>In der parallelen Programmierung mit Supercomputern wie CLAIX wird seit \u00fcber 30 Jahren das sogenannte <a href=\"https:\/\/www.mpi-forum.org\">Message Passing Interface<\/a> f\u00fcr die effiziente Kommunikation zwischen Prozessen benutzt. Programmierfehler in der MPI-Kommunikation k\u00f6nnen &#8211; gerade durch die parallelisierte Ausf\u00fchrung &#8211; zu klassischen Problemen in der Softwareentwicklung wie Deadlocks, Data Races oder Typfehlern f\u00fchren. Solche Fehler sind f\u00fcr den Entwickler jedoch oft schwierig zu finden, insbesondere, wenn ein Fehler nichtdeterministisch, d.h. nur sporadisch, auftritt.<\/p>\n<p><!--more--><\/p>\n<p>&nbsp;<\/p>\n<p>Um Entwickler bei der Erkennung von Fehlern in der MPI-Programmierung zu unterst\u00fctzen, wird am IT Center seit \u00fcber 10 Jahren das MPI-Korrektheitsanalysetool <a href=\"https:\/\/itc.rwth-aachen.de\/must\">MUST<\/a> entwickelt. Es kann verschiedene Arten von MPI-Programmierfehlern beginnend bei einfachen Argumentfehlern bis hin zu den bereits genannten Deadlocks und Data Races erkennen und dem Nutzer melden. MUST h\u00e4ngt sich daf\u00fcr an die Ausf\u00fchrung des Programms und kann w\u00e4hrenddessen die Fehler erkennen. Wir haben in einem <a href=\"https:\/\/blog.rwth-aachen.de\/itc\/2022\/09\/05\/must\">vergangenen Blogbeitrag<\/a> bereits \u00fcber die grunds\u00e4tzliche Funktionalit\u00e4t von MUST berichtet. MUST ist unter einer Open-Source-Lizenz (BSD-3) f\u00fcr alle interessierten Nutzer verf\u00fcgbar.<\/p>\n<p>Anfang des Monats wurde MUST in der neuen Version 1.11.0 ver\u00f6ffentlicht und dabei um weitere Funktionalit\u00e4ten erg\u00e4nzt, die wir im Folgenden kompakt darstellen und erl\u00e4utern.<\/p>\n<p>&nbsp;<\/p>\n<h3><span style=\"color: #00549f;\">Analyse von MPI One-Sided Communication (RMA)<\/span><\/h3>\n<p>In MPI gibt es verschiedene Arten des Datenaustauschs. Einerseits das klassische &#8222;Message Passing&#8220;, bei dem ein Sender seine Daten als Nachricht zu einem Empf\u00e4nger schickt, der aktiv die Nachricht empf\u00e4ngt. Diese Art der Kommunikation ist zweiseitig, weil sowohl Sender als auch Empf\u00e4nger beide an der Kommunikation beteiligt sind. Bei der einseitigen Kommunikation (MPI One-Sided Communication) kann der &#8222;sendende&#8220; Prozess die Daten direkt in den Speicher vom Zielprozess schreiben. Anders gesprochen muss der Zielprozess die Daten nicht mehr aktiv empfangen. Diese einseitige Kommunikation kann Effizienzvorteile bieten, birgt aber auch die Gefahr verschiedener Probleme wie Data Races und Deadlocks.<\/p>\n<p>Bisher war MPI One-Sided Communication nur minimal in MUST unterst\u00fctzt. Mit dem neuen Release kann MUST simple Argumentfehler sowie Data Races und Deadlocks nun auch f\u00fcr diese Art der Kommunikation erkennen. Damit wird das Portfolio der analysierbaren MPI-Programme noch einmal erweitert.<\/p>\n<p>&nbsp;<\/p>\n<h3><span style=\"color: #00549f;\">Analyse von Neighborhood Collectives und I\/O<\/span><\/h3>\n<p>In MPI ist der Datenaustausch ebenfalls mit sogenannten &#8222;Kollektiven&#8220; m\u00f6glich. Mit diesen k\u00f6nnen <em>mehrere<\/em> gleichzeitig Daten austauschen. Zum Beispiel kann damit ein Prozess Daten an alle anderen Prozesse senden. Das kann effizienter sein als der individuelle Austausch \u00fcber Nachrichten zwischen den Prozessen. Eine neuere Funktionalit\u00e4t sind die sogenannten &#8222;Neighborhood Collectives&#8220;, mit denen der Austausch zwischen logisch &#8222;benachbarten&#8220; Prozessen einfacher wird. MUST unterst\u00fctzt nun auch die Analyse dieses Datenaustauschs hinsichtlich Deadlocks und sogenannten Typfehlern. Typfehler treten beispielsweise auf, wenn ein Prozess Daten mit einem anderen Datentypen (zum Beispiel &#8222;Integer&#8220;) sendet und einem anderen inkompatiblen Datentypen empf\u00e4ngt (zum Beispiel &#8222;Float&#8220;).<\/p>\n<p>Neben dem Austausch von Daten zwischen Prozessen erm\u00f6glicht MPI auch das permanente Speichern von Daten auf ein gegebenes Dateisystem. Diese Funktionalit\u00e4t wird &#8222;MPI I\/O&#8220; genannt. Mit dem neuen MUST-Release kann auch diese Art der Datenspeicherung mit MUST auf Fehler analysiert werden.<\/p>\n<p>&nbsp;<\/p>\n<h3><span style=\"color: #00549f;\">Verbesserungen in der Erkennung von Typfehlern mit TypeART<\/span><\/h3>\n<p>MUST interagiert auch mit anderen Werkzeugen zur Korrektheitsanalyse. Eins davon ist <a href=\"https:\/\/github.com\/tudasc\/TypeART\">TypeART<\/a>, welches C\/C++ Speicherallokationen analysiert und schaut, welcher Typ diesen zugewiesen wurde. Mit Hilfe der Typinformationen aus TypeART kann MUST weitere Inkonsistenzen zwischen C\/C++-Datentypen und MPI-Datentypen finden. Im neuen Release wurde die Unterst\u00fctzung von TypeART f\u00fcr neuere Compiler-Versionen ausgebaut und auf komplexere Datentypen in MUST erweitert.<\/p>\n<p>&nbsp;<\/p>\n<h3><span style=\"color: #00549f;\">Weitere Informationen<\/span><\/h3>\n<p>Mehr \u00fcber MUST und dessen Entwicklung erfahrt ihr auf der <a href=\"https:\/\/www.i12.rwth-aachen.de\/go\/id\/nrbe\">Webseite<\/a>. Von dort aus k\u00f6nnt ihr es herunterladen und installieren. Auf unserem HPC-Cluster CLAIX ist es bereits installiert und f\u00fcr alle Nutzer verf\u00fcgbar.<\/p>\n<p>&nbsp;<\/p>\n<hr \/>\n<p>Verantwortlich f\u00fcr die Inhalte dieses Beitrags ist <a href=\"https:\/\/www.itc.rwth-aachen.de\/cms\/it-center\/it-center\/profil\/team\/~epvp\/mitarbeiter-campus-\/?gguid=PER-PX334N6&amp;allou=1\">Simon Schwitanski<\/a>.<\/p>","protected":false},"excerpt":{"rendered":"<p>In der parallelen Programmierung mit Supercomputern wie CLAIX wird seit \u00fcber 30 Jahren das sogenannte Message Passing Interface f\u00fcr die effiziente Kommunikation zwischen Prozessen benutzt. Programmierfehler in der MPI-Kommunikation k\u00f6nnen [&hellip;]<\/p>\n","protected":false},"author":5003,"featured_media":22355,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"c2c_always_allow_admin_comments":false,"footnotes":""},"categories":[306,308,312,315],"tags":[629,628,1489,1490,721],"class_list":["post-22354","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ankuendigungen","category-events-jubilaen-erfolge","category-insight-it-center","category-services-support","tag-mpi","tag-must","tag-rma","tag-typeart","tag-updates"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/blog.rwth-aachen.de\/itc\/wp-json\/wp\/v2\/posts\/22354","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.rwth-aachen.de\/itc\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.rwth-aachen.de\/itc\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.rwth-aachen.de\/itc\/wp-json\/wp\/v2\/users\/5003"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.rwth-aachen.de\/itc\/wp-json\/wp\/v2\/comments?post=22354"}],"version-history":[{"count":3,"href":"https:\/\/blog.rwth-aachen.de\/itc\/wp-json\/wp\/v2\/posts\/22354\/revisions"}],"predecessor-version":[{"id":22358,"href":"https:\/\/blog.rwth-aachen.de\/itc\/wp-json\/wp\/v2\/posts\/22354\/revisions\/22358"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.rwth-aachen.de\/itc\/wp-json\/wp\/v2\/media\/22355"}],"wp:attachment":[{"href":"https:\/\/blog.rwth-aachen.de\/itc\/wp-json\/wp\/v2\/media?parent=22354"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.rwth-aachen.de\/itc\/wp-json\/wp\/v2\/categories?post=22354"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.rwth-aachen.de\/itc\/wp-json\/wp\/v2\/tags?post=22354"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}