PEMBANGUNAN CLUSTER PARALEL MENGGUNAKAN RASPBERRY PI Yulius Denny Prabowo 1, Ester Lumba 2, Rino Alfian 3 1,2,3 Program Studi Informatika, Fakultas Industri Kreatif, Institut Teknologi dan Bisnis Kalbis Jl. Pulomas Kav.22, Jakarta Timur - DKI Jakarta 13210 E-mail: yulius.prabowo@kalbis.ac.id 1, ester.lumba@kalbis.ac.id 2, rino.alpin@gmail.com 3 ABSTRAKS Kebutuhan penggunaan data yang besar sebagai dasar pengambilan keputusan semakin banyak digunakan, konsekwensi dari hal ini adalah kecepatan pemrosesan yang dibutuhkan makin tinggi dan memori yang diperlukan juga semakin besar. Disisi lain kemampuan perangkat keras sudah mencapai batas maksimalnya, karena itu pemrosesan secara paralel menjadi salah satu jalan keluar dari hal ini.pemrosesan paralel membutuhkan perangkat keras yang cukup mahal, hal ini menjadi kendala ketika paradigma pemrograman ini akan diajarkan di Universitas. Penelitian ini mencoba menggunakan RaspberryPi untuk mensimulasikan pemrosesan secara paralel. Percobaan dilakukan menggunakan empat buah RaspberryPi, hasil percobaan menunjukkan bahwa pemrosesan paralel menunjukkan performansi yang lebih baik dibandingkan dengan pemrosesan stand-alone baik pada perkalian matriks ordo 100, 500 hingga 1000 baik pada algoritma sequential, OMP, maupun menggunakan mpi. Percobaan ini juga menunjukan bahwa RaspberryPi dapat digunakan sebagai alternatif perangkat keras untuk pembelajaran pemrosesan paralel pada Universitas. Kata Kunci: pemrosesan paralel, raspberry pi, perkalian matriks 1. PENDAHULUAN 1.1 Latar Belakang Pemrograman parallel akan menjadi sebuah kebutuhan yang mutlak pada masa yang akan datang, volume data yang begitu besar serta teknik-teknik pengolahan data yang melibatkan kecerdasan mesin akan membutuhkan memori yang besar sekaligus proses komputasi yang berat. Pada satu kondisi pengolahan menggunakan satu komputer tidak lagi memadai dan harus menggunakan beberapa komputer secara bersamaan, hal inilah yang disebut dengan komputasi parallel. Meskipun kebutuhan akan komputasi parallel ini adalah sebuah keniscayaan namun pada tingkatan universitas pembelajaran komputasi parallel ini belum banyak diakomodasi oleh mata kuliah yang ada terutama pembahasan secara praktiknya. Sebagian besar alasan yang muncul adalah karena pembelajaran komputasi parallel memerlukan infrastruktur yang ridak murah, akibatnya sebagian besar mahasiswa hanya mengetahui komputasi parallel sebatas konsepnya atau bahkan hanya sebatas istilah saja, tanpa pernah melakukan pemrograman pada mesin parallel. Perkembangan teknologi terutama hardware juga mendorong komersialisasi komputer papan tunggal seperti adruino atau raspberry-pi (raspi), dengan harga yang terjangkau dibanding harga komputer, pengguna dapat melakukan kebutuhan komputer sehari-hari menggunakan mini komputer ini. Memang ada keterbatasan dalam hal memori penyimpanan, memori pemrosesan maupun prosesor yang digunakan untuk memproses data-data. Namun sejauh pengamatan kami komputer papan tunggal ini masih mencukupi untuk digunakan mengerjakan keperluan sehari-hari bahkan melakukan komputasi sederhana. Penerapan raspberry-pi telah dilakukan pada beberapa bidang mulai dari pengontolan alat elektronik secara umum melalui WiFi (Rahayu, Budi dan Haritman, 2014), sebagai webserver untuk mengendalikan lampu dan AC (Darmaliputra dan Hermawan, 2014) atau untuk memonitor sensor infra merah pada parkir mobil (Nataliana dan Giantara, 2014) dan adapula yang menggunakannya sebagai alat pengukur kecepatan angin (Sarwoko, 2014). Raspbery-pi memiliki kemampuan yang cukup handal, hal ini dibuktikan dengan beberapa penelitian yang memanfaatkan raspberry-pi sebagai alat untuk memonitor sistem publik (Yuwono, Nugroho dan Heriyanto, 2015) dan digunakan sebagai alat untuk mengakses data-data pribadi (Aisa dan Thabrani, 2016). Oleh karena itu kami mencoba memanfaatkan komputer papan tunggal ini untuk mengajarkan konsep dan praktik pemrograman parallel kepada para mahasiswa. Raspi sendiri memiliki dua model yaitu model A dan model B. Secara umum perbedaan model A dan B terletak pada memory yang digunakan, Model A menggunakan memory 256 MB dan model B 512 MB. Selain itu model B juga sudah dilengkapai dengan kartu jaringan (ethernet port) yang tidak terdapat di model A. Menurut (Nayar dan Puri, 2015) desain Raspi didasarkan dari SoC (System-on-a-chip) Broadcom BCM2835, yang telah menanamkan prosesor ARM1176JZF-S dengan 700 MHz, VideoCore IV GPU, dan 256 Megabyte RAM (model B). Penyimpanan data Raspi tidak menggunakan hard disk atau solid-state drive, melainkan mengandalkan kartu SD (SD memory card) untuk booting dan penyimpanan jangka panjang. Hardware Raspi tidak memiliki real-time clock, sehingga sistem operasi harus memanfaatkan timer jaringan server sebagai pengganti. Namun dapat ditambahkan dengan fungsi real-time (seperti DS1307) dan banyak lainnya, melalui saluran GPIO (General-purpose input/output) melalui antarmuka I²C (Inter-Integrated Circuit. 130
1.2 Tinjauan Pustaka Banyak perkembangan-perkembangan baru dalam arsitektur komputer yang didasarkan pada konsep pemrosesan paralel. Pemrosesan paralel dalam sebuah komputer dapat didefinisikan sebagai pelaksanaan instruksi-instruksi secara bersamaan waktunya. Hal ini dapat menyebabkan pelaksanaan kejadian-kejadian (1) dalam interval waktu yang sama, (2) dalam waktu yang bersamaan atau (3) dalam rentang waktu yang saling tumpang tindih. Sekalipun didukung oleh teknologi prosesor yang berkembang sangat pesat, komputer sekuensial tetap akan mengalami keterbatasan dalam hal kecepatan pemrosesannya. Hal ini menyebabkan lahirnya konsep keparalelan (parallelism) untuk menangani masalah dan aplikasi yang membutuhkan kecepatan pemrosesan yang sangat tinggi. Konsep keparalelan (Monk, 2012) dapat ditinjau dari aspek design mesin paralel, perkembangan bahasa pemrograman paralel atau dari aspek pembangunan dan analisis algoritma paralel. Algoritma paralel itu sendiri lebih banyak difokuskan kepada algoritma untuk menyelesaikan masalah numerik, karena masalah numerik merupakan salah satu masalah yang memerlukan kecepatan komputasi yang sangat tinggi. Komputasi Paralel merupakan metode komputasi yang membagi beban komputasi ke dalam beberapa bagian kecil sub proses komputasi, dimana sub komputasi tersebut dijalankan pada prosesor yang berbeda secara bersamaan dan saling berinteraksi satu sama lain dalam menyelesaikan satu permasalahan komputasi. Clustering adalah sumber daya komputer yang berkerja secara bersama-sama pada saat yang bersamaan untuk mengerjakan task atau menyediakan layanan. Personal Computer (PC) cluster adalah sebuah sistem komputer yang terdiri dari beberapa PC yang terkoneksi dalam satu jaringan untuk melakukan sebuah pekerjaan (berupa komputasi) atau mengerjakan task lain secara bersama-sama (Ajoshi dan Gohel, 2013). Message Parsing Interface (MPI) adalah perangkat lunak yang memungkinkan sekumpulan komputer yang heterogen terlibat seperti satu sistem komputer paralel dan dapat digunakan sebagai sebuah sumber daya komputasi yang koheren. Komputer tersebut bisa berupa workstation, multiprocessor, specialized grapich engine sampai dengan vector super computer yang dihubungkan dengan jaringan. MPI memungkinkan eksekusi program pada setiap mesin dapat dikendalikan oleh pengguna dan menjadi lingkungan komputasi yang powerfull (Richardson dan Wallace, 2013). Untuk mengeksekusi sebuah program paralel yang menggunakan MPI akan terlihat berbeda dengan bila menggunakan versi sekuensial. Pengguna harus membagi data masalah ke beberapa proses, menulis ulang algoritma untuk membagi kerja ke beberapa proses dan menambah beberapa program untuk mengirimkan nilai yang dibutuhkan dari sebuah proses dimana data tersebut berada ke sebuah proses yang membutuhkan nilai tersebut. Penerapan raspberry pi telah dilakukan oleh beberapa peneliti sebelumnya seperti pada bidang sistem kendali (Rahayu dkk, 2014), (Nataliana, 2014), (Darmaliputra, 2014), (Siswoko, 2014) dan (Stephanie, 2015). Sebagai private cloud untuk media akses data-data pribadi (Aisa dan Thabrani, 2016). Ssebagai mesin untuk mengoperasikan Closed-Circuit Television (CCTV) (Yuwono, 2015). Menggunakan raspberrypi untuk memantau arus data pada jaringan (Josi dan Gohel 2013). Dengan penelitian-penelitian tersebut maka peluang penerapan raspberrypi pada berbagai bidang masih dapat dijajaki. 1.3 Metodologi Penelitian Pengembangan sistem dalam penelitian ini menggunakan metode preparasi, plan, design, implement dan operate atau seringkali disebut metode PPDIO. Prepare merupakan tahap pertama yang dilakukan, pada tahapan ini peneliti melakukan persiapan rencana kerja, teknologi, perangkat keras yang dibutuhkan untuk membangun sistem. Untuk sistem operasi peneliti menggunakan sistem operasi raspbian. Gambar 1. Diagram metode PPDIO 131
Plan merupakan tahap dimana rencana kerja dimatangkan, analisis lebih detail dilakukan pada tahapan ini. Pada tahap ini peneliti menentukan Head Node, Pada penelitian ini Head Node yang digunakan adalah RaspberryPi Model B+ dengan 4 buah slot USB, 40 slot General Purpose Input Output dan Prosesor 900MHz Quad Core ARM Cortex-A7 dan Compute Node, Pada penelitian ini Compute Node yang digunakan adalah RaspberryPi Model B+ dengan 4 buah slot USB, 40 slot General Purpose Input Output dan Prosesor 900MHz Quad Core ARM Cortex-A7. Untuk penelitian ini menggunakan sistem operasi Raspbian yang didalamnya berisikan Linux dan menggunakan pustaka paralel MPICH2. Agar dapat menjalankan komputasi paralel, sistem memerlukan beberapa konfigurasi: Pendistribusian komputasi paralel menggunakan MPICH2 yang merupakan implementasi dari MPI. Untuk file system global digunakan Network File System (NFS) yang akan dieksport Head node untuk diakses oleh Compute Node yang diijinkan oleh Head Node. Proses komunikasi antara Head Node dan Compute Node dilakukan dengan Secure Shell (SSH). Implement merupakan tahap lanjutan dari design, hasil perancangan pada tahap design diimplementasikan pada perangkat keras dan perangkat lunak, konfigurasi head node juga dilakukan pada tahapan ini, demikian juga instalasi sistem operasi dan MPICH2. Operate merupakan tahap sistem diuji, pada penelitian ini digunakan pengujian menggunakan perkalian matriks. Parameter yang digunakan pada hasil pengujian ini adalah kecepatan komputasi paralel dibandingkan dengan komputasi biasa menggunakan raspberry serta perhitungan percepatan yaitu nilai yang diperoleh dari perbandingan waktu proses komputasi biasa dan komputasi paralel. Nilai percepatan diatas 1 berarti ada peningkatan proses, nilai diantara 0 dan 1 berarti ada penurunan kecepatan proses dan efisiensi yaitu dari perbandingan antara waktu proses komputasi serial dan komputasi paralel dikalikan besar paralelismenya, atau perbandingan antara percepatan dengan besaran paralelismenya. Nilai efisiensi berarti peningkatan kecepatan setiap penambahan besaran paralelisme atau porsi percepatan yang didapatkan ketika penambahan paralelisme dilakukan. Skenario pengujian yang digunakan adalah perkalian matriks yang dieksekusi secara paralel dengan memanfaatkan fungsi-fungsi dasar MPI yaitu MPI_Send dan MPI_Recv untuk mengirimkan dan menerima data. Matriks yang digunakan untuk pengujian adalah matriks bujur sangkar dengan ordo 50x50, 100x100, 150x150, 200x200, 500x500 dan 1000x1000 untuk setiap ordo dilakukan lima kali pengujian kemudian diambil waktu rata-rata pengujian, hal tersebut dilakukan pada komputasi biasa dan komputasi parallel, Pada perkalian matriks paralel dengan MPI, matriks yang dikalikan adalah matriks A dan matriks B. Paralelisasi dilakukan pada matriks A, matriks A dibagi menjadi potongan-potongan matriks dengan ukuran yang hampir sama, kemudian potonganpotongan tersebut dikirimkan ke compute node. Sedangkan matriks B dikirimkan secara utuh ke seluruh compute node sebagai pengali matriks A. Selanjutnya masing-masing compute node akan mengalikan potongan matriks A tersebut dengan seluruh elemen matriks B, hasil perkalian ini kemudian dikirimkan ke Head Node. Program yang digunakan sebagai uji coba adalah perkalian matriks yang dieksekusi secara paralel dengan memanfaatkan fungsi-fungsi dasar MPI yaitu MPI_Send dan MPI_Recv untuk mengirimkan dan menerima data. Matriks yang digunakan untuk pengujian adalah matriks bujur sangkar dengan ordo 50x50, 100x100, 150x150, 200x200, 500x500 dan 1000x1000 untuk setiap ordo dilakukan lima kali pengujian kemudian diambil waktu rata-rata pengujian, hal tersebut dilakukan pada komputasi biasa dan komputasi paralel, keduanya menggunakan raspberry. 132
Gambar 2. Diagram perkalian matriks MPI Pada perkalian matriks paralel dengan MPI, matriks yang dikalikan adalah matriks A dan matriks B. Paralelisasi dilakukan pada matriks A, matriks A dibagi menjadi potongan-potongan matriks dengan ukuran yang hampir sama, kemudian potongan-potongan tersebut dikirimkan ke compute node. Sedangkan matriks B dikirimkan secara utuh ke seluruh compute node sebagai pengali matriks A. Selanjutnya masing-masing compute node akan mengalikan potongan matriks A tersebut dengan seluruh elemen matriks B, hasil perkalian ini kemudian dikirimkan ke Head Node. 133
2. PEMBAHASAN 2.1 Pengujian Perkalian Matriks Stand Alone Tabel.1 merupakan hasil pengujian perkalian matriks menggunakan satu buah raspberry. T1 merupakan pengujian pertama, T2 merupakan pengujian kedua, T3 merupakan pengujian ketiga, T4 merupakan pengujian keempat, T5 merupakan pengujian kelima dan TR merupakan nilai rata-rata dari setiap pengujian. Tabel 1. Tabel pengujian matriks stand alone No Ordo T1 T2 T3 T4 T5 TR 1 50 x 50 605 603 600 598 600 601.2 2 100 x 100 3617 3598 3619 3668 3631 3626.6 3 150 x 150 10431 10418 10411 10425 10416 10420.2 4 200 x 200 23864 23858 23860 23855 23872 23861.8 5 500 x 500 159400 138700 137800 119300 137500 138540 6 1000 x 1000 1433400 1598100 1624800 1525600 1256400 1487660 Satuan waktu yang digunakan untuk pengujian adalah microsecond, dari hasil pengujian didapatkan waktu pemrosesan tercepat sebesar 600 microsecond untuk perkalian matriks ordo 50 x 50. Waktu pemrosesan terlama sebesar 1624800 microsecond untuk perkalian matriks ordo 1000 x 1000. Grafik hasil pengujian perkalian matriks stand alone dapat dilihat pada gambar 3. Gambar 3. Hasil pengujian matriks stand alone Garis horizontal menunjukkan perkalian matriks yang dilakukan, mulai dari ordo 50 x 50 hingga ordo 1000 x 1000. Garis vertical menunjukkan waktu eksekusi dalam satuan microsecond. Dari grafik tersebut dapat dilihat bahwa waktu eksekusi akan semakin besar seiring besarnya ordo matriks. 2.2 Pengujian Perkalian Matriks Paralel Tabel 2 merupakan hasil pengujian perkalian matriks menggunakan satu buah raspberry. T1 merupakan pengujian pertama, T2 merupakan pengujian kedua, T3 merupakan pengujian ketiga, T4 merupakan pengujian keempat, T5 merupakan pengujian kelima dan TR merupakan nilai rata-rata dari setiap pengujian. Tabel 2. Tabel pengujian matriks paralel No Ordo T1 T2 T3 T4 T5 TR 1 50 x 50 352 348 344 342 345 346.2 2 100 x 100 1681 1687 1673 1689 1684 1682.8 3 150 x 150 2092 2108 2089 2092 2163 2108.8 4 200 x 200 5252 5298 5274 5394 5268 5297.2 5 500 x 500 1800 1800 1700 1400 1700 1680 6 1000 x 1000 11100 11800 11800 11200 11700 11520 Satuan waktu yang digunakan untuk pengujian adalah microsecond, dari hasil pengujian didapatkan waktu pemrosesan tercepat sebesar 342 microsecond untuk perkalian matriks ordo 50 x 50. Waktu pemrosesan terlama sebesar 5394 microsecond untuk perkalian matriks ordo 200 x 200. Grafik hasil pengujian perkalian matriks paralel dapat dilihat pada gambar 4. 134
Gambar 4. Hasil pengujian matriks parallel Garis horizontal menunjukkan perkalian matriks yang dilakukan, mulai dari ordo 50 x 50 hingga ordo 1000 x 1000. Garis vertical menunjukkan waktu eksekusi dalam satuan microsecond. Dari grafik tersebut dapat dilihat bahwa waktu eksekusi akan semakin besar seiring besarnya ordo matriks. 2.3 Perbandingan Stand Alone dan Paralel Dari hasil perhitungan diperoleh nilai percepatan terendah ada pada perkalian matriks ordo 50 x 50 sebesar 1.74 dan nilai tertinggi ada pada perkalian matriks ordo 1000 x 1000. Demikian juga dengan efisiensi terendah dan tertinggi, efisiensi terendah ada pada perkalian matriks ordo 50 x 50 sebesar 1.74 dan nilai efisiensi tertinggi ada pada perkalian matriks ordo 1000 x 1000. Dari nilai efisiensi tersebut diketahui bahwa perhitungan matriks dengan komputasi paralel lebih cepat dibandingkan dengan stand alone, kecepatan tersebut juga dipengaruhi oleh banyaknya prosesor yang digunakan, dalam penelitian ini menggunakan 4 buah prosesor. Pada gambar 5, garis berwarna biru menunjukkan hasil pemrosesan menggunakan komputasi stand alone sedangkan garis berwarna merah menunjukkan komputasi secara parallel Dari grafik tersebut dapat disimpulkan bahwa untuk semua ordo matriks pemrosesan paralel memiliki waktu eksekusi yang lebih singkat dibanding waktu eksekusi stand alone, dengan demikian dapat dikatakan bahwa performa pemrosesan paralel lebih baik. Gambar 4. Perbandingan komputasi stand alone dan paralel Pada penelitian ini kinerja aplikasi sangat dipengaruhi oleh algoritma yang digunakan. Gambar 5 menunjukkan bahwa algoritma paralel MPICH2 dapat membagi pekerjaan pada arsitektur paralel dengan baik sehingga eksekusi perintah dapat dilakukan secara bersamaan. Penggunaan algoritma paralel MPICH2 terbukti dapat memaksimalkan komputasi sehingga meningkatkan performansi komputasi. Hal ini terlihat dari perbandingan waktu proses algoritma paralel dengan algoritma lain yang digunakan dalam pemrosesan stand alone. 135
Gambar 5. Perbandingan komputasi parallel dengan algoritma lain Dari gambar 5 tersebut dapat dilihat perhitungan paralel tetap lebih cepat dibandingkan perhitungan stand alone, baik menggunakan metode sequential, omp, thread2 maupun mpi (try4p) baik untuk ordo 100 x 100 maupun ordo 1000 x 1000. 3. KESIMPULAN Dari percobaan menggunakan raspberry tunggal dan beberapa respberry menujukkan bahwa komputasi paralel mempunyai kecepatan yang lebih cepat dibanding komputasi stand alone. MPICH2 dapat digunakan untuk memproses perkalian matriks secara parallel Implementasi algoritma paralel untuk perkalian matriks meningkatkan performansi lebih baik seiring besarnya ordo matriks. Dari percobaan menggunakan perkalian matriks ordo 100 x 100 dan ordo 1000 x 1000 kinerja komputasi paralel tetap lebih baik dibandingkan komputasi stand alone yang diuji menggunakan algoritma sequential, omp, thread2 maupun mpi (try4p). PUSTAKA Aisa. S dan Thabrani. R, 2016. Implementasi Private Cloud Menggunakan Raspberry Pi untuk Pengaksesan Data Pribadi, Jurnal Penelitian Pos dan Informatika Vol 6 no.2. Bambang Yuwono, Simon Pulung Nugroho dan Heriyanto. 2015. Pengembangan Model Public Monitoring System Menggunakan RaspberryPi, TELEMATIKA Vol. 12 No.02. Darmaliputra dan Hermawan 2014, Pembuatan Web Sever Berbasis Raspberry Pi Untuk Kontrol Lampu dan AC, Teknik Elektro Universitas Surabaya, Surabaya. Joshi, M., & Gohel, C. 2013. Agent Base Network Traffic Monitoring. International Journal of Innovative Research in Science, Engineering and Technology. Matt Richardson and Shawn Wallace, 2013. Getting Started with RaspberryPi, Maker Media, United State of America, 2013. Nayyar. A and Puri. V. 2015. Raspberry Pi-A Small, Powerful, Cost Effective and Efficient Form Factor Computer: A Review, International Journal of Advanced Research in Computer Science and Software Engineering, Volume 5, Issue 12,December 2015. Nataliana, Syamsu, Giantara 2014, Sistem Monitoring Parkir Mobil Menggunakan Sensor Infrared berbasis RASPBERRY PI, Teknik Elektro Institut Teknologi Nasional, Bandung. Rahayu, Budi P, Haritman 2014, Pengontrolan Alat Elektronika Melalui Media Wifi Berbasis Raspberry PI, FPIK UPI, Bandung. Simon Monk, 2012. Programming the Raspberry Pi: Getting Started With Python, Mc Graw-Hill, 2012. Siswoko, Mujahidin, Adil Irdam, Iqbal Moh. 2014, Pengukur Kecepatan Angin Berbasis Raspberry Pi, FT Teknik Elektro Universitas Maritim Raja Ali Haji, Indonesia. 136