Collective Communication in MPI in Hindi - MPI में सामूहिक संचार

Collective Communication in MPI in Hindi - MPI में सामूहिक संचार


MPI में सामूहिक संचार (Collective Communication in MPI) क्या है?

सामूहिक संचार (Collective Communication) एक संचार तकनीक है जिसका उपयोग कई प्रोसेस के बीच डेटा साझा करने और संगठित रूप से प्रोसेसिंग करने के लिए किया जाता है। MPI (Message Passing Interface) में, सामूहिक संचार का उपयोग एक प्रोसेस से सभी प्रोसेस, सभी से एक, या सभी से सभी प्रोसेस में डेटा संचार करने के लिए किया जाता है।

MPI में सामूहिक संचार उच्च-स्तरीय संचार कार्यों को सरल और प्रभावी बनाता है, जिससे वितरित कंप्यूटिंग और हाई परफॉर्मेंस कंप्यूटिंग (HPC) में तेजी से डेटा आदान-प्रदान संभव होता है।

सामूहिक संचार के प्रकार

सामूहिक संचार प्रकार विवरण
ब्रॉडकास्ट (Broadcast) एक प्रोसेस से सभी प्रोसेस को डेटा भेजता है। (MPI_Bcast)
गैदर (Gather) सभी प्रोसेस से डेटा एकत्र कर एक प्रोसेस में संग्रहीत करता है। (MPI_Gather)
स्कैटर (Scatter) एक प्रोसेस डेटा को विभाजित कर कई प्रोसेस में वितरित करता है। (MPI_Scatter)
ऑल-गैदर (All-Gather) सभी प्रोसेस एक-दूसरे से डेटा साझा करते हैं और सभी प्रोसेस को समान डेटा मिलता है। (MPI_Allgather)
रिड्यूस (Reduce) सभी प्रोसेस से डेटा एकत्र कर एक प्रोसेस में एकीकृत करता है (जैसे योग, न्यूनतम, अधिकतम)। (MPI_Reduce)
ऑल-रिड्यूस (All-Reduce) Reduce ऑपरेशन के बाद सभी प्रोसेस को डेटा वितरित करता है। (MPI_Allreduce)

1. ब्रॉडकास्ट (MPI_Bcast) का उपयोग

MPI_Bcast एक प्रोसेस से सभी प्रोसेस में डेटा प्रसारित करता है।


#include <mpi.h>
#include <stdio.h>

