Rabu, 01 Juli 2020


TUGAS 3
PENGANTAR KOMPUTASI MODERN
 


Disusun oleh :

Kelfin Widya Cahyo                         53416848
Otniel Hamonangan Girsang            55416699
Rachmat Maulana Yusuf                            54416908
Yudha Mahendra                              57416825
Kelas : 4IA23




FAKULTAS TEKNOLOGI INDUSTRI
JURUSAN TEKNIK INFORMATIKA
UNIVERSITAS GUNADARMA
2020

1.     Konsep Quantum Computation
Dalam bahasa Indonesia yaitu komputer kuantum, merupakan komputer yang memanfaatkan fenomena-fenomena dari mekanika quantum, seperti quantum superpositiondan quantum entanglement, yang digunakan untuk pengoperasian data. QuantumComputation itu sendiri adalah suatu bidang studi yang memfokuskan kepada teknologikomputer yang sedang berkembang berdasarkan prinsip-prinsip dari teori kuantum. Dimanadijelaskan mulai dari sifat serta perilaku energi dan materi pada kuantum (atom dan subatom) tingkat. Quantum Computing adalah alat hitung yang menggunakan sebuah fenomenamekanika kuantum, misalnya superposisi dan keterkaitan untuk melakukan operasi data.Dalam komputasi klasik, jumlah data dihitung dengan bit. Dalam komputer kuantum, hal inidilakukan dengan qubit.Prinsip dasar komputer kuantum adalah bahwa sifat kuantum dari partikel dapatdigunakan untuk mewakili data dan struktur data dan bahwa mekanika kuantum dapatdigunakan untuk melakukan operasi dengan data ini. Dalam hal ini untuk mengembangkankomputer dengan sistem kuantum diperlukan suatu logika baru yang sesuai dengan prinsipkuantum. Walaupun komputer kuantum masih dalam pengembangan, telah dilakukan.
Prinsip dasar komputer kuantum adalah bahwa sifat kuantum dari partikel dapat digunakan untuk mewakili data dan struktur data dan bahwa mekanika kuantum dapatdigunakan untuk melakukan operasi dengan data ini. Dalam hal ini untuk mengembangkankomputer dengan sistem kuantum diperlukan suatu logika baru yang sesuai dengan prinsipkuantum. Walaupun komputer kuantum masih dalam pengembangan, telah dilakukan eksperimen dimana operasi komputasi kuantum dilakukan atas sejumlah kecil Qubit. Riset baik secara teoretis maupun praktik terus berlanjut dalam laju yang cepat, banyak pemerintahnasional dan agensi pendanaan militer mendukung riset komputer kuantum untuk pengembangannya, baik untuk keperluan rakyat maupun masalah keamanan nasional seperti kriptoanalisis.
Perhitungan jumlah data pada komputasi klasik dihitung dengan bit, sedangkan perhitungan jumlah data pada komputer kuantum dilakukan dengan qubit. Prinsip dasarkomputer kuantum adalah bahwa sifat kuantum dari partikel dapat digunakan untuk mewakilidata dan struktur data, dan bahwa mekanika kuantum dapat digunakan untuk melakukanoperasi dengan data ini. Dalam hal ini untuk mengembangkan komputer dengan sistemkuantum diperlukan suatu logika baru yang sesuai dengan prinsip kuantum.
Komputer kuantum dapat jauh lebih cepat dari komputer konvensional pada banyakmasalah, salah satunya yaitu masalah yang memiliki sifat berikut :
·         Satu-satunya cara adalah menebak dan mengecek jawabannya berkali-kali
·         Terdapat n jumlah jawaban yang mungkin
·         Setiap kemungkinan jawaban membutuhkan waktu yang sama untuk mengeceknya
·         Tidak ada petunjuk jawaban mana yang kemungkinan benarnya lebih besar: memberi jawaban dengan asal tidak berbeda dengan mengeceknya dengan urutan tertentu.



2.     Cara kerja Entanglement Quantum

