Komputer
Kuantum ( Quantum Computer )
Pendahuluan
Komputer kuantum adalah
salah satu komputer yang belum sama sekali ada di dunia ini. Karena ini
merupakan komputer yang sangat mustahil di ciptakan. Tapi mungkin saja ini bisa
tercipta. Jika dikatakan, komputer kuantum hanya butuh waktu 20 menit untuk
mengerjakan sebuah proses yang butuh waktu 1025 tahun pada komputer saat ini,
kita tentu akan tercengang. Hal inilah yang membuat para ilmuwan begitu
tertarik untuk mengembangkan kemungkinan terbentuknya komputer kuantum.
Meskipun hingga saat ini belum tercipta sebuah komputer kuantum yang
dibayangkan oleh para ilmuwan, kemajuan ke arah sana terus berlangsung. Bahkan
yang menarik, ternyata perkembangan komputer kuantum juga mengikuti apa yang
dikatakan oleh Gordan Moore sang Genius IBM “Kemampuan Prosesor akan meningkat
dua kali lipat dalam jangka waktu 18 bulan”. Jika hal ini benar, para ilmuwan
akan dapat membangun sebuah komputer kuantum hanya dalam waktu lima tahun ke
depan. Setidaknya, begitulah yang dikatakan oleh Raymond Laflamme, ilmuwan dari
Massachusetts Institute of Technology (MIT), Amerika Serikat. 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 dan teknologi ini adalah salah satu
hasil dari “applied Physic”(fisika terapan). Untuk itu artikel ini akan
menjelaskan tentang apa itu komputer kuantum secara keseluruhan.
Pembahasan
Pengertian
Quantum Computing
Merupakan alat hitung yang menggunakan mekanika kuantum seperti
superposisi dan keterkaitan, yang digunakan untuk peng-operasi-an 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.
Sejarah
singkat
Pada tahun 1970-an
pencetusan atau ide tentang komputer kuantum pertama kali muncul oleh para
fisikawan dan ilmuwan komputer, seperti 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).
Feynman dari California
Institute of Technology yang pertama kali mengajukan dan menunjukkan model
bahwa sebuah sistem kuantum dapat digunakan untuk melakukan komputasi. Feynman
juga menunjukkan bagaimana sistem tersebut dapat menjadi simulator bagi fisika
kuantum.
Pada tahun 1985,
Deutsch menyadari esensi dari komputasi oleh sebuah komputer kuantum dan
menunjukkan bahwa semua proses fisika, secara prinsipil, dapat dimodelkan
melalui komputer kuantum. Dengan demikian, komputer kuantum memiliki kemampuan
yang melebihi komputer klasik.
Pada tahun 1995, Peter
Shor merumuskan sebuah algoritma yang memungkinkan penggunaan komputer kuantum
untuk memecahkan masalah faktorisasi dalam teori bilangan.
Sampai saat ini, riset
dan eksperimen pada bidang komputer kuantum masih terus dilakukan di seluruh
dunia. Berbagai metode dikembangkan untuk memungkinkan terwujudnya sebuah
komputer yang memilki kemampuan yang luar biasa ini. Sejauh ini, sebuah
komputer kuantum yang telah dibangun hanya dapat mencapai kemampuan untuk
memfaktorkan dua digit bilangan. Komputer kuantum ini dibangun pada tahun 1998
di Los Alamos, Amerika Serikat, menggunakan NMR (Nuclear Magnetic Resonance).
Entanglement
Entanglement adalah efek mekanik kuantum yang mengaburkan jarak antara
partikel individual sehingga sulit menggambarkan partikel tersebut terpisah
meski Anda berusaha memindahkan mereka. Contoh dari quantum entanglement:
kaitan antara penentuan jam sholat dan quantum entanglement. Mohon maaf bagi
yang beragama lain saya hanya bermaksud memberi contoh saja. Mengapa jam sholat
dibuat seragam? Karena dengan demikian secara massal banyak manusia di beberapa
wilayah secara serentak masuk ke zona entanglement bersamaan.
Pengoperasian Data
Qubit
Komputer kuantum memelihara urutan qubit. Sebuah qubit tunggal dapat
mewakili satu, nol, atau, penting, setiap superposisi quantum ini, apalagi
sepasang qubit dapat dalam superposisi kuantum dari 4 negara, dan tiga qubit
dalam superposisi dari 8. Secara umum komputer kuantum dengan qubit n bisa
dalam superposisi sewenang-wenang hingga 2 n negara bagian yang berbeda secara
bersamaan (ini dibandingkan dengan komputer normal yang hanya dapat di salah
satu negara n 2 pada satu waktu). Komputer kuantum yang beroperasi dengan
memanipulasi qubit dengan urutan tetap gerbang logika quantum. Urutan gerbang
untuk diterapkan disebut algoritma quantum.
Sebuah contoh dari implementasi qubit untuk komputer kuantum bisa mulai
dengan menggunakan partikel dengan dua putaran menyatakan: “down” dan “up”.
Namun pada kenyataannya sistem yang memiliki suatu diamati dalam jumlah yang
akan kekal dalam waktu evolusi dan seperti bahwa A memiliki setidaknya dua
diskrit dan cukup spasi berturut-turut eigen nilai , adalah kandidat yang cocok
untuk menerapkan sebuah qubit. Hal ini benar karena setiap sistem tersebut
dapat dipetakan ke yang efektif spin -1/2 sistem.
Algoritma
pada Quantum Computing
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 Shor
Algoritma yang
ditemukan oleh Peter Shor pada tahun 1995. Dengan menggunakan algoritma ini,
sebuah arallel kuantum dapat memecahkan sebuah kode rahasia yang saat ini
secara umum digunakan untuk mengamankan pengiriman data. Kode yang disebut kode
RSA ini, 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 arallel secara arallel sehingga
kerja pemecahan ini tidaklah efektif.
-
Algoritma Grover
Algoritma Grover adalah
sebuah algoritma kuantum yang menawarkan percepatan kuadrat dibandingkan
pencarian linear klasik untuk list tak terurut. Algoritma Grover
menggambarkan bahwa dengan menggunakan pencarian model kuantum, pencarian dapat
dilakukan lebih cepat dari model komputasi klasik. Dari banyaknya
algoritma kuantum, algoritma grover akan memberikan jawaban yang benar dengan
probabilitas yang tinggi. Kemungkinan kegagalan dapat dikurangi dengan
mengulangi algoritma. Algoritma Grover juga dapat digunakan untuk
memperkirakan rata-rata dan mencari median dari serangkaian angka, dan untuk
memecahkan masalah Collision.
Implementasi Quantum
Computing
Pada 19 Nov 2013 Lockheed Martin, NASA dan Google semua memiliki satu
misi yang sama yaitu mereka semua membuat komputer kuantum sendiri. Komputer
kuantum ini adalah superkonduktor chip yang dirancang oleh sistem D – gelombang
dan yang dibuat di NASA Jet Propulsion Laboratories.
NASA dan Google berbagi sebuah komputer kuantum untuk digunakan di
Quantum Artificial Intelligence Lab menggunakan 512 qubit D -Wave Two yang akan
digunakan untuk penelitian pembelajaran mesin yang membantu dalam menggunakan
jaringan syaraf tiruan untuk mencari set data astronomi planet ekstrasurya dan
untuk meningkatkan efisiensi searchs internet dengan menggunakan AI
metaheuristik di search engine heuristical.
A.I. seperti metaheuristik dapat menyerupai masalah optimisasi global
mirip dengan masalah klasik seperti pedagang keliling, koloni semut atau
optimasi swarm, yang dapat menavigasi melalui database seperti labirin.
Menggunakan partikel terjerat sebagai qubit, algoritma ini bisa dinavigasi jauh
lebih cepat daripada komputer konvensional dan dengan lebih banyak
variabel.
Penggunaan metaheuristik canggih pada fungsi heuristical lebih rendah
dapat melihat simulasi komputer yang dapat memilih sub rutinitas tertentu pada
komputer sendiri untuk memecahkan masalah dengan cara yang benar-benar cerdas .
Dengan cara ini mesin akan jauh lebih mudah beradaptasi terhadap perubahan data
indrawi dan akan mampu berfungsi dengan jauh lebih otomatisasi daripada yang
mungkin dengan komputer normal
sumber :
PARALLEL
COMPUTATION
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 ( 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.
Untuk
itu diperlukan 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.
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 yang 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.
B. DISTRIBUTED
PROCESSING
Pemrosesan
paralel adalah pendekatan komputasi untuk meningkatkan tingkat di mana satu
set data diolah dengan pengolahan bagian yang berbeda dari data pada waktu yang
sama secara simultan atau bersamaan pada sebuah komputer dan berfungsi memecah
beban besar menjadi beberapa beban kecil untuk mempercepat proses penyelesaian
masalah.
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.
Tipe
lain dari komputasi paralel yang kadang-kadang disebut
"didistribusikan" adalah gagasan dari sebuah komputer paralel
cluster. Sebuah cluster akan banyak CPU terhubung melalui kecepatan tinggi
koneksi ethernet ke hub sentral (Server) yang memberi masing-masing beberapa
pekerjaan yang harus dilakukan. Metode cluster mirip dengan metode yang
dijelaskan dalam paragraf di atas, kecuali bahwa semua CPU secara langsung
terhubung ke server, dan satu-satunya tujuan mereka adalah untuk melakukan
perhitungan yang diberikan kepada mereka.
Parallel distributed
computing dapat dibentuk dari :
- Ada : digunakan konsep
pertemuan yang menggabungkan fitur RPC dan monitor.
- PVM (Parallel Virtual
Machine) untuk mendukung workstation clusters
- MPI
(Message-Passing Interface) programming GUI untuk parallel computers.
C. ARCHITECTURAL
PARALLEL COMPUTER
SISD
Yang merupakan singkatan dari Single Instruction, Single Data adalah satu-satunya yang menggunakan arsitektur Von Neumann. Ini dikarenakan pada model ini hanya digunakan 1 processor saja. Oleh karena itu model ini bisa 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.
Yang merupakan singkatan dari Single Instruction, Single Data adalah satu-satunya yang menggunakan arsitektur Von Neumann. Ini dikarenakan pada model ini hanya digunakan 1 processor saja. Oleh karena itu model ini bisa 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
Yang merupakan singkatan dari Single Instruction, Multiple Data. SIMD menggunakan banyak processor dengan instruksi yang sama, namun setiap processor mengolah 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).
Yang merupakan singkatan dari Single Instruction, Multiple Data. SIMD menggunakan banyak processor dengan instruksi yang sama, namun setiap processor mengolah 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
Yang merupakan singkatan dari Multiple Instruction, Single Data. MISD menggunakan banyak processor dengan setiap processor menggunakan instruksi yang berbeda namun mengolah data yang sama. Hal ini merupakan kebalikan dari model SIMD. Untuk contoh, kita bisa menggunakan kasus yang sama pada contoh model SIMD namun cara penyelesaian 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.
Yang merupakan singkatan dari Multiple Instruction, Single Data. MISD menggunakan banyak processor dengan setiap processor menggunakan instruksi yang berbeda namun mengolah data yang sama. Hal ini merupakan kebalikan dari model SIMD. Untuk contoh, kita bisa menggunakan kasus yang sama pada contoh model SIMD namun cara penyelesaian 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
Yang merupakan singkatan dari Multiple Instruction, Multiple Data. MIMD 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.
Yang merupakan singkatan dari Multiple Instruction, Multiple Data. MIMD 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.
Dari
penjelasan-penjelasan di atas, kita bisa mendapatkan jawaban mengapa dan kapan
kita perlu menggunakan komputasi paralel. Jawabannya adalah karena komputasi
paralel jauh lebih menghemat waktu dan sangat efektif ketika kita harus
mengolah data dalam jumlah yang besar. Namun keefektifan akan hilang ketika
kita hanya mengolah data dalam jumlah yang kecil, karena data dengan jumlah
kecil atau sedikit lebih efektif jika kita menggunakan komputasi tunggal.
D. PENGANTAR THREAD
PROGRAMMING
Dalam
pemrograman komputer, sebuah thread adalah informasi terkait dengan penggunaan
sebuah program tunggal yang dapat menangani beberapa pengguna secara bersamaan.
Dari program point-of-view, sebuah thread adalah informasi yang dibutuhkan
untuk melayani satu pengguna individu atau permintaan layanan tertentu. Jika
beberapa pengguna menggunakan program atau permintaan bersamaan dari program
lain yang sedang terjadi, thread yang dibuat dan dipelihara untuk masing-masing
proses. Thread memungkinkan program untuk mengetahui user sedang masuk didalam
program secara bergantian dan akan kembali masuk atas nama pengguna yang
berbeda. Salah satu informasi thread disimpan dengan cara menyimpannya di
daerah data khusus dan menempatkan alamat dari daerah data dalam register.
Sistem operasi selalu menyimpan isi register saat program interrupted dan
restores ketika memberikan program kontrol lagi.
Sebagian
besar komputer hanya dapat mengeksekusi satu instruksi program pada satu waktu,
tetapi karena mereka beroperasi begitu cepat, mereka muncul untuk menjalankan
berbagai program dan melayani banyak pengguna secara bersamaan. Sistem operasi
komputer memberikan setiap program "giliran" pada prosesnya, maka itu
memerlukan untuk menunggu sementara program lain mendapat giliran.
Masing-masing program dipandang oleh sistem operasi sebagai suatu tugas dimana
sumber daya tertentu diidentifikasi dan terus berlangsung. Sistem operasi
mengelola setiap program aplikasi dalam sistem PC (spreadsheet, pengolah kata,
browser Web) sebagai tugas terpisah dan memungkinkan melihat dan mengontrol
item pada daftar tugas. Jika program memulai permintaan I / O, seperti membaca
file atau menulis ke printer, itu menciptakan thread. Data disimpan sebagai
bagian dari thread yang memungkinkan program yang akan masuk kembali di tempat
yang tepat pada saat operasi I / O selesai. Sementara itu, penggunaan bersamaan
dari program diselenggarakan pada thread lainnya. Sebagian besar sistem operasi
saat ini menyediakan dukungan untuk kedua multitasking dan multithreading.
Mereka juga memungkinkan multithreading dalam proses program agar sistem
tersebut disimpan dan menciptakan proses baru untuk setiap thread.
a.
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.
Mekanisme
ini terhitung lambat, karenanya disebut dengan static. Selain itu teknik ini
tidak mudah diterapkan dan rentan kesalahan. Alasannya, pembagian pekerjaan
yang dinamis di antara thread-thread menyebabkan load balancing-nya cukup
rumit. Untuk memudahkannya programmer harus menggunakan protocol komunikasi
yang kompleks untuk menerapkan scheduler load balancing. Kondisi ini mendorong
pemunculan concurrency platforms yang menyediakan layer untuk mengkoordinasi,
menjadwalkan, dan mengelola sumberdaya komputasi paralel.
Sebagian
platform dibangun sebagai runtime libraries atau sebuah bahasa pemrograman
paralel lengkap dengan compiler dan pendukung runtime-nya.
b.
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. Nested
parallelism memungkinkan sebuah subroutine di-spawned (ditelurkan dalam jumlah
banyak seperti telur katak) sehingga program utama tetap berjalan sementara
subroutine menghitung hasilnya. Sedangkan parallel loops seperti halnya fungsi
for namun memungkinkan iterasi loop dilakukan secara bersamaan.