Minggu, 06 Desember 2015

Cuda dalam GPU.




CUDA (Compute Unified Device Architecture) adalah sebuah platform komputasi paralel dan model pemrograman yang diciptakan oleh


Nvidia Icon.

NVIDIA dan dilaksanakan oleh unit pengolahan grafis ( GPU ) yang mereka hasilkan . CUDA memberikan pengembang program akses langsung ke set instruksi virtual dan memori elemen komputasi paralel dalam CUDA GPU .


Menggunakan CUDA , GPU dapat digunakan untuk pengolahan tujuan umum (yaitu , tidak eksklusif grafis ) , pendekatan ini dikenal sebagai GPGPU . Tidak seperti CPU , bagaimanapun, GPU memiliki arsitektur throughput yang paralel yang menekankan mengeksekusi banyak benang bersamaan perlahan, daripada mengeksekusi satu thread yang sangat cepat .

Nvidia Cuda.

Platform CUDA dapat diakses oleh pengembang perangkat lunak melalui perpustakaan CUDA -accelerated , perintah kompiler (seperti OpenACC ) , dan ekstensi untuk bahasa pemrograman standar industri , termasuk C , C + + dan Fortran . C / C + + programmer menggunakan ' CUDA C / C + + ' , yang disusun dengan " nvcc " , NVIDIA LLVM berbasis C / C + + compiler , dan Fortran programmer dapat menggunakan ' CUDA Fortran ' , yang disusun dengan PGI CUDA Fortran compiler dari The Portland group. .

Parallel Computation | Pengantar Message Passing, 

OpenMP

 




Massage Passing merupkan suatu teknik bagaimana mengatur suatu alur komunikasi messaging terhadap proses pada system. Message passing dalam ilmu komputer adalah suatu bentuk komunikasi yang digunakan dalam komputasi paralel , pemrograman-berorientasi objek , dan komunikasi interprocess . Dalam model ini, proses atau benda dapat mengirim dan menerima pesan yang terdiri dari nol atau lebih byte, struktur data yang kompleks, atau bahkan segmen kode ke proses lainnya dan dapat melakukan sinkronisasi. Objek didistribusikan dan metode sistem remote doa seperti ONC RPC , CORBA , Java RMI , DCOM , SOAP , . NET Remoting , CTO , QNX Neutrino RTOS , OpenBinder , D-Bus , Unison RTOS dan serupa pesan lewat sistem.Paradigma Message passing yaitu :
1. Banyak contoh dari paradigma sekuensial dipertimbangkan bersama-sama.
2. Programmer membayangkan beberapa prosesor, masing-masing dengan memori, dan menulis sebuah program untuk berjalan pada setiap prosesor.
3. Proses berkomunikasi dengan mengirimkan pesan satu sama lain

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.

Parallel Computation | 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.
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.
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.

Parallel Computation | Architectural Parallel Computer

 




Arsitektur paralel komputer menurut Klasifikasi Flynn’s:
§  SISD
Single Instruction – Single Data. Komputer ini memiliki hanya satu prosesor dan satu instruksi yang dieksekusi secara serial. Komputer ini adalah tipe komputer konvensional. Menurut mereka tipe komputer ini tidak ada dalam praktik komputer paralel karena bahkan mainframe pun tidak lagi menggunakan satu prosesor. Klasifikasi ini sekedar untuk melengkapi definisi komputer paralel. Beberapa contoh komputer yang menggunakan model SISD adalah UNIVAC1, IBM 360, CDC 7600, Cray 1 dan PDP 1.


