Selasa, 01 Juli 2014

Parallel Processing


Paralel Processing

Saat ini penggunaan komputer untuk menyelesaikan masalah sudah merasuk ke segala bidang. Hal ini karena komputasi dianggap lebih cepat dibandingkan dengan penyelesaian masalah secara manual. Seiring dengan hal tersebut, semakin dituntut proses komputasi yang semakin cepat. Untuk meningkatkan kecepatan proses komputasi, dapat ditempuh dua cara :
1.  peningkatan kecepatan perangkat keras,
2. peningkatan kecepatan perangkat lunak.

Komponen utama perangkat keras komputer adalah processor. Saat ini, peningkatan kecepatan processor benar-benar luar biasa. Sebenarnya  ada banyak cara komputasi yang bisa kita gunakan dalam parallel processing, salah satunya komputasi parallel.

Pemrosesan paralel (parallel processing) 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. Tetapi dalam praktek, seringkali sulit membagi program sehingga dapat dieksekusi oleh CPU yang berbea-beda tanpa berkaitan di antaranya.

Komputasi paralel adalah salah satu teknik melakukan komputasi secara bersamaan dengan memanfaatkan beberapa komputer secara bersamaan.


Intinya Adalah :

“Komputasi paralel merupakan salah satu teknik melakukankomputasi secara bersamaan dengan memanfaatkan beberapa komputer independen secara bersamaan. Ini umumnya diperlukan saat kapasitas yang diperlukan sangat besar, baik karena harus mengolah data dalam jumlah besar (di industri keuangan, bioinformatika, dll) ataupun karena tuntutan proses komputasi yang banyak. Kasus kedua umum ditemui di kalkulasi numerik untuk menyelesaikan persamaan matematis di bidang fisika (fisika komputasi), kimia (kimia komputasi) dl”

Adapun yang membantu pemrosesan komputasi parallel untuk bekerja lebih cepat adalah sebagai berikut :

Parallel Virtual Machine (PVM)

        PVM adalah suatu perangkat lunak yang mampu mensimulasikan pemrosesan paralel pada jaringan komputer. Saat ini ada dua bahasa pemrograman yang didukung oleh PVM, yaitu FORTRAN dan C. Versi PVM yang paling umum digunakan berbasis UNIX, meskipun ada juga PVM berbasis Windows. Cara kerja PVM adalah dengan membuat (spawning) proses-proses anak yang akan dikirim ke processor-processor yang tersebar di jaringan komputer. Dengan PVM bisa ditentukan berapa jumlah processor yang akan dilibatkan dalam proses komputasi.

Network File System (NFS)

        Salah satu protocol yang dipergunakan pada komputasi parallel adalah Network File System (NFS). NFS adalah protokol yang dapat membagi sumber daya melalui jaringan. NFS dibuat untuk dapat berdiri sendiri baik dari segi mesin, jenis sistem operasi maupun jenis protokol transport yang digunakan. NFS memperbolehkan user yang telah diijinkan untuk mengakses file-file yang berada di remote host seperti mengakses file yang berada di lokal. Kegunaan dari NFS pada komputasi parallel adalah untuk melakukan sharing data sehingga setiap node slave dapat mengakses program yang sama pada node master

Pemrograman Paralel
          Pemrograman paralel adalah teknik pemrograman komputer yang memungkinkan eksekusi perintah/operasi secara bersamaan (komputasi paralel), baik dalam komputer dengan satu (prosesor tunggal) ataupun banyak (prosesor ganda dengan mesin paralel) CPU. Bila komputer yang digunakan secara bersamaan tersebut dilakukan oleh computer terpisah yang terhubung dalam suatu jaringan komputer lebih sering istilah yang digunakan adalah sistem terdistribusi (distributed computing).
        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. Analogi yang paling gampang adalah, bila anda dapat merebus air sambil memotong-motong bawang saat anda akan memasak, waktu yang anda butuhkan akan lebih sedikit dibandingkan bila anda mengerjakan hal tersebut secara berurutan (serial). Atau waktu yg anda butuhkan memotong bawang akan lebih sedikit jika anda kerjakan berdua.


        Performa dalam pemrograman paralel diukur dari berapa banyak peningkatan kecepatan (speed up) yang diperoleh dalam menggunakan tehnik paralel. Secara informal, bila anda memotong bawang sendirian membutuhkan waktu 1 jam dan dengan bantuan teman, berdua anda bisa melakukannya dalam 1/2 jam maka anda memperoleh peningkatan kecepatan sebanyak 2 kali.

