Wednesday, July 4, 2018

Pengenalan Parallel Computing Melalui Video

Parallel computing adalah penggunakan lebih dari satu CPU untuk menjalankan sebuah program secara simultan. Idealnya, parallel processing membuat program berjalan lebih cepat karena semakin banyak CPU yang digunakan, berbeda dengan komputasi tunggal yang hanya menggunakan satu CPU saja.

berikut adalah video mengenai parallel computing 


Saturday, April 14, 2018

Review Journal/Paper Tentang Komputasi Paralel

REVIEW JURNAL KOMPUTASI PARAREL


Judul:
KOMPUTASI PARALEL UNTUK PENGOLAHAN PRESTASI AKADEMIK MAHASISWA

Penulis:
Andri Lesmana Wanasurya
Maria Angela Kartawidjaja
Sri Mulyanti

Pendahuluan
Parallel computation adalah suatu teknik untuk mengerjakan suatu perhitungan yang besar dan memerlukan waktu yang lama dengan memecah menjadi beberapa bagian dan mengerjakannya secara independen di prosesor yang berbeda

Kesimpulan yang dapat diambil dari Journal tersebut:
  1. Permasalahan yang memerlukan sejumlah besar proses komputasi bisa diselesaikan lebih efektif dengan menggunakan kekuatan dari  processor dan memori banyak komputer
  2. Metode yang digunakan dalam penelitian menggunakan Message Passing Interface
  3. Hasil Percobaan yang banyak memakan waktu dengan banyaknya percobaan pada beberapa komputer
  4. Dalam penelitian tersebut menggunakan bantuan LAN dengan menggunakan topologi Ring, Bus dan Star
  5. Relative Speedup dan Absolute Speedup digunakan secara bersamaan untuk mencoba kalkulasi terhadap metode yang digunakan


Kelebihan
  1. Relative Speedup lebih diunggulkan karna lebih cepat karena bekerja secara singlecore
  2. Komputasi paralel mampu memberikan kinerja komputasi yang lebih tinggi dibandingkan dengan kinerja komputasi sekuensial


Kekurangan
  1. MPI tidak portable untuk membentuk jaringan workstation karena MPI tidak mempunyai metode standar untuk memulai task pada host yang terpisah.
  2. Absolute Speedup yang bekerja secara multicore akan bekerja lebih lama karena dikerjakan secara bersama-sama
  3. Hasil Percobaan yang banyak memakan waktu dengan banyaknya percobaan pada beberapa komputer



Link Journal: http://publikasi.mercubuana.ac.id/index.php/jte/article/viewFile/2180/1428

Thursday, March 15, 2018

Parallel Computation



Parallel computing adalah penggunakan lebih dari satu CPU untuk menjalankan sebuah program secara simultan. Idealnya, parallel processing membuat program berjalan lebih cepat karena semakin banyak CPU yang digunakan, berbeda dengan komputasi tunggal yang hanya menggunakan satu CPU saja. Tetapi dalam prakteknya seringkali sulit membagi program sehingga dapat dieksekusi oleh CPU yang berbeda-beda tanpa berkaitan di antaranya, Maksudnya program dijalankan dengan banyak CPU secara bersamaan dengan tujuan untuk membuat program yang lebih baik dan dapat diproses dengan cepat. Dapat diambil kesimpulan bahwa pada parallel processing berbeda dengan istilah multitasking, yaitu satu CPU mengangani atau mengeksekusi beberapa program sekaligus, parallel processing dapat disebut juga dengan istilah parallel computing. Kemudian untuk perbedaan antara komputasi tunggal dengan komputasi paralel, bisa digambarkan pada gambar di bawah ini:

  
Gambar 1 Penyelesaian Sebuah Masalah pada Komputasi Tunggal
  
Gambar 2 Penyelesaian Sebuah Masalah pada Komputasi Paralel

