Rabu, 12 Juni 2013

BAB 4 (Softskill : Parallel Computation)

Sebelum kita masuk lebih jauh ke denai konsep paalam materi Parallel Computation, akan dijelaskan sedikit mengenai konsep dari komputasi paralel itu sendiri. 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 ( di industri keuangan, bioinformatika, dll ) 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 ( fisika komputasi ), kimia ( kimia komputasi ), dll. Dalam menyelesaikan suatu masalah, komputasi paralel memerlukan infrastruktur mesin paralel yang terdiri dari banyak komputer yang dihubungkan dengan jaringan dan mampu bekerja secara paralel.

Komputasi paralel dapat diterapkan dengan aneka perangkat lunak pendukung yang biasa disebut sebagai middleware yang berperan untuk mengatur distribusi pekerjaan antar node dalam satu mesin paralel. Selanjutnya pemakai harus membuat pemrograman paralel untuk merealisasikan komputasi. Tidak berarti dengan mesin paralel semua program yang dijalankan diatasnya otomatis akan diolah secara 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 komputer-komputer 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.


1. Distributed Processing

Aktivitas memproses informasi dalam suatu organisasi yang dijalankan oleh jaringan komputer yang tersambung oleh saluran telekomunikasi yang terpusat pada fasilitas induk komputer biasa disebut dengan distributed processing.

Dalam penerapannya, proses ini menggunakan pemrosesan paralel pada beberapa mesin. Misalnya proses transaksi yang terjadi pada beberapa mesin ATM sebuah bank. Ketika ribuan nasabah menggunakan mesin ATM pada saat yang bersamaan, bayangkan berapa banyak proses yang harus dikerjakan jika hanya terdapat 1 komputer server. Oleh karena itu dengan menggunakan Distributed Processing, beban pemrosesan yang besar dapat di kerjakan oleh beberapa komputer yang terhubung oleh jaringan dalam waktu yang bersamaan secara simultan. Beban pemrosesan yang besar itu dipecah menjadi beberapa beban kecil guna mempercepat proses.

2. Architectural Parallel Computer

Dibawah ini akan dijelaskan beberapamacam arsitektur paralel komputer menurut Klasifikasi Flynn’s : 
1.  SISD
Single Instruction – Single Data. Komputer jenis ini hanya memiliki satu prosesor ( single processor ). Dimana semua instruksi di eksekusi secara serial ( terurut satu demi satu ) dan memungkinkan adanya overlapping di setiap bagian instruksi dalam pelaksanaan eksekusi. Komputer ini adalah tipe komputer konvensional. Beberapa contoh komputer yang menggunakan model SISD adalah UNIVAC1, IBM 360, CDC 7600, Cray 1 dan PDP. 

2.  SIMD
Single Instruction – Multiple Data. Komputer jenis ini hanya dapat mengeksekusi satu instruksi dan memiliki lebih dari satu prosesor. Satu eksekusi dilakukan secara paralel pada data yang berbeda pada level lock-step. Komputer vektor adalah salah satu komputer paralel yang menggunakan arsitektur ini. 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 ). 

3.  MISD
Multiple Instructions – Single Data. Belum ada perwujudan nyata dari komputer jenis ini kecuali dalam bentuk prototipe untuk penelitian. Teorinya komputer ini memiliki satu prosesor dan mengeksekusi beberapa instruksi secara paralel tetapi praktiknya tidak ada komputer yang dibangun dengan arsitektur ini karena sistemnya tidak mudah dipahami. 

4.  MIMD
Multiple Instructions – Multiple Data. Komputer jenis ini dapat mengeksekusi lebih dari satu instruksi secara paralel dengan lebih dari satu prosesor. Tipe komputer ini yang paling banyak digunakan untuk membangun komputer paralel, bahkan banyak supercomputer yang menerapkan arsitektur ini. Beberapa komputer yang menggunakan model MIMD adalah IBM POWER5, HP/Compaq AlphaServer, Intel IA32, AMD Opteron, Cray XT3 dan IBM BG/L.

3. Pengantar Thread Programming

Threading / Thread adalah sebuah alur kontrol dari sebuah proses. Konsep threading adalah menjalankan 2 proses ( proses yang sama atau proses yang berbeda ) dalam satu waktu. Contohnya sebuah web browser mempunyai thread untuk menampilkan gambar atau tulisan sedangkan thread yang lain berfungsi sebagai penerima data dari network. Threading dibagi menjadi 2 :
  • 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.
  • 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.