§  SIMD
Single Instruction – Multiple Data. Komputer ini memiliki lebih dari satu prosesor, tetapi hanya mengeksekusi satu instruksi 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).
§  MISD
Multiple Instructions – Single Data. 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. Sampai saat ini belum ada komputer yang menggunakan model MISD.
§  MIMD
Multiple Instructions – Multiple Data. Komputer ini memiliki lebih dari satu prosesor dan mengeksekusi lebih dari satu instruksi secara paralel. 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.
Sistem komputer paralel dibedakan dari cara kerja memorinya menjadi shared memory dan distributed memory. Shared memory berarti memori tunggal diakses oleh satu atau lebih prosesor untuk menjalankan instruksi sedangkan distributed memory berarti setiap prosesor memiliki memori sendiri untuk menjalankan instruksi. Adapun komponen-komponen utama dari arsitektur komputer paralel cluster PC antara lain:
  • §  Prosesor (CPU). Bagian paling penting dalam sistem, untuk multicore terdapat lebih dari satu core yang mengakses sebuah memori (shared memory).
  • §  Memori. Bagian ini dapat diperinci lagi menjadi beberapa bagian penyusunnya seperti RAM, cache memory dan memori eksternal.
  • §  Sistem Operasi. Software dasar untuk menjalankan sistem komputer.
  • §  Cluster Middleware. Antarmuka antara hardware dan software.
  • §  Programming Environment dan Software Tools. Software yang digunakan untuk pemrograman paralel termasuk software pendukungnya.
  • §  User Interface. Software yang menjadi perantara hardware dengan user.
  • §  Aplikasi. Software berisi program permasalahan yang akan diselesaikan.
  • §  Jaringan. Penghubung satu PC (prosesor) dengan PC yang lain sehingga memungkinkan pemanfaatan sumberdaya secara simultan.

Distributed Processing

Deskripsi Distributed Processing :
Mengerjakan semua proses pengolahan data secara bersama antara komputer pusat dengan beberapa komputer yang lebih kecil dan saling dihubungkan melalui jalur komunikasi. Setiap komputer tersebut 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.

Cite :
Deskripsi Distributed Processing, http://www.deskripsi.com/komputer/distributed-processing, tanggal akses : 06 December, 2015.
Link :
<ahref="http://www.deskripsi.com/komputer/distributed-processing">Deskripsi Distributed Processing</a>

Parallel Computation | Parallelism Concept




Pada dasarnya, konsep parallel system merupakan suatu bentuk penawaran solusi dari proses computing yang terlalu berat, sehingga dapat dipecah sedemikian hingga tidak memberatkan system kerja komputer itu sendiri. Konsep program parallel :
-  Memerintahkan set instruksi (pandangan programmer).
-  File executable (pandangan sistem operasi)
Komputasi paralel didefinisikan sebagai penggunaan sekumpulan sumberdaya komputer secara simultan untuk menyelesaikan permasalahan komputasi. Secara prinsip komputer paralel membagi permasalahan sehingga menjadi lebih kecil untuk dikerjakan oleh setiap prosesor / CPU dalam waktu yang bersamaan/simultan / concurrent dan prinsip ini disebut paralelisme.
Sebenarnya prinsip paralelisme juga sudah diterapkan dalam komputer serial misal dengan pipelining dan superscalar-nya namun demikian tidak memberikan solusi terbaik dalam hal meningkatkan performansi dikarenakan terbatasnya kemampuan untuk menambah kecepatan prosesor dan fenomena memory bottleneck.  Tingkat paralelisme dalam komputasi khususnya pada prosesor di antaranya :
-  Paralelisme bit-level. Contoh : prosesor 32 bit dan prosesor 64 bit.
-  Paralelisme instruction set-level. Contoh : CISC dan RISC.
-  Paralelisme thread-level. Contoh : Intel hyperthreading.
Paralelisme lain yang juga berkembang dalam komputasi paralel adalah paralelisme data dan paralelisme fungsi. Perkembangan teknologi prosesor : prosesor singlecore superscalar, chip multiprocessor, prosesor multicore, hingga prosesor cell memberikan kontribusi terhadap peningkatan performansi komputer parallel.

Parallel Computing

Komputasi paralel adalah salah satu teknik melakukan komputasi 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) dll.

Untuk melakukan aneka jenis komputasi paralel ini diperlukan infrastruktur mesin paralel yang terdiri dari banyak komputer yang dihubungkan dengan jaringan dan mampu bekerja secara paralel untuk menyelesaikan satu masalah. 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 !
Salah satu middleware orisinal yang dikembangkan di Indonesia adalah openPC yang digawangi oleh GFTK LIPI dan telah diimplementasikan dengan di LIPI Public Cluster.


