Kamis, 16 Mei 2013

4. Parallel Computation

 
a. Parallelism Concept
  Konsep dari komputasi paralel sebenarnya sederhana yaitu penggunaan lebih dari satu CPU untuk menjalankan sebuah program.  Hal ini dilakukan oleh parallel processing yang membuat program berjalan lebih cepat karena semakin banyak CPU yang digunakan. Untuk melakukan aneka jenis komputasi paralel ini diperlukan infrastruktur mesin paralel yang terdiri dari banyak komputer yang dihubungkandengan jaringan dan mampu bekerja secara paralel untuk menyelesaikan satu masalah. Untuk itu diperlukan aneka perangkat lunak pendukung seperti middleware yang berperan untuk mengatur distribusi pekerjaan antar node dalam satu mesin paralel. Selanjutnya pemakai harus membuat pemrograman paralel untuk merealisasikan komputasi.
­­­­­­­­   Seorang tokoh bernama Michael J Quinn membagi paralelism ke dalam 2 jenis yaitu yang pertama data parallelism yang penerapan operasinya sama secara simultam terhadap lemen-elemen dari kumpulan data, yang kedua ialah control parallelism yaitu penerapan operasi-operasi berbeda terhadap elemen-elemen data yang berbeda secara bersamaan. Pada control parallelism dapat terjadi aliran data antar proses-proses dan kemungkinan terhadi aliran data yag kompleks/rumit

 b. Distributed Processing 
   Dalam Parallel Computation ada yang dinamakan distributed processing konsepnya ialah mengerjakan semua proses pengolahan data secara bersama antara komputer pusat dengan beberapa komputer yang lebih kecil setelah itu akan saling terhubung melalui jalur komunikasi. Setiap komputer memiliki prosesor mandiri sehingga mampu mengolah sebagian data secara terpisah, kemudian hasil pengolahan tadi digabungkan menjadi satu penyelesaian total. Jika salah satu prosesor mengalami kegagalan atau masalah yang lain akan mengambil alih tugasnya.

 c. Architectural Parallel Computer
     Komputer paralel diklasifikasikan ke dalam empat kelompok komputer oleh M. J. Flynn yang disebut dengan Taksonomi Flynn. Flynn membaginya berdasarkan konsep aliran data (data stream) dan aliran instruksi (instruction stream).
  •  SISD (Single Instruction stream, Single Data stream) : komputer tunggal yang mempunyai satu unit kontrol, satu unit prosesor dan satu unit memori. 
  • SIMD (Single Instruction stream, Multiple Data stream) : komputer yang mempunyai beberapa unit prosesor di bawah satu supervisi satu unit common control. Setiap prosesor menerima instruksi yang sama dari unit kontrol, tetapi beroperasi pada data yang berbeda. 
  • MISD (Multiple Instruction stream,Single Data stream) : sampai saat ini struktur ini masih merupakan struktur teoritis dan belum ada komputer dengan model ini. 
  • MIMD (Multiple Instruction stream, Multiple Data stream) : organisasi komputer yang memiliki kemampuan untuk memproses beberapa program dalam waktu yang sama. Pada umumnya multiprosesor dan multikomputer termasuk dalam kategori ini.
d.  Pengantar Massage Passing, OpenMP
  •  Message Passing adalah suatu standar dan message passing interface portabel system. Grup penelitian dari akademi dan industry mendesain da mengembangkan fungsi dan macam-macam dari komputer paralel. Hal ini berguna untuk memperbesar jangkauan kepada user menulis portable program message passing pada Fortran 77 dan bahasa C dari core library routine. 
  • OpenMP merupakan API yang mendukung multiplatform untuk pemrograman multiprocessing shared memory pada C, C++, dan Fortran. OpenMP Ini terdiri dari kumpulan compiler directive, library routines, dan environment variable yang akan membuat run time pada semua keadaan.
 e. Pengantar Pemrograman CUDA GPU 
CUDA (Compute Unified Device Architecture)  dan GPU (Graphic Processing Unit) memang saling berbuhungan CUDA sendiri merupakan suatu skema yang dibuat oleh NVIDIA. NVIDIA disini merupakan GPU yang mampu melakukan komputasi tidak hanya untuk pengolahan grafis namun juga untuk tujuan umum. Jadi, dengan CUDA, kita dapat memanfaatkan cukup banyak processor yang dimiliki oleh NVIDIA untuk berbagai perhitungan. Hal ini berkiblat pada konsep paralel komputer.
Sebagai tahap awal dalam belajar pemrograman paralel dengan mengunakan sebaiknya para programmer menggunakan bahasa pemrograman C atau C++. GPU telah mengembangkan untuk memfasilitasi general-purpose computin. Beberapa hal yang perlu dipersiapkan dalam penggunaan CUDA C untuk membuat suatu aplikasi adalah sebagai berikut.
  • CUDA-enabled graphics processor 
  • NVIDIA device driver
  • CUDA development toolkit
  • Standard C compiler