4. Pengantar Massage Passing dan OpenMP


  • MPI (Message Passing Interface)
MPI (Message Passing Interface) 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.Untuk merancang aplikasi paralel tentu membutuhkan banyak pertimbangan-pertimbangan diantaranya adalah latensi dari jaringan dan lama sebuah tugas dieksekusi oleh prosesor.
MPI ini merupakan standard yang dikembangkan untuk membuat aplikasi pengirim pesan secara portable. Sebuah komputasi paralel terdiri dari sejumlah proses, dimana masing-masing bekerja pada beberapa data lokal. Setiap proses mempunyai variabel lokal, dan tidak ada mekanismesuatu proses yang bisa mengakses secara langsung memori yang lain. Pembagian data antar  proses dilakukan dengan message passing, yaitu dengan mengirim dan menerima pesan antar  proses. MPI menyediakan fungsi-fungsi untuk menukarkan antar pesan. Kegunaan MPI yang lain :
1. menulis kode paralel secara portable
2. mendapatkan performa yang tinggi dalam pemrograman paralel
3. menghadapi permasalahan yang melibatkan hubungan data irregular atau dinamis yang tidak      begitu cocok dengan model data paralel.
  • OpenMP
OpenMP merupakan API yang mendukung multi-platform berbagi memori multiprocessing pemrograman C , C + + , dan Fortran , pada kebanyakan arsitektur prosesor dan system operasi , termasuk Solaris , AIX , HP-UX , GNU / Linux , Mac OS X , dan Windows platform. Ini terdiri dari satu set perintah kompiler, rutinitas library, dan variable lingkungan yang mempengaruhi perilaku run-time. OpenMP dikelola oleh nirlaba teknologi konsorsium OpenMP Arsitektur Review Board (ARB atau OpenMP), bersama-sama didefinisikan oleh sekelompok perangkat keras komputer utama dan vendor perangkat lunak, termasuk AMD , IBM , Intel , Cray , HP , Fujitsu , Nvidia , NEC , Microsoft , Texas Instruments , Oracle Corporation , dan banyak lagi.

5. Pengantar Pemrograman CUDA GPU

GPU ( Graphical Processing Unit ) awalnya adalah sebuah prosesor yang berfungsi khusus untuk melakukan rendering pada kartu grafik saja, tetapi seiring dengan semakin meningkatnya kebutuhan rendering, terutama untuk mendekati waktu proses yang realtime, maka meningkat pula kemampuan prosesor grafik tersebut. akselerasi peningkatan teknologi GPU ini lebih cepat daripada peningkatan teknologi prosesor sesungguhnya ( CPU ), dan pada akhirnya GPU menjadi General Purpose, yang artinya tidak lagi hanya untuk melakukan rendering saja melainkan bisa untuk proses komputasi secara umum.
Penggunaan Multi GPU dapat mempercepat waktu proses dalam mengeksekusi program karena arsitekturnya yang natively parallel. Selain itu Peningkatan performa yang terjadi tidak hanya berdasarkan kecepatan hardware GPU saja, tetapi faktor yang lebih penting adalah cara membuat kode program yang benarbenar bisa efektif berjalan pada Multi GPU.
CUDA merupakan teknologi anyar dari produsen kartu grafis Nvidia, dan mungkin belum banyak digunakan orang secara umum. Kartu grafis lebih banyak digunakan untuk menjalankan aplikasi game, namun dengan teknologi CUDA ini kartu grafis dapat digunakan lebih optimal ketika menjalankan sebuah software aplikasi. Fungsi kartu grafis Nvidia digunakan untuk membantu Processor (CPU) dalam melakukan kalkulasi dalam proses data.
CUDA merupakan singkatan dari Compute Unified Device Architecture, didefinisikan sebagai sebuah arsitektur komputer parallel, dikembangkan oleh Nvidia. Teknologi ini dapat digunakan untuk menjalankan proses pengolahan gambar, video, rendering 3D, dan lain sebagainya. VGA – VGA dari Nvidia yang sudah menggunakan teknologi CUDA antara lain : Nvidia GeForce GTX 280, GTX 260,9800 GX2, 9800 GTX+,9800 GTX,9800 GT,9600 GSO, 9600 GT,9500 GT,9400 GT,9400 mGPU,9300 mGPU,8800 Ultra,8800 GTX,8800 GTS,8800 GT,8800 GS,8600 GTS,8600 GT,8500 GT,8400 GS, 8300 mGPU, 8200 mGPU, 8100 mGPU, dan seri sejenis untuk kelas mobile ( VGA notebook ).
Singkatnya, CUDA dapat memberikan proses dengan pendekatan bahasa C, sehingga programmer atau pengembang software dapat lebih cepat menyelesaikan perhitungan yang komplek. Bukan hanya aplikasi seperti teknologi ilmu pengetahuan yang spesifik. CUDA sekarang bisa dimanfaatkan untuk aplikasi multimedia. Misalnya meng-edit film dan melakukan filter gambar. Sebagai contoh dengan aplikasi multimedia, sudah mengunakan teknologi CUDA. Software TMPGenc 4.0 misalnya membuat aplikasi editing dengan mengambil sebagian proces dari GPU dan CPU. VGA yang dapat memanfaatkan CUDA hanya versi 8000 atau lebih tinggi.

