Archive | May, 2016

Review Jurnal “Data Parallel Computation on Graphics Hardware”

12 May

TUGAS SOFTSKILL

Nama Kelompok  :

50412897 – ANGGAKARA ARYAGUNA

51412713 – DARA BILQYS WARDHANI

52412286 – DWI JAYANTI PURWANTINI

57412827 – YOGA PRASETYA

Kelas : 4IA17

 

parallelproblem

Abstrak

Seiring dengan terus meningkatnya programabilitas dan kinerja GPU ( Graphics Proccessing Unit ) , banyak peneliti yang melirik ke Graphics Hardware untuk mengatasi masalah yang biasanya terjadi pada CPU. Dalam banyak kasus, melakukan perhitungan dengan menggunakan Graphic Hardware dapat memberikan keuntungan yang signifikan dibandingkan dengan implementasi pada CPU tradisional. Namun, jika GPU adalah sumber pemrosesan yang kuat, penting untuk membangun sebuah abstraksi yang benar terhadap hardware tersebut, yang nantinya akan mendorong sebuah desain aplikasi yang lebih efisien dengan peningkatan antarmuka untuk para desainer hardware.

BAB I

Pendahuluan

Data komputasi parallel memberikan hasil yang lebih baik pada desktop PC, ketika hardware grafis deprogram lebih modern. Sejak beberapa tahun terakhir, komoditas hardware grafis telah berkembang pesat dari fungsi pipeline yang tetap menjadi simpul yang dapat diprogram ( Programmable Vertex ) dan Fragment Processor. Sementara ini programabilitas baru dirancang terutama untuk Real-Time Shading, banyak peneliti telah mengamati bahwa perancangan tersebut dapat melampaui proses rendering. Aplikasi seperti Matrix Multiply [Larsen and McAllister 2001], Cellular Automata [Harris et al. 2002], dan Complete Ray Tracer [Purcell et al. 2002], dimana aplikasi tersebut sudah terhubung dengan GPU. Penelitian ini memperlihatkan potensi dari Hardware Grafis dalam menyelesaikan tugas-tugas komputasi secara umum. Bahkan, arsitektur Hardware Grafis yang akan datang memungkinkan dapat digunakan untuk simulasi fenomena alam, Physicsbased Model, dan AI.

Tujuan penulisan dari juranal ini adalah untuk menunjukkan model pemograman Streamuntuk perhitungan secara umum pada Hardware Grafis. Kontribusi dari jurnal ini meliputi :

  • Menjelaskan dua alasan utama bahwa hardware grafis lebih cepat daripada CPU melaui Data Paralelisme dan Intensitas Aritmatika (rasio perhitungan bandwidth).
  • Menggunakan pengamatan sebagai panduan, dengan menyajikan lingkungan pemograman yang disebut Brook.
  • Menunjukkan bagaimana berbagai macam algoritma data parallel dapat diimplementasikan ke dalam Brook, dan menjalankannya pada Hardware Grafis.
  • Menganalisa implementasi pemograman Hardware Grafis saat ini, dan memberikan arahan untuk desain hardware masa depan.

BAB II

Pembahasan Hasil Review

  1. Dua alasan utama Hardware Grafis lebih cepat dari CPU

Disini ditunjukkan mengapa Hardware Grafis bisa lebih cepat dari CPU dengan menggunakan metode Data Paralleisme dan Intensitas Aritmatika, karena Data Paralelisme dapat memungkinkan sistem untuk menggunakan sejumlah besar ALU dan menyembunyikan latency memori, jadi sistem dapat menempati semua ALU dengan mengeksekusi beberapa salinan paralel dari program lalu latency dari proses pembacaan memori dapat disembunyikan, Teknik menyembunyikan latency memori pertama kali diterapkan dalam arsitektur grafis untuk menyembunyikan latency pengambilan tekstur pada gambar [Torborg dan Kajiya 1996; Anderson et al. 1997; Igehy et al. 1998]. Sedangkan Intensitas Aritmatika adalah rasio operasi aritmatika dilakukan per operasi memori, atau mentransfer per kata. Sebagai contoh, pemograman fragment processor saat ini sistem memori memungkinkan satu miliar 128 bit kata per detik dapat dibaca ketika tingkat penghitungan empat kali lebih cepat, jadi dari operasi aritmatika tersebut menunjukkan rasio mencapai hingga 4 miliar 128-bit operasi per detik.

  1. Model Pemograman Brook Stream.

Merupakan sebuah model pemograman yang ideal yang ditunjukkan untuk komputasi hardware grafis, dimana mengharuskan programer untuk menuliskan kode untuk pemrosesan parallel dengan intensitas aritmatika yang tinggi.

Berikut ini adalah gambaran dari antarmuka brook untuk streaming hardware :

  • Streaming