Entanglement adalah suatu teori mekanika quantum yang menggambarkanseberapa cepat dan betapa kuatnya keterhubungan partikel-partikel pada Quantum computer yang dimana jika suatu partikel diperlakukan “A” maka akan memberikan dampak “A” juga ke partikel lainnya.
Quantum entanglement adalah bagian dari fenomena quantum mechanical yangmenyatakan bahwa dua atau lebih objek dapat digambarkan mempunyai hubungan denganobjek lainnya walaupun objek tersebut berdiri sendiri dan terpisah dengan objeklainnya. Quantum entanglement merupakan salah satu konsep yang membuat Einsteinmengkritisi teori Quantum mechanical. Einstein menunjukkan kelemahan teori QuantumMechanical yang menggunakan entanglement merupakan sesuatu yang “spooky action at adistance” karena Einstein tidak mempercayai bahwa Quantum particles dapat mempengaruhi partikel lainnya melebihi kecepatan cahaya. Namun, beberapa tahun kemudian, ilmuwan John Bell membuktikan bahwa “spooky action at a distance” dapat dibuktikan bahwa entanglement dapat terjadi pada partikel-partikel yang sangat kecil.
Penggunaan quantum entanglement saat ini diimplementasikan dalam berbagai bidangsalah satunya adalah pengiriman pesan-pesan rahasia yang sulit untuk di-enkripsi dan pembuatan komputer yang mempunyai performa yang sangat cepat. Ada juga pemahaman lain tentang Entanglement menurut Albert Einsten” Entanglement Kuantum”di istilahkan “Perbuatan Sihir Jarak Jauh” yang merupakan sifat dasar mekanika kuantum. Entanglement memungkinkan informasi kuantum tersebar dalam puluhan ribu kilometer, dan hanya dibatasioleh seberapa cepat dan seberapa banyak pasangan entanglement dapat bekerja dalam ruang.
Dari sumber yang saya dapatkan dari internet : [Quantum entanglement] merupakanfenomena yang menghubungkan dua partikel sedemikian rupa sehingga perubahan yangterjadi pada satu partikel seketika itu juga tercermin dalam partikel lainnya, meski mungkinsecara fisik diantara mereka terpisah beberapa tahun cahaya.











3.     Teknik pengoperasian data Qubit
Qubit merupakan kuantum bit , mitra dalam komputasi kuantum dengan digit bineratau bit dari komputasi klasik. Sama seperti sedikit adalah unit dasar informasi dalamkomputer klasik, qubit adalah unit dasar informasi dalam komputer kuantum . Dalamkomputer kuantum, sejumlah partikel elemental seperti elektron atau foton dapat digunakan(dalam praktek, keberhasilan juga telah dicapai dengan ion), baik dengan biaya mereka atau polarisasi bertindak sebagai representasi dari 0 dan / atau 1. Setiap partikel-partikel inidikenal sebagai qubit, sifat dan perilaku partikel-partikel ini (seperti yang diungkapkan dalamteori kuantum ) membentuk dasar dari komputasi kuantum. Dua aspek yang paling relevanfisika kuantum adalah prinsip superposisi dan Entanglement.
Superposisi, pikirkan qubit sebagai elektron dalam medan magnet. Spin elektronmungkin baik sejalan dengan bidang, yang dikenal sebagai spin-up, atau sebaliknya kelapangan, yang dikenal sebagai keadaan spin-down. Mengubah spin elektron dari satukeadaan ke keadaan lain dicapai dengan menggunakan pulsa energi, seperti dari Laser -katakanlah kita menggunakan 1 unit energi laser. Tapi bagaimana kalau kita hanyamenggunakan setengah unit energi laser dan benar-benar mengisolasi partikel dari segala pengaruh eksternal? Menurut hukum kuantum, partikel kemudian memasuki superposisinegara, di mana ia berperilaku seolah-olah itu di kedua negara secara bersamaan.  
 Setiap qubit dimanfaatkan bisa mengambil superposisi dari kedua 0 dan 1. Dengan demikian, jumlah perhitungan bahwa komputer kuantum dapat melakukan adalah 2 ^ n, dimana n adalah jumlah qubit yang digunakan. Sebuah komputer kuantum terdiri dari 500 qubit akan memiliki potensi untuk melakukan 2 ^ 500 perhitungan dalam satu langkah. Ini adalah jumlah yangmengagumkan - 2 ^ 500 adalah atom jauh lebih dari yang ada di alam semesta (ini pemrosesan paralel benar - komputer klasik saat ini, bahkan disebut prosesor paralel, masihhanya benar-benar melakukan satu hal pada suatu waktu: hanya ada dua atau lebih darimereka melakukannya). Tapi bagaimana partikel-partikel ini akan berinteraksi satu samalain? Mereka akan melakukannya melalui belitan kuantum.