GRID merupakan pengembangan teknologi mesin paralel dengan memanfaatkan jaringan pita lebar di era dijital. Dengan adanya jaringan pita lebar, paralelisasi tidak hanya dilakukan antar komputer dalam satu jaringan, tetapi juga antar mesin paralel yang terpisah secara geografis.

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 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


Bahasa populer dalam Pemrograman Paralel

  • MPI : Message Passing Interface, bahasa pemrograman dengan basis pertukaran pesan. 
  • PVM : Parallel Virtual machine. 

Istilah-istilah dalam pemrograman paralel

  • Embarasingly Parallel adalah pemrograman paralel yang digunakan pada masalah-masalah yang bisa diparalelkan tanpa membutuhkan komunikasi satu sama lain. Sebenarnya pemrograman ini bisa dibilang sebagai pemrograman paralel yang ideal, karena tanpa biaya komunikasi, lebih banyak peningkatan kecepatan yang bisa dicapai. 
  • Taksonomi dari model pemrosesan paralel dibuat berdasarkan alur instruksi dan alur data yang digunakan: 
  • SISD Single Instruction Single Datapath, ini prosesor tunggal, yang bukan paralel. 
  • SIMD Single Instruction Multiple Datapath, alur instruksi yang sama dijalankan terhadap banyak alur data yang berbeda. Alur instruksi di sini kalau tidak salah maksudnya ya program komputer itu. trus datapath itu paling ya inputnya, jadi inputnya lain-lain tapi program yang digunakan sama. 
  • MIMD Multiple Instruction Multiple Datapath, alur instruksinya banyak, alur datanya juga banyak, tapi masing-masing bisa berinteraksi. 
  • MISD Multiple Instruction Single Datapath, alur instruksinya banyak tapi beroperasi pada data yang sama.



sumber:
http://en.wikipedia.org/wiki/Parallel_computing
https://computing.llnl.gov/tutorials/parallel_comp/

Minggu, 11 Oktober 2015


I.                   Pendahuluan
Quantum Computation atau komputer kuantum adalah sebuah alat untuk perhitungan, dimana perhitungan ini menggunakan langsung fenomena kuantum mekanik dan perhitungan ini seperti superposisi dan belitan untuk melakukan operasi pada data. Perbedaan komputer kuantum dengan komputer klasik adalah pada sebuah komputer klasik memiliki memori terdiridari bit, dimana tiap bit mewakili salah satu atau nol. Sedangkan sebuah komputer kuantummempertahankan urutan 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.

Pengoprasian Data Glubit



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.  Misalnya saat spin atom mengarah ke atas (up) kita beri lambang 1, sedangkan spin down adalah 0.

QUATUM GATES

Gerbang kuantum

dari Wikipedia, ensiklopedia gratis
Untuk permainan, lihat Quantum Gate (video game).
Dalam komputasi kuantum dan khususnya sirkuit kuantum model komputasi, sebuah gerbangkuantum (quantum atau gerbang logika) adalah dasar sirkuit kuantum yang beroperasi pada sejumlah kecil qubit. Mereka adalah blok bangunan sirkuit kuantum, seperti klasik gerbang logikaadalah untuk sirkuit digital konvensional.
Tidak seperti banyak gerbang logika klasik, logika kuantum gerbang reversibel. Namun, adalah mungkin untuk melakukan komputasi klasik menggunakan gerbang hanya reversibel. Sebagai contoh, reversibel gerbang Toffoli dapat melaksanakan semua fungsi Boolean. Gerbang ini memiliki setara kuantum langsung, menunjukkan bahwa sirkuit kuantum dapat melakukan semua operasi yang dilakukan oleh sirkuit klasik.
Quantum gerbang logika yang diwakili oleh matriks kesatuan. Gerbang kuantum yang paling umum beroperasi pada ruang satu atau dua qubit, seperti umum klasik gerbang logika beroperasi pada satu atau dua bit. Ini berarti bahwa sebagai matriks, gerbang kuantum dapat dijelaskan oleh 2 × 2 atau 4 × 4 matriks kesatuan. 

Isi

Gerbang yang biasa digunakan

