Jumat, 29 Juni 2018

Parallel Computing

Paralel Computing adalah jenis arsitektur komputasi di mana beberapa prosesor mengeksekusi atau memproses aplikasi atau perhitungan secara bersamaan. Komputasi paralel membantu dalam melakukan perhitungan besar dengan membagi beban kerja antara lebih dari satu prosesor, yang semuanya bekerja melalui komputasi pada saat yang bersamaan. Kebanyakan superkomputer menggunakan prinsip komputasi paralel untuk beroper

Dalam arti yang paling sederhana, komputasi paralel adalah penggunaan simultan dari berbagai sumber daya komputasi untuk memecahkan masalah komputasi:
  1. Suatu masalah dipecah menjadi bagian-bagian terpisah yang dapat diselesaikan secara bersamaan
  2. Setiap bagian selanjutnya dipecah menjadi serangkaian instruksi
  3. Instruksi dari setiap bagian dilakukan secara bersamaan pada prosesor yang berbeda
  4. Mekanisme kontrol / koordinasi keseluruhan digunakan




Sebagai contoh :

Masalah komputasi harus dapat: 
  1. Dipisahkan menjadi bagian-bagian terpisah dari pekerjaan yang dapat diselesaikan secara bersamaan;
  2. Jalankan beberapa instruksi program kapan saja pada waktunya;
  3. Dipecahkan dalam waktu yang lebih singkat dengan beberapa sumber daya komputasi dibandingkan dengan sumber daya komputasi tunggal.

Sumber daya komputasi biasanya:
  1. Satu komputer dengan beberapa prosesor / inti
  2. Sejumlah komputer seperti itu yang terhubung oleh jaringan

Hampir semua komputer yang berdiri sendiri saat ini paralel dari perspektif perangkat keras:
  • Beberapa unit fungsional (L1 cache, L2 cache, cabang, prefetch, decode, floating-point, pemrosesan grafis (GPU), integer, dll.)
  • Beberapa unit eksekusi / inti
  • Beberapa utas perangkat keras



      IBM BG / Q Compute Chip dengan 18 core (PU) dan 16 L2 Cache units (L2)

Jaringan menghubungkan beberapa komputer yang berdiri sendiri (node) untuk membuat kelompok komputer paralel yang lebih besar.



Sebagai contoh, skema di bawah ini menunjukkan klaster komputer paralel LLNL khas:
  • Setiap node komputasi adalah komputer paralel multi-prosesor itu sendiri
  • Beberapa node komputasi terhubung dengan jaringan Infiniband
  • Node tujuan khusus, juga multi-prosesor, digunakan untuk tujuan lain



Pemrosesan paralel umumnya diimplementasikan dalam lingkungan operasional / skenario yang memerlukan perhitungan besar atau kekuatan pemrosesan. Tujuan utama dari komputasi paralel adalah untuk meningkatkan daya komputasi yang tersedia untuk pemrosesan aplikasi atau resolusi tugas yang lebih cepat.

Biasanya, infrastruktur komputasi paralel ditempatkan dalam satu fasilitas di mana banyak prosesor dipasang di rak server atau server terpisah yang terhubung bersama. Server aplikasi mengirim permintaan komputasi atau pemrosesan yang didistribusikan dalam potongan kecil atau komponen, yang secara bersamaan dijalankan pada setiap prosesor / server. Komputasi paralel dapat diklasifikasikan sebagai tingkat-bit, level instruksional, data dan paralelisme tugas.asi. Komputasi paralel juga dikenal sebagai pemrosesan paralel.


CUDA (Compute Unified Device Arcitecture)

CUDA adalah mekanisme komputasi paralel sekaligus platform API yang dibuat oleh Nvidia. CUDA hampir sama dengan OpenCL dimana tujuannya untuk mendapatkan komputasi seefisien mungkin, bedanya CUDA hanya untuk vendor Nvidia sedangkan OpenCL sudah dipakai banyak vendor. CUDA bekerja lebih cepat 30% dibanding OpenCL.

CUDA ini memberikan kemampuan sebuah dalam 2 hardware untuk melakukan komputasi secara bersamaan dan bersatu yaitu pada bagian CPU dan GPU. Hal ini menyebabkan kemampuan komputer menjadi luar biasa. Sebagai contoh sebuah prose perhitungan yang dilakukan oleh CPU bisa di selesaikan dalam beberapa detik, tapi dengan bantuan GPU hal ini dipersingkat hanya menjadi *millisecond*. 