Ilmu informasi quantum dimulai dengan menggeneralisir sumberdaya fundamental informasi klasik bit menjadi bit quantum, atau qubit. Sebagaimana bit merupakan objekideal yang diabstraksi dari prinsip-prinsip fisika klasik, qubit adalah objek quantum idealyang diabstraksi dari prinsip-prinsip mekanika quantum. Bit bisa direpresentasikan dengankawasan-magnetik pada cakram, voltase pada sirkuit, atau tanda grafit yang dibuat pensil pada kertas. Pemfungsian status-status fisikal klasik ini sebagai bit tidak bergantung padadetil bagaimana mereka direalisasikan. Demikian halnya, atribut-atribut qubit adalahindependen 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 statusquantumnya. Dua status quantum potensial untuk qubit ekuivalen dengan 0 dan 1 bit klasik. Namun dalam mekanika quantum, objek apapun yang memiliki dua status berbeda pastimemiliki rangkaian status potensial lain, disebut superposisi, yang menjerat kedua statushingga derajat bermacam-macam. Status-status qubit yang diperkenankan persisnyamerupakan semua status yang harus bisa dicapai, secara prinsip, oleh bit klasik yangditransplantasikan ke dalam dunia quantum. Status-status qubit ekuivalen dengan titik-titik di permukaan bola, di mana 0 dan 1 sebagai kutub selatan dan utara Kontinum status antara 0dan 1 membantu perkembangan banyak atribut luar biasa informasi quantum.


4.     Teknik Quantum Gates
Quantum Gates merupakan sebuah aturan logika / gerbang logika yang berlaku pada quantum computing. prinsip kerja dari quantum gates hampir sama dengan gerbang logika pada komputer digital. jika pada komputer digital terdapat beberapa operasi logika seperti AND, OR, NOT. pada quantum gates terdiri dari beberapa bilangan qubit, sehingga quantum gates lebih susah untuk dihitung daripada gerbang logika pada komputer digital. Quantum logic gates, pada prosedur berikut menunjukan bagaimana cara untuk membuat sirkuit reversibel yang mensimulasikan dan sirkuit inversibel sementara untuk membuat penghematan yang besar dalam jumlah ancillae yang digunakan. berikut prosesnya :
·         Simulasikan gerbang dibabak tingkat pertama
·         Jauhkan hasil gerbang di tingkat 2 secara terpisah
·         Bersihkan bit ancillae
·         Gunakan mereka untuk mensimulasikan gerbang di babak kedua tingkat
·         Setelah menghitung output, membersihkan bit ancillae
·         Bersihkan hasil tingkat 2



5.     Teknik Algoritma Shor
Algoritma Shor, dinamai matematikawan Peter Shor , adalah algoritma kuantum yaitu merupakan suatu algoritma yang berjalan pada komputer kuantum yang berguna untuk faktorisasi bilangan bulat. Algoritma Shor dirumuskan pada tahun 1994.  Inti dari algoritma ini merupakan bagaimana cara menyelesaikan faktorisasi terhaadap bilanga interger atau bulat yang besar.
Efisiensi algoritma Shor adalah karena efisiensi kuantum Transformasi Fourier , dan modular eksponensial. Jika sebuah komputer kuantum dengan jumlah yang memadai qubit dapat beroperasi tanpa mengalah kebisingan dan fenomena interferensi kuantum lainnya, algoritma Shor dapat digunakan untuk memecahkan kriptografi kunci publik skema seperti banyak digunakan skema RSA.

Algoritma Shor terdiri dari dua bagian:
·         Penurunan yang bisa dilakukan pada komputer klasik, dari masalah anjak untuk masalah ketertiban -temuan.
·         Sebuah algoritma kuantum untuk memecahkan masalah order-temuan.

Hambatan runtime dari algoritma Shor adalah kuantum eksponensial modular yang jauh lebih lambat dibandingkan dengan kuantum Transformasi Fourier dan pre-/post-processing klasik. Ada beberapa pendekatan untuk membangun dan mengoptimalkan sirkuit untuk eksponensial modular. Yang paling sederhana dan saat ini yaitu pendekatan paling praktis adalah dengan menggunakan meniru sirkuit aritmatika konvensional dengan gerbang reversibel , dimulai dengan penambah ripple-carry. Sirkuit Reversible biasanya menggunakan nilai pada urutan n ^ 3, gerbang untuk n qubit. Teknik alternatif asimtotik meningkatkan jumlah gerbang dengan menggunakan kuantum transformasi Fourier , tetapi tidak kompetitif dengan kurang dari 600 qubit karena konstanta tinggi.


Referensi :



TUGAS 4
PENGANTAR KOMPUTASI MODERN
“Parallel Computation”











Disusun oleh :

Kelfin Widya Cahyo                         53416848
Otniel Hamonangan Girsang            55416699
Rachmat Maulana Yusuf                            54416908
Yudha Mahendra                              57416825
Kelas : 4IA23




