<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.haidhi.my.id/wiki/index.php?action=history&amp;feed=atom&amp;title=MPI%3A_gather</id>
	<title>MPI: gather - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.haidhi.my.id/wiki/index.php?action=history&amp;feed=atom&amp;title=MPI%3A_gather"/>
	<link rel="alternate" type="text/html" href="https://wiki.haidhi.my.id/wiki/index.php?title=MPI:_gather&amp;action=history"/>
	<updated>2026-11-01T22:44:35Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://wiki.haidhi.my.id/wiki/index.php?title=MPI:_gather&amp;diff=616&amp;oldid=prev</id>
		<title>SanzSkuy: Created page with &quot;Kebalikan dari scatter  &lt;syntaxhighlight lang=cpp&gt; #include &lt;mpi.h&gt; #include &lt;iostream&gt; #include &lt;vector&gt;  extern &quot;C&quot; {     void array_mul(double* arr_a, double* arr_b, int size); }   int main() {     MPI_Init(NULL, NULL);      int world_rank, world_size;     MPI_Comm_rank(MPI_COMM_WORLD, &amp;world_rank);     MPI_Comm_size(MPI_COMM_WORLD, &amp;world_size);      int total_elements = 8;     int data_per_process = total_elements / world_size;       std::vector&lt;double&gt; send_buffer_...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.haidhi.my.id/wiki/index.php?title=MPI:_gather&amp;diff=616&amp;oldid=prev"/>
		<updated>2026-03-29T02:07:58Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;Kebalikan dari scatter  &amp;lt;syntaxhighlight lang=cpp&amp;gt; #include &amp;lt;mpi.h&amp;gt; #include &amp;lt;iostream&amp;gt; #include &amp;lt;vector&amp;gt;  extern &amp;quot;C&amp;quot; {     void array_mul(double* arr_a, double* arr_b, int size); }   int main() {     MPI_Init(NULL, NULL);      int world_rank, world_size;     MPI_Comm_rank(MPI_COMM_WORLD, &amp;amp;world_rank);     MPI_Comm_size(MPI_COMM_WORLD, &amp;amp;world_size);      int total_elements = 8;     int data_per_process = total_elements / world_size;       std::vector&amp;lt;double&amp;gt; send_buffer_...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Kebalikan dari scatter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=cpp&amp;gt;&lt;br /&gt;
#include &amp;lt;mpi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;vector&amp;gt;&lt;br /&gt;
&lt;br /&gt;
extern &amp;quot;C&amp;quot; {&lt;br /&gt;
    void array_mul(double* arr_a, double* arr_b, int size);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
    MPI_Init(NULL, NULL);&lt;br /&gt;
&lt;br /&gt;
    int world_rank, world_size;&lt;br /&gt;
    MPI_Comm_rank(MPI_COMM_WORLD, &amp;amp;world_rank);&lt;br /&gt;
    MPI_Comm_size(MPI_COMM_WORLD, &amp;amp;world_size);&lt;br /&gt;
&lt;br /&gt;
    int total_elements = 8;&lt;br /&gt;
    int data_per_process = total_elements / world_size; &lt;br /&gt;
&lt;br /&gt;
    std::vector&amp;lt;double&amp;gt; send_buffer_a;&lt;br /&gt;
    std::vector&amp;lt;double&amp;gt; send_buffer_b;&lt;br /&gt;
    std::vector&amp;lt;double&amp;gt; final_result;&lt;br /&gt;
&lt;br /&gt;
    if (world_rank == 0) {&lt;br /&gt;
        send_buffer_a = {10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 80.0};&lt;br /&gt;
        send_buffer_b = {2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};&lt;br /&gt;
        final_result.resize(total_elements); // siapin tempat&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    std::vector&amp;lt;double&amp;gt; recv_buffer_a(data_per_process);&lt;br /&gt;
    std::vector&amp;lt;double&amp;gt; recv_buffer_b(data_per_process);&lt;br /&gt;
&lt;br /&gt;
    MPI_Scatter(send_buffer_a.data(), data_per_process, MPI_DOUBLE,&lt;br /&gt;
                recv_buffer_a.data(), data_per_process, MPI_DOUBLE, 0, MPI_COMM_WORLD);&lt;br /&gt;
    MPI_Scatter(send_buffer_b.data(), data_per_process, MPI_DOUBLE,&lt;br /&gt;
                recv_buffer_b.data(), data_per_process, MPI_DOUBLE, 0, MPI_COMM_WORLD);&lt;br /&gt;
&lt;br /&gt;
    std::vector&amp;lt;double&amp;gt; original_a = recv_buffer_a;&lt;br /&gt;
&lt;br /&gt;
    array_mul(recv_buffer_a.data(), recv_buffer_b.data(), data_per_process);&lt;br /&gt;
&lt;br /&gt;
    // GATHER: Kumpulkan semua hasil dari recv_buffer_a ke final_result di Rank 0&lt;br /&gt;
    MPI_Gather(&lt;br /&gt;
        recv_buffer_a.data(), data_per_process, MPI_DOUBLE,&lt;br /&gt;
        final_result.data(), data_per_process, MPI_DOUBLE, 0, MPI_COMM_WORLD);&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
    // OUTPUT: Cek hasilnya di Rank 0&lt;br /&gt;
    if (world_rank == 0) {&lt;br /&gt;
        printf(&amp;quot;\n=== HASIL AKHIR DI RANK 0 ===\n&amp;quot;);&lt;br /&gt;
        for(int i = 0; i &amp;lt; total_elements; i++) {&lt;br /&gt;
            printf(&amp;quot;Elemen ke-%d: %.1f\n&amp;quot;, i, final_result[i]);&lt;br /&gt;
        }&lt;br /&gt;
        printf(&amp;quot;=============================\n&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    MPI_Finalize();&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>SanzSkuy</name></author>
	</entry>
</feed>