Peningkatan Kecepatan
Peningkatan kecepatan dapat diformulasikan dalam persamaan berikut ini

        Dimana  T1 adalah waktu yang dibutuhkan untuk menyelesaikan pekerjaan (program komputer) bila dijalankan dalam satu komputer. Dan Tj adalah waktu yang dibutuhkan jika pekerjaan dikerjakan bersamaan oleh beberapa komputer.
        Ada limitasi dalam usaha membuat suatu program komputer berjalan lebih efisien melalui peningkatan kecepatan, hukum yang menetapkan batasan ini dikenal sebagai Hukum Amdahl. Ide dari hukum amdahl ini adalah bahwa anda hanya akan bisa meningkatkan efisiensi program komputer anda, sebatas pada bagian tertentu dari program tersebut yang dapat di paralelkan. Sementara bagian yang memang harus dilaksanakan secara berurutan, akan menjadi penentu performa akhir.
        Kembali ke analogi memasak tadi, bila anda harus menggunakan sarung tangan sebelum menyalakan kompor ataupun memotong bawang, maka waktu yang anda butuhkan untuk memakai sarung tangan ini adalah waktu serial, yang tidak dapat dihindari. Sementara waktu untuk memasak dan memotong bawang tadi adalah bagian yang bisa diparalelkan.

Perkembangan di Indonesia
        Di Indonesia, usaha untuk membangun infrastruktur mesin paralel sudah dimulai sejak era 90-an, meski belum pada tahap serius dan permanen. Namun untuk pemrograman paralel sudah sejak awal menjadi satu mata-kuliah wajib di banyak perguruan tinggi terkait. Baru pada tahun 2005 dimulai pembuatan infrastruktur mesin paralel permanen, misalnya yang dikembangkan oleh Grup Fisika Teoritik dan Komputasi di P2 Fisika LIPI. Didorong oleh perkembangan pemrograman paralel yang lambat, terutama terkait dengan sumber daya manusia (SDM) yang menguasainya, mesin paralel LIPI ini kemudian dibuka untuk publik secara cuma-cuma dalam bentuk LIPI Public Cluster (LPC)[3]. Saat ini LPC telah dikembangkan lebih jauh menjadi gerbang komputasi GRID di Indonesia dengan kerjasama global menjadi IndoGRID.
        Pada tahun berikutnya, dengan dukungan dana dari proyek Inherent DiktiFasilkom UI juga membangun mesin paralel[4]. Sementara itu pada tahun 2009, ITB membuat kluster hibrid CPU dan GPU yang pertama di Indonesia dengan kemampuan hingga 60 inti CPU dan 1920 inti GPU.

Hubungan antara komputasi modern dengan paralel processing
Komputasi Paralel merupakan teknik untuk melakukan komputasi secara bersamaan dengan memanfaatkan beberapa komputer yang independen secara bersamaan. Biasanya digunakan untuk kapasitas yang pengolahan data yang sangat besar (lingkungan industri, bioinformatika dll) atau karena tuntutan komputasi yang banyak. Pada kasus yang kedua biasanya ditemukannya kalkulasi numerik untuk menyelesaikan persamaan matematis di bidang fisika (fisika komputasi), kimia (kimai komputasi) dll. Untuk melakukan berbagai jenis komputasi paralel diperlukan infrastruktur mesin paralel yang terdiri dari banyak komputer yang nantinya dihubungkan dengan jaringan dan mampu bekerja secara paralel untuk menyelesaikan suatu masalah. Untuk itu maka digunakannya perangkat lunak pendukung yang biasa disebut middleware yang berperan untuk mengatur distribusi antar titik dalam satu mesin paralel. Selanjutnya pemakai harus membuat pemrograman paralel untuk merealisasikan komputasi. Salah satu middleware yang asli dikembangkan di Indonesia adalah OpenPC yang dipelopori oleh GFTK LIPI dan diimplementasikan di LIPI Public Center.

Komputasi paralel berbeda dengan multitasking. Multitasking itu sendiri adalah komputer dengan processor tunggal yang dapat mengeksekusi beberapa tugas secara bersamaan. Sedangkan komputasi paralel menggunakan beberapa processor atau komputer. Selain itu komputasi paralel tidak menggunakan arsitektur Von Neumann. Untuk lebih memperjelas lebih dalam mengenai perbedaan komputasi tunggal (menggunakan 1 processor) dengan komputasi paralel (menggunakan beberapa processor), maka kita harus mengetahui 4 model komputasi yang digunakan, yaitu:
  • SIMD
  • SIMD
  • MISD
  • MIMD