Jenis-Jenis Komputer Paralel
Berdasarkan tingkatan perangkat keras yang mendukung paralelisme, secara umum komputer-komputer paralel dapat diklasifikasikan:
1.      Multicore processing
Merupakan prosesor yang memiliki beberapa unit pengeksekusi. Sebuah prosesor multicore dapat melakukan beberapa instruksi per siklus dari beberapa aliran instruksi.
2.      Symmetric multiprocessing
Merupakan sebuah sistem komputer dengan beberapa prosesor yang identik, dapat menggunakan struktur berbagi memori atau memori tersendiri yang saling terhubung melalui bus.
3.      Distributed computing
Merupakan sebuah sistem komputer dengan memori terdistribusi, dimana masing-masing elemen pemrosesan dihubungkan oleh jaringan.
4.      Cluster computing
Merupakan sekumpulan komputer yang bekerja sama yang dihubungkan oleh jaringan, sehingga dapat dilihat sebagai sebuah kesatuan, cluster komputer ini dikoordinasi oleh sebuah komputer induk yang bertugas untuk mendistribusikan pekerjaan kepada masing-masing komputer lainnya.
5.      Massive parallel processing
Merupakan sebuah komputer tunggal dengan banyak prosesor yang terhubung dalam sebuah jaringan. Di dalam MPP tiap CPU mempunyai memory, sistem operasi dan aplikasi yang sama. Tiap subsistem berkomunikasi satu dengan yang lainnya melalui interkoneksi berkecepatan tinggi.
6.      Grid computing
Grid computing memanfaatkan Internet dalam berkomunikasi antar komputer untuk menyelesaikan suatu permasalahan dan merupakan paralel yang paling terdistribusi.
7.      Specialized parallel computer Komputer paralel yang berfungsi untuk menyelesaikan tugas khusus.

A.    Parallelism Concept
Komputasi paralel merupakan salah satu teknik komputasi, dimana proses komputasinya dilakukan oleh beberapa resources (komputer) yang independen secara bersamaan. Komputasi paralel biasanya diperlukan pada saat terjadinya pengolahan data dalam jumlah besar atau dalam memenuhi proses komputasi yang sangat banyak. Selanjutnya, komputasi paralel ini juga dapat ditemui dalam kasus kalkulasi numerik dalam penyelesaian persamaan matematis di bidang fisika kimia dll. Dalam menyelesaikan suatu masalah, komputasi paralel memerlukan infrastruktur mesin paralel yang terdiri dari banyak komputer yang dihubungkan dengan jaringan dan mampu bekerja secara pararel, untuk itu diperlukan perangkat lunak pendukung yang biasa disebut sebagai middleware yang berperan untuk mengatur distribusi pekerjaan antar node dalam satu mesin paralel.
kemudian pemakai harus membuat pemrograman paralel untuk merealisasikan komputasi. Hal ini disebabkan karena komputer-komputer tersebut tidak dapat berjalan secara otomatis, namun harus ada program/instruksi yang menjalankannya. Pemrograman paralel adalah teknik pemrograman komputer yang memungkinkan eksekusi perintah/operasi secara bersamaan, baik dalam komputer dengan satu ataupun banyak CPU. Bila komputer yang digunakan secara bersamaan tersebut dilakukan oleh komputer-komputer terpisah yang terhubung dalam suatu jaringan komputer lebih sering istilah yang digunakan adalah sistem terdistribusi. Tujuan utama dari pemrograman paralel adalah untuk meningkatkan performa komputasi. Semakin banyak hal yang bisa dilakukan secara bersamaan (dalam waktu yang sama), semakin banyak pekerjaan yang bisa diselesaikan.
Contoh penggunaan konsep ini pada kehidupan sehari-hari adalah pada pintu masuk/keluar jalan tol (jalan raya bebas hambatan). Biasanya pada pintu masuk/keluar jalan tol yang sepi gardu tol cenderung lebih sedikit dibandingkan pintu masuk/keluar jalan tol yang ramai, hal ini di maksudkan untuk mengurangi jumlah antrian kendaraan yang ingin melewati gardu tol tersebut, karena jika dalam satu waktu banyak kendaraan bisa di layani, maka akan mengurangi waktu antrian kendaraan.

B.     Distributed Processing
Pemrosesan terdistribusi merupakan proses pendistribusian pengolahan paralel dalam pemrosesan paralel menggunakan beberapa mesin. Jadi, bisa di bilang kemampuan dari suatu komputer-komputer yang dijalankan secara bersamaan untuk memecahkan suatu masalah dengan proses yang cepat.
Didistribusikan pengolahan paralel menggunakan pemrosesan paralel pada beberapa mesin. Salah satu contoh dari hal ini adalah bagaimana beberapa komunitas memungkinkan pengguna untuk mendaftar dan mendedikasikan komputer mereka sendiri untuk memproses beberapa data set yang diberikan kepada mereka oleh server. Ketika ribuan pengguna mendaftar untuk ini, banyak data dapat diproses dalam jumlah yang sangat singkat.
C.    Architectural Parallel Computer
1.      Single Instruction Single Data Stream (SISD)
Pada model ini hanya digunakan 1 processor saja. Oleh karena itu model ini bisa dikatakan sebagai model untuk komputasi tunggal. Pada computer jenis ini semua instruksi dikerjakan terurut satu demi satu, tetapi juga dimungkinkan adanya overlapping (tumpang tindih fungsi yang digunakan) dalam eksekusi setiap bagian instruksi (pipelining). Pada umumnya computer SISD berupa computer yang terdiri atas satu buah pemroses (single processor). Namun computer SISD juga mungkin memiliki lebih dari satu unit fungsional (modul memori, unit pemroses, dan lain-lain), selama seluruh unit fungsional tersebut berada dalam kendali sebuah unit pengendali. Contoh mesin SISD adalah PC tradisional atau mainframe yang tua.
2.      Single Instruction Multiple Data Stream (SIMD)
Pada computer SIMD terdapat lebih dari satu elemen pemrosesan yang dikendalikan oleh sebuah unit pengendali yang sama. Seluruh elemen pemrosesan menerima dan menjalankan instruksi yang sama yang dikirimkan unit pengendali, namun melakukan operasi terhadap himpunan data yang berbeda yang berasal dari aliran data yang berbeda pula. Contoh dari SIMD adalah prosesor larik (array processor) atau GPU.