FAKULTAS TEKNOLOGI INDUSTRI
JURUSAN TEKNIK INFORMATIKA
UNIVERSITAS GUNADARMA
2020
1.     Parallelism Concept

Komputasi paralel merupakan salah satu teknik komputasi, dimana proses komputasi nya dilakukan oleh beberapa resources ( komputer ) yang independen, secara bersamaan. Komputasi paralel biasanya diperlukan pada saat terjadinya pengolahan data dalam jumlah besar ( di industri keuangan, bio informatika, dll ) atau dalam memenuhi proses komputasi yang sangat banyak. diperlukan perangkat lunak pendukung yang biasa disebut sebagai middleware yang berperan untuk mengatur distribusi pekerjaan antar node dalam satu mesin paralel.

Pemakai harus membuat pemrograman paralel untuk merealisasikan komputasi. Tidak berarti dengan mesin paralel semua program yang dijalankan di atas nya 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.

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.
Singkatnya untuk perbedaan antara komputasi tunggal dengan komputasi paralel, bisa digambarkan pada gambar di bawah ini:


Dari perbedaan kedua gambar di atas, kita dapat menyimpulkan bahwa kinerja komputasi paralel lebih efektif dan dapat menghemat waktu untuk pemrosesan data yang banyak daripada komputasi tunggal.

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.

2.     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.
Contoh dari Distributed Data Processing System :
            ATM, komputer yang dirancang untuk tugas-tugas melaksanakan proyek, analisis finansial, penjadwalan waktu dan akuntansi. Contoh lainnya, pengolahan data pada server yahoo yang tersebar hampir di seluruh dunia secara distribusi, setiap wilayah mempunyai server masing-masing. Seperti di indonesia mempunyai server tersendiri sehingga pengolahan data tidak di pusat melainkan di wilayah masing-masing, dll.

3.      Architectural Parallel Computer

Michael J. Flynn menciptakan satu diantara sistem klasifikasi untuk komputer dan program paralel yang dikenal dengan sebutan Taksonomi Flynn. Flynn mengelompokkan komputer dan program berdasarkan banyaknya set instruksi yang dieksekusi dan banyaknya set data yang digunakan oleh instruksi tersebut.

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

Beberapa komputer yang menggunakan model MIMD adalah IBM POWER5, HP/Compaq AlphaServer, Intel IA32, AMD Opteron, Cray XT3 dan IBM BG/L.


4.     Konsep Dasar Thread Programming
Dalam ilmu komputer , sebuah thread eksekusi adalah urutan terkecil instruksi diprogram yang dapat dikelola secara mandiri olehscheduler , yang biasanya bagian dari sistem operasi . Pelaksanaan benang dan proses berbeda antara sistem operasi, tetapi dalam kebanyakan kasus benang adalah komponen dari sebuah proses. Beberapa thread dapat eksis dalam sumber yang sama proses dan berbagi seperti memori , sedangkan proses yang berbeda tidak berbagi sumber daya tersebut. Secara khusus, benang dari sebuah proses berbagi instruksi (code executable) dan konteksnya (nilai-nilai variabel yang pada saat tertentu).
Pada prosesor tunggal, multithreading umumnya dilaksanakan oleh waktu mengiris (seperti dalam multitasking ), dan unit pengolahan pusat (CPU) beralih antara benang perangkat lunak yang berbeda. Ini konteks switching umumnya terjadi cukup sering bahwa pengguna merasakan benang atau tugas sebagai berjalan pada waktu yang sama. Pada multiprosesor atau multi-core sistem, benang dapat dijalankan secara bersamaan benar, dengan setiap prosesor atau inti mengeksekusi thread terpisah secara bersamaan; pada prosesor atau inti dengan benang hardware , software benang terpisah juga dapat dijalankan secara bersamaan oleh benang hardware terpisah.






5.     Konsep Dasar Massage 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. Paradigma Message passing yaitu :

Ø  Banyak contoh dari paradigma sekuensial dipertimbangkan bersama-sama.
Ø  Programmer membayangkan beberapa prosesor, masing-masing dengan memori, dan menulis sebuah program untuk berjalan pada setiap prosesor.
Ø  Proses berkomunikasi dengan mengirimkan pesan satu sama lain.



