Arruum Chandra Dewi Nur Wulan - F
Arruum Chandra Dewi Nur Wulan - F
2015 31 247
TUGAS PEMROSESAN PARALEL
1. Kode Program mengenai Tipe Data Continuous
1. Screenshoot koding
2. Koding
#include "stdafx.h"
#include <mpi.h>
int main(int argc, char *argv[])
{
int i, rank;
MPI_Status status;
MPI_Datatype type;
int data[15];
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Type_contiguous(5, MPI_INT, &type);
MPI_Type_commit(&type);
if (rank == 0)
{
printf("Rank %d mengirim data = ", rank);
for (i = 0; i < 15; i++)
{
data[i] = i;
printf("[%d]:%d", i, data[i]);
}
printf("\r\n");
MPI_Send(data, 1, type, 1, 99, MPI_COMM_WORLD);
}
else
if (rank == 1)
{
for (i = 0; i < 15; i++)
{
data[i] = -1;
}
MPI_Recv(data, 1, type, 0, 99, MPI_COMM_WORLD, &status);
printf("Rank %d menerima data: ", rank);
for (i = 0; i < 15; i++)
{
printf("[%d]:%d ", i, data[i]);
}
printf("\r\n");
}
MPI_Type_free(&type);
MPI_Finalize();
return 0;
}
3. Screen shoot hasil
4. Analisa Program
Pada kodingan yang pertama, mengenai tipe data Continuous menggunakan library
#include "stdafx.h"
#include <mpi.h>
Selanjutnya menggunakan tipe data seperti dibawah ini
int main(int argc, char *argv[])
{
int i, rank;
MPI_Status status;
MPI_Datatype type;
int data[15];
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Type_contiguous(5, MPI_INT, &type);
MPI_Type_commit(&type);
Selanjutnya, jika kondisi rank==1 maka akan memproses perintah dibawah ini
else
if (rank == 1)
{
for (i = 0; i < 15; i++)
{
data[i] = -1;
}
MPI_Recv(data, 1, type, 0, 99, MPI_COMM_WORLD, &status);
printf("Rank %d menerima data: ", rank);
for (i = 0; i < 15; i++)
{
printf("[%d]:%d ", i, data[i]);
}
printf("\r\n");
}
Artinya, jika rank == 1 . Untuk kondisi i = 0; i < 15; dan kemudian increment i
(nilai bertambah 1 )
Maka data [i] = -1
Kemudian MPI_Recv(data, 1, type, 0, 99, MPI_COMM_WORLD, &status);
printf("Rank %d menerima data: ", rank);
Kemudian akan mencetak tulisan Rank ke %d menerima data : ” dengan nilai diambil dari
nilai rank
Dan selanjutnya {
printf("[%d]:%d ", i, data[i]);
}
printf("\r\n");
Kemudian
MPI_Type_free(&type);
MPI_Finalize();
return 0;
}
Yang artinya MPI sudah selesai dan ada fungsi return 0.
2. Kode Program mengenai Komunikasi Point to Point
1. Screenshoot Koding
2. Koding
// Tugas_Paralel.cpp : Defines the entry point for the console
application.
//
#include "stdafx.h"
#include <mpi.h>
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
char message[30];
int myrank;
MPI_Status status;
MPI_Init (&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &myrank);
printf("Proses rank : %d \r\n", myrank);
if (myrank == 0)
{
strcpy_s(message, "Halo ini dari rank 0");
printf("Data dikirim dari rank 0: %s \r\n ", message);
MPI_Send(message, strlen(message) + 1, MPI_CHAR, 1, 99,
MPI_COMM_WORLD);
}
else if (myrank == 1)
{
MPI_Recv(message, 30, MPI_CHAR, 0, 99, MPI_COMM_WORLD, &status);
printf("Data yang diterima di rank 1 : %s \r\n", message);
}
MPI_Finalize();
return 0;
}
3. Screenshot hasil
4. Analisa
Analisa koding program mengenai Komunikasi Point to Point
Pada kodingan kali ini, menggunaka 4 library yaitu
#include "stdafx.h"
#include <mpi.h>
#include <stdio.h>
#include <string.h>
Dengan menggunakan tipe data seperti dibawah ini
int main(int argc, char *argv[])
{
char message[30];
int myrank;
MPI_Status status;
MPI_Init (&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &myrank);
printf("Proses rank : %d \r\n", myrank);
Kemudian mencetak Proses rank sebannyak rank yang dimiliki.
Pada kodingan diprogram ini memiliki 2 kondisi yaitu kondisi jika :
1. (myrank == 0)
Maka akan melakukan proses seperti dibawah ini
{
strcpy_s(message, "Halo ini dari rank 0");
printf("Data dikirim dari rank 0: %s \r\n ", message);
MPI_Send(message, strlen(message) + 1, MPI_CHAR, 1, 99,
MPI_COMM_WORLD);
}
Maka akan mencetak tulisan “Halo ini dari rank 0”, kemudian akan mencetak
tulisan lagi “Data dikirim dari rank 0 : %s \r\n”
2. (myrank ==1)
Maka akan melakukan proses seperti dibawah ini
else if (myrank == 1)
{
MPI_Recv(message, 30, MPI_CHAR, 0, 99, MPI_COMM_WORLD, &status);
printf("Data yang diterima di rank 1 : %s \r\n", message);
}
Maka akan mencetak tulisan “Data yang diterima di rank 1 :%s \r\n”
Kemudian fungsi MPI Finalize() atau selesai. Dan selanjutnya ada fungsi return
0;
MPI_Finalize();
return 0;
}
memungkinkan sebuah program mengirim pesan dari satu proses ke proses lainnya
melalui seorang komunikator yang diberikan. Setiap pesan memiliki sumber dan proses
target (diidentifikasi oleh jajarannya di dalam komunikator), sebuah tag integral yang
mengidentifikasi jenis pesan, dan muatan yang berisi data sewenang-wenang. Tag akan
Ada dua jenis komunikasi untuk mengirim dan menerima pesan melalui fasilitas point-
akan menunggu sampai sebuah komunikasi selesai pada prosesor lokalnya sebelum
melanjutkan. Sebagai contoh, operasi Kirim pemblokiran tidak akan kembali sampai
pesan masuk ke buffer internal MPI untuk dikirim, sementara operasi Menerima
sebelum dikembalikan. Operasi point-to-point MPI.NET yang tidak memblok, di sisi lain,
akan memulai komunikasi tanpa menunggu komunikasi selesai. Sebagai gantinya,
sebuah objek Permintaan, yang bisa digunakan untuk query, complete, atau cancel the
communication, akan dikembalikan. Untuk contoh awal kami, kami akan menggunakan
komunikasi pemblokiran.