Gerbang kuantum biasanya direpresentasikan sebagai matriks. Sebuah gerbang yang bekerja pada k qubit diwakili oleh 2 k x 2 k matriks kesatuan. Jumlah qubit dalam input dan output dari gerbang harus sama. Tindakan gerbang kuantum ditemukan dengan mengalikan matriks mewakili gerbang dengan vektor yang mewakili keadaan kuantum. Berikut ini, representasi vektor dari qubit tunggal: 
v_0 | 0 \ rangle + v_1 | 1 \ rangle \ Rightarrow \ begin {} bmatrix v_0 \\ v_1 \ end {} bmatrix .
dan representasi vektor dari dua qubit adalah: 
v_ {00} | 00 \ rangle + v_ {01} | 0 1 \ rangle + v_ {10} | 1 0 \ rangle + v_ {11} | 1 1 \ rangle \ Rightarrow \ begin {bmatrix} v_ {00} \ \ v_ {} 01 \\ v_ {} 10 \\ v_ {} 11 \ end {} bmatrix .
dimana | B \ rangle adalah negara di mana qubit pertama memiliki nilai dan yang kedua qubit b. 

Hadamard gerbang

The Hadamard gerbang bertindak pada qubit tunggal. Ini peta negara secara | 0 \ rangle untuk \ frac {| 0 \ rangle + | 1 \ rangle} {\ sqrt {2}} dan | 1 \ rangle untuk \ frac {| 0 \ rangle - | 1 \ rangle} {\ sqrt {2}} dan merupakan rotasi \ pi tentang sumbu (\ hat {x} + \ hat {z}) / \ sqrt {2} . Hal ini diwakili oleh matriks Hadamard: 
Representasi rangkaian dari Hadamard gerbang
H = \ frac {1} {\ sqrt {2}} \ begin {} bmatrix 1 & 1 \\ 1 & -1 \ end {} bmatrix .
Sejak HH ^ {*} = I dimana I adalah matriks identitas, H memang matriks kesatuan. 

Pauli-X gerbang

Pauli-X gerbang bertindak pada qubit tunggal. Ini adalah setara kuantum dari gerbang NOT(sehubungan dengan dasar standar | 0 \ rangle . | 1 \ rangle , Yang hak Z -direction). Ini setara dengan rotasiBloch Sphere sekitar sumbu X dengan π radian. Ini peta | 0 \ rangle untuk | 1 \ rangle dan | 1 \ rangle untuk | 0 \ rangle. Hal ini diwakili oleh Pauli matriks: 
X = \ begin {} bmatrix 0 & 1 \\ 1 & 0 \ end {} bmatrix .

Pauli-Y gerbang

Pauli-Y gerbang bertindak pada qubit tunggal. Ini setara dengan rotasi di sekitar sumbu Y dari Bloch Sphere oleh radian π. Ini peta | 0 \ rangle untuk i | 1 \ rangle dan | 1 \ rangle untuk -i | 0 \ rangle . Hal ini diwakili oleh Pauli matriks Y: 
Y = \ begin {} bmatrix 0 & i \\ i & 0 \ end {} bmatrix .

Pauli-Z gerbang

Pauli-Z gerbang bertindak pada qubit tunggal. Ini setara dengan rotasi di sekitar sumbu Z dari Bloch Sphere oleh radian π. Dengan demikian, itu adalah kasus khusus dari gerbang pergeseran fasa (berikutnya) dengan θ = π. Ia meninggalkan negara secara | 0 \ rangle tidak berubah dan peta | 1 \ rangleuntuk - | 1 \ rangle . Hal ini diwakili oleh Pauli Z matriks: 
Z = \ begin {} bmatrix 1 & 0 \\ 0 & -1 \ end {} bmatrix .

Gerbang pergeseran fasa