SISD
Merupakan singkatan dari Single Instruction, Single Data yaitu satu-satunya yang menggunakan arsitektur Von Neumann, karena pada model ini hanya menggunakan 1 processor saja. Oleh karena itu model ini dikatakan sebagai model untuk komputasi tunggal. Sedangkan ketiga model lainnya merupakan komputasi paralel yang menggunakan beberapa processor. Beberapa contoh komputer yang menggunakan model SISD adalah UNIVAC1, IBM 360, CDC 7600, Cray 1 dan PDP 1.
SIMD
Merupakan singkatan dari Single Instruction, Multiple Data. Model ini menggunakan banyak processor dengan instruksi yang sama, namun dengan data yang berbeda. Sebagai contoh kita ingin mencari angka 27 pada deretan angka yang terdiri dari 100 angka, dan kita menggunakan 5 processor. Pada setiap processor kita menggunakan algoritma atau perintah yang sama, namun data yang diproses berbeda. Misalnya processor 1 mengolah data dari deretan / urutan pertama hingga urutan ke 20, processor 2 mengolah data dari urutan 21 sampai urutan 40, begitu pun untuk processor-processor yang lain. Beberapa contoh komputer yang menggunakan model SIMD adalah ILLIAC IV, MasPar, Cray X-MP, Cray Y-MP, Thingking Machine CM-2 dan Cell Processor (GPU).
MISD
Merupakan singkatan dari Multiple Instruction, Single Data. MISD menggunakan banyak processor dengan instruksi yang berbeda namun mengolah data yang sama. Hal ini merupakan kebalikan dari model SIMD. Sebagai contoh, dengan menggunakan kasus yang sama pada contoh model SIMD namun cara untuk menyelesaikannya yang berbeda. Pada MISD jika pada komputer pertama, kedua, ketiga, keempat dan kelima sama-sama mengolah data dari urutan 1-100, namun algoritma yang digunakan untuk teknik pencariannya berbeda di setiap processor. Sampai saat ini belum ada komputer yang menggunakan model MISD.
MIMD
Pada Multiple Instruction, Multiple Data biasanya menggunakan banyak processor dengan setiap processor memiliki instruksi yang berbeda dan mengolah data yang berbeda. Namun banyak komputer yang menggunakan model MIMD juga memasukkan komponen untuk model SIMD. Beberapa komputer yang menggunakan model MIMD adalah IBM POWER5, HP/Compaq AlphaServer, Intel IA32, AMD Opteron, Cray XT3 dan IBM BG/L.

Kesimpulan:
Artikel diatas sudah menjelaskan secara singkat tentang pengertian dari parallel processing. Pemrosesan paralel (parallel processing) adalah penggunakan lebih dari satu CPU untuk menjalankan sebuah program secara simultan. Didalam artikel diatas juga diberikan gambaran sedikit tentang perkembangan palalel processing di Indonesia. Tapi dalam artikel diatas, kurang diberitahu kelebihan dan kelemahan dari hubungan antara parallel processing dengan komputasi modern.

sumber: http://elokputri.blogspot.com/2012/03/hubungan-antara-komputasi-modern-dengan.html
http://rockawood.blogspot.com/2012/04/parallel-processing.html

Selasa, 06 Mei 2014

Komputasi Modern

Komputasi Modern

Komputasi merupakan sebuah ilmu yang mempelajari tentang cara-cara untuk memecahkan suatu masalah terhadap data input dengan sebuah algoritma. Data input disini adalah sebuah masukan yang berasal dari luar lingkungan sistem. Komputasi ini merupakan bagian dari ilmu komputer berpadu dengan ilmu matematika. Komputasi modern bisa disebut sebuah konsep sistem yang menerima intruksi-intruksi dan menyimpannya dalam sebuah memory, memory disini bisa juga dari memory komputer. Oleh karena pada saat ini kita melakukan komputasi menggunakan komputer maka bisa dibilang komputer merupakan sebuah komputasi modern. Dalam kerjanya komputasi modern menghitung dan mencari solusi dari masalah yang ada, dan perhitungan yang dilakukan itu meliputi:
1.    Akurasi
2.    Kecepatan
3.    ProblemVolume Besar
4.    Modelling
5.    Kompleksitas