3.      Multiple Instruction Single Data Stream (MISD)
Komputer jenis ini memiliki n unit pemroses yang masing-masing menerima dan mengoperasikan instruksi yang berbeda terhadap aliran data yang sama, dikarenakan setiap unit pemroses memiliki unit pengendali yang berbeda. Keluaran dari satu pemroses menjadi masukan bagi pemroses berikutnya. Belum ada perwujudan nyata dari computer jenis ini kecuali dalam bentuk prototype untuk penelitian dan tidak pernah dirilis secara massal.

4.      Multiple Instruction Multiple Data Stream (MIMD)
Pada sistem computer MIMD murni terdapat interaksi di antara n pemroses. Hal ini disebabkan seluruh aliran data dari dank e memori berasal dari space data yang sama bagi semua pemroses. Komputer MIMD bersifat tightly coupled (global memory) jika tingkat interaksi antara pemroses tinggi dan disebut loosely couple jika tingkat interaksi antara pemroses rendah. Komputer ini memiliki beberapa prosesor yang bersifat otonomus yang mampu melakukan instruksi yang berbeda pada data yang berbeda. Sistem terdistribusi umumnya dikenal sebagi MIMD, entah itu menggunakan satu ruangan memori secara bersama-sama atau sebuah ruangan memori yang terdistribusi.

D.    Pengantar Thread Programming
Sebuah thread di dalam pemrograman komputer adalah sebuah informasi terkait tentang penggunaan sebuah program tunggal yang dapat menangani beberapa pengguna secara bersamaan.Thread ini memungkinkan program untuk mengetahui bagaimana user masuk ke dalam program secara bergantian dan user akan masuk kembali menggunakan user yang berbeda. Multiple thread dapat berjalan bersamaan dengan proses lainnya membagi sumberdaya menjadi memori, disaat proses lain tidak membaginya.. Thread programming di bagi menjadi 2 yaitu:
1.      Static Threading
Teknik ini biasa digunakan untuk komputer dengan chip multiprocessors dan jenis komputer shared-memory lainnya. Teknik ini memungkinkan thread berbagi memori yang tersedia, menggunakan program counter dan mengeksekusi program secara independen. Sistem operasi menempatkan satu thread pada prosesor dan menukarnya dengan thread lain yang hendak menggunakan prosesor itu.
2.      Dynamic Multithreading
Teknik ini merupakan pengembangan dari teknik sebelumnya yang bertujuan untuk kemudahan karena dengannya programmer tidak harus pusing dengan protokol komunikasi, load balancing, dan kerumitan lain yang ada pada static threading. Concurrency platform ini menyediakan scheduler yang melakukan load balacing secara otomatis. Walaupun platformnya masih dalam pengembangan namun secara umum mendukung dua fitur : nested parallelism dan parallel loops.

E.     Pengantar Message Pasing, Open MP
Message Passing merupakan sebuah bentuk dari komunikasi yang digunakan di komputasi paralel, OOT (Object Oriented Programming) atau Pemrograman Berbasis Objek dan komunikasi interproses. MPI adalah sebuah standard pemrograman yang memungkinkan pemrogram untuk membuat sebuah aplikasi yang dapat dijalankan secara paralel. Proses yang dijalankan oleh sebuah aplikasi dapat dibagi untuk dikirimkan ke masing–masing compute node yang kemudian masing–masing compute node tersebut mengolah dan mengembalikan hasilnya ke komputer head node.

Kegunaan MPI yang lain adalah :
1.      menulis kode paralel secara portable
2.      mendapatkan performa yang tinggi dalam pemrograman parallel
3.      menghadapi permasalahan yang melibatkan hubungan data irregular atau dinamis yang tidak  begitu cocok dengan model data paralel.