Ini adalah sebuah keluarga tunggal qubit gerbang yang meninggalkan negara secara | 0 \ rangle tidak berubah dan peta | 1 \ rangle untuk e ^ {i \ phi} | 1 \ rangle . Probabilitas mengukur | 0 \ rangle atau | 1 \ rangle tidak berubah setelah menerapkan gerbang ini, namun memodifikasi fase keadaan kuantum. Ini setara dengan menelusuri lingkaran horizontal (garis lintang) pada Bloch Sphere oleh \ phi radian. 
R_ \ phi = \ begin {} bmatrix 1 & 0 \\ 0 & e ^ {i \ phi} \ end {} bmatrix
di mana φ adalah pergeseran fasa. Beberapa contoh umum adalah \ frac {\ pi} {8} gerbang mana φ = \ frac {\ pi} {4} , Gerbang fase di mana φ = \ frac {\ pi} {2} dan gerbang Pauli-Z di mana φ = π. 

Gerbang Swap

Representasi rangkaian dari SWAP gerbang
Gerbang Swap swap dua qubit. Sehubungan dengan dasar | 00 \ rangle . | 01 \ rangle . | 10 \ rangle . | 11 \ rangle , Itu diwakili oleh matriks: 
\ mbox {} SWAP = \ begin {} bmatrix 1 & 0 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 1 \ end {} bmatrix .

Akar kuadrat dari gerbang Swap

Representasi dari sirkuit \ sqrt {\ mbox {}} SWAP gerbang
Sqrt (swap) gerbang melakukan setengah-cara swap dua qubit. Ini adalah universal seperti bahwa setiap kuantum banyak qubit gerbang dapat dibangun dari hanya sqrt (swap) dan gerbang qubit tunggal. 
\ sqrt {\ mbox {} = SWAP} \ begin {} bmatrix 1 & 0 & 0 & 0 \\ 0 & \ frac {1} {2} (1 + i) & \ frac {1} {2} (1 -i) & 0 \\ 0 & \ frac {1} {2} (1-i) & \ frac {1} {2} (1 + i) & 0 \\ 0 & 0 & 0 & 1 \\ \ end {} bmatrix .

Gerbang dikendalikan

Representasi sirkuit dikendalikan gerbang NOT
Gerbang dikendalikan bertindak atas 2 atau lebih qubit, di mana satu atau lebih qubit bertindak sebagai kontrol untuk beberapa operasi. Sebagai contoh, gerbang NOT dikendalikan (atau CNOT) bertindak atas 2 qubit, dan melakukan operasi TIDAK pada qubit kedua hanya ketika qubit pertama adalah | 1 \ rangle , Dan sebaliknya daun itu berubah. Hal ini diwakili oleh matriks 
\ mbox {} CNOT = \ begin {} bmatrix 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 1 \\ 0 & 0 & 1 & 0 \ end {} bmatrix .
Secara umum jika U adalah gerbang yang beroperasi pada qubit tunggal dengan representasi matriks 
U = \ begin {} bmatrix x_ {} 00 & x_ {} 01 \\ x_ {} 10 & x_ {} 11 \ end {} bmatrix .
maka-U dikontrol gerbang gerbang yang beroperasi pada dua qubit sedemikian rupa bahwa qubit pertama berfungsi sebagai kontrol. Ini peta negara secara sebagai berikut. 
Representasi rangkaian dari controlled- gerbang U
| 0 0 \ rangle \ Maps untuk | 0 0 \ rangle
| 0 1 \ rangle \ Maps untuk | 0 1 \ rangle
| 1 0 \ rangle \ Maps untuk | 1 \ rangle U | 0 \ rangle = | 1 \ rangle \ kiri (x_ {} 00 | 0 \ rangle + x_ {} 10 | 1 \ rangle \ right)
| 1 1 \ rangle \ Maps untuk | 1 \ rangle U | 1 \ rangle = | 1 \ rangle \ kiri (x_ {} 01 | 0 \ rangle + x_ {} 11 | 1 \ rangle \ right)
Matriks mewakili U dikendalikan 
\ mbox {C} (U) = \ begin {} bmatrix 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & x_ {} 00 & x_ {} 01 \\ 0 & 0 & x_ {} 10 & x_ {} 11 \ end {} bmatrix .
dikontrol X, Y dan Z gerbang
Qcircuit CX.svg
dikendalikan-X gerbang
Qcircuit CY.svg
dikendalikan-Y gerbang
Qcircuit CZ.svg
dikendalikan-Z gerbang
Ketika U adalah salah satu matriks Pauli, σ x, y σ, atau σ z, istilah masing"X controlled-", "controlled- Y", atau"Z controlled-" kadang-kadang digunakan. [1] 