Sumber : 
http://www.slideshare.net/terminalpurba/rancang-bangun-penjadwalan-tugas-task-pada-komputasi-paralel-dengan-menggunakan-algoritma-cost-time-optimization
http://seto.citravision.com/berita-47-parallel-computation--distributed-processing.html
http://seto.citravision.com/berita-48-parallel-computation--architectural-parallel-computer.html
http://dimasdisini.wordpress.com/2011/04/03/multicore-gpu-cuda/
http://krustybrain.wordpress.com/2013/05/25/tugas-4-softskill-pengantar-komputasi-modern-sem-8/

 

BAB 3 (Softskill : Pengantar Quantum Computation)

Komputasi kuantum adalah bidang studi yang difokuskan pada teknologi komputer berkembang berdasarkan prinsip-prinsip teori kuantum , yang menjelaskan sifat dan perilaku energi dan materi pada kuantum (atom dan subatom) tingkat. Pengembangan komputer kuantum , jika praktis, akan menandai lompatan maju dalam kemampuan komputasi jauh lebih besar daripada yang dari sempoa ke modern superkomputer , dengan keuntungan kinerja di alam miliar kali lipat dan seterusnya. Jadi, Quantum Computing  memanfaatkan fenomena ‘aneh’ yang disebut sebagai superposisi. Dalam mekanika kuantum, suatu partikel bisa berada dalam dua keadaan sekaligus. Inilah yang disebut keadaan superposisi. Dalam komputer kuantum, selain 0 dan 1 dikenal pula superposisi dari keduanya. Ini berarti keadaannya bisa berupa 0 dan 1, bukan hanya 0  atau 1 seperti di komputer digital biasa. Komputer kuantum tidak menggunakan Bits tetapi QUBITS ( Quantum Bits ). Karena kemampuannya untuk berada di bermacam keadaan ( multiple states ), komputer kuantum memiliki potensi untuk melaksanakan berbagai perhitungan secara simultan sehingga jauh lebih cepat dari komputer digital.
Unsur-unsur penting dari komputasi kuantum berasal dengan Paul Benioff, bekerja di Argonne National Labs, pada tahun 1981. Dia berteori sebuah operasi komputer klasik dengan beberapa prinsip kuantum mekanik. Tapi secara umum diterima bahwa David Deutsch dari Universitas Oxford memberikan dorongan penting untuk penelitian komputasi kuantum. Pada tahun 1984, ia berada di sebuah konferensi teori komputasi dan mulai bertanya-tanya tentang kemungkinan merancang sebuah komputer yang didasarkan hanya pada aturan kuantum, kemudian diterbitkan kertas terobosan beberapa bulan kemudian. Dengan ini, lomba mulai mengeksploitasi ide-idenya. Namun, sebelum kita menggali ke dalam apa yang dia mulai, itu bermanfaat untuk melihat pada latar belakang dunia kuantum.

1. Entanglement

Entanglement adalah efek mekanik kuantum yang mengaburkan jarak antara partikel individual sehingga sulit menggambarkan partikel tersebut terpisah meski Anda berusaha memindahkan mereka.
Entanglement adalah esensi komputasi kuantum karena ini adalah jalinan kualitas yang berhubungan dengan lebih banyak informasi dalam bit kuantum dibanding dengan bit komputing klasik,” demikian Andrew Berkley, salah satu peneliti. Temuan terbaru ini mendekatkan jalan menuju komputer kuantum dan mengindikasikan bahwa persimpangan Josephson pada akhirnya dapat digunakan untuk membangun komputer supercanggih.

2. Pengoperasian Data Qubit