Merupakan kumpulan records/data yang memerlukan penghitungan yang sama. Sebuah record bisa jadi dari beberapa tipe pendukung dari sebuah hardware, mulai dari nilai float tunggal sampai struktur yang kompleks.

Streaming pada Brook dibentuk melalui API LoadStream, cara pemanggilannya : stream s = LoadStream (float, n, data);

Dimana float adalah tipe elemen, dan n adalah banyaknya tpe elemen float pada data array.

  • Kernel Functions

Kernel Functions merupakan suatu fungsi yang membedakan antara pemograman Stream dengan pemograman Vektor yang tradisional. Kernel Functions memungkinkan evaluasi fungsi arbitrary dimana operator vector terdiri dari operasi matematika sederhana. Kernel Functions dikompilasi secara terpisah dari aplikasi menggunakan Brook Compiler. Fungsi LoadKernel adalah memuatKernel yang sudah dikompilasi dari sebuah file dan memberikan pengidentifikasian Kernel.KernelMap menjadi sebagai masukan kernel, stream, dan konstanta pengidentifikasi dan mengeksekusi kernel pada setiap elemen dari input stream.

  • Reduction

Sementara Kernel Functions menyediakan mekanisme untuk menerapkan fungsi untuk satu set data, Reduction menyediakan data dari metode paralel untuk menghitung nilai tunggal dari satu set record. Contoh dari operai Reduction termasuk juga dari penjumlahan aritmatika sederhana, komputasi maksimum, atau operasi yang lebih kompleks seperti Matrix Multiplication.

  • Scatter and Gather

Operasi Scatter and Gather menyediakan peningkatan secara tidak langsung dalam membaca atau menulis data. Brook memisahkan operasi Scatter dari Ghather untuk mempertahankan Data Paralel. Jika kita diijinkan menulis dan membaca pada elemen arbitrary didalam Kernel, maka kita akan diperkenalkan dengan depedensi antara elemen Stream.

  1. Implementasi pada Hardware Grafis

Dalam rangka untuk menunjukkan bahwa hardware grafis mendukung pemrograman modelStreaming. Maka dibangunlah sebuah sistem yang dapat mengimplementasikan Brook di atas OpenGL dan Cg. Implementasi ini benar-benar menyembunyikan semua referensi ke API grafis dan hanya memperlihatkan antarmuka pada bagian sebelumnya. Sistem ini terdiri dari dua komponen: compiler kernel, yang mengkompilasi fungsi kernel ke dalam kode Cg, dan sistem runtime dibangun di atas OpenGL yang mengimplementasikan Brook API.

  • Streaming

Data Stream berada di tekstur 2D floating point. ketika program aplikasi mengeluarkan panggilan LoadStream, runtime sistem membuat objek tekstur 2D dan salinan data ke tekstur. Output stream dari kernel ditulis ke floating point Buffer dan disalin kembali menjadi objek tekstur. Ketika aplikasi host mengeluarkan panggilan StoreStream, sistem runtime mengambil data tekstur dari kartu grafis ke dalam host memori.

  • Kernel Programs

Kernel dikompilasi menggunakan Brook Compiler yang menghasilkan kode Cg yang legal untuk hardware grafis seperti NVidia GeForce FX fragment processor. Compiler dibangun menggunakan Utility Parser Bison dan Lexical Analyzer Flex. Alat-alat ini menguraikan kode Kernel dan mengekstrak argument-argumen dan Body Code. Nantinya hasil akan berupa scripts yang outputnya adalah fungsi Cg.

  • Kernel Execution

Ketika aplikasi mengeluarkan panggilan KernelMap, runtime sistem mengeksekusi kernel lalu dimuat menggunakan Fragment Processor. Sistem runtime mengikat tekstur input, dan meng-set semua variabel konstan, dan mengikat shader fragmen yang sesuai untuk kernel. Untuk menjalankan kernel, sistem mengeluarkan quad besar berisi jumlah fragmen yang sama sebagai elemen dalam input stream.

  • Reduce

Hardware grafis tidak memiliki metode asli untuk reduksi. Brook runtime mengimplementasikan reduksi melalui sebuah metode Multipass, sama seperti jaringan reduksi pada arsitektur data parallel.

  • Scatter and Gather

Operasi Scatter dan Gather tidak didukung oleh hardware fragmen. Brook menerapkan Scatter dengan rendering point ke dalam stream tujuan sebagai berikut. Pertama stream tujuan diberikan ke offscreen pBuffer. Selanjutnya, sistem mengambil index stream dari tekstur 2D. Menggunakan data indeks, sistem membuat Poin OpenGL diposisikan sesuai dengan indeks nilai. Dengan pengguna tertentu, ScatterOp kernel terikat, dimana titik fragmen melakukan pengurangan dengan mengambil dua