sumber
http://www.lukibsubekti.com/2012/06/pemrograman-paralel-dengan-cuda.html
http://behelzleenha.blogspot.com/2012/04/tugas-softskill-pengantar-komputasi_04.html
http://xditx32.blogspot.com/2012/09/pengertian-multiprocessingmultitasking.html
http://toosa.staff.gunadarma.ac.id/Downloads/files/29712/kuliah_1_pendahuluan.pdf
http://bellemusiquechii.blogspot.com/2013/04/openmp-mpi-dan-cuda-algoritma-paralel.html



Selasa, 14 Mei 2013

3. Pengantar Quantum Computation



A.  Pendahuluan
Pada awalnya ide mengenai komputer kuantum berasal dari beberapa fisikawan antara lain Charles H. Bennett dari IBM, Paul A. Benioff dari Argonne National Laboratory, Illinois, David Deutsch dari University of Oxford, dan Richard P. Feynman dari California Institute of Technology (Caltech). Berfokus kepada sebuah alat hitung yang menggunakan fenomena mekanika kuantum seperti superposisi dan keterkaitan untuk melakukan operasi data. Prinsip dasar komputer kuantum adalah bahwa sifat kuantum dari partikel dapat digunakan untuk mewakili data dan struktur data, dan bahwa mekanika kuantum dapat digunakan untuk melakukan operasi dengan data ini.  

Dalam hal ini untuk mengembangkan komputer dengan sistem kuantum diperlukan suatu logika baru yang sesuai dengan prinsip kuantum. Sejumlah arsitektur komputasi seperti komputer optik walaupun menggunakan superposisi klasik dari gelombang elektromagnetik, namun tanpa sejumlah sumber kuantum mekanik yang spesifik seperti keterkaitan, maka tak dapat berpotensi memiliki kecepatan komputasi sebagaimana yang dimiliki oleh komputer kuantum. Komputer kuantum berbeda dengan komputer DNA dan komputer klasik berbasis transistor, walaupun mungkin komputer jenis tersebut menggunakan prinsip kuantum mekanik.

B. Entanglement 
Entanglement disebut-sebut sebagai kejadian yang sangat aneh di dunia komputer kuantum. Misal terdapat 2 partikel di tempat yang berjauhan dan tidak saling berhubungan. Dengan melakukan pengukuran pada salah satu partikel, berarti kita telah mengubah fungsi gelombang partikel yang lainnya. Padahal antara 2 partikel tersebut tidak ada hubungan. Entanglement adalah efek mekanik kuantum yang mengaburkan jarak antara partikel individual sehingga sulit menggambarkan partikel tersebut terpisah. Para ahli fisika dari University of Maryland telah satu langkah lebih dekat ke komputer kuantum dengan mendemonstrasikan eksistensi entanglement antara dua gurdi kuantum, masing-masing diciptakan dengan tipe sirkuit padat yang dikenal sebagai persimpangan Josephson. 

C. Pengoperasian Data Qubit dan Quantum Gates 
Seperti yang kita tahu pada komputer klasik data dihitung dalam bentuk bit sedangkan dalam quantum computation data dihitung dalam qubit (quantum bit). Sebuah bit reguler hanya terdiri dari satu bagian data yaitu 0 dan 1, tapi sebuah qubit dapat terdiri dari superposisi 0 dan 1. Satu atom dipilih untuk merepresentasikan satu bit informasi maka menurut mekanika kuantum di samping kedua keadaan elektronik yang berbeda, atom tersebut dapat pula berada dalam keadaan superposisi (paduan) dua keadaan tersebut. 

Atom tersebut dapat berada pada keadaan 0 dan 1 secara serentak. Secara umum, satu sistem kuantum dengan dua keadaan atau qubit dapat dibuat berada dalam suatu keadaan superposisi dari kedua keadaan logikanya. Suatu komputer kuantum dalam satu langkah komputasi dapat melakukan operasi matematis pada 2N input berlainan yang tersimpan dalam superposisi koheren N qubit. Untuk rangkaian dasar yang membentuk komputer seperti yang kita tahu standar komputer menggunakan gerbang logika, seperti operator Boolean (dan, atau, tidak, dan sebagainya). Komputer kuantum menggunakan gerbang kuantum yang selalu reversibel, tidak seperti gerbang logika.

D. Algoritma Shor 
Sebuah komputer bekerja didasarkan hukum-hukum fisika klasik. Informasi didefinisikan secara positif, direpresentasikan secara material dan diproses berdasarkan hukum-hukum fisika klasik. Kemudian para fisikawan berusaha mengembangkan sebuah sistem logika baru yang mengikuti hukum-hukum fisika kuantum. Sistem logika baru ini disebut dengan logika kuantum. Sistem logika kuantum berbeda sama sekali dengan sistem logika yang selama ini dipakai, yaitu sistem logika yang dikembangkan oleh Aristoteles. Sebuah komputer kuantum tidaklah sama dengan komputer klasik.

Hal ini tidak dalam hal kecepatan saja, namun juga dalam hal pemrosesan informasi. Sebuah komputer kuantum dapat mensimulasikan sebuah proses yang tidak dapat dilakukan oleh komputer klasik. Hal ini membuat para ilmuwan harus memiliki paradigma baru dalam hal permrosesan informasi. Untuk melakukan pemrosesan informasi kemudian dipikirkanlah sebuah algoritma yang merupaka inti dari komputer quantum. Beberapa algoritma telah dikembangkan dan yang di antaranya telah berhasil ditemukan adalah algoritma Shor yang ditemukan oleh Peter Shor pada tahun 1995.