Toffoli gerbang

Artikel utama: Toffoli gerbang
Representasi rangkaian dari Toffoli gerbang
The Toffoli gerbang, juga CCNOT gerbang, adalah gerbang 3-bit, yang umum untuk perhitungan klasik. Kuantum Toffoli gerbang gerbang yang sama, ditetapkan untuk 3 qubit. Jika dua bit pertama adalah di negara bagian | 1 \ rangle , Itu menerapkan Pauli-X pada bit ketiga, yang lain itu tidak apa-apa.Ini adalah contoh dari gerbang dikendalikan. Karena merupakan analog kuantum gerbang klasik, itu benar-benar ditentukan oleh tabel kebenarannya. 
Tabel kebenaranBentuk matriks
MEMASUKKANOUTPUT
000000
001001
010010
011011
100100
101101
110111
111110
\ begin {} bmatrix 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 \\ 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 \\ \ end {} bmatrix
Hal ini dapat juga digambarkan sebagai gerbang yang memetakan | a, b, c \ rangle untuk | a, b, c \ oplus ab \ rangle . 

Fredkin gerbang

Artikel utama: gerbang Fredkin
Representasi rangkaian dari Fredkin gerbang
The Fredkin gerbang (juga CSWAP gerbang) adalah gerbang 3-bit yang melakukan dikendalikanpertukaran. Hal ini yang universal untuk perhitungan klasik. Ini memiliki properti yang berguna bahwa angka 0 dan 1 dilestarikan sepanjang, yang dalam model yang bola bilyar berarti jumlah yang sama dari bola adalah output sebagai input. 
Tabel kebenaranBentuk matriks
MEMASUKKANOUTPUT
CSaya 1Saya I2CO 1O 2
000000
001001
010010
011011
100100
101110
110101
111111
\ begin {} bmatrix 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 \\ \ end {} bmatrix

Gerbang kuantum Universal

Informal, satu set gerbang kuantum universal setiap set gerbang yang operasi apapun yang mungkin terjadi pada komputer kuantum dapat dikurangi, yaitu, setiap operasi kesatuan lain dapat dinyatakan sebagai urutan terbatas gerbang dari set. Secara teknis, hal ini tidak mungkin karena jumlah gerbang kuantum yang mungkin adalah terhitung, sedangkan jumlah urutan terbatas dari satu set yang terbatas adalah dihitung. Untuk mengatasi masalah ini, kita hanya mengharuskan operasi kuantum apapun dapat didekati dengan urutan gerbang dari himpunan berhingga ini. Selain itu, untuk kasus tertentu qubit tunggal unitaries yang Teorema Solovay-Kitaev menjamin bahwa hal ini dapat dilakukan secara efisien.
Satu set sederhana dari dua qubit gerbang kuantum universal gerbang Hadamard ( H ), Yang \ pi / 8 gerbang R (\ pi / 4) , Dan gerbang NOT dikendalikan.
Sebuah single-gerbang set gerbang kuantum universal yang juga dapat dirumuskan dengan menggunakan tiga qubit Deutsch gerbang D (\ theta) , Yang melakukan transformasi [2] 
| a, b, c \ rangle \ Maps untuk \ begin {kasus} i \ cos (\ theta) | a, b, c \ rangle + \ sin (\ theta) | a, b, 1-c \ rangle & \ mbox {} untuk a = b = 1 \\ | a, b, c \ rangle & \ mbox {.} dinyatakan \ end {} kasus
Universal klasik gerbang logika, yang Toffoli gerbang, direduksi menjadi gerbang Deutsch, D (\ begin {matrix} \ frac {\ pi} {2} \ end {matrix}), Sehingga menunjukkan bahwa semua operasi logika klasik dapat dilakukan pada sebuah komputer kuantum universal. 

Sejarah

Notasi saat gerbang kuantum dikembangkan oleh Barenco et al., [3] bangunan di notasi diperkenalkan oleh Feynman. [