Distributed Memory Parallel Programming with MPI in Hindi - MPI के साथ वितरित मेमोरी पैरेलल प्रोग्रामिंग


MPI के साथ वितरित मेमोरी पैरेलल प्रोग्रामिंग (Distributed Memory Parallel Programming with MPI)

वितरित मेमोरी पैरेलल प्रोग्रामिंग (Distributed Memory Parallel Programming) एक तकनीक है जिसमें कई कंप्यूटर या प्रोसेसर आपस में जुड़े होते हैं और एक-दूसरे के साथ संदेश (Message Passing) के माध्यम से डेटा साझा करते हैं।

MPI (Message Passing Interface) एक मानक API है जो वितरित कंप्यूटिंग (Distributed Computing) में समानांतर प्रोग्रामिंग को सक्षम बनाता है।

वितरित मेमोरी बनाम साझा मेमोरी

विशेषता वितरित मेमोरी (Distributed Memory) साझा मेमोरी (Shared Memory)
मेमोरी मॉडल प्रत्येक प्रोसेसर की अपनी अलग मेमोरी होती है। सभी प्रोसेसर एक ही साझा मेमोरी का उपयोग करते हैं।
संचार संदेश पासिंग (Message Passing) के माध्यम से होता है। थ्रेड्स के माध्यम से डेटा साझा किया जाता है।
उदाहरण MPI OpenMP
स्केलेबिलिटी उच्च (क्लस्टर और सुपरकंप्यूटर के लिए उपयुक्त) सीमित (साझा मेमोरी स्पेस तक सीमित)

MPI क्या है?

MPI (Message Passing Interface) एक मानक प्रोटोकॉल है जो समानांतर और वितरित कंप्यूटिंग में संदेशों के आदान-प्रदान (Message Exchange) की सुविधा प्रदान करता है।

MPI की विशेषताएँ:

  • विभिन्न प्रोसेस के बीच संदेशों का आदान-प्रदान करता है।
  • क्लस्टर और सुपरकंप्यूटर पर बड़े पैमाने पर समानांतर कंप्यूटिंग को सक्षम बनाता है।
  • मल्टीपल कंप्यूटर नोड्स के साथ स्केलेबल समाधान प्रदान करता है।

MPI प्रोग्रामिंग का परिचय

1. MPI का उपयोग कैसे करें?

MPI प्रोग्राम को निष्पादित करने के लिए हमें MPI लाइब्रेरी की आवश्यकता होती है। Linux में इसे mpicc कंपाइलर और mpirun कमांड का उपयोग करके चलाया जाता है।


// MPI लाइब्रेरी शामिल करें
#include <mpi.h>
#include <stdio.h>

int main(int argc, char** argv) {
    MPI_Init(&argc, &argv); // MPI प्रारंभ करें

    int world_rank;
    MPI_Comm_rank(MPI_COMM_WORLD, &world_rank); // प्रत्येक प्रोसेस की रैंक प्राप्त करें

    int world_size;
    MPI_Comm_size(MPI_COMM_WORLD, &world_size); // कुल प्रोसेस की संख्या प्राप्त करें

    printf("Hello from process %d of %d
", world_rank, world_size);

    MPI_Finalize(); // MPI समाप्त करें
    return 0;
}

2. MPI प्रोग्राम को संकलित और निष्पादित करें


mpicc mpi_program.c -o mpi_program
mpirun -np 4 ./mpi_program

यह कोड 4 प्रोसेस को एक साथ चलाएगा, और प्रत्येक प्रोसेस अपनी रैंक प्रदर्शित करेगा।

MPI में संदेश पासिंग (Message Passing)

1. MPI_Send और MPI_Recv का उपयोग


#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);

    if (world_rank == 0) {
        int data = 100;
        MPI_Send(&data, 1, MPI_INT, 1, 0, MPI_COMM_WORLD);
        printf("Process 0 sent data %d to process 1
", data);
    } else if (world_rank == 1) {
        int received_data;
        MPI_Recv(&received_data, 1, MPI_INT, 0, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE);
        printf("Process 1 received data %d from process 0
", received_data);
    }

    MPI_Finalize();
    return 0;
}

2. MPI_Bcast (Broadcast) का उपयोग

ब्रॉडकास्टिंग का उपयोग एक प्रोसेस से सभी प्रोसेस में डेटा भेजने के लिए किया जाता है।


#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 = 500;
    }

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

    MPI_Finalize();
    return 0;
}

MPI प्रोग्रामिंग के लाभ

  • बेहतर स्केलेबिलिटी: MPI बड़ी प्रणालियों और क्लस्टर्स के लिए उपयुक्त है।
  • तेज़ निष्पादन: वितरित संसाधनों का अधिकतम उपयोग करता है।
  • कस्टम संचार पैटर्न: पाइपलाइनिंग, ब्रॉडकास्टिंग, रेडक्शन आदि को सपोर्ट करता है।

MPI का उपयोग कहाँ किया जाता है?

  • सुपरकंप्यूटिंग (Supercomputing)
  • साइंटिफिक सिमुलेशन (Scientific Simulations)
  • बिग डेटा प्रोसेसिंग (Big Data Processing)
  • आर्टिफिशियल इंटेलिजेंस और मशीन लर्निंग (AI & ML)

निष्कर्ष

MPI वितरित कंप्यूटिंग के लिए सबसे लोकप्रिय प्रोटोकॉल में से एक है। यह बड़े स्केल पर समानांतर निष्पादन को सक्षम बनाता है और कई वैज्ञानिक और इंजीनियरिंग अनुप्रयोगों में उपयोग किया जाता है।

इस ब्लॉग में हमने MPI की बुनियादी अवधारणाएँ, संदेश पासिंग, संकलन और निष्पादन की प्रक्रियाएँ सीखी। अब आप अपने बड़े पैमाने के समानांतर प्रोग्रामिंग प्रोजेक्ट में MPI का उपयोग कर सकते हैं!

Related Post

Comments

Comments