nilai-nilai untuk mengurangi dari tekstur dan menulis hasilnya ke dalam pBuffer. Setelah semua poin telah diberikan, maka data akan tersebar ke stream tujuan pada pBuffer.

  1. Analisa Implementasi Hardware Grafis Saat Ini, dan Arahan untuk Desain Masa Depan.

Salah satu masalah terbesar dalam program GPU saat ini adalah bahwa kernel tertentu tidak dapat dijalankan pada perangkat keras karena kendala pada sumber dayanya. Termasuk kendala pada jumlah instruksi, jumlah register, jumlah Vertex Interpolant, dan jumlah Outputnya. Dalam [Chan et al. 2002], algoritma dikembangkan untuk membagi kernel besar secara otomatis ke kernel yang lebih kecil. Algoritma yang menangani banyak kendala pada sumber daya, tetapi tidak bekerja untuk beberapa output. Pemecahan masalah ini menjadi prioritas tinggi untuk pekerjaan di masa depan.

Perubahan besar dalam hardware saat ini yang diperlukan untuk mendukung model hardware masa depan adalah:

  • Notasi pada input dan output streaming untuk ukuran record yang lebih besar.
  • Peningkatan dukungan untuk Reductions.
  • Menerapkan penyelesaian Scatter and Gather secara effisien dengan menggunakan metode chace texturing.

BAB III

Kesimpulan

Jurnal ini menindak tentang Brook yang merupakan sebuah model pemograman dimana mengharuskan programer untuk menuliskan kode untuk pemrosesan parallel dengan intensitas aritmatika yang tinggi dan memungkinkan graphic hardware lebih cepat dari CPU karena memanfaatkan metode komputasi parallel, yaitu dengan data paralelisme dan aritmatika intensitas (rasio perhitungan bandwidth).

Sistem pada metode ini menggunakan dua komponen, yaitu : compiler kernel (yang mengkompilasi fungsi kernel ke dalam kode Cg) dan sistem runtime dibangun di atas OpenGL (yang mengimplementasikan Brook API).

BAB IV

Daftar Pustaka

Referensi Jurnal :

http://hci.stanford.edu/cstr/reports/2003-03.pdf

Advertisements

Quantum Computation (Pendahuluan)

12 May

TUGAS SOFTSKILL

Nama Kelompok  :

50412897 – ANGGAKARA ARYAGUNA

51412713 – DARA BILQYS WARDHANI

52412286 – DWI JAYANTI PURWANTINI

57412827 – YOGA PRASETYA

Kelas : 4IA17

 

Pada kali ini kami akan membahas apa itu Quantum Computation. Quantum Computation sendiri adalah bidang studi yang difokuskan pada teknologi komputer berkembang berdasarkan prinsip-prinsip teori kuantum , yang menjelaskan sifat dan perilaku energi dan materi pada kuantum (atom dan subatom) tingkat.

Komputer kuantum adalah alat hitung yang menggunakan sebuah fenomena mekanika kuantum, misalnya superposisi dan keterkaitan, untuk melakukan operasi data. Dalam komputasi klasik, jumlah data dihitung dengan bit; dalam komputer kuantum, hal ini 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.

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.

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, dan banyak pemerintah nasional dan agensi pendanaan militer mendukung riset komputer kuantum untuk pengembangannya baik untuk keperluan rakyat maupun masalah keamanan nasional seperti kriptoanalisis.

Telah dipercaya dengan sangat luas, bahwa apabila komputer kuantum dalam skala besar dapat dibuat, maka komputer tersebut dapat menyelesaikan sejumlah masalah lebih cepat daripada komputer biasa. Komputer kuantum berbeda dengan komputer DNA dan komputer klasik berbasis transistor, walaupun mungkin komputer jenis tersebut menggunakan prinsip kuantum mekanik. Sejumlah arsitektur komputasi seperti komputer optik walaupun menggunakan superposisi klasik dari gelombang elektromagnetik, namun tanpa sejumlah sumber kuantum mekanik yang spesifik seperti keterkaitan, maka tak dapat berpotensi memiliki kecepatan komputasi sebagaimana yang dimiliki oleh komputer kuantum.

softskill

lalu apa bedanya dengan Quantum Computer?
         Quantum Computer adalah alat untuk perhitungan yang menggunakan langsung dari kuantum mekanik fenomena, seperti superposisi dan belitan , untuk melakukan operasi pada Data. Cara kerja quantum computer sendiri berbeda dengann komputer bisanya. Dalam komputasi klasik, jumlah data dihitung dengan bit dalam komputer kuantum hal ini dilakukan dengan qubit(quantum bit) yang berarti jika di komputer biasa hanya mengenal 0 atau 1, dengan qubit sebuah komputer quantum dapat mengenal keduanya secara bersamaan dan itu membuat kerja dari komputer quantum itu lebih cepat dari pada komputer biasa.

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