Sebagaimana bit merupakan objek ideal yang diabstraksi dari prinsip-prinsip fisika klasik, qubit adalah objek quantum ideal yang diabstraksi dari prinsip-prinsip mekanika quantum. Bit bisa direpresentasikan dengan kawasan-magnetik pada cakram, voltase pada sirkuit, atau tanda grafit yang dibuat pensil pada kertas. Pemfungsian status-status fisikal klasik ini sebagai bit tidak bergantung pada detil bagaimana mereka direalisasikan. Demikian halnya, atribut-atribut qubit adalah independen dari representasi fisikal spesifik sebagai pusingan nukleus atom atau, katakanlah, polarisasi photon cahaya.
Bit digambarkan oleh statusnya, 0 atau 1. Begitu pula, qubit digambarkan oleh status quantumnya. Dua status quantum potensial untuk qubit ekuivalen dengan 0 dan 1 bit klasik. Namun dalam mekanika quantum, objek apapun yang memiliki dua status berbeda pasti memiliki rangkaian status potensial lain, disebut superposisi, yang menjerat kedua status hingga derajat bermacam-macam. Status-status qubit yang diperkenankan persisnya merupakan semua status yang harus bisa dicapai, secara prinsip, oleh bit klasik yang ditransplantasikan ke dalam dunia quantum. Status-status qubit ekuivalen dengan titik-titik di permukaan bola, di mana 0 dan 1 sebagai kutub selatan dan utara [lihat boks di bawah]. Kontinum status antara 0 dan 1 membantu perkembangan banyak atribut luar biasa informasi quantum.

Kedua nilai yang disimpan pada setiap qubit akan selalu mempengaruhi operasi komputer kuantum. Selain itu, sebuah n qubits sama-sama ber-superposisi dari 0 dan 1, dia berperan untuk mengkodekan 2n nilai. Komputer kuantum dapat menghitung nilai keseluruhannya sekaligus. Keadaan paralel ini memiliki istilah Paralelisme Kuantum. Setiap rangkaian yang tercipta selalu memiliki rangkaian kuantum yang sesuai. Kesimpulannnya, teknologi yang diterapkan pada komputer kuantum mampu melakukan perhitungan pada semua nilai pada waktu yang hampir sama, dengan waktu yang sama komputer konvensional hanya bisa melakukan perhitungan tunggal. 

3. Algoritma Shor

Algoritma shor adalah teori pemecahan sebuah kode rahasia dalam pengamanan dalam pengiriman data oleh komputer kuantum. Kode ini disebut kode RSA. Algoritma shor sendiri diambil dari nama penumunya yaitu Peter Shor pada tahun 1995. Berkat Peter Shor, teori Algoritma ini jika sebuah pengirimian data melalui kode RSA, data yang dikirimkan akan aman karena kode RSA tidak dapat dipecahkan dalam waktu yang singkat dan membutuh kan lebih banyak komputer yang terhubung secara paralel dan itu membutuhkan waktu yang tidak sebentar.

Sumber : 
http://www.fisikanet.lipi.go.id/utama.cgi?artikel&1170379173
http://krustybrain.wordpress.com/2013/05/24/tugas-3-softskill-pengantar-quantum-computation-sem-8/
http://abdanniputri.blogspot.com/2013/04/pengantar-quantum-computation.html
            



 

 


 

BAB 2 (Softskill : Pengantar Komputasi Cloud)



Pembahasan mengenai komputasi awan atau cloud computing akan dijelaskan dalam materi ini. Cloud computing ( Komputasi Awan ) adalah penggunaan beberapa kumpulan resources ( software, hardware, data / file ) melalui jaringan ( internet ) oleh beragam user, dari mulai perorangan sampai perusahaan. Penggunaan cloud computing ini bertujuan mempermudah user untuk mengakses data / file, dari mana dan kapan saja asalkan ada koneksi internet.

Cloud Computing semakin banyak dan mulai diadopsi sebagian perusahaan termasuk di Indonesia. Perusahaan besar seperti Microsoft, Amazon, dan Google telah membuka bisnis ini sejak satu atau dua tahun yang lalu di Indonesia. Sedangkan untuk perusahaan lokal, saat ini ada sekitar tujuh perusahaan penyedia layanan ini, antara lain Telkom Sigma, Biznet Networks, Cyberindo Mega Persada, Infinys System, dan Lintas Arta.


1. Pengantar Komputasi GRID