Terdapat beberapa metode dalam pengiriman pesan yaitu :
Ø  Synchronous Message Passing
Pengirim menunggu untuk mengirim pesan sampai penerima siap untuk menerima pesan. Oleh karena itu tidak ada buffering. Selain itu Pengirim tidak bisa mengirim pesan untuk dirinya sendiri.
Ø  Ansynchronous Message Passing
Pengirim akan mengirim pesan kapanpun dia mau. Pengirim tidak peduli ketika penerima belum siap untuk menerima pesan. Oleh karena itu diperlukan buffering untuk menampung pesan sementara sampai penerima siap menerima pesan. Selain itu pengirim dapat pesan untuk dirinya sendiri.








OpenMP (Open Multiprocessing)
Application Programing Interface (API) yang mendukung pemrograman multiprosesing shared memory dalam bahasa C/C++ dan fortran pada berbagai arsitektur dan sistem operasi diantaranya: Solaris, AIX, HP-UX,GNU/Linux, Mac OS X, dan Windows.
OpenMP adalah model portabel dan skalabel yang memberikan interface sederhana dan fleksibel bagi programer shared memory dalam membangun aplikasi paralel. Program multithread dapat ditulis dalam berbagai cara. Beberapa diantaranya memungkinkan untuk melakukan interaksi yang kompleks antar thread. OpenMP mencoba untuk memberikan kemudahan pemrograman serta membantu dalam menghindari kesalahan program, melalui pendekatan terstruktur. Pendekatan ini dikenal sebagai model pemrograman fork-join.
OpenMP bekerja berdasarkan model shared memory, maka secara default data dibagi diantara thread-thread dan dapat terlihat dari setiap thread. Terkadang program akan membutuhkan variabel dengan nilai thread spesifik. Jika setiap thread memiliki variabel duplikat akan sangat berpotensi memiliki nilai yang berbeda-beda pada setiap variabel duplikat tersebut.
Sinkronisasi (pengkoordinasian) aksi dari thread adalah sesuatu yang sangat penting untuk menjamin data yang harus dibagi dan untuk mencegah terjadinya data race condition. Secara default OpenMP telah menyediakan mekanisme untuk menunggu thread dalam suatu tim thread sehingga semua thread menyelesaikan tugasnya dalam region, kemudian dapat melanjutkan ke proses selanjutnya. Mekanisme ini dikenal sebagai barrier.









6.     Konsep Dasar Pemrograman CUDA GPU

CUDA (Compute Unified Device Architecture) adalah suatu skema yang dibuat oleh NVIDIA agar NVIDIA selaku GPU(Graphic Processing Unit) 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. GPU yang ada  saat ini seperti ATI pun sudah memiliki banyak processor di dalamnya. Pada ATI, skema yang mereka bangun disebut ATI Stream. Saat ini pemrograman paralel menjadi sangat penting karena kebutuhan kemampuan komputasi komputer yang terus meningkat seperti kemampuan multitasking dan pengolahan grafis yang andal. Metode saat ini dalam peningkatan peforma komputer juga berbeda dengan masa lampau dimana peningkatan clock dari processor yang diutamakan. Peningkatanclock juga dibatasi oleh kemampuan fisik dari perangkat digital yaitu persoalan daya dan panas.

Platform CUDA dapat diakses oleh pengembang perangkat lunak melalui library 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 Grup. Selain library, arahan compiler, CUDA C / C++ dan CUDA Fortran, platform CUDA mendukung interface komputasi lainnya, termasuk Khronos Grup ‘s OpenCL , Microsoft DirectCompute , dan C++ AMP . Pemrograman pihak ketiga juga tersedia untuk Python , Perl , Fortran , Java , Ruby , Lua , Haskell, Matlab , IDL , dan dukungan asli di Mathematica.

Dalam permainan komputer industri, GPU yang digunakan tidak hanya untuk rendering grafis tetapi juga dalam perhitungan fisika permainan (efek fisik seperti puing-puing, asap, api, cairan), contoh termasuk PhysX dan Bullet . CUDA juga telah digunakan untuk mempercepat aplikasi non-grafis dalam biologi komputasi , kriptografi dan bidang lainnya oleh urutan besarnya atau lebih.
beberapa kelebihan dari pemrograman CUDA :
Ø  Tersebar membaca – kode dapat membaca dari alamat sewenang-wenang dalam memori.
Ø  Memori bersama – CUDA memperlihatkan cepat memori bersama wilayah (sampai 48KB per Multi-Processor) yang dapat dibagi di antara benang. Ini dapat digunakan sebagai cache dikelola pengguna, memungkinkan bandwidth yang lebih tinggi daripada yang mungkin menggunakan pencarian tekstur.
Ø  Download lebih cepat dan readbacks ke dan dari GPU.
Ø  Dukungan penuh untuk integer dan bitwise operasi, termasuk pencarian tekstur bulat.



Referensi :