{"id":2852,"date":"2024-06-24T13:14:34","date_gmt":"2024-06-24T08:14:34","guid":{"rendered":"https:\/\/afzalbadshah.com\/?p=2852"},"modified":"2024-06-24T13:15:28","modified_gmt":"2024-06-24T08:15:28","slug":"broadcast-communication-in-mpi","status":"publish","type":"post","link":"https:\/\/afzalbadshah.com\/index.php\/2024\/06\/24\/broadcast-communication-in-mpi\/","title":{"rendered":"Broadcast Communication in MPI"},"content":{"rendered":"\n<p>In MPI (Message Passing Interface), broadcast communication is a fundamental operation that allows one process to efficiently send data to all other processes in a communicator. This means that a single piece of data is sent from one process, often referred to as the &#8220;root&#8221; process, to all other processes within the MPI environment. Broadcast communication is particularly useful for distributing global information or settings to all participating processes.<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe title=\"MPI (MPI4PY) on Jupyter Tutorial\" width=\"640\" height=\"360\" src=\"https:\/\/www.youtube.com\/embed\/videoseries?list=PLGiqyN7d0mypGRrq2Bv9mXLGoeZPXTcZA\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">How Broadcast Communication Works<\/h3>\n\n\n\n<p>In MPI, broadcast communication works by having the root process send the data to all other processes within a communicator. The other processes then receive the data from the root process. This operation ensures that all processes have the same data after the broadcast, enabling them to perform further computations or tasks based on the received data.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Broadcast Program<\/h3>\n\n\n\n<p>Now, let&#8217;s dissect the provided Python program that demonstrates MPI broadcast communication:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Broadcast communication\nfrom mpi4py import MPI\n\n# Initialize MPI communicator\ncomm = MPI.COMM_WORLD\n# Get rank of current process\nrank = comm.Get_rank()\n\n# Define data to be broadcasted by rank 0\nif rank == 0:\n    data = {'key1': &#91;7, 2.72, 2+3j], 'key2': ('abc', 'xyz')}\nelse:\n    data = None\n\n# Broadcast data from rank 0 to all other processes\ndata = comm.bcast(data, root=0)\n\n# Print received data\nprint(\"Process\", rank, \"received data:\", data)<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Line-by-Line Explanation<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><code>from mpi4py import MPI<\/code>: Imports the MPI module from the <code>mpi4py<\/code> library, enabling us to use MPI functionalities in the Python script.<\/li>\n\n\n\n<li><code>comm = MPI.COMM_WORLD<\/code>: Initializes an MPI communicator named <code>comm<\/code>, which represents all processes in the MPI environment.<\/li>\n\n\n\n<li><code>rank = comm.Get_rank()<\/code>: Retrieves the rank of the current process within the communicator <code>comm<\/code>. Each process is assigned a unique rank, starting from 0.<\/li>\n\n\n\n<li>The <code>if<\/code> statement checks if the current process is the root process (rank 0). If it is, the root process initializes the data to be broadcasted. In this example, a dictionary <code>data<\/code> is initialized with some values. If the process is not the root (rank 0), <code>data<\/code> is set to <code>None<\/code>.<\/li>\n\n\n\n<li><code>data = comm.bcast(data, root=0)<\/code>: The <code>bcast()<\/code> function is called to broadcast the data from the root process (rank 0) to all other processes in the communicator <code>comm<\/code>. After the broadcast operation, all processes have the same data stored in the <code>data<\/code> variable.<\/li>\n\n\n\n<li><code>print(\"Process\", rank, \"received data:\", data)<\/code>: Finally, each process prints the received data along with its rank. This allows us to observe the broadcasted data on each process.<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>In MPI (Message Passing Interface), broadcast communication is a fundamental operation that allows one process to efficiently send data to all other processes in a communicator. This means that a single piece of data is sent from one process, often referred to as the &#8220;root&#8221; process, to all other processes within the MPI environment. Broadcast communication is particularly useful for distributing global information or settings to all participating processes. How Broadcast Communication Works In MPI, broadcast communication works by having&#8230;<\/p>\n<p class=\"read-more\"><a class=\"btn btn-default\" href=\"https:\/\/afzalbadshah.com\/index.php\/2024\/06\/24\/broadcast-communication-in-mpi\/\"> Read More<span class=\"screen-reader-text\">  Read More<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":3601,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"enabled":false},"version":2}},"categories":[506],"tags":[598,540,543,567],"class_list":["post-2852","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-mpi-with-python","tag-distributed-processing","tag-mpi","tag-mpi4py","tag-parallel-processing"],"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/afzalbadshah.com\/wp-content\/uploads\/2024\/06\/MPI-Python-3.png?fit=1280%2C720&ssl=1","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pf3emP-K0","jetpack-related-posts":[],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/afzalbadshah.com\/index.php\/wp-json\/wp\/v2\/posts\/2852","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/afzalbadshah.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/afzalbadshah.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/afzalbadshah.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/afzalbadshah.com\/index.php\/wp-json\/wp\/v2\/comments?post=2852"}],"version-history":[{"count":3,"href":"https:\/\/afzalbadshah.com\/index.php\/wp-json\/wp\/v2\/posts\/2852\/revisions"}],"predecessor-version":[{"id":3604,"href":"https:\/\/afzalbadshah.com\/index.php\/wp-json\/wp\/v2\/posts\/2852\/revisions\/3604"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/afzalbadshah.com\/index.php\/wp-json\/wp\/v2\/media\/3601"}],"wp:attachment":[{"href":"https:\/\/afzalbadshah.com\/index.php\/wp-json\/wp\/v2\/media?parent=2852"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/afzalbadshah.com\/index.php\/wp-json\/wp\/v2\/categories?post=2852"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/afzalbadshah.com\/index.php\/wp-json\/wp\/v2\/tags?post=2852"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}