pipeline.ppt Official Site of Achmad Benny Mutiara Gunadarma University pipeline

Pipelined Computations
Dalam teknik pipeline, problem dibagi menjadi deretan yang harus
dilaksanakan satu setelah lainnya. Setiap tugas nantinya akan dieksekusi
oleh proses atau prosesor yang berbeda

Gambar 1 Proses pipeline

Gambar.2 Pipeline untuk penjumlahan

Contoh Lain
Filter frekuensi - Menghilangkan frekuensi tertentu ( katakan f0,
f1, f2, f3, dst) signal, f(t). Signal dapat dilewati pipeline dari kiri

Gambar 3. Pipeline untuk filter
Pipeline dapat frekuensi
meningkatkan kecepatan untuk

problem yang

sekuensial, dalam tiga tipe komputasi:
1. Jika lebih dari satu instance dari problem yang akan dieksekusi

2. Jika ada deretan item data yang harus diproses, masing-masing
membutuhkan operasi ganda
3. Jika informasi untuk memulai proses berikutnya dpt diberikan
sebelum proses selesai melaksanakan operasi internalnya

Diagram Ruang-Waktu Pipeline “Tipe 1”

Gambar 4. Diagram ruang waktu pipeline

Gambar 5 Diagram Ruang-Waktu Alternatif

Diagram Ruang-Waktu Pipeline “Tipe 2”

Gambar 6 Pemrosesan pipeline 10 elemen data

Diagram Ruang-Waktu Pipeline “Tipe 3”

Gambar 7 Pemrosesan pipeline, informasi di-pass sebelum proses selesai

Jika jumlah tahap lebih besar dari jumlah prosesor dalam pipeline,

kelompok tahap dapat diassign untuk tiap prosesor

Gambar 8 Partitioning processes onto processors.

Platform Komputisai untuk Aplikasi Pipeline

gambar 9 Sistem multiprosesor dengan konfigurasi

Contoh Program Penjumlahan Angka

Gambar 10 Penjumlahan Pipeline

Kode dasar untuk proses Pi :
recv(&accumulation, P i-1 );
accumulation = accumulation + number;
send(&accumulation, P i+1 );
Kecuali untuk proses pertama, P0 , yaitu
send(&number, P 1 );
Dan proses terakhir , Pn-1 , yaitu
recv(&number, P n-2 );

accumulation = accumulation + number;

Program SPMD
if (process > 0) {
recv(&accumulation, P i-1 );
accumulation = accumulation + number;
}
if (process < n-1) send(&accumulation, P i+1 );
Hasil akhir ada di proses terakhir.
Selain penjumlahan, operasi aritmatika lainnya dapat dilakukan juga

Gambar 11 Penjumlahan angka pipeline dengan proses master dan
konfigurasi cincin.

Gambar 12 Penjumlahan angka pipeline denganakses langsung ke proses
slave.

Analisa
Analisa
Contoh pertama adalah Tipe 1. Dengan asumsi bahwa tiap proses

melakukan aksi serupa dalam tiap siklus pipeline. Kemudian akan
dilakukan komputasi dan komunikasi yang dibutuhkan dalam siklus
pipeline
Waktu total eksekusi
t total = (waktu untuk satu siklus pipeline)(jumlah siklus)
t total = (t comp + t comm )(m + p 1)
Dimana ada m instances problem dan p tahap pipeline (proses)
Waktu rata-rata untuk komputasi diberikan oleh:
t a = t total /m

Instance Tunggal Problem
t comp = 1
t comm = 2(t startup + t data )
t total = (2(t startup + t data ) + 1)n
Kompleksitas waktu = O(n).

Instances Ganda Problem
t total = (2(t startup + t data ) + 1)(m + n 1)
t a = t total /m 2(t startup + t data ) + 1
Yaitu, satu siklus pipeline.


Mem-partisi Data dengan Instances Gande Problem
t comp = d
t comm = 2(t startup + t data )
t total = (2(t startup + t data ) + d)(m + n/d 1)
Dengan menaikkan d, partisi data, pengaruh komunikasi dihilangkan.
Akan tetapi naiknya partisi data menurunkan paralelisme dan
terkadang menaikkan waktu eksekusi

Mengurutkan
Angka
Versi
paralel
dari
insertion sort. (
A parallel version of
insertion sort. (versi
sekuensialnya
adalah
menempatka kartu yang

dimainkan berurut dgn
memindahkan
kartu
untuk menyisipkannya
dalam posisi-nya)

Gambar 13 Langkah
dalam insertion sort
dengan lima angka

Algortima dasar untuk proses Pi adalah
recv(&number, P i-1 );
if (number > x) {
send(&x, P i+1 );
x = number;
} else send(&number, P i+1 );
Dengan n angka, berapa banyak proses ke yang akan diterima diketahui,
diberikan oleh n i. Berapa banyak yang di pass kedepan juga diketahui;
diberikan oleh n i 1 karena satu dari jumlah yang diterima tidak di
pass kedepan. Maka loop sederhana dapat digunakan.


Gambar 14 Pipeline untuk sorting menggunakan insertion sort.

Gambar 15 Insertion sort dengan hasil kembali ke proses master
m,enggunakan konfigurasi baris dua arah

Dengan mengembalikan hasilnya, proses i dapat ditulis dalam bentuk
right_procno = n - i - 1; /*no of processes to the right */
recv(&x, P i-1 );
for (j = 0; j < right_procno; j++) {
recv(&number, P i-1 );
if (number > x) {
send(&x, P i+1 );
x = number;
} else send(&number, P i+1 );
}
send(&number, P i-1 ); /* send number held */
for (j = 0; j < right_procno; j++) {/*pass on other nos */
recv(&x, P i+1 );
send(&x, P i-1 );

}

Analisa
Sekuensial
Jelas merupakan algoritma sorting yang buruk dan tidak cocok kecuali
untuk jumlah n yang sangat kecil
ts = (n - 1) + (n - 2) + … + 2 + 1 = n (n + 1) / 2
Paralel
Setiap siklus pipeline membutuhkan paling tidak
t comp = 1
t comm = 2(t startup + t data )
Waktu eksekusi total, t total , diberikan oleh
t total = (t comp + t comm )(2n 1) = (1 + 2(t startup + t data ))(2n 1)

Gambar 16 Insertion sort dengan hasil dikembalikan

Pembangkit Bilangan Prima
Deretan integer dibangkitkan dari 2. Bilangan pertama, 2, adalah prima
dan disimpan. Seluruh kelipatan bilangan ini dihilangkan karena bukan
merupakan bilangan prima. Proses dilakukan secara berulang untuk

bilangan berikutnya. Algoritma membuang nonprima, dan menginggalkan
hanya bilangan prima

Kode Sekuensial
Umumnya menggunakan array dengan nilai awal 1 (TRUE) dan diset 0
(FALSE) jika indeks elemen bukan bilangan prima.Dengan menyatakan
angka terakhir adalah n maka dapat ditulis:
for (i = 2; i < n; i++)
prime[i] = 1; /* Initialize array */
for (i = 2; i