int main(int argc, char** argv) {
    MPI_Init(&argc, &argv);

    int data = 0;
    int world_rank;
    MPI_Comm_rank(MPI_COMM_WORLD, &world_rank);

    if (world_rank == 0) {
        data = 100;
    }

    MPI_Bcast(&data, 1, MPI_INT, 0, MPI_COMM_WORLD);
    printf("Process %d received data %d
", world_rank, data);

    MPI_Finalize();
    return 0;
}

2. गैदर (MPI_Gather) का उपयोग

MPI_Gather सभी प्रोसेस से डेटा इकट्ठा कर एक प्रोसेस में संग्रहीत करता है।


#include <mpi.h>
#include <stdio.h>

int main(int argc, char** argv) {
    MPI_Init(&argc, &argv);

    int world_rank, world_size;
    MPI_Comm_rank(MPI_COMM_WORLD, &world_rank);
    MPI_Comm_size(MPI_COMM_WORLD, &world_size);

    int send_data = world_rank;
    int recv_data[world_size];

    MPI_Gather(&send_data, 1, MPI_INT, recv_data, 1, MPI_INT, 0, MPI_COMM_WORLD);

    if (world_rank == 0) {
        printf("Gathered Data: ");
        for (int i = 0; i < world_size; i++) {
            printf("%d ", recv_data[i]);
        }
        printf("
");
    }

    MPI_Finalize();
    return 0;
}

3. स्कैटर (MPI_Scatter) का उपयोग

MPI_Scatter डेटा को विभाजित कर सभी प्रोसेस में वितरित करता है।


#include <mpi.h>
#include <stdio.h>

int main(int argc, char** argv) {
    MPI_Init(&argc, &argv);

    int world_rank, world_size;
    MPI_Comm_rank(MPI_COMM_WORLD, &world_rank);
    MPI_Comm_size(MPI_COMM_WORLD, &world_size);

    int send_data[world_size];
    int recv_data;

    if (world_rank == 0) {
        for (int i = 0; i < world_size; i++) {
            send_data[i] = i * 10;
        }
    }

    MPI_Scatter(send_data, 1, MPI_INT, &recv_data, 1, MPI_INT, 0, MPI_COMM_WORLD);
    printf("Process %d received data %d
", world_rank, recv_data);

    MPI_Finalize();
    return 0;
}

4. रिड्यूस (MPI_Reduce) का उपयोग

MPI_Reduce सभी प्रोसेस से डेटा एकत्र कर एक प्रोसेस में संग्रहीत करता है और उस पर गणना करता है।


#include <mpi.h>
#include <stdio.h>

int main(int argc, char** argv) {
    MPI_Init(&argc, &argv);

    int world_rank;
    MPI_Comm_rank(MPI_COMM_WORLD, &world_rank);

    int send_data = world_rank + 1;
    int result;

    MPI_Reduce(&send_data, &result, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD);

    if (world_rank == 0) {
        printf("Sum of all processes: %d
", result);
    }

    MPI_Finalize();
    return 0;
}

सामूहिक संचार के लाभ

  • बेहतर प्रदर्शन: समर्पित संचार पैटर्न के कारण संचार समय कम होता है।
  • लोड बैलेंसिंग: सभी प्रोसेस में डेटा समान रूप से वितरित किया जाता है।
  • डेटा स्थिरता: सामूहिक संचार से डेटा की अखंडता बनी रहती है।

भविष्य में MPI सामूहिक संचार

  • GPU-आधारित MPI: हाई परफॉर्मेंस कंप्यूटिंग में CUDA और OpenCL के साथ MPI का एकीकरण।
  • क्लाउड MPI: क्लाउड कंप्यूटिंग में स्केलेबल MPI संचार का उपयोग।
  • क्वांटम कंप्यूटिंग में सामूहिक संचार: क्वांटम नेटवर्क में तेज़ संचार तकनीकों का विकास।

निष्कर्ष

MPI में सामूहिक संचार HPC में डेटा साझा करने और प्रोसेसिंग को अधिक प्रभावी बनाने का एक महत्वपूर्ण तरीका है।

  • MPI_Bcast डेटा को सभी प्रोसेस में भेजता है।
  • MPI_Gather डेटा को सभी प्रोसेस से इकट्ठा करता है।
  • MPI_Scatter डेटा को विभाजित कर वितरित करता है।
  • MPI_Reduce सभी प्रोसेस के डेटा को गणना के साथ एकीकृत करता है।

MPI का उपयोग करके HPC में समानांतर प्रोसेसिंग को और अधिक तेज़ और कुशल बनाया जा सकता है।

Related Articles

Reductions in Communication Overhead in Hindi - संचार ओवरहेड में कमी कैसे करें?

संचार ओवरहेड (Communication Overhead) में कमी कैसे करें? ...

Read More →

Impact of Synchronization, Serialization, and Contention in Hindi - समकालिकता, अनुक्रमण और विवाद का प्रभाव

समकालिकता, अनुक्रमण और विवाद का प्रभाव (Impact of Sy...

Read More →

Communication Parameters in Hindi - संचार मापदंड क्या हैं?

संचार मापदंड (Communication Parameters) क्या हैं? समानां...

Read More →

MPI Performance Tools in Hindi - MPI प्रदर्शन विश्लेषण उपकरण

MPI प्रदर्शन विश्लेषण उपकरण (MPI Performance Tools) क्या हैं...

Read More →

Virtual Topologies in Hindi - वर्चुअल टोपोलॉजी क्या है?

वर्चुअल टोपोलॉजी (Virtual Topologies) क्या है? हाई पर...

Read More →