Grid Computing berdasarkan strukturnya merupakan sistem komputer dengan sumber daya yang dikelola dan dikendalikan secara lokal ( penggunaan sumber daya yang melibatkan banyak komputer yang terdistribusi dan terpisah secara geografis ). Menurut Ian Foster ada kriteria khusus yang dapat digunakan untuk mengidentifikasi bahwa suatu sistem melakukan komputasi grid yaitu :
  1. Sistem tersebut melakukan koordinasi terhadap sumber daya komputasi yang tidak berada dibawah suatu kendali terpusat. Seandainya sumber daya yang digunakan berada dalam satu cakupan domain administratif, maka komputasi tersebut belum dapat dikatakan komputasi grid.
  2. Sistem tersebut menggunakan standard dan protokol yang bersifat terbuka ( tidak terpaut pada suatu implementasi atau produk tertentu ). Komputasi grid disusun dari kesepakatan – kesepakatan terhadap masalah yang fundamental, dibutuhkan untuk mewujudkan komputasi bersama dalam skala besar. Kesepakatan dan standar yang dibutuhkan adalah dalam bidang autentikasi, otorisasi, pencarian sumber daya, dan akses terhadap sumber daya.
  3. Sistem tersebut berusaha untuk mencapai kualitas layanan yang canggih, ( nontrivial quality of service ) yang jauh diatas kualitas layanan komponen individu dari komputasi grid tersebut.

2. Virtualisasi


Virtualisasi berbeda dengan Cloud Computing. Virtualisasi adalah teknologi yang memungkinkan kita membuat sesuatu yang bersifat fisik misalnya sistem operasi, storage atau sumber daya jaringan menjadi virtual. Dimana kita mampu menjalankan diatas hardware / software nonvirtual yang sedang berjalan. Contohnya, kita menggunakan sistem operasi Windows dan kita ingin menjalankan sistem operasi Linux. Kita tidak perlu repot menginstall ulang sistem operasi kita atau membagi partisi kita untuk sistem operasi Linux, kita hanya perlu menginstall aplikasi–aplikasi yang mendukung virtualisasi tersebut, misalnya VMware, VirtualBox atau Wine.

3. Distributed Computation dalam Cloud Computing


Distributed computation merupakan teknologi yang membantu proses pengolahan data, menjadi lebih ringan dan cepat. Ini dikarenakan pemrosesan data dilakukan secara terdistribusi dan bersama secara simultan oleh banyak resources.

Teknologi ini dapat memecahkan suatu masalah besar ( komputasi besar ) ke dalam proses – proses kecil, untuk kemudian proses kecil itu diselesaikan oleh banyak komputer secara simultan dan apabila sudah didapatkan solusi – solusi kecil maka disatukan kembali dalam satu solusi yang besar dan terintegrasi.

Tujuan dari distributed computing adalah untuk menghubungkan banyak user dan resource yang bekerjasama memecahkan permasalahan dalam sistem yang terbuka, transparant dan memiliki skalabilitas yang tinggi.

4. Map Reduce dan NoSQL ( Not Only SQL )


Map Reduce merupakan model pemrograman yang secara khusus dalam mengasosiasikan dan mendistribusian data dalam menangani masalah pengaturan data dalam skala besar. Kegunaan metode Mapreduce ini memudahkan data yang dieksekusi dalam jumlah besar dapat diparalelkan dan didistribusikan melalui suatu pengelompokan data. NoSql adalah sistem menejemen database yang berbeda dari sistem menejemen database relasional yang klasik dalam beberapa ha.

5. NoSQL Database


NoSQL ( Not Only SQL ) adalah tipe database yang sangat jauh berbeda dengan konsep RDBMS ataupun ODBMS. Perbedaan utamanya sendiri yaitu karena tidak mengenal istilah relation dan tidak menggunakan konsep schema. Biasanya kita menggunakan query  ‘Join’, di sini kita tidak bisa menggunakannya karena setiap tabel berdiri sendiri tanpa tergantung dengan tabel lainnya alias independen.

Selain itu kalau di dalam konsep DBMS biasanya sebelum insert data kita diharuskan untuk mendefinisikan terlebih dahulu struktur tabel seperti tipe data dan ukurannya, di konsep NoSQL ini kita bisa menyimpan data tanpa perlu mendefinisikan tipe data dan ukurannya lagi. Jadi lebih fleksibel bila ada perubahan di masa mendatang.

Sekian penjelasan mengenai Pengantar Komputasi Cloud. Semoga pembahasan ini dapat membantu dalam pembelajaran materi diatas. 

Sumber : http://krustybrain.wordpress.com