OpenMP Terdiri dari satu set perintah kompiler, perpustakaan rutinitas, dan variabel lingkungan yang mempengaruhi run-time. Banyak Aplikasi dibangun dengan model hibrida pemrograman paralel  dapat dijalankan pada komputer cluster dengan menggunakan OpenMP dan Message Passing Interface (MPI), atau lebih transparan dengan menggunakan ekstensi OpenMP non-shared memory systems.

F.     Pengantar Pemograman CUDA GPU
Sebelum masuk pada pembahasan CUDA kita harus mempelajari GPU terlebih dahulu. GPU dalah sebuah processor khusus untuk memepercepat dan mengubah memori untuk mempercepat pemrosesan gambar. GPU ini sendiri biasanya berada di dalam graphic card komputer ataupun laptop.
CUDA (Compute Unified Device Architecture) adalah suatu skema yang dibuat oleh NVIDIA agar NVIDIA selaku GPU (Graphic Processing Unit) mampu melakukan komputasi tidak hanya untuk pengolahan grafis namun juga untuk tujuan umum. Jadi dengan adanya CUDA kita dapat memanfaatkan banyak prosesor dari NVIDIA untuk melakukan proses perhitungan ataunpun komputasi yang banyak.


Sumber referensi:
http://chachados.blogspot.co.id/2013/07/parallel-computation.html


Thursday, January 11, 2018

Konfigurasi Firewall pada UBUNTU

UFW PADA UBUNTU
UFW, atau Uncomplicated FireWall, adalah sebuah interface untuk iptables yang dibuat dengan tujuan menyederhanakan proses untuk konfigurasi firewall. Sementara iptables adalah alat yang kuat dan fleksibel, tapi mungkin sulit bagi pemula untuk belajar bagaimana menggunakan iptables untuk mengkonfigurasikan firewall.


KONFIGURASI FIREWALL DI UBUNTU DENGAN UFW
UFW sebenarnya sudah terinstal secara default pada Ubuntu. Jika anda sudah menghapusnya, anda bisa menginstallnya kembali dengan cara menjalankan perintah berikut:

Buka ubuntu dan buka terminal

 Lalu ketik command sudo apt-get install ufw kemudian akan muncul tampilan seperti diatas

Kemudian ketik sudo nano /etc/default/ufw dan kemudian tekan enter dan kemudian ubah IPV6=no menjadi IPV6=yes kemudian tekan CTRL+X kemudian tekan Y selanjutnya tekan Enter


Selanjutnya check UFW status dan rulesnya dengan menekan sudo ufw status verbose kemudian tekan enter jika status inactive berarti ufw belum diaktifkan

Aktifkan ufwnya dengan menggunakan command ufw enable kemudian tekan enter dan kemudian muncul seperti tampilan diatas


Selanjutnya gunakan pengaturan default untuk firewall dengan command
Sudo ufw default deny incoming
Sudo ufw default allow outgoing


Selanjutnya buat rule untuk mengatur segala koneksi

Allow koneksi UFW
Berikut ini cara untuk menambahkan perizinan traffic pada rule, dan berikut beberapa contoh service yang sangat umum atau yang disarankan dan perlu untuk dizinkan. Jika ada service lainya yang ingin anda izinkan anda bisa menambahkan rule

HTTP – Port 80

Mengizinkan koneksi HTTP port 80

HTTPS—port 443

Mengizinkan koneksi HTTPS

 FTP – Port 21
Mengizinkan koneksi FTP


Port Range
mengizinkan port range pada tcp dan udp pada 6000:6007


IP Address

Mengizinkan dari IP dari konekti tertentu



Mengizinkan IP dari port tertentu

Subnet
Jika Anda ingin mengizinkan subnet IP Address, Anda dapat melakukannya dengan menggunakan notasi CIDR untuk menentukan netmask. Sebagai contoh, jika Anda ingin mengizinkan semua alamat IP mulai dari 192.100.10.1 ke 192.100.10.254 kita bisa menggunakan perintah ini:

Atau gambar dibawah untuk menggunakan port tertentu




Deny Connection
Berikut merupakan cara untuk memblokir koneksi dimana koneksi tersebut tidak akan bisa diakses sesuai dengan perintah yang digunakan

Berikut adalah perintah untuk memblokir koneksi dari http port 80

Berikut adalah perintah untuk memblokir koneksi dari IP yang ditentukan

Reject Connection
Berikut merupakan cara untuk mereject koneksi yang digunakan, hampir sama seperti deny connection hanya saja perintah yang berbeda, berikut adalah perintahnya

Berikut adalah perintah untuk mereject koneksi dari http port 80


Berikut adalah perintah untuk mereject koneksi dari IP yang ditentukan

Sekian tutorial dari saya konfigurasi firewall di ubuntu