Sabtu, 30 Juni 2018

PARALEL COMPUTING CUDA


PARALEL COMPUTING CUDA

Nama               : lutfianto triatmojo
NPM               : 56414183
Kelas               : 4IA21
Mata Kuliah     : Pengantar Komputasi Modern

A.KOMPUTASI PARALEL
            Komputasi paralel adalah pengunaan sumber daya secara bersaman dalam proses komputasi. Komputasi paralel bisa menggunakan sebuah komputer dengan memanfaatkan beberapa procesor atau bisa juga dengan memanfaatkan beberapa komputer yang terhubung melalui jaringan (computer cluster) atau juga bisa menggunakan kombinasi dari keduanya



Komputasi Serial

Terlihat komputasi serial untuk mengatasi suaty problema atau masalah akan dibagi menjadi beberapa instruksi kemudian dijalankan secara satu persatu oleh CPU, instruksi selanjutnya akan dijalankan ketika instruksi sebelumnya sudah selesai jadi tidak bisa dijalankan secara bersaman. Ketika komputasi yang diperlukan besar maka otomatis akan memerlukan sumber daya yang besar juga.

Komputasi Paralel

Bagaimana komputasi paralel bekerja ketika ada suatu problem atau masalah akan membagi menjadi beberapa bagian problem yang masing-masing bagian memilki instruksi- instruksi yang bisa dijalankan bersamaan dengan instruksi-instruksi lain dengan memanfaatkan jumlah core pada CPU.

B. Graphics Procesing Unit (GPU)
            GPU (Graphics Procesing Unit) adalah salah satu teknologi pemrosesan data yang ada pada graphics card atau kartu grafis. GPU biasanya dipakai untuk keperluan multimedia seperti proses rendering. GPU memiliki banyak core untuk melakukan pemrosesan yang mendukung banyak pemrosesan dalam satu waktu. Karena awalnya GPU hanya ditujukan untuk keperluan multimedia jadi ketika tidak ada task atau tugas yang berhubungan dengan multimedia otomatis GPU tidak digunakan.
            GPU memiliki dua fitur yaitu GPU menggunakan banyak core dalam pemrosesan paralel untuk meningkatkan kinerja atau perfoma dan GPU memiliki memori bandwidth yang luas atau lebar untuk memberikan GPU kualitas transmisi data yang lebih baik.

C. CUDA
            CUDA (Compute Unified Device Architecture) merupakan toolkit NVIDA yang memungkinkan seorang programmer mengakses kartu grafis untuk tujuan komputasi umum. CUDA hanya jalan pada device kartu grafis yang dibuat oleh NVIDA. Untuk mengakses kartu grafis atsu GPU diperlukan pemrograman tersendiri yang mirip dengan bahasa C, karena bahasa C dikhususkan untuk pemrograman yang bisa mengakses hardware. Ekstensi progam dari CUDA adalah .cu
Keahlian daalm bahasa C setidaknya sangat diperlukan supaya memudahkan adaptasi dengan programing CUDA. Karena C dan CUDA merupakan bahasa compiler maka ketika menjalankan program seluruh code dalam akan dieksekusi secara keseluruhan dan cukup sedikt menyulitkan ketika melakukan debug erorr.
CUDA mendukung kerangka kerja pemrograman seperti OpenACC dan OpenCL. Ketika pertama kali diperkenalkan oleh Nvidia, nama CUDA adalah akronim untuk Compute Unified Device Architecture, tetapi Nvidia kemudian menjatuhkan penggunaan akronim. 

  • Kemampuan  Program 
Platform CUDA dapat diakses oleh pengembang perangkat lunak melalui perpustakaan yang dipercepat CUDA, arahan kompilator seperti OpenACC, dan ekstensi untuk bahasa pemrograman standar industri termasuk C, C ++ dan Fortran.Programmer C / C ++ menggunakan 'CUDA C / C ++', dikompilasi dengan nvcc, kompiler C / C ++ berbasis LLVM dari Nvidia. Programmer Fortran dapat menggunakan 'CUDA Fortran', yang dikompilasi dengan compiler PGI CUDA Fortran dari The Portland Group.Selain pustaka, arahan kompilator, CUDA C / C ++ dan CUDA Fortran, platform CUDA mendukung antarmuka komputasi lainnya, termasuk OpenCL Khronos Group, Microsoft DirectCompute, OpenGL Compute Shaders, dan C ++ AMP. Pembungkus pihak ketiga juga tersedia untuk Python, Perl, Fortran, Java, Ruby, Lua, Common Lisp, Haskell, R, MATLAB, IDL, dan dukungan asli di Mathematica.

Dalam industri permainan komputer, GPU digunakan untuk perenderan grafis, dan untuk perhitungan fisika permainan (efek fisik seperti 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 dengan urutan besarnya atau lebih.
CUDA menyediakan API tingkat rendah dan API tingkat yang lebih tinggi. CUDA SDK awal dibuat publik pada 15 Februari 2007, untuk Microsoft Windows dan Linux. Dukungan Mac OS X kemudian ditambahkan dalam versi 2.0,yang menggantikan versi beta yang dirilis 14 Februari 2008. CUDA bekerja dengan semua GPU Nvidia dari seri G8x dan seterusnya, termasuk GeForce, Quadro dan garis Tesla. CUDA kompatibel dengan sebagian besar sistem operasi standar. Nvidia menyatakan bahwa program yang dikembangkan untuk seri G8x juga akan bekerja tanpa modifikasi pada semua kartu video Nvidia masa depan, karena kompatibilitas biner. 

CUDA 8.0 dilengkapi dengan pustaka berikut (untuk kompilasi & waktu proses, dalam urutan abjad):
  1.     CUBLAS - CUDA Basic Linear Aljabar subrutin perpustakaan
  2.     CUDART - CUDA RunTime library
  3.     CUFFT - CUDA Transformasi Fourier Cepat
  4.     CURAND - CUDA Random Number Generation library
  5.     CUSOLVER - Koleksi berbasis CUDA dari pemecah langsung padat dan jarang
  6.     CUSPARSE - CUDA Sparse Matrix library
  7.     NPP - pustaka Kinerja NVIDIA Primitif
  8.     NVGRAPH - pustaka Analisis Grafik NVIDIA
  9.     NVML - Pustaka Manajemen NVIDIA
  10.     NVRTC - NVIDIA RunTime Compilation library untuk CUDA C ++
CUDA 8.0 dilengkapi dengan komponen perangkat lunak lain ini:
  1.     nView - NVIDIA nView Desktop Management Software
  2.     NVWMI - Toolkit Manajemen Perusahaan NVIDIA(chm)
  3.     PhysX - GameWorks PhysX adalah mesin permainan fisika multi-platform

Daftar pustaka :
http://ajiprays.blogspot.com/2018/06/komputasi-paralelcuda.html?m=1

Jumat, 01 Juni 2018

Quantum Computation

Nama           : Lutfianto Triatmojo
Kelas           : 4IA21
Npm             : 56414183
Mata kuliah : Pengantar Komputasi Modern


    Quantum Computing

    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 komputer 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 komputer secara paralel 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
https://amoekinspirasi.wordpress.com/2014/05/15/pengertian-quantum-computing-dan-implementasinya/
http://irfanmauluddin.blogspot.co.id/2018/05/quantum-computation.html
http://rezapahlevi02.blogspot.com/2018/05/quantum-computation.html