ANALISIS DAN IMPLEMENTASI I/O PARALEL
PADA ALGORITME ENKRIPSI ADVANCED
ENCRYPTION STANDARD (AES)
MUHAMMAD ZULFIKAR HANDANA
DEPARTEMEN ILMU KOMPUTER
FAKLTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM INSTITUT PERTANIAN BOGOR
PERNYATAAN MENGENAI SKRIPSI DAN
SUMBER INFORMASI SERTA PELIMPAHAN HAK CIPTA
Dengan ini saya menyatakan bahwa skripsi berjudul Analisis dan Implementasi I/O Paralel pada Algoritme Enkripsi Advanced Encryption Standard adalah benar karya saya dengan arahan dari komisi pembimbing dan belum diajukan dalam bentuk apa pun kepada perguruan tinggi mana pun. Sumber informasi yang berasal atau dikutip dari karya yang diterbitkan maupun tidak diterbitkan dari penulis lain telah disebutkan dalam teks dan dicantumkan dalam Daftar Pustaka di bagian akhir disertasi ini.
Dengan ini saya melimpahkan hak cipta dari karya tulis saya kepada Institut Pertanian Bogor.
ABSTRAK
MUHAMMAD ZULFIKAR HANDANA. Analisis dan Implementasi I/O Paralel pada Algoritme Enkripsi Advanced Encryption Standard (AES) . Dibimbing oleh HENDRA RAHMAWAN
AES (Advanced Encryption Standard) memiliki proses enkripsi yang kompleksitasnya pada lingkup O(n). Pada penelitian sebelumnya telah dilakukan komputasi paralel pada AES untuk mengurangi waktu eksekusi algoritme tersebut, namun algoritme tersebut tidak cost-optimal karena memiliki rata-rata nilai efisiensi dibawah 0.7. Pada penelitian kali ini, dilakukan komputasi paralel pada proses I/O untuk meningkatkan speedup dan efisiensidibandingkan dengan algoritme AES paralel yang menggunakan I/O sekuensial. Pada penelitian kali ini menggunakan dua komputer dengan spesifikasi, Intel Dual Core (2 CPU) @ 2.3 GHz, AMD 16-3400M APU @ 1.4 GHz (4 CPU). Masing-masing komputer memiliki memory 2 GB. Efisiensi terbesar pada algoritme AES paralel yang menggunakan I/O paralel adalah 0.95, nilai tersebut terjadi pada saat membangkitkan tiga proses dengan menggunakan dua komputer. Nilai efisiensi terbesar algoritme AES paralel yang menggunakan I/O sekuensial sebesar 0.8, nilai tersebut terjadi pada saat membangkitan dua proses dengan menggunakan dua komputer.
Kata kunci: AES, I/O paralel, MPI I/O, MPI2
ABSTRACT
MUHAMMAD ZULFIKAR HANDANA. Analysis and Implementation Parallel I/O at Encryption Advanced Encryption Standard (AES) Algorithm. Supervised by HENDRA RAHMAWAN
Complexity of AES encryption process is O(n). In previous research, parallel computation has been conducted on AES to decrease execution time, however it was not cost-optimal because the average efficiency value was below 0.7. In this research, parallel I/O computing was conducted in order to improve the speedup and the efficiency compared with AES algorithm that using sequential I/O. In this research, two computers are used with the specification: Intel Dual Core (2 CPUs) @ 2.3 GHz, AMD 16-3400M APU @ 1.4 GHz (4 CPUs), each computer has 2 GB of memory. The highest efficiency is achieved by using parallel I/O is 0.95, that occured when three processes are generated using two computers, The highest efficiency is achieved by using sequential I/O is 0.8, that occured when two processes are generated using two computers.
Skripsi
sebagai salah satu syarat untuk memperoleh gelar Sarjana Komputer
pada
Departemen Ilmu Komputer
ANALISIS DAN IMPLEMENTASI I/O PARALEL
PADA ALGORITME ENKRIPSI ADVANCED
ENCRYPTION STANDARD (AES)
MUHAMMAD ZULFIKAR HANDANA
DEPARTEMEN ILMU KOMPUTER
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM INSTITUT PERTANIAN BOGOR
Judul Skripsi : Analisis dan Implementasi I/O Paralel Pada Algoritme Enkripsi Advanced Encryption Standard (AES)
Nama : Muhammad Zulfikar Handana NIM : G64070121
Disetujui oleh
Hendra Rahmawan, SKom, MT Pembimbing
Diketahui oleh
Dr Ir Agus Buono, MSi, MKom Ketua Departemen
PRAKATA
Puji dan syukur penulis panjatkan ke hadirat Allah subhanahu wa-ta’ala yang telah memberikan rahmat dan hidayah-Nya sehingga penulis dapat menyelesaikan tugas akhir ini. Shalawat serta salam pada junjungan kita Nabi besar Muhammad shallallahu ‘alaihi wa sallam beserta keluarga dan sahabatnya.
Penulis mengucapkan terima kasih kepada semua pihak yang telah membantu dalam penyelasaian tugas akhir ini, yaitu:
1. Kedua orang tua tercinta (Eka Yudha Prya, SE dan Latifah, SSos) yang telah memberikan dukungan, bantuan, perhatian, dan doa sehingga penulis dapat menyelesaik studi di Departemen Ilmu Komputer IPB
2. Bapak Hendra Rahmawan, SKom, MT selaku dosen pembimbing
3. Bapak Endang Purnama Giri, SKom, MKom dan Bapak DrEng Heru Sukoco, SSi, MT selaku dosen penguji
4. Seluruh dosen pengajar dan civitas akademika Departemen Ilmu Komputer FMIPA IPB
5. Keluarga besar Ilkomerz 44
6. Semua pihak yang telah membantu pelaksanaan tugas akhir ini baik secara langsung maupun tidak langsung yang belum disebutkan diatas
Penulis menyadari dalam tugas akhir ini masi banyak kekurangan. Oleh karena itu, penulis mengharapkan kritik dan saran yang membangun. Semoga penelitian ini dapat bermanfaat bagi semua pihak yang membutuhkan. Aamiin.
Bogor, April 2013
DAFTAR ISI
Ruang Lingkup Penelitian 2
TINJAUAN PUSTAKA 2
Algoritme AES 2
Pemrograman Paralel 5
MPI (Message Passing Interface) 5
I/O Sekuensial 5
I/O paralel 6
Fungsi-fungsi I/O paralel 6
Metode Foster 8
Domain Decomposition 9
Functional Decomposition 9
Performance Metric 9
METODE 10
Analisis Struktur I/O 10
Implementasi 13
Perancangan percobaan 14
Percobaan 16
HASIL DAN PEMBAHASAN 16
Hasil 16
SIMPULAN DAN SARAN 25
Simpulan 25
Saran 26
LAMPIRAN 27
DAFTAR GAMBAR
1 Proses umum algoritme AES
(http://www.iis.ee.ethz.ch/~kgf/acacia/c3.html) 3 2 S-Box
(http://developer.amd.com/resources/documentation-articles/articles-whitepapers/bulk-encryption-on-gpus/) 3 3 Ilustrasi proses SubBytes
(http://en.wikipedia.org/wiki/Advanced_Encryption_Standard) 4
4 Ilustrasi proses ShiftRows (Surian 2006) 4
5 Matriks polimat
(http://en.wikipedia.org/wiki/Rijndael_mix_columns) 4
6 Ilustrasi proses AddRoundKey (Surian 2006) 5
7 Proses I/O sekuensial pada algoritme paralel (Gropp et al. 1999) 6 8 Proses I/O paralel untuk sebuah file (Gropp et al. 1999) 6 9 Ilustrasi metode Foster
(http://tirtasucahya.blogspot.com/2010/12/metode-foster.html) 8
10 Metode penelitian 10
11 Ilustrasi partisi algoritme AES domain decomposition (Zulfikar
2012) 11
12 Ilustrasi komunikasi algoritme AES domain decomposition (Zulfikar
2012) 11
13 Ilustrasi aglomerasi algoritme AES domain decomposition
(Zulfikar 2012) 11
14 Algoritme enkripsi AES secara paralel domain decomposition
menggunakan I/O sekuensial (Zulfikar 2012) 12
15 Algoritme enkripsi AES secara paralel domain decomposition
menggunakan I/O paralel 15
16 Hasil nilai checksums enkripsi AES sekuensial dengan AES secara
paralel yang menggunakan I/O sekuensial 17
17 Hasil nilai checksums enkripsi AES sekuensial dengan AES secara
paralel yang menggunakan I/O paralel 17
18 Hasil nilai checksums dekripsi AES sekuensial dengan file awal 18 19 Hasil nilai checksums dekripsi AES secara paralel dengan
menggunakan I/O sekuensial dengan file awal 18 20 Hasil nilai checksums dekripsi AES secara paralel dengan
menggunakan I/O paralel dengan file awal 19
21 Waktu eksekusi enkripsi AES secara sekuensial. 19 22 Perbandingan waktu eksekusi enkripsi AES secara paralel, I/O
sekuensial dengan I/O paralel ukuran file kecil satu komputer 20 23 Perbandingan waktu eksekusi enkripsi AES secara paralel, I/O
sekuensial dengan I/O paralel ukuran file besar satu komputer 20 24 Perbandingan waktu eksekusi enkripsi AES secara paralel, I/O
sekuensial dengan I/O paralel ukuran file kecil dua komputer 21 25 Perbandingan waktu eksekusi enkripsi AES secara paralel, I/O
sekuensial dengan I/O paralel ukuran file kecil dua komputer 21 26 Perbandingan speedup enkripsi AES secara paralel, I/O sekuensial
27 Perbandingan speedup enkripsi AES secara paralel, I/O sekuensial
dan I/O paralel pada dua komputer 22
28 Perbandingan efisiensi enkripsi AES secara paralel, I/O sekuensial
dan I/O paralel pada satu komputer 23
29 Perbandingan efisiensi enkripsi AES secara paralel, I/O sekuensial
dan I/O paralel pada dua komputer 24
30 Perbandingan waktu proses input dan output I/O sekuensial vs I/O
paralel 25
DAFTAR LAMPIRAN
1 Pengaturan dan instalasi MPICH2 27
2 Waktu eksekusi AES secara paralel menggunakan I/O sekuensial (file kecil pohon.jpg (4.5 MB) pada satu komputer) 29 3 Waktu eksekusi AES paralel menggunakan I/O sekuensial (file 30 4 Waktu eksekusi AES paralel menggunakan I/O paralel (file kecil
pohon.jpg (4.5 MB) pada satu komputer) 31
5 Waktu eksekusi AES paralel menggunakan I/O paralel (file besar
video.mp4 (115 MB) pada satu komputer) 32
6 Waktu eksekusi AES paralel menggunakan I/O sekuensial (file kecil
pohon.jpg ( 4.5 MB) pada dua komputer) 33
7 Waktu eksekusi AES paralel menggunakan I/O sekuensial (file besar
video.mp4 (115 MB) pada dua komputer) 34
8 Waktu eksekusi AES paralel menggunakan I/O paralel (file kecil
pohon.jpg (115 MB) pada dua komputer) 35
9 Waktu eksekusi AES paralel menggunakan I/O paralel (file besar
PENDAHULUAN
AES (Advanced Encryption Standard) memiliki proses enkripsi dan dekripsi yang diketahui memiliki ruang lingkup O(n) (Giri 2004). Pada penelitian yang dilakukan Zulfikar (2012), telah dilakukan komputasi paralel untuk mengurangi waktu eksekusi algoritme AES tersebut. Pada penelitian tersebut telah mampu mengurangi waktu eksekusi enkripsi dengan menggunakan algoritme paralel, namun algoritme paralel tersebut tidak cost-optimal karena nilai efisiensinya rata-rata kurang dari 0.7.
Pada penelitian yang dilakukan oleh Zulfikar (2012), proses input dan output masih menggunakan proses sekuensial, sehingga pada percobaan kali ini akan dicoba meningkatkan speedup dan efisiensi menggunakan proses input dan output secara paralel.
Tujuan dari penilitian ini adalah, meningkatkan kinerja dari implementasi AES secara paralel dengan menggunakan I/O paralel. Kinerja yang diukur berdasarkan performance metrics.
Latar Belakang
AES (Advanced Encryption Standard) memiliki proses enkripsi dan dekripsi yang diketahui memiliki kompleksitas pada lingkup O(n) (Giri 2004). Proses enkripsi AES tergolong cukup cepat secara kompleksitas, namun waktu eksekusinya akan meningkat seiring dengan besarnya data yang digunakan. Pada penelitian yang dilakukan oleh Zulfikar (2012), telah dilakukan komputasi paralel untuk mengurangi waktu eksekusi enkripsi dan dekripsi algoritme AES.
Pada penelitian tersebut telah mampu mengurangi waktu eksekusi enkripsi dengan menggunakan algoritme paralel, namun demikian algoritme paralel tersebut tidak cost-optimal karena nilai efisiensinya kurang dari 0.7. Algoritme AES tersebut melakukan enkripsi pada sebuah file, hal tersebut merupakan proses pada input dan output. Pada penelitian yang dilakukan oleh Zulfikar (2012), proses input dan output masih menggunakan proses sekuensial, sehingga pada penelitian kali ini akan dicoba untuk meningkatkan speedup dan efisiensi menggunakan proses input dan output secara paralel.
Perumusan Masalah
Perumusan masalah pada penelitian ini adalah:
1. Dengan menggunakan algoritme I/O paralel, apakah dapat mengurangi waktu eksekusi dari proses enkripsi.
2
Tujuan Penelitian
Tujuan dari penelitian ini adalah meningkatkan kinerja dari implementasi AES secara paralel dengan menggunakan I/O paralel. Kinerja yang diukur berdasarkan performance metrics.
Manfaat Penelitian
Manfaat yang dapat diperoleh dari penelitian ini adalah kinerja dari algoritme AES secara paralel dapat ditingkatkan dengan menggunakan I/O paralel.
Ruang Lingkup Penelitian
Ruang lingkup dalam penelitian ini adalah:
1 Implementasi MPI (Message Passing Interface) yang digunakan adalah library MPICH2 pada bahasa pemrograman C.
2 Komputer yang digunakan memiliki spesifikasi :
Prosesor Intel Dual Core @ 2.3 GHz (2 CPU), 2 GB memory. Prosesor AMD 16-3400M APU @ 1.4 GHz (4 CPU), 2 GB memory 3 Input yang digunakan terdiri atas dua jenis, masing-masing sebesar 4.5 MB
dan 115 MB
4 Algoritme AES secara paralel yang digunakan berbasiskan domain decomposition.
5 Analisis performance metrics dibatasi pada waktu eksekusi, speedup, dan efisiensi.
TINJAUAN PUSTAKA
Algoritme AES
3
Gambar 1 Proses umum algoritme AES
(http://www.iis.ee.ethz.ch/~kgf/acacia/c3.html)
a SubBytes
Proses SubBytes adalah proses yang melakukan substitusi non linear, dengan cara mengganti setiap byte state dengan byte pada sebuah tabel yang dinamakan tabel S-Box. Sebuah tabel S-Box terdiri dari 16 × 16 baris dan kolom dengan masing-masing berukuran 1 byte (Surian 2006). Tabel S-Box disajikan oleh Gambar 2, dan proses SubBytes diilustrasikan oleh Gambar 3.
Gambar 2 S-Box
(http://developer.amd.com/resources/document
4
Gambar 3 Ilustrasi proses SubBytes
(http://en.wikipedia.org/wiki/Advanced_Encry ption_Standard)
b ShiftRows
Proses ShiftRows beroperasi pada tiap baris dari tabel state. Proses ini akan bekerja dengan cara memutar byte pada tiga baris terakhir (baris satu, dua, dan tiga) dengan jumlah perputaran yang berbeda-beda. Baris 1 akan diputar sebanyak satu kali, baris 2 akan diputar sebanyak dua kali, dan baris 3 akan diputar sebanyak tiga kali. Sedangkan baris 0 tidak akan diputar (Surian 2006).
Gambar 4 Ilustrasi proses ShiftRows (Surian 2006)
c MixColumns
Proses MixColumns beroperasi pada tiap kolom dari tabel state. Operasi ini menggabungkan 4 bytes dari setiap kolom tabel state dan menggunakan transformasi linier. Proses MixColumns mengalikan matriks polimat dengan matrik state (Surian 2006).
Gambar 5 Matriks polimat
(http://en.wikipedia.org/wiki/Rijndael_mix_co lumns)
d AddRoundKey
5
Gambar 6 Ilustrasi proses AddRoundKey (Surian 2006)
Pemrograman Paralel
Pemrograman paralel adalah pemrograman yang memungkinkan secara eksplisit menunjukkan bagaimana bagian yang berbeda dari komputasi sehingga dapat dieksekusi secara bersamaan oleh prosesor yang berbeda (Quinn 2004).
Algoritme paralel adalah sebuah algoritme yang dapat memecahkan suatu masalah menggunakan beberapa prosesor secara bersamaan. Algoritme ini mencakup identifikasi bagian dari pekerjaan bersama dalam proses yang berjalan secara paralel, pengaturan akses data yang dibagi ke beberapa prosesor, pendistribusian input, output, dan data yang terkait dengan program serta koordinasi proses diberbagai tahapan pelaksanaan program paralel (Grama et al. 2003).
MPI (Message Passing Interface)
MPI adalah sebuah library standar pengenalan dasar pemrograman sistem paralel (Quinn 2004). MPI dapat digunakan dengan berbagai bahasa pemrograman seperti bahasa C, C++, dan Fortran. Operasi utama yang dilakukan oleh standar MPI yaitu:
a. Point-to-point Communication
MPI point-to-point communication adalah komunikasi antar dua proses. Satu proses bertugas mengirim data atau operasi dan proses lainnya bertugas menerima data atau operasi tersebut.
b. Collective Communication
MPI collective communication adalah komunikasi yang melibatkan sekumpulan proses yang dipanggil oleh semua proses dalam communicator.
I/O Sekuensial
6
Gambar 7 Proses I/O sekuensial pada algoritme paralel (Gropp et al. 1999)
I/O paralel
I/O paralel bagian dari MPI-2 yang biasa dikenal dengan sebutan MPI I/O dibuat sebagai upaya IBM untuk mengeksplorasi analogi antara input / output dan pengiriman pesan. Setelah itu, menulis ke sebuah file dapat dianalogikan seperti mengirim pesan kepada sistem file dan membaca file seperti menerima pesan dari sistem (Gropp et al. 1999).
Secara umum, I/O pada MPI-2 dapat dianggap sebagai proses I/O pada umumnya, namun memiliki beberapa fungsi tambahan. Tujuan I/O paralel adalah untuk mencapai kinerja yang jauh lebih tinggi sehingga daripada proses I/O sequential sehingga diharapkan dapat mengurangi waktu eksekusi sebuah program tersebut. Proses pada I/O paralel diilustrasikan pada Gambar 8.
Gambar 8 Proses I/O paralel untuk sebuah file (Gropp et al. 1999)
Fungsi-fungsi I/O paralel
I/O paralel memiliki beberapa fungsi untuk memproses sebuah file, baik file tersebut sebagai input maupun sebagai output. Beberapa fungsi yang digunakan untuk membaca maupun menulis pada sebuah file:
a. MPI_File_open
MPI_File_open adalah sebuah fungsi untuk membuka file. Pada bahasa C, fungsi tersebut dapat ditulis sebagai berikut:
int MPI_File_open (MPI_Comm comm, char *filename, int amode,
7 Argumen pertama pada fungsi tersebut yaitu komunikasi. Argumen kedua diisi oleh file yang akan dibaca atau ditulis. Argumen ketiga adalah sebuah mode yang akan kita lakukan terhadap sebuah file. Contoh dari isi argumen tersebut adalah MPI_MODE_RDONLY untuk membaca saja, MPI_MODE_WRONLY untuk menulis saja MPI_MODE_RDWR untuk membaca dan menulis MPI_MODE_CREATE untuk membuat sebuah file jika file tersebut belum ada. Argumen keempat adalah info dari sebuah objek, argumen kelima adalah file tujuan yang akan dieksekusi (file handler).
b. MPI_File_write
MPI_File_write adalah sebuah fungsi untuk menulis pada sebuah file. Pada bahasa C, fungsi tersebut dapat ditulis sebagai berikut:
int MPI_File_write (MPI_File fh, void *buf, int count,
MPI_Datatype datatype, MPI_status *status) (Gropp et al. 1999).
Argumen pertama pada fungsi tersebut yaitu file yang akan ditulis (file handler). Argumen kedua yaitu berisi inisial alamat pada penyangga (buffer). Argumen ketiga yaitu jumlah elemen pada penyanggan (buffer). Argumen keempat yaitu berisi tipe data yang akan ditulis ke dalam file tersebut. Argumen kelima yaitu berisi status pada objek.
c. MPI_File_read
MPI_File_read adalah sebuah fungsi untuk membaca sebuah file. Pada bahasa C, fungsi tersebut dapat ditulis sebagai berikut :
int MPI_File_read (MPI_File fh, void *buf, int count,
MPI_Datatype datatype, MPI_status *status) (Gropp et al. 1999).
Argumen yang digunakan pada fungsi tersebut sama persis dengan fungsi MPI_File_write.
d. MPI_File_set_view
MPI_File_set_view adalah sebuah fungsi yang memberikan sebuah proses untuk mengakses bagian file tertentu. Pada bahasa C, fungsi tersebut dapat ditulis sebagai berikut :
int MPI_File_set_view(MPI_File fh, MPI_Offset disp,
MPI_Datatype etype, MPI_Datatype filetype, char *datarep, MPI_Info info).
8
Metode Foster
Ian Foster mengemukakan empat langkah metode desain sistem paralel yang dimulai dari pembagian data ke dalam beberapa bagian, menentukan komunikasi antar bagian, mengelompokkan bagian yang memiliki komunikasi intensif dengan bagian lain, dan memetakan kelompok tersebut ke sejumlah prosesor yang ada. Empat tahapan desain tersebut adalah partisi, komunikasi, aglomerasi, dan pemetaan (Quinn 2004). Ilustrasi metode Foster dapat dilihat pada Gambar 9.
Gambar 9 Ilustrasi metode Foster
(http://tirtasucahya.blogspot.com/2010/12/met ode-foster.html)
a Partisi
Partisi adalah suatu proses pembagian komputasi dan data ke dalam beberapa bagian. Ada dua cara untuk melakukan partisi, yaitu domain decomposition dan functional decomposition. Domain decomposition adalah pendekatan model algoritme paralel yang melakukan pembagian data menjadi beberapa bagian terlebih dahulu, kemudian menentukan bagaimana mengasosiasikan komputasi dengan data tersebut, sedangkan functional decomposition melakukan pembagian komputasi terlebih dahulu lalu menentukan bagaimana menghubungkan data dengan komputasi-komputasi tersebut (Quinn 2004).
b Komunikasi
Skema komunikasi antar bagian hasil partisi dibuat setelah melakukan partisi. Ada dua jenis komunikasi yang digunakan yaitu local communication dan global communication. Local communication adalah membuat saluran antar task ketika ada task yang membutuhkan nilai dari task lainnya. Global communication terjadi ketika ada primitive task dengan jumlah yang signifikan menyumbangkan data untuk menunjukkan proses komputasi (Quinn 2004).
c Aglomerasi
9
d Pemetaan
Pemetaan adalah proses penugasan task ke prosesor. Tujuan dari pemetaan adalah memaksimalkan kemampuan prosesor dan meminimalkan komunikasi antar prosesor (Quinn 2004).
Domain Decomposition
Salah satu jenis teknik pemrosesan secara paralel, yang membagikan data ke setiap proses. Setiap proses melakukan eksekusi dengan tugas yang sama dengan proses lainnya (Quinn 2004).
Functional Decomposition
Salah satu jenis teknik pemrosesan secara paralel, yang membagikan tugas yang berbeda ke setiap proses (Quinn 2004).
Performance Metric
Performance metrics adalah salah satu cara untuk menganalisis kinerja algoritme paralel (Grama et al. 2003). Beberapa persamaan performance metric yaitu:
a. Waktu Eksekusi
Waktu eksekusi adalah waktu yang dihitung dari awal sampai akhir eksekusi. Waktu eksekusi sekuensial dilambangkan dengan Ts. Waktu eksekusi
paralel dilambangkan dengan Tp (Grama et al. 2003).
b. Speedup
Speedup (S) adalah rasio dari waktu yang digunakan untuk menyelesaikan masalah dalam program sekuensial (Ts) terhadap waktu yang diperlukan untuk
menyelesaikan masalah yang sama dengan program paralel (Tp) (Grama et al.
2003). Speedup dirumuskan pada Persamaaan 1. S = s
p (1)
c. Efisiensi
Efisiensi (E) adalah rasio antara speedup dengan banyaknya prosesor yang digunakan (p) (Grama et al. 2003). Efisiensi dirumuskan pada Persamaan 2.
E = s
10
METODE
Penelitian ini akan dikerjakan dalam beberapa tahap yang dapat dilihat pada Gambar 10.
Gambar 10 Metode penelitian
Analisis Struktur I/O
Analisis yang dilakukan pada tahap ini adalah melihat dan menentukan bagian mana saja yang menjadi tahapan proses I/O dari program AES secara paralel yang menggunakan I/O sekuensial.
Pada penelitian yang dilakukan oleh Zulfikar (2012) diterapkan metode Foster untuk mendesain algoritme AES secara paralel. Tahapan dari metode Foster yaitu:
1 Partisi
11 akan membutuhkan n proses (Zulfikar 2012). Ilustrasi partisi algoritme AES secara paralel domain decomposition ditunjukkan pada Gambar 11.
Gambar 11 Ilustrasi partisi algoritme AES domain decomposition (Zulfikar 2012)
2 Komunikasi
Proses master (root) akan mengirim blok-blok data kepada setiap proses untuk dienkripsi dengan menggunakan komunikasi kolektif (scatter). Hasil enkripsi tiap proses akan dikumpulkan kembali ke root juga dengan menggunakan koleksi komunikatif (gather), n blok data akan membutuhkan 2 kali komunikasi dan n buah proses (Zulfikar 2012). Ilustrasi komunikasi algoritme AES secara paralel domain decomposition ditunjukkan pada Gambar 12.
Gambar 12 Ilustrasi komunikasi algoritme AES domain decomposition (Zulfikar 2012)
3 Aglomerasi
Aglomerasi dilakukan untuk mengurangi komunikasi dan kebutuhan proses agar menjadi lebih efisien. Tiap proses (p) akan menangani n/p blok data. Komunikasi kolektif digunakan untuk meminimalkan komunikasi sehingga hanya membutuhkan sekali scatter untuk pendistribusian data dan sekali gather untuk pengumpulan data (Zulfikar 2012). Ilustrasi aglomerasi algoritme AES secara paralel domain decomposition ditunjukkan pada Gambar 13.
12
4 Pemetaan
Setiap proses akan mengerjakan tugas yang sama namun dengan data masukan yang berbeda-beda. Jika n mod p ≠ 0, jumlah blok data yang dikerjakan oleh tiap proses ada yang sebesardan ada juga yang sebesar . Jika s = n mod p, blok data akan dipetakan ke s proses pertama sedangkan sisa proses lainnya akan dipetakan . blok data (Zulfikar 2012).
Adapun algoritme AES secara paralel yang digunakan pada penelitian kali ini diilustrasikan pada Gambar 14.
13
Implementasi
Implementasi I/O paralel pada penelitian ini menggunakan bahasa C, dan library MPICH2 yang digunakan untuk memakai fungsi paralel pada I/O. Panduan lengkap pemasangan MPICH2 dapat dilihat pada Lampiran 1. Pada tahap implementasi ini menggunakan source code dari penelitian yang dilakukan oleh Zulfikar (2012), perubahan-perubahan yang terjadi pada bentuk struktur I/O meliputi:
a. Deklarasi file
MPICH2 membuat struktur tersendiri untuk mendeklarasikan variabel sebuah file yang akan digunakan untuk membuat sebuah program menggunakan MPI I/O. Jika pada library standar bahasa C menggunakan char File *fh, maka untuk menggunakan library MPI I/O deklarasi file menjadi char MPI_File fh.
b. Membuka file
Struktur pada tahap pembukaan file juga mengalami perubahan. Jika pada library standar bahasa C kode yang digunakan FILE *fopen(const char
*filename, const char *mode), maka kode yang digunakan pada library
MPICH2 int MPI_File_open (MPI_Comm comm, char *filename, int
amode, MPI_Info info,MPI_File *fh).
c. Membaca file
Struktur pada tahap membaca file juga mengalami perubahan. Jika pada library standar bahasa C kode yang digunakan size_t fread(void *ptr,
size_t size of elements, size_t number of element, FILE *a_file),
maka kode yang digunakan pada library MPICH2 int MPI_File_read (MPI_File fh, void *buf, int count, MPI_Datatype datatype,
Tahap partisi file untuk menentukan pembagian beban kerja sebuah proses. Tahap partisi ini fungsi yang digunakan int MPI_File_set_view(MPI_File fh, MPI_Offset disp, MPI_Datatype etype, MPI_Datatype filetype,
char *datarep, MPI_Info info). Jika sebuah file dipartisi hingga n kali, maka
14
pembukaan file, yaitu pada saat membuka file kunci, membuka file yang akan dienkripsi, dan pada saat membuka file hasil enkripsi.
Setelah melakukan pembukaan pada file, dilakukan partisi terhadap file yang akan dienkripsi dan file hasil enkripsi. Partisi file dilakukan dengan mengambil ukuran data yang dibagi dengan jumlah proses yang dibangkitkan. Proses partisi file memiliki parameter string representasi data, pada penelitian kali ini digunakan string “native” agar pembacaan file sama seperti yang terdapat pada memori.
Setelah melakukan partisi terhadap file barulah dilakukan proses pembacaan atau penulisan file. Setiap proses akan membaca atau menulis sebuah file dengan mengacu pada proses partisi file, sehingga setiap proses hanya akan membaca atau menulis file pada bagian yang telah ditentukan pada saat melakukan tahap partisi file. Perbedaan dari algoritme AES secara paralel yang menggunakan I/O paralel dan algoritme AES secara paralel yang menggunakan I/O sekuensial terletak pada proses pembacaan input dan penulisan output. Jika pada algoritme AES secara paralel yang menggunakan I/O sekuensial hanya root yang melakukan proses I/O pada algoritme AES yang menggunakan I/O paralel semua proses terlibat pada proses I/O tersebut. Desain lengkap algoritme AES secara paralel yang menggunakan I/O paralel dapat dilihat pada Gambar 15.
Perancangan percobaan
Pada tahap ini dilakukan perancangan sehingga mendapatkan beberapa parameter yang akan digunakan. Parameter-parameter yang digunakan dalam percobaan ini adalah:
1 Jenis algoritme
Percobaan kali ini akan diuji tiga buah algoritme yaitu algoritme AES sekuensial, algoritme AES secara paralel dengan menggunakan I/O sekuensial, dan algoritme AES secara paralel dengan menggunakan I/O paralel. Tiap algoritme dihitung waktu proses enkripsi.
2 Proses dan prosesor
Jumlah komputer yang digunakan pada penelitian ini berbeda-beda, baik pada algoritme AES secara paralel dengan I/O sekuensial maupun algoritme AES secara paralel dengan I/O paralel dibangkitkan dua, tiga, dan empat proses yang masing-masing menggunakan satu komputer dan dua komputer.
3 Ukuran file
Ukuran file yang digunakan ada dua kategori yaitu kecil, dan besar. Detil ukuran file disaikan pada Tabel 1.
Tabel 1 Nama file beserta ukurannya
Nama file Kategori Ukuran
Pohon.jpg Kecil 4.5 MB
15
16
4 Ulangan
Untuk ulangan yang dilakukan oleh dua komputer dilakukan eksekusi sebanyak lima kali, sedangkan ulangan yang dilakukan oleh satu komputer dilakukan eksekusi sebanyak sepuluh kali.
5 Performance metrics
Performance metrics yang dianalisis adalah waktu eksekusi, speedup, dan efisiensi
6 Lingkungan penelitian
a dua komputer, komputer pertama dual core dan komputer kedua quad core
b satu kabel UTP standar
c sistem operasi Windows 7 dan program MPICH2-1.4.1pl 32 bit.
Percobaan
Percobaan ini dibagi ke dalam lima bagian yaitu:
1 Eksekusi enkripsi algoritme AES secara paralel dengan I/O sekuensial menggunakan satu komputer yang membangkitkan dua, tiga, dan empat proses dengan sepuluh kali pegulangan, 2 file × 3 proses × 10 ulangan = 60 kali.
2 Eksekusi enkripsi algoritme AES secara paralel dengan I/O sekuensial yang menggunakan dua komputer yang membangkitkan dua, tiga, dan empat proses 2 file × 3 proses × 10 ulangan = 60 kali.
3 Eksekusi enkripsi AES secara paralel dengan I/O paralel yang menggunakan satu komputer dengan membangkitkan dua, tiga, dan empat proses 2 file × 3 proses × 5 ulangan = 30 kali.
4 Eksekusi enkripsi algoritme AES secara paralel dengan menggunakan I/O paralel yang menggunakan dua komputer dengan membangkitkan dua, tiga, dan empat proses 2 file × 3 proses × 5 ulangan = 30 kali.
5 Eksekusi enkripsi algoritme AES sekuensial 2 file × 10 ulangan = 20 kali. Percobaan ini diawali dengan melakukan pengaturan jaringan dan komputer agar bisa bekerja secara paralel. Langkah selanjutnya adalah dengan menjalankan batch file yang berisi perintah eksekusi untuk satu komputer dan melakukan secara manual untuk dua komputer.
HASIL DAN PEMBAHASAN
Hasil
17
Pengujian Validitas
Pengujian validitas dilakukan untuk mengetahui bahwa file yang dienkripsi oleh algoritme AES secara sekuensial, algoritme AES secara paralel dengan menggunakan I/O sekuensial, dan algoritme AES secara paralel dengan menggunakan I/O paralel memiliki nilai checksums yang sama, yang artinya ketiga algoritme tersebut memiliki keluaran yang sama. Pengujian validitas menggunakan software MD5Check version 3.0. Hasil nilai checksums disajikan pada Gambar 16, 17, 18, 19, dan 20.
Gambar 16 Hasil nilai checksums enkripsi AES
sekuensial dengan AES secara paralel yang menggunakan I/O sekuensial
Gambar 17 Hasil nilai checksums enkripsi AES
18
Gambar 18 Hasil nilai checksums dekripsi AES sekuensial dengan file awal
19
Gambar 20 Hasil nilai checksums dekripsi AES secara paralel dengan menggunakan I/O paralel dengan file awal
Pada Gambar 16 dan 17 dapat dilihat bahwa keluaran yang dihasilkan oleh ketiga algoritme sama, dan pada Gambar 18, 19, dan 20 dapat dilihat bahwa hasil dekripsi ketiga algoritme memiliki nilai yang sama dengan file awal. Dengan demikian dapat diketahui bahwa ketiga algoritme tersebut bekerja dengan benar.
Waktu Eksekusi Sekuensial
Waktu eksekusi enkripsi AES secara sekuensial untuk tiap file disajikan pada Gambar 21.
20
Gambar 21 menunjukkan waktu eksekusi enkripsi AES akan lebih lama berdasarkan ukuran file yang akan di eksekusi.Hal tersebut terjadi karena semakin besar ukuran file jumlah blok yang akan di baca maupun di tulis menjadi semakin lebih banyak.
Waktu Eksekusi Paralel
Perbandingan waktu Eksekusi enkripsi AES secara paralel yang menggunakan I/O sekuensial dan AES secara paralel yang menggunakan I/O paralel untuk setiap file disajikan pada Gambar 22, 23, 24, dan 25.
Gambar 22 Perbandingan waktu eksekusi enkripsi AES secara paralel, I/O sekuensial dengan I/O paralel ukuran file kecil satu komputer
21
Gambar 24 Perbandingan waktu eksekusi enkripsi AES secara paralel, I/O sekuensial dengan I/O paralel ukuran file kecil dua komputer
Gambar 25 Perbandingan waktu eksekusi enkripsi AES secara paralel, I/O sekuensial dengan I/O paralel ukuran file kecil dua komputer
Waktu eksekusi algoritme AES secara paralel dengan menggunakan I/O paralel jauh lebih cepat dibanding waktu eksekusi AES secara paralel yang menggunakan I/O sekuensial untuk semua kasus. Namun demikian penambahan jumlah prosesor tidak selalu mengurangi waktu eksekusi hal itu terjadi pada saat membangkitkan empat proses menggunakan dua komputer. Waktu eksekusi meningkat pada saat membangkitkan empat proses pada saat menggunakan file kecil baik algoritme AES secara paralel menggunakan I/O sekuensial maupun yang menggunakan I/O paralel. Hal itu dapat terjadi akibat dari beberapa faktor, yaitu latensi jaringan yang tidak konstan, kerja prosesor yang tidak stabil ataupun pengaruh dari cache memori.
22
I/O paralel adalah 2.172 detik untuk file kecil dan 63.795 detik untuk file besar yang menggunakan dua komputer. Waktu tercepat untuk I/O sekuensial adalah 2.802 detik untuk file kecil dan 70.550 detik untuk file besar yang menggunakan dua komputer. Waktu tercepat file kecil yang menggunakan satu komputer untuk I/O paralel adalah 2.289 detik dan 57.894 detik untuk file besar. Waktu tercepat file kecil untuk I/O sekuensial yang menggunakan satu komputer adalah 3.054 detik sedangkan untuk file besar adalah 75.537 detik.
Speedup
Nilai perbandingan speedup enkripsi AES secara paralel yang menggunakan I/O sekuensial dan I/O paraleldisajikan pada Gambar 26 dan Gambar 27.
Gambar 26 Perbandingan speedup enkripsi AES secara paralel, I/O sekuensial dan I/O paralel pada satu komputer
23
Berdasarkan Gambar 26, nilai speedup cenderung naik seiring meningkatnya jumlah proses. Fenomena ini hanya berlaku jika jumlah proses kurang dari atau sama dengan jumlah prosesor. Jika jumlah proses lebih besar dari jumlah prosesor, maka speedup akan konstan dan bahkan dapat menurun.
Pada Gambar 27 menunjukkan ada penurunan pada speedup pada saat menggunakan empat proses. Hal ini terjadi karena waktu eksekusi file kecil menggunakan dua komputer meningkat di saat menggunakan empat proses sehingga hal itu berdampak juga pada nilai speedup.
Dari data yang ditunjukkan Gambar 20 dan 21 nilai speedup menunjukkan selalu melebihi satu, hal itu menunjukkan adanya penurunan waktu eksekusi dibandingkan dengan algoritme AES sekuensial, selain itu nilai speedup pada gambar tersebut juga menyatakan bahwa algoritme AES secara paralel yang menggunakan I/O paralel selalu lebih baik dibandingkan dengan AES secara paralel yang menggunakan I/O sekuensial.
Efisiensi
Nilai perbandingan efisiensi enkripsi AES secara paralel yang menggunakan I/O sekuensial dan I/O paralel disajikan pada Gambar 28 dan 29.
Gambar 28 Perbandingan efisiensi enkripsi AES secara paralel, I/O sekuensial dan I/O paralel pada satu komputer
24
secara paralel yang menggunakan sekuensial I/O file kecil (4.5 MB) sebesar 0.8 dan 0.77 untuk file besar.
Gambar 29 Perbandingan efisiensi enkripsi AES secara paralel, I/O sekuensial dan I/O paralel pada dua komputer
Gambar 29 menunjukkan bahwa adanya peningkatan efisiensi pada algoritme AES secara paralel yang menggunakan I/O paralel pada saat menggunakan tiga proses nilai efisien meningkat hingga 0.95 untuk ukuran file kecil namun pada ukuran file besar untuk algoritme I/O paralel cenderung turun. Hal itu berbanding terbalik dengan algoritme AES secara I/O paralel sekuensial pada saat mengunakan file kecil nilai efisiensi algoritme tersebut cenderung turun namun pada saat menggunakan file besar adanya peningkatan pada saat menggunakan tiga proses. Namun tingkat efisiensi algoritme AES secara paralel yang menggunakan I/O paralel lebih tinggi dibandingkan dengan yang menggunakan I/O sekuensial.
Hasil lengkap pada penelitian kali ini dapat dilihat pada Lampiran 2, 3, 4, 5, 6, 7, 8, dan 9.
Perbandingan Waktu Proses Input dan Output
25
Gambar 30 Perbandingan waktu proses input dan output I/O sekuensial vs I/O paralel
Pada Gambar 30 dapat dilihat bahwa pembacaan file dan kunci tidak berkurang secara signifikan karena pada saat setelah melakukan pembacaan file, informasi file yang telah dibaca dikembalikan lagi kepada root untuk memecah file input menggunakan fungsi scatter. Untuk penulisan output waktu eksekusi berkurang sangat signifikan karena pada penulisan output tersebut, semua proses langsung melakukan penulisan output.
SIMPULAN DAN SARAN
Simpulan
Simpulan dari hasil penelitian ini adalah:
1 Waktu eksekusi algoritme AES secara sekuensial akan semakin meningkat seiring dengan meningkatnya ukuran file yang digunakan. Waktu eksekusi enkripsi secara sekuensial untuk file 1 (4.54 MB) adalah 6.306 detik dan file 2 (115 MB) adalah 167.382 detik.
2 Algoritme AES secara paralel yang menggunakan I/O paralel dapat mengurangi waktu eksekusi lebih baik dibandingkan dengan yang menggunakan I/O sekuensial.
3 Nilai efisiensi terbesar algoritme AES secara paralel yang menggunakan I/O paralel sebesar 0.95, sedangkan algoritme AES secara paralel yang menggunakan I/O sekuensial sebesar 0.8.
4 Nilai efisiensi terendah algoritme AES secara paralel yang menggunakan I/O paralel sebesar 0.64, sedangkan algoritme AES secara paralel yang menggunakan sebesar 0.5.
5 Nilai speedup algoritme AES secara paralel yang menggunakan I/O paralel selalu lebih baik dibandingkan dengan yang menggunakan I/O sekuensial.
26
6 Nilai efisiensi algoritme AES secara paralel yang menggunakan I/O paralel selalu lebih baik dibandingkan dengan yang menggunakan I/O sekuensial.
Saran
Pada penelitian selanjutnya dapat digunakan sistem hybrid seperti Open MP atau gabungan dari library MPI dan Open-MP atau dapat menggunakan fitur MPI2 lainnya seperti one-sided-communication atau remote memory access.
DAFTAR PUSTAKA
Giri EP. 2004. Analisis algoritme dan waktu enkripsi versus dekripsi pada Advanced Encryption Standard (AES) [skripsi]. Bogor (ID): Fakultas Matematika dan Ilmu Pengetahuan Alam. Institut Pertanian Bogor.
Grama A, Gupta A, Karypis G, Kumar Vipin. 2003. Introduction to Parallel Computing. Boston (US): Addison-Wesley.
Gropp W, Lusk E, Thakur R. 1999. Advanced Feutures of the Message-Passing Interface. London (UK): The MIT Press.
Quinn MJ. 2004. Parallel Programming in C with MPI and OpenMP. San Francisco (US): McGraw Hill.
Stallings W. 2003, Crypthography and Network Security Principles and Practice. London (UK): Prentice Hall.
Surian D. 2006. Algoritme kriptografi AES Rijndael, Jurnal Teknik Elektro TESLA, 8(2):97-101.
27 Lampiran 1 Pengaturan dan instalasi MPICH2
Langkah-langkah dalam pengaturan dan istalasi MPICH2 dalam penelitian ini yaitu:
1 Hubungkan tiap komputer menggunakan kabel UTP.
2 Ping ke setiap komputer yang hendak digunakan, pastikan semua komputer saling terhubung agar lebih mudah buat IP menjadi statis dan matikan firewall. 3 Instal mpich2-1.4.1p1-win-ia32.msi di setiap komputer dengan menggunakan
administrator priviledge.
4 Tentukan passphrase yang akan digunakan dan pastikan setiap komputer memiliki passphrase yang sama dan Pilih “Everyone” pada salah satu menu instalasi agar MPICH2 bisa digunakan untuk semua pengguna komputer.
5 Tambahkan path MPICH2 (C:\Program Files\MPICH2\bin) pada system variabel tiap komputer.
6 Buat user baru dengan nama yang seragam dan password-nya sesuai dengan passphrase di tiap komputer.
7 Daftar user baru di tiap komputer dengan menjalankan perintah “mpiexec – register –user 1” pada jendela command prompt, masukkan nama dan passphrase sesuai dengan poin nomor 7.
28
Lampiran 1 Lanjutan
Beberapa kesalahan umum yang sering terjadi:
1 Pesan eror “Mpiexec is not recognize as internal or external command, operable program or batch file” ketika hendak menjalankan program paralel.
Penyebab : instalasi MPICH2 atau penambahan path MPICH2 yang tidak sempurna.
Solusi : instalasi ulang MPICH2 dan pastikan sesuai langkah di atas.
2 Pesan eror “SMPD version missmatch” ketika hendak menjalankan program
paralel.
Penyebab : ada program lain yang menggunakan smpd dengan versi yang berbeda dari MPICH2 yang digunakan
29 Lampiran 2 Waktu eksekusi AES secara paralel menggunakan I/O sekuensial
(file kecil pohon.jpg (4.5 MB) pada satu komputer)
Ulangan 2 proses 3 proses 4 proses
1 4.799 3.517 3.280
2 4.777 3.451 3.098
3 4.742 3.483 3.093
4 4.717 3.523 3.072
5 4.799 3.476 3.111
6 4.723 3.554 3.153
7 4.727 3.464 3.054
8 4.729 3.492 3.073
9 4.732 3.482 3.061
10 4.715 3.487 3.089
Waktu rata - rata 4.745 3.493 3.109
Speedup 1.328 1.805 2.028
30
Lampiran 3 Waktu eksekusi AES paralel menggunakan I/O sekuensial (file besar video.mp4 (115 MB) pada satu komputer )
Ulangan 2 proses 3 proses 4 proses
1 107.942 85.898 75.630
2 106.312 85.405 75.860
3 106.070 85.156 76.066
4 105.009 85.443 75.782
5 105.319 85.221 75.783
6 06.109 85.333 76.298
7 105.454 85.356 76.159
8 105.366 85.309 76.239
9 104.276 85.196 75.537
10 105.426 85.222 75.809
Waktu rata - rata
105.728 85.354 75.916
Speedup 1.583 1.961 2.204
31 Lampiran 4 Waktu eksekusi AES paralel menggunakan I/O paralel (file kecil
pohon.jpg (4.5 MB) pada satu komputer)
Ulangan 2 proses 3 proses 4 proses
1 3.472 2.725 2.292
2 3.481 2.727 2.308
3 3.479 2.686 2.309
4 3.547 2.854 2.307
5 3.500 2.676 2.296
6 3.466 2.665 2.295
7 3.469 2.665 2.316
8 3.517 2.662 2.330
9 3.466 2.659 2.314
10 3.482 2.656 2.289
Waktu rata - rata 3.488 2.698 2.306
Speedup 1.807 2.337 2.734
32
Lampiran 5 Waktu eksekusi AES paralel menggunakan I/O paralel (file besar video.mp4 (115 MB) pada satu komputer)
Ulangan 2 proses 3 proses 4 proses
1 92.124 72.037 66.820
2 90.371 69.876 58.863
3 97.539 69.922 57.894
4 87.248 70.074 58.488
5 86.766 70.042 58.387
6 86.511 69.941 58.209
7 86.518 70.341 58.389
8 86.830 70.149 58.265
9 86.386 69.708 58.298
10 86.707 70.113 58.298
Waktu rata - rata 88.700 70.220 59.191
Speedup 1.887 2.383 2.827
33 Lampiran 6 Waktu eksekusi AES paralel menggunakan I/O sekuensial (file kecil
pohon.jpg ( 4.5 MB) pada dua komputer)
Ulangan 2 proses 3 proses 4 proses
1 3.962 2.805 3.133
2 3.816 2.823 3.099
3 4.159 3.039 3.179
4 3.941 2.995 3.006
5 3.793 2.742 2.983
Waktu rata – rata 3.934 2.881 3.080
Speedup 1.602 2.188 2.047
efisiensi 0.801 0.729 0.511
34
Lampiran 7 Waktu eksekusi AES paralel menggunakan I/O sekuensial (file besar video.mp4 (115 MB) pada dua komputer)
Ulangan 2 proses 3 proses 4 proses
1 107.987 71.460 70.550
2 96.654 69.488 72.205
3 95.361 72.539 70.111
4 96.492 77.400 72.194
5 106.139 79.338 72.245
Waktu rata – rata 100.527 74.045 71.461
Speedup 1.550 2.342 2.372
35 Lampiran 8 Waktu eksekusi AES paralel menggunakan I/O paralel (file kecil
pohon.jpg (115 MB) pada dua komputer)
Ulangan 2 proses 3 proses 4 proses
1 3.204 2.297 2.525
2 3.615 2.167 2.342
3 3.607 2.160 2.413
4 3.637 2.172 2.518
5 3.559 2.251 2.345
Waktu rata – rata 3.524 2.209 2.429
Speedup 1.789 2.853 2.596
36
Lampiran 9 Waktu eksekusi AES paralel menggunakan I/O paralel (file besar video.mp4 (115 MB) pada dua komputer)
Ulangan 2 proses 3 proses 4 proses
1 96.132 64.258 64.920
2 93.249 63.795 66.539
3 98.480 71.390 65.166
4 96.085 63.919 65.207
5 100.387 64.101 64.602
Waktu rata – rata 96.867 65.493 65.287
Speedup 1.741 2.604 2.578
37
RIWAYAT HIDUP
Penulis lahir di Bogor pada tanggal 12 Oktober 1989. Penulis merupakan anak pertama dari dua bersaudara, pasangan Eka Yudha Prya, SE dan Latifah, SSos.
Penulis lulus dari Sekolah Menengah Atas Neger 8 Bogor pada tahun 2007 dan pada tahun yang sama di terima di Program Studi Ilmu Komputer, Fakultas Matematika dan Ilmu Pengetahuan Alam, Institut Pertanian Bogor (IPB) melalu jalur SPMB. Selama mengikuti perkuliahan, penulis aktif dalam berbagai kegiatan non akademis seperti panitia Masa Perkenalan Departemen pada tahun 2009, sebagai anggota divisi keaman acara tahunan HIMALKOM, IT TODAY, pada tahun 2008, dan wakil ketua divisi sponsorship pada acara yang sama pada tahun 2009.