Dan CUDA ini lah yang menjembatani proses ini. Selain itu, GPU yang dilengkapi CUDA dengan mampu melakukan simulasi grafis dengan baik daripada hanya menggunakan CPU. Karena itu GPU yang dilengkapi dengan CUDA, biasanya di lakukan untuk melakukan proses grafis yang tinggi dan perhitungan yang membutuhkan memori tinggi. Dan hal ini menjadi pilihan para konsumen, karena mereka bisa menggunakan hardware mereka dengan lebih maksimal dan optimal. Nvidia sebagai produsen hardware grafis sudah sangat memikirkan bahwa disaat nanti, GPU sendiri akan menjadi bagian penting dari sebuah komputasi. Karena itu Nvidia mengeluarkan sebuah frame work CUDA untuk menjembati para developer untuk menggunakan GPU buatan mereka dengan optimal.

CUDA sendiri berdiri sebagai sebuah framework yang bertugas untuk menjembatani antara proses di sebuah CPU dan GPU sehingga keduanya bisa bekerja secara bersamaan. Sistem ini disebut parallel processing, di mana 2 buah hardware bekerja secara bersamaan untuk melakukan sebuah process. Biasanya hal ini dilakukan untuk melakukan sebuah process yang rumit dan membutuhkan memori banyak, sehingga pengolahan proses bisa lebih cepat.

Seri pertama dari CUDA dikeluarkan oleh Nvidia pada tahun 2006, tapi saat itu masih pengembangan. Tapi sejak itu, Nvidia sudah melakukan pengembangan pada CUDA, sehingga CUDA bisa digunakan secara lebih baik. Sampai saat ini CUDA sudah rilis pada versi ke-4. Dan ini merupakan pengembangan yang baik karena dengan CUDA, kita melakukan programming tanpa mengetahui bahasa Assembly, kita cukup mengetahui C++, atau Fortran untuk melakukannya. CUDA merupakan sistem propierty buatan Nvidia,yang di sebarkan secara gratis. Tapi hal ini tidak menjadi halangan bagi para developer untuk menggunakannya. Karena sistem CUDA memberikan kemudahan dalam melakukan penyebaran driver mereka.

Saat ini Sistem CUDA sudah banyak digunakan untuk membangun sisem komputer cepat, karena hal ini lebih murah, dibandingkan kita harus lebih membeli processor tambahan. Selain itu itu menjad lebih energi, karena biaya untuk tambahan energi dapat dikurangi melalui sistem GPU CUDA. Saat ini GPU CUDA mendapat tantangan dari AMD dengan AMD Fusion mereka. Hal ini akan menjadi sangat menarik, karena mereka berdua memiliki teknologi di bidang grafis yang cukup kuat.



Sumber :

Jumat, 01 Juni 2018


Quantum Computing

Dalam bahasa Indonesia yaitu komputer kuantum, merupakan komputer yang memanfaatkan fenomena-fenomena dari mekanika quantum, seperti quantum superposition dan quantum entanglement, yang digunakan untuk pengoperasian data.

Perhitungan jumlah data pada komputasi klasik dihitung dengan bit, sedangkan perhitungan jumlah data pada komputer kuantum dilakukan dengan qubit. 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.

Komputer kuantum dapat jauh lebih cepat dari komputer konvensional pada banyak masalah, salah satunya yaitu masalah yang memiliki sifat berikut :

1.) Satu-satunya cara adalah menebak dan mengecek jawabannya berkali-kali.
2.) Terdapat n jumlah jawaban yang mungkin.
3.) Setiap kemungkinan jawaban membutuhkan waktu yang sama untuk mengeceknya.
4.) Tidak ada petunjuk jawaban mana yang kemungkinan benarnya lebih besar: memberi jawaban dengan asal tidak berbeda dengan mengeceknya dengan urutan tertentu.

Secara definisi, komputer quantum adalah komputer yang memanfaatkan fenomena-fenomena dari mekanika quantum, seperti quantum superposition dan quantum entanglement dalam proses komputasi data.

Jadi bisa disimpulkan bahwa komputer quantum itu adalah komputer yang lebih canggih dari komputer biasa karena pada komputer quantum telah menggunakan prinsip-prinsip atau metode metode quantum.

Sejarah Komputer Quantum

Ide mengenai komputer kuantum ini 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).

Pada awalnya Feynman mengemukakan idenya mengenai sistem kuantum yang juga dapat melakukan proses penghitungan. Fenyman juga mengemukakan bahwa sistem ini bisa menjadi simulator bagi percobaan fisika kuantum.

Selanjutnya para ilmuwan mulai melakukan riset mengenai sistem kuantum tersebut, mereka juga berusaha untuk menemukan logika yang sesuai dengan sistem tersebut. Sampai saat ini telah dikemukaan dua algoritma baru yang bisa digunakan dalam sistem kuantum yaitu algoritma shor dan algoritma grover.

Algoritma Quantum Computing

Komputer Quantum menggunakan beberapa algoritma, dua buah contoh algoritma nya yaitu Algoritma Shor dan Algoritma Grover. berikut adalah penjelasannya:

Algoritma Shor

Algoritma Shor merupakan sebuah algoritma kuantum yang efisien bisa menguraikan pada pengali jumlah besar. Algortima ini merupakan pusat pada sistem yang menggunakan teori bilangan untuk memperkirakan periodisitas dari urutan nomor. Ditemukan oleh Peter Shor. Algortima ini di perbaharui oleh Lov Grover dari Bell Labs pada tahun 1996, dengan algoritma yang sangat cepat dan terbukti menjadi yang tercepat mungkin untuk mencari melalui database tidak terstruktur.

Algoritma ini sangat efisien sehingga hanya membutuhkan rata-rata, sekitar akar N persegi  pencarian untuk menemukan hasil yang diinginkan, sebagai lawan pencarian dalam komputasi klasik, yang pada kebutuhan rata-rata N / 2 pencarian. N adalah jumlah total elemen.

Algoritma Shor didasarkan dari sebuah teori bilangan: fungsi F(a) = xamod n adalah feungsi periodik jika x adalah bilangan bulat yang relatif prima dengan n. Dalam Algoritma Shor, n akan menjadi bilangan bulat yang hendak difaktorkan. Pada masalah ini algoritma quantum shor memanfaatkan pararellisme quantum untuk melakukannya hanya dengan satu langkah. Karena F(A) adalah fungsi periodik, maka fungsi ini memiliki sebuah periode r. Diketahui x0mod n = 1, maka xr mod n =1, begitu juga x2r mod n dan seterusnya.

Algoritma Grover

Algoritma Grover adalah sebuah algoritma kuantum untuk mencari database disortir dengan entri N di O ( N1 / 2 ) waktu dan menggunakan O ( log N ) ruang penyimpanan (lihat notasi O besar ). Lov Grover dirumuskan itu pada tahun 1996. Dalam model komputasi klasik , mencari database unsorted tidak dapat dilakukan dalam waktu kurang dari waktu linier (jadi hanya mencari melalui setiap item optimal ) .

Algoritma Grover menggambarkan bahwa dalam model kuantum pencarian dapat dilakukan lebih cepat dari ini ; sebenarnya waktu kompleksitas O ( N1 / 2 ) adalah asimtotik tercepat mungkin untuk mencari database unsorted dalam model kuantum linear. Ini menyediakan percepatan kuadrat, seperti algoritma kuantum lainnya, yang dapat memberikan percepatan eksponensial atas rekan-rekan mereka klasik. Namun, bahkan percepatan kuadrat cukup besar ketika N besar.

Seperti banyak algoritma kuantum, algoritma Grover adalah probabilistik dalam arti bahwa ia memberikan jawaban yang benar dengan probabilitas tinggi. Kemungkinan kegagalan dapat dikurangi dengan mengulangi algoritma.


Kelebihan dan Kekurangan Quantum Computation

Jika komputer kuantum dapat dibangun, sangat berguna untuk decoding dan encoding informasi rahasia. Komputer kuantum juga bisa digunakan untuk mencari database besar di sebagian kecil dari waktu yang jika menggunakan komputer konvensional akan memerlukan waktu yang sangat lama, komputer kuantum juga untuk mempelajari mekanika kuantum, atau bahkan merancang komputer kuantum lainnya.

Komputer kuantum dalam satu langkah komputasi dapat melakukan operasi matematis pada 2N input berlainan yang tersimpan dalam superposisi koheren N qubit. Untuk melakukan hal yang sama, suatu komputer konvensional harus mengulang operasi sejumlah 2N kali atau harus digunakan 2N prosesor konvensional yang bekerja bersamaan.

Komputer kuantum melakukan semua perhitungan secara bersamaan (karena ada multiple states semuaperhitungan dapat berlangsung secara simultan di semua state). Komputer kuantum dengan jumlah transistor yang sama dengan komputer sekarang bisa lebih cepat jutaan kali. 30 qubit komputer kuantum bisa menghasilkan 10 terflops atau 10 bilyun operasi poin-mengambang per detik.

Tapi komputasi kuantum masih dalam tahap awal pengembangan, pun begitu telah banyak ilmuwan komputer meyakini teknologi masa depan ini sangat dibutuhkan untuk membuat sebuah komputer kuantum praktis, yang mana harus memiliki setidaknya beberapa lusin qubit, sehingga dapat memecahkan berbagai masalah dunia maya dan dunia nyata. ).

Komputer kuantum Belum merupakan sebuah perangkat yang bisa digunakan, namun untuk komputasi kuantum (sebuah sistem perangkat keras dan lunak yang akan membuat perangkat komputer kuantum) sudah ada perusahaan yang telah didirikan termasuk D-wave System.


Sumber :