Sebuah komputer kuantum dapat memecahkan sebuah kode rahasia yang saat ini secara umum digunakan untuk mengamankan pengiriman data dengan menggunakan algoritma ini. Kode ini disebut kode RSA. Jika disandikan melalui kode RSA, data yang dikirimkan akan aman karena kode RSA tidak dapat dipecahkan dalam waktu yang singkat. Selain itu, pemecahan kode RSA membutuhkan kerja ribuan komputer secara paralel sehingga kerja pemecahan ini tidaklah efektif.

http://www.komputasi.lipi.go.id/utama.cgi?artikel&1152643054


Rabu, 17 April 2013

2. Pengantar Komputasi Cloud



a.     Pendahuluan
Cloud Computing adalah pemanfaatan teknologi komputer yang berasal dari penggabungan antara virtualisasi dan grid computing. Cloud computing menyediakan sebuah layanan dimana informasinya disimpan di server secara permanen dan disimpan di computer client secara temporary. E mail service, facebook, google adalah beberapa contoh penggunaan cloud computing. Di dalam cloud computing dikenal istilah front-end (desktop-PC) dan back-end(server) yang dimana harus saling terhubung di dalam sebuah jaringan internet. Front-end bertugas dalam pengambilan data dan menjalankan aplikasi dari back-end sedangkan Back-end bertugas sebagai sumber yang diistilahkan dengan cloud.

b.      Pengantar Komputasi Grid
Komputasi Grid adalah penggunaan sumber daya yang melibatkan banyak komputer . Digunakan untuk memecahkan persoalan komputasi dalam skala besar yang terdistribusi dan terpisah secara geografis. Komputasi Grid menjalankan sistem yang terkoordinasi terhadap sumberdaya komputasi yang tidak berada dibawah suatu kendali terpusat.

c.       Virtualisasi
Dalam ilmu komputer virtualisai adalah sebuah teknik untuk menyembunyikan karakteristik fisik dari sumber daya komputer dari bagaimana cara sistem lain, aplikasi atau pengguna berinteraksi dengan sumber daya tersebut. Jenis virtualisasi itu ada perangka keras, perangkat lunak, memori, pemasaran, data dan jaringan. Contoh software virtualisai itu ada Microsoft Hyper-V dan Virtual Box.

d.      Distributed Computation dalam Cloud Computing 
      Kegiatan ini merupakan kumpulan beberapa computer yang terhubung untuk melakukan pendistribusian, seperti mengirim dan menerima data serta melakukan interaksi lain antar computer yang dimana  membutuhkan sebuah jaringan agar computer satu dan lainnya bisa saling berhubung dan melakukan interaksi. Hal ini semua dilakukan dengan cloud computing  yang seperti kita ketahui memberikan layanan dimana informasinya disimpan di server secara permanen dan disimpan di computer client secara temporary.

e.       Map Reduce dan NoSQL (Not Only SQL)
Map Reduce adalah salah satu konsep teknis yang sangat penting di dalam teknologi cloud terutama karena dapat diterapkannya dalam lingkungan distributed computing. Dengan demikian akan menjamin skalabilitas aplikasi kita. Contoh penerapan map reduce adalah yang dilakukan oleh Google yang mana pada ranah open source terlihat percepatan pengembangan framework lain yang bersifat terdistribusi dan menggunakan konsep yang sama. 
NoSQL berorientasi dari berbagai hal seperti di bawah ini yaitu
  1. key-value orriented seperti, cassandra, riak, hypertable, dynamo,dll
  2. document orriented seperti, mongoDB, couchDB,Clusterpoint, SimpleDB,dll
  3. graph orriented seperti,  OrientDB, FlockDB, neo4j, pregel, dll
  4. multivalue database seperti, jBASE, OpenQM, InfinityDB, dll
  5. object database seperti, db40, NeoDatis ODB, JADE, dll
f.       NoSQL Database
NoSQL adalah sistem menejemen database yang berbeda dari sistem menejemen database relasional yang klasik dalam beberapa hal. NoSQL mungkin tidak membutuhkan skema table dan umumnya menghindari operasi join dan berkembang secara horisontal. Akademisi menyebut database seperti ini sebagai structured storage, istilah yang didalamnya mencakup sistem menejemen database relasional. NoSQL berisikan key dan value seperti Memcache, ataupun yang lebih canggih yaitu non-database relational seperti MongoDB  Cassandra  CouchDB, dan yang lainnya.

Sumber
http://ijalandhika.wordpress.com/2012/10/24/sql-vs-nosql/
http://nareswara.com/2011/07/06/apa-itu-nosql-database/
http://www.komputasiawan.com/python/map-reduce
http://dian-pratiwi.web.ugm.ac.id/?p=54
http://id.wikipedia.org/wiki/Virtualisasi
http://id.wikipedia.org/wiki/Komputasi_grid