Sejarah Komputasi Modern

Dalam perkembangan komputasi modern, kita tidak bisa melupakan begitu saja orang dibalik perkembangan komputasi modern yang merubah semua pekerjaan jadi lebih mudah. Sejarah komputasi dimulai dari seseorang ilmuan yang ternama di bidang teknologi. Permulaan komputasi modern dimulai pada saat tahun 1926 oleh ilmuan yang berasal dari hungaria yang bernama John Von Neumann. 




Von Neumann seorang ilmuan yang belajar dari Berlin dan Zurich dan mendapatkan diploma pada bidang teknik kimia pada tahun 1926. Pada tahun yang sama dia mendapatkan gelar doktor pada bidang matematika dari Universitas Budapest. Berkat keahlian dan kepiawaiannya Von Neumann dalam bidang teori game yang melahirkan konsep seluler automata, teknologi bom atom, dan komputasi modern yang kemudian melahirkan komputer. Kegeniusannya dalam matematika telah terlihat semenjak kecil dengan mampu melakukan pembagian bilangan delapan digit (angka) di dalam kepalanya. Setelah mengajar di Berlin dan Hamburg, Von Neumann pindah ke Amerika pada tahun 1930 dan bekerja di Universitas Princeton serta menjadi salah satu pendiri Institute for Advanced Studies. Dipicu ketertarikannya pada hidrodinamika dan kesulitan penyelesaian persamaan diferensial parsial nonlinier yang digunakan, Von Neumann kemudian beralih dalam bidang komputasi. Sebagai konsultan pada pengembangan ENIAC, dia merancang konsep arsitektur komputer yang masih dipakai sampai sekarang. Arsitektur Von Nuemann adalah komputer dengan program yang tersimpan (program dan data disimpan pada memori) dengan pengendali pusat, I/O, dan memori. berdasarkan beberapa definisi di atas, maka komputasi modern dapat diartikan sebagai suatu pemecahan masalah berdasarkan suatu inputan dengan menggunakan algoritma dimana penerapannya menggunakan berbagai teknologi yang telah berkembang seperti komputer.

Berikut ini beberapa contoh komputasi modern sampai dengan lahirnya ENIAC :
  • Konrad Zuse’s electromechanical “Z mesin”.Z3 (1941) sebuah mesin pertama menampilkan biner aritmatika, termasuk aritmatika floating point dan ukuran programmability. Pada tahun 1998, Z3 operasional pertama di dunia komputer itu di anggap sebagai Turing lengkap.
  • Berikutnya Non-programmable Atanasoff-Berry Computer yang di temukan pada tahun 1941 alat ini menggunakan tabung hampa berdasarkan perhitungan, angka biner, dan regeneratif memori kapasitor.Penggunaan memori regeneratif diperbolehkan untuk menjadi jauh lebih seragam (berukuran meja besar atau meja kerja).
  • Selanjutnya komputer Colossus ditemukan pada tahun 1943, berkemampuan untuk membatasi kemampuan program pada alat ini menunjukkan bahwa perangkat menggunakan ribuan tabung dapat digunakan lebih baik dan elektronik reprogrammable.Komputer ini digunakan untuk memecahkan kode perang Jerman.
  • The Harvard Mark I ditemukan pada 1944, mempunyai skala besar, merupakan komputer elektromekanis dengan programmability terbatas.
  • Lalu lahirlah US Army’s Ballistic Research Laboratory ENIAC ditemukan pada tahun 1946, komputer ini digunakan unutk menghitung desimal aritmatika dan biasanya disebut sebagai tujuan umum pertama komputer elektronik (ENIAC merupaka generasi yang sudah sangat berkembang di zamannya sejak komputer pertama Konrad Zuse ’s Z3 yang ditemukan padatahun 1941).

Jenis-Jenis Komputasi Modern
Komputasi modern mempunyai 3 jenis, yaitu :

1. Mobile Computing atau Komputasi Bergerak
Mobile computing (komputasi bergerak) merupakan kemajuan teknologi komputer sehingga dapat berkomunikasi menggunakan jaringan tanpa menggunakan kabel serta mudah dibawa atau berpindah tempat, tetapi berbeda dengan komputasi nirkabel. Berdasarkan penjelasan tersebut, untuk kemajuan teknologi ke arah yang lebih dinamis membutuhkan perubahan dari sisi manusia maupun alat. Contoh dari mobile computing adalah GPS, smart phone, dan sebagainya.

2. Grid Computing
Komputasi grid memanfaatkan kekuatan pengolahan idle berbagai unit komputer, dan menggunakan kekuatan proses untuk menghitung satu pekerjaan. Pekerjaan itu sendiri dikontrol oleh satu komputer utama, dan dipecah menjadi beberapa tugas yang dapat dilaksanakan secara bersamaan pada komputer yang berbeda. Tugas-tugas ini tidak perlu saling eksklusif, meskipun itu adalah skenario yang ideal. Sebagai tugas lengkap pada berbagai unit komputasi, hasil dikirim kembali ke unit pengendali, yang kemudian collates itu membentuk keluaran kohesif.
Keuntungan dari komputasi grid adalah dua kali lipat: pertama, kekuatan pemrosesan yang tidak digunakan secara efektif digunakan, memaksimalkan sumber daya yang tersedia dan, kedua, waktu yang dibutuhkan untuk menyelesaikan pekerjaan besar berkurang secara signifikan.
Idealnya kode sumber harus direstrukturisasi untuk membuat tugas-tugas yang saling eksklusif adalah sebagai mungkin. Itu tidak berarti bahwa mereka tidak bisa saling bergantung, tetapi pesan yang dikirim antara tugas-tugas meningkatkan faktor waktu. Satu pertimbangan penting saat membuat pekerjaan komputasi grid adalah bahwa apakah kode dijalankan serial atau paralel tugas, hasil dari keduanya harus selalu sama di setiap situasi.
 
3. Cloud Computing atau Komputasi Awan
Cloud computing adalah perluasan dari konsep pemrograman berorientasi objek abstraksi. Abstraksi, sebagaimana dijelaskan sebelumnya, menghapus rincian kerja yang kompleks dari visibilitas. Semua yang terlihat adalah sebuah antarmuka, yang menerima masukan dan memberikan output. Bagaimana output ini dihitung benar-benar tersembunyi.
Sebagai contoh, seorang sopir mobil tahu bahwa roda kemudi dengan memutar arah mobil yang mereka ingin pergi; atau yang menekan pedal gas akan menyebabkan mobil untuk mempercepat. Sopir biasanya tidak peduli tentang bagaimana arah dari roda kemudi dan pedal gas tersebut diterjemahkan ke dalam gerakan yang sebenarnya dari mobil. Oleh karena itu, rincian ini diabstraksikan dari sopir.
Cloud serupa, melainkan menerapkan konsep abstraksi dalam lingkungan komputasi fisik, dengan menyembunyikan proses yang benar dari pengguna. Dalam lingkungan komputasi awan, data bisa berada pada beberapa server, rincian koneksi jaringan yang tersembunyi dan pengguna tidak ada yang tahu. Bahkan, komputer awan awan dinamakan demikian karena sering digunakan untuk menggambarkan pengetahuan eksak tentang pekerjaan batin. Cloud komputasi berat berasal dari paradigma Unix memiliki beberapa elemen, masing-masing yang sangat baik pada satu tugas tertentu, daripada memiliki satu elemen besar yang tidak baik.

Contoh implementasi dalam bidang ilmu Fisika :

Pada bidang fisika:

Fisika bukan hanya melulu berurusan dengan rumus. Bukan hanya dengan perhitungan yang rumit dan terkadang membuat anak-anak SMA merasa kesulitan mempelajari Fisika. Fisika semestinya dipandang sebagai suatu ide tentang suatu kejadian fisis sehari-hari yang kita alami setiap hari, dan bukan ribetnya rumus dan perhitungannya.
Fisika memiliki suatu cabang keilmuan (bisa dikatakan demikian) yang memanfaatkan suatu tools yang dapat dimanfaatkan untuk membuat perhitungan menjadi lebih mudah dan cepat. Tools itu adalah komputer dan cabang dari Fisika itu adalah Fisika Komputasi.
Komputer dapat dipandang kini bukan hanya untuk mengolah data praktikum atau membuat dokumen ilmiah, namun bisa digunakan untuk menghitung suatu perhitungan yang rumit, yang sulit (bahkan mustahil) diselesaikan dengan tangan (secara analitik).
Komputer dapat melakukan perhitungan dengan lebih cepat dibandingkan manusia. Secepat-cepatnya manusia menghitung, komputer akan selalu lebih cepat. Dengan demikian, para fisikawan dapat lebih berkonsentrasi pada konsep dan ide yang lebih besar dan menyerahkan perhitungan kepada komputer.

Sumber :