Jump to content

MPI: Reduce: Difference between revisions

From Haidhi Wiki
Created page with "<code>MPI_Reduce</code> mengambil data dari semua proses, melakukan operasi matematika (seperti penjumlahan, perkalian, nilai max, atau min), dan mengirimkan hasilnya ke satu proses tujuan (biasanya Rank 0)."
 
No edit summary
Line 1: Line 1:
<code>MPI_Reduce</code> mengambil data dari semua proses, melakukan operasi matematika (seperti penjumlahan, perkalian, nilai max, atau min), dan mengirimkan hasilnya ke satu proses tujuan (biasanya Rank 0).
<code>MPI_Reduce</code> mengambil data dari semua proses, melakukan operasi matematika (seperti penjumlahan, perkalian, nilai max, atau min), dan mengirimkan hasilnya ke satu proses tujuan (biasanya Rank 0).
<syntaxhighlight lang=cpp>
#include <mpi.h>
#include <iostream>
int main(int argc, char** argv) {
    MPI_Init(&argc, &argv);
    int world_size, world_rank;
    MPI_Comm_size(MPI_COMM_WORLD, &world_size);
    MPI_Comm_rank(MPI_COMM_WORLD, &world_rank);
    // Setiap proses punya angka lokal (misal: 10, 20, 30, ...)
    int local_value = (world_rank + 1) * 10;
    std::cout << "Rank " << world_rank << " punya nilai: " << local_value << std::endl;
    int global_sum;
    int global_max;
    // --- OPERASI PENJUMLAHAN (SUM) ---
    MPI_Reduce(&local_value, &global_sum, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD);
    // --- OPERASI NILAI MAKSIMAL (MAX) ---
    MPI_Reduce(&local_value, &global_max, 1, MPI_INT, MPI_MAX, 0, MPI_COMM_WORLD);
    if (world_rank == 0) {
        std::cout << "------------------------------------" << std::endl;
        std::cout << "HASIL AKHIR DI RANK 0:" << std::endl;
        std::cout << "Total Sum : " << global_sum << std::endl;
        std::cout << "Max Value : " << global_max << std::endl;
        std::cout << "------------------------------------" << std::endl;
    }
    MPI_Finalize();
    return 0;
}
</syntaxhighlight>

Revision as of 01:52, 31 March 2026

MPI_Reduce mengambil data dari semua proses, melakukan operasi matematika (seperti penjumlahan, perkalian, nilai max, atau min), dan mengirimkan hasilnya ke satu proses tujuan (biasanya Rank 0).

#include <mpi.h>
#include <iostream>

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

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

    // Setiap proses punya angka lokal (misal: 10, 20, 30, ...)
    int local_value = (world_rank + 1) * 10;
    std::cout << "Rank " << world_rank << " punya nilai: " << local_value << std::endl;

    int global_sum;
    int global_max;

    // --- OPERASI PENJUMLAHAN (SUM) ---
    MPI_Reduce(&local_value, &global_sum, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD);

    // --- OPERASI NILAI MAKSIMAL (MAX) ---
    MPI_Reduce(&local_value, &global_max, 1, MPI_INT, MPI_MAX, 0, MPI_COMM_WORLD);

    if (world_rank == 0) {
        std::cout << "------------------------------------" << std::endl;
        std::cout << "HASIL AKHIR DI RANK 0:" << std::endl;
        std::cout << "Total Sum : " << global_sum << std::endl;
        std::cout << "Max Value : " << global_max << std::endl;
        std::cout << "------------------------------------" << std::endl;
    }

    MPI_Finalize();
    return 0;
}