Minggu, 16 April 2017

CUDA (Compute Unified Device Architecture)


Nama    : Arief Nugraha
NPM     : 51413300
KELAS : 4IA12

            ABSTRAK
GPU (Graphic Processing Unit) merupakan prosesor khusus untuk bagian grafis 3D dari microprocessor . GPU dipopulerkan oleh NVIDIA, NVIDIA juga mengembangkan sebuah teknologi yang bernama CUDA (Compute Unified Device Architecture). CUDA (Compute Unified Device Architecture) adalah sebuah arsitektur perangkat keras dan perangkat lunak untuk mengelola komputasi secara paralel pada perangkat keras GPU. Setiap perangkat GPU berkemampuan CUDA dapat bertindak sebagai sebuah perangkat komputasi data paralel secara massal dengan jumlah memori yang besar.

Pada Tugas akhir ini dilakukan analisis konfigurasi fungsi kernel secara eksplisit pada GPU CUDA, dengan studi kasus: perkalian matriks, yaitu dengan pembagian proses kedalam block, thread, dan kombinasi antara block dan thread. Dari hasil analisis, didapatkan hasil bahwa tidak ada perbedaan yang signifikan antara waktu pengujian dan variabel block dan thread pada pengujian block saja dan thread saja. Sedangkan pada pengujian yang menggunakan kombinasi antara block dan thread, didapatkan hasil adanya perbedaan yang signifikan antara kedua variabel block dan thread terhadap waktu percobaan dan adanya interaksi antara variabel block dengan variabel thread pada tiap masing-masing waktu pengujian percobaan

Kata kunci: GPU, CUDA, perkalian matriks, kernel.


         PENDAHULUAN

Perkembangan  media  teknologi  semakin  pesat,  salah  satunya  adalah Augmented Reality (AR). Augmented Reality mulai digunakan sebagai media iklan, informasi dan edukasi. Augmented Reality merupakan teknologi yang dapat menambahkan object dalam suatu tampilan atau gambar secara langsung menggunakan konsep komputer visual. Pada dasarnya Augmented Reality lebih banyak digunakan dalam bentuk yang sederhana menggunakan marker atau markerless, tetapi komputasinya membutuhkan resource yang cukup besar karena didalam proses Augmented Reality terdapat proses tracking dan juga 3D object rendering. Untuk itu, dalam pembuatannya dalam kasus ini digunakan sistem paralel GPU menggunakan Nvidia CUDA.

Penelitian dalam bidang Augmented Reality sudah banyak dilakukan, penelitian bertujuan untuk mendapatkan Augmented Reality yang memiliki performansi yang baik. Permasalahan yang menjadi pokok utama dalam penelitian tersebut bukanlah mengenai rendering object 3D tapi mengenai object tracking[15]. Object tracking adalah salah satu kunci utama dalam Interactive Augmented Reality, pendeteksian gesture dan object membutuhkan algoritma yang dapat memodelkan object dengan baik salah satunya adalah dengan menggunakan Haar Classifier dengan algoritma Viola-Jones.

Algoritma Viola-Jones merupakan algoritma yang digunakan untuk melakukan pendeteksian wajah. Namun pada perkembangannya metode tersebut dapat digunakan pada pendeteksian object lain seperti tangan, mata, jari dan seluruh tubuh. Metode tersebut membutuhkan resources komputasi yang sangat besar. Algoritma yang digunakan pada object tracking sangat mempengaruhi performansi dari sistem AR. Jika menggunakan algoritma dengan kompleksitas yang tinggi maka konsep real-time akan menjadi sulit diimplementasikan. Oleh karena itu digunakan suatu arsitektrur paralel yang dapat mengurangi kompleksitas waktu yang tinggi yaitu dengan menggunakan CUDA.

Nvidia CUDA merupakan extensi untuk beberapa bahasa pemprograman seperti C dan C++. Dengan menggunakan CUDA dimungkinkan untuk melakukan proses komputasi menggunakan GPU. Dengan menggunakan CUDA, programmer dapat membuat suatu algoritma paralel dan membagi proses tersebut kedalam block-block dan thread yang terdapat di dalam GPU. Pemprograman CUDA sering kali menggunakan representasi vektor, data yang digunakan kemudian dimasukkan kedalam array dimana array tersebut diproses didalam block atau thread tergantung kebutuhan.

Dengan memanfaatkan kemampuan dari CUDA tersebut, diharapkan kualitas dari Augmented Reality menjadi sangat baik dilihat dari kecepatan frame per second (fps) atau jumlah frame yang diolah perdetik. Bukan hanya untuk Augmented Reality sederhana menggunakan marker yang diharapkan memiliki performansi yang baik, tetapi juga Markerless Augmented Reality yang dapat berinteraksi dengan object nyata. Produk Augmented Reality tersebut dapat dimanfaatkan untuk berbagai bidang seperti pendidikan, periklanan, atau mungkin juga untuk membuat game jenis baru yang sangat interaktif hanya menggunakan komputer dan kamera. Dengan menggunakan Augmented Reality, diharapkan dapat membantu menyelesaikan masalah dan menjawab tantangan dunia dalam bidang komputasi dan komputer visual. Sebagai contoh, jika Augmented Reality digunakan dalam proses belajar, maka proses pembelajaran tersebut akan lebih menarik dan mudah dimengerti.

            PEMBAHASAN

CUDA adalah sebuah teknologi yang dikembangkan oleh NVIDIA untuk mempermudah utilitasi GPU untuk keperluan umum (non-grafis). Arsitektur CUDA ini memungkinkan pengembang perangkat lunak untuk membuat program yang berjalan pada GPU buatan NVIDIA dengan syntax yang mirip dengan syntax C yang sudah banyak dikenal. Akibatnya, sekarang para developer dapat memanfaatkan kemampuan prosesing GPU untuk mengakselerasi komputasi program mereka dengan jaaauuuuh lebih mudah.
Lalu apa manfaatnya susah-susah menggunakan GPU untuk menjalankan program? Begini, berbeda dengan CPU yang harus siap untuk menjalankan berbagai instruksi program, GPU didesain khusus untuk menghitung dan menyajikan pixel-pixel gambar yang akan ditampilkan. Karena satu pixel tidak berhubungan dengan pixel yang lain, GPU dirancang untuk melakukan banyak operasi secara paralel. Nah, kemampuan eksekusi paralel secara masif inilah yang kemudian dapat dimanfaatkan dengan CUDA.
Pemorgraman CUDA sama seperti membuat program C biasa. Saat kompilasi, syntax2 C biasa akan diproses oleh compiler C, sedangkan syntax dengan keyword CUDA akan diproses oleh compiler CUDA (nvcc)
Bagaimana bagi pengguna biasa, apakah ada manfaat yang bisa didapat dari membeli hardware berteknologi CUDA. Hmm, saat ini sudah mulai banyak software yang mendukung akselerasi dengan CUDA. Misalnya MATLAB dan beberapa plugin dari Adobe Photoshop CS5. Bila perangkat lunak ini mendeteksi adanya hardware yang kompatibel dengan CUDA, maka beberapa proses komputasinya akan dilaksanakan oleh GPU. Walhasil, program akan dapat dieksekusi dengan lebih cepat. Review di tomshardware ini contohnya, menampilkan pengurangan waktu eksekusi yang mengesankan dari plugin Photoshop untuk manipulasi gambar.
Seperti telah disebutkan, CUDA memungkinkan programmer untuk mengeksekusi program pada GPU. Tentu saja, program – program yang akan mendapat akselerasi adalah program-program yang dapat dipecah menjadi banyak eksekusi paralel. Untungnya, buanyak komputasi saintifik masuk pada kategori tersebut. Beberapa aplikasinya antara lain Computational Fluid Dynamics (CFD), Molecular Dynamics, Seismic Simulation, Simulasi Finansial dan Saham, Image Processing dan Video Processing
Secara bisnis ini adalah ide yang luar biasa. Pengembangan hardware GPU telah mendapat “subsidi” dari industri gaming dan hasilnya sekarang dapat digunakan untuk aplikasi yang lebih, ahem, “berguna”. Tidak heran saat ini teknologi CUDA telah merevolusi dunia High Performance Computing.
CUDA adalah sebuah arsitektur pemrograman untuk General Purpose Graphics Processing Unit (GPGPU). Secara umum, komponen-komponen pendukung CUDA adalah:
  • ·         Aplikasi, adalah perangkat lunak yang dibuat oleh penguna, memakai bahasa pemrograman khusus (kembangan C).
  • ·         Pustaka perangkat lunak, yang menyediakan layanan dasar untuk program aplikasi mengakses CPU maupun GPU.
  • ·         Perangkat keras khusus, yaitu GPU yang menyediakan mesin paralel.
  • ·         Perangkat keras CPU, sebagai mesin sekuensial.

Dengan demikian, seorang pengguna CUDA haruslah membuat program dulu dalam bahasa pemrograman kembangan C (dengan ditambahi beberapa sintak yang sangat memudahkan pemrograman paralel tingkat tinggi). Kode sumber program itu dikompilasi, kemudian dijalankan. Program CUDA induk akan berjalan di CPU, sedangkat bagian paralelnya akan berjalan di GPU.

Model pemrograman CUDA adalah membagi pekerjaan yang akan di lakukan ke banyak unit pemroses paling kecil, yakni thread. Setiap thread memiliki memori tersendiri dan mengerjakan inti pekerjaan yang kecil dan akan berjalan bersamaan dengan thread lain sehingga waktu yang di butuhkan untuk mengerjakan pekerjaan seluruhnya menjadi lebih singkat. Kumpulan dari thread tersebut disebut sebagai blok dalam blok memiliki satu memori tersendiri yang bisa di gunakan thread dalam blok tersebut. Media untuk saling berkomunikasi antar thread dinamakan dengan Share memori. Setiap blok akan di kelompokkan lagi menjadi sebuah grid yang menjadi sekumpulan block yang digunakan dalam komputasi.

                                               


CPU dalam CUDA disebut dengan istilah Host, dan GPU disebut dengan istilah Device. Ada 2 bagian pada pemrograman CUDA yaitu fungsi yang di jalankan pada CPU dan fungsi yang di jalankan pada GPU, karnel adalah sebutan untuk program CUDA yang berjalan pada GPU. Pada saat fungsi ini berjalan, pemogram harus memberikan informasi pada GPU untuk memesan berapa banyak block, thread yang akan digunakan dalam masing-masing block.

Perangkat CUDA menggunakan spasi memori yang memiliki karakteristik yang berbeda yang menunjukkan yang berbeda dalam aplikasi Cuda. Ruang ruang memory pada CUDA seperti terlihat pada Gambar.

        


                                         

PENUTUP

GPU terdiri dari ribuan core yang bisa mengeksekusi perintah secara paralel. Dengan kartu grafis yang memiliki kemampuan GPU Acceleration, para programmer ini bisa mengaplikasikan pemrograman dengan teknik paralel computing ke dalam core-core GPU (bersama-sama CPU). Dengan begitu, proses-proses di dalam software (rendering contohnya) menjadi lebih cepat.


                         Daftar Pustaka

Selasa, 21 Maret 2017

TUGAS 1 PENGANTAR KOMPUTASI MODERN

NAMA  : Arief Nugraha
NPM      : 51413300

PENGANTAR KOMPUTASI MODERN

Komputasi adalah cara untuk menemukan pemecahan masalah dari data input dengan menggunakan suatu algoritma. Hal ini ialah apa yang disebut dengan teori komputasi, suatu sub-bidang dari ilmu komputer dan matematika.

Komputasi Modern merupakan sebuah sistem yang akan menyelesaikan masalah matematis menggunakan komputer dengan cara menyusun algoritma yang dapat dimengerti oleh komputer yang berguna untuk menyelesaikan suatu masalah.  Dalam komputasi modern terdapat perhitungan dan pencarian solusi dari masalah. Perhitungan dari komputasi modern adalah akurasi, kecepatan, problem, volume dan besar kompleksitas.


Jenis-jenis Komputasi Modern


Komputasi modern terbagi tiga macam, yaitu komputasi mobile (bergerak), komputasi grid, dan komputasi cloud (awan). Penjelasan lebih lanjut dari jenis-jenis komputasi modern sebagai berikut :



1. Mobile computing


Mobile computing atau komputasi bergerak memiliki beberapa penjelasan, salah satunya komputasi bergerak merupakan kemajuan teknologi komputer sehingga dapat berkomunikasi menggunakan jaringan tanpa menggunakan kabel dan mudah dibawa atau berpindah tempat, tetapi berbeda dengan komputasi nirkabel. Contoh dari perangkat komputasi bergerak seperti GPS, juga tipe dari komputasi bergerak seperti smart phone, dan lain sebagainya.




2. Grid computing


Komputasi grid menggunakan komputer yang terpisah oleh geografis, didistibusikan dan terhubung oleh jaringan untuk menyelasaikan masalah komputasi skala besar. Ada beberapa daftar yang dapat dugunakan untuk mengenali sistem komputasi grid, adalah :


  • Sistem untuk koordinat sumber daya komputasi tidak dibawah kendali pusat.
  • Sistem menggunakan standard dan protocol yang terbuka.
  • Sistem mencoba mencapai kualitas pelayanan yang canggih, yang lebih baik diatas kualitas komponen individu pelayanan komputasi grid.





3. Cloud computing


Komputasi cloud merupakan gaya komputasi yang terukur dinamis dan sumber daya virtual yang sering menyediakan layanan melalui internet. Komputasi cloud menggambarkan pelengkap baru, konsumsi dan layanan IT berbasis model dalam internet, dan biasanya melibatkan ketentuan dari keterukuran dinamis dan sumber daya virtual yang sering menyediakan layanan melalui internet.

Adapun perbedaan antara komputasi mobile, komputasi grid dan komputasi cloud, dapat dilihat penjelasannya dibawah ini :

Komputasi mobile menggunakan teknologi komputer yang bekerja seperti handphone, sedangkan komputasi grid dan cloud menggunakan komputer.

Biaya untuk tenaga komputasi mobile lebih mahal dibandingkan dengan komputasi grid dan cloud.
Komputasi mobile tidak membutuhkan tempat dan mudah dibawa kemana-mana, sedangkan grid dan cloud membutuhkan tempat yang khusus.

Untuk komputasi mobile proses tergantung si pengguna, komputasi grid proses tergantung pengguna mendapatkan server atau tidak, dan komputasi cloud prosesnya membutuhkan jaringan internet sebagai penghubungnya.




Institusi yang menampilkan system aplikasi yang menggunakan Komputasi Modern :




PT Kereta Api Indonesia (Persero) yang selanjutnya disingkat sebagai PT KAI (Persero) atau “Perseroan” adalah Badan Usaha Milik Negara yang menyediakan, mengatur, dan mengurus jasa angkutan kereta api di Indonesia. PT Kereta Api Indonesia (Persero) didirikan sesuai dengan akta tanggal 1 Juni 1999 No. 2, yang dibuat dihadapan Imas Fatimah, S.H., Sp.N., Notaris di Jakarta, dan kemudian diperbaiki kembali sesuai

dengan akta tanggal 13 September 1999 No. 14. Akta pendirian tersebut telah mendapat pengesahan dari Menteri Kehakiman Republik Indonesia melalui Surat Keputusan tanggal 1 Oktober 1999 No. C-17171 HT.01.01.TH.99 dan telah diumumkan dalam Berita Negara Republik Indonesia tanggal 14 Januari 2000 No. 4 Tambahan No. 240/2000.

Riwayat PT KAI dibagi menjadi tiga periode, yaitu masa kolonial, sebagai lembaga pelayanan publik, dan sebagai perusahaan jasa. Pada masa kolonial, industri perkeretaapian dimulai pada tahun 1864 ketika Namlooze Venootschap Nederlanche Indische Spoorweg Maatschappij memprakarsai pembangunan jalan kereta api dari Semarang ke Surakarta, Jawa Tengah. Sejak itu tiga perusahaan lain berinvestasi membangun jalur-jalur kereta api di dalam dan luar Pulau Jawa. Perusahaan yang terlibat dalam industri kereta api zaman kolonial adalah Staat Spoorwegen, Verenigde Spoorwegenbedrifj, dan Deli Spoorwegen Maatscappij.

Periode perusahaan berorientasi pada pelayanan publik bermula pada masa awal kemerdekaan Indonesia. Pada tanggal 25 Mei berdasarkan Peraturan Pemerintah No. 22 Tahun 1963, pemerintah Republik Indonesia membentuk Perusahaan Negara Kereta Api (PNKA). Pada 15 September 1997 berdasarkan Peraturan Pemerintah No. 61 Tahun 1971, PNKA diubah menjadi Perusahaan Jawatan Kereta Api (PJKA). Dengan status sebagai Perusahaan Negara dan Perusahaan Jawatan, PT Kereta Api Indonesia (Persero) saat itu beroperasi melayani masyarakat dengan dana subsidi dari pemerintah.

Babak baru pengelolaan PT Kereta Api Indonesia (Persero) dimulai ketika PJKA diubah menjadi Perusahaan Umum Kereta Api (Perumka) berdasarkan Peraturan Pemerintah No. 57 Tahun 1990. Dengan status barunya sebagai perusahaan umum, Perumka berupaya untuk mendapatkan laba dari jasa yang disediakannya. Untuk jasa layanan penumpang, Perumka menawarkan tiga kelas layanan, yaitu kelas eksekutif, bisnis, dan ekonomi.

Pada tanggal 31 Juli 1995 Perumka meluncurkan layanan kereta api penumpang kelas eksekutif dengan merek Kereta Api Argo Bromo JS-950. Merek ini kemudian dikembangkan menjadi Kereta Api (KA) Argo Bromo Anggrek dan dioperasikan mulai tanggal 24 September 1997. Pengoperasian KA Argo Bromo Anggrek mengawali pengembangan KA merek Argo lainnya, seperti KA Argo Lawu, KA Argo Mulia, dan KA Argo Parahyangan. Untuk mendorong Perumka menjadi perusahaan bisnis jasa, pada tanggal 3 Februari 1998 pemerintah menetapkan pengalihan bentuk Perusahaan Umum

(Perum) Kereta Api menjadi Perusahaan Perseroan (Persero) berdasarkan Peraturan Pemerintah No. 19 Tahun 1998.

Dengan status barunya, PT Kereta Api Indonesia (Persero) beroperasi sebagai lembaga bisnis yang berorientasi laba. Untuk tetap menjalankan sebagian misinya sebagai organisasi pelayanan publik, pemerintah menyediakan dana Public Service Organization (PSO).


Visi & Misi Perusahaan

  • Menjadi penyedia jasa perkeretaapian terbaik yang fokus pada pelayanan pelanggan dan memenuhi harapan.
  • Menyelenggarakan bisnis perkeretaapian dan bisnis usaha penunjangnya melalui praktik bisnis dan model organisasi terbaik untuk memberikan nilai tambah yang tinggi bagi pemangku kepentingan dan kelestarian lingkungan berdasarkan empat pilar utama: Keselamatan, Ketepatan Waktu, Pelayanan, dan Kenyamanan.



Implementasi Komputasi Modern


Penerapan komputasi modern pada website PT.KAI yaitu terletak pada fitur Layanan Pemesanan Tiket secara online melalui Aplikasi Mobile Milik (PT. KAI). Dengan layanan ini user/penumpang tidah perlu lagi datang langsung ke stasiun kereta api untuk membeli tiket, karena pembeli dapat memesannya secara online melalui Aplikasi Mobile. Tidak hanya untuk membeli tiket tetapi penumpang juga dapat melihat jadwal serta berita mengenai kereta api. 


Pendapat: 

Dari uraian sebelumnya dapat disimpulkan bahwa komputasi modern sangatlah membantu jika diimplementasikan kedalam sebuah system. Seperti yang dilakukan oleh PT KAI yang bergerak pada bidang penyediaan jasa dimana dengen PT KAI menerapkan mobile computing yang merupakan salah satu jenis dari komputasi modern dapat sangat membantu konsumen dalam hal mecari tahu informasi mengenai jadwal kereta api ataupun dalam memesan atau booking tiket dimana penumpang menjadi tidak harus antri terlalu lama. Dan dari hal tersebut juga turut membantu PT KAI dalam mencapai visi & misinya memberikan layanan yang prima terhadap konsumen.


Sumber :

http://belajar-pemrograman2.blogspot.co.id/2013/03/komputasi-modern.html
https://id.wikipedia.org/wiki/Kereta_Api_Indonesia
https://id.wikipedia.org/wiki/Komputasi




Selasa, 03 Januari 2017

Tugas 3 (Sikap Mengakui Kesalahan Diri Sendiri)

SIKAP MENGAKUI KESALAHAN DIRI SENDIRI


Sebagai manusia biasa, kita tentunya sering melakukan kesalahan baik yang disengaja maupun yang tidak disengaja. Setiap kesalahan tentunya memiliki akibat yang mesti dibayar. Ada kesalahan yang dapat berdampak baik, namun ada juga kesalahan yang dapat berdampak buruk yang membuat hidup kita menderita. Ketika kita melakukan kesalahan, yang terpenting yang dapat kita lakukan adalah mengakui kesalahan itu. Mengakui kesalahan bukanlah perkara yang mudah. Namun ketika kita dapat mengakui kesalahan kita, kita akan menerima banyak manfaat bagi kehidupan kita.

Sikap mengakui kesalahan diri sendiri, harus ditanamkan dari sejak dini pada individu. Mungkin bagi segelintir orang, sikap ini mudah dilakukan, namun ternyata mengakui kesalahan sendiri terkadang susah dilakukan, apalagi jika memiliki ego yang tinggi dan gengsi. Bagi beberapa orang yang memiliki sikap tersebut, mengakui kesalahan pasti akan sangat sulit dilakukan, karena mereka terlalu gengsi untuk merendah, dan menyesali apa yang ia perbuat. Dengan demikian, banyak diantara mereka yang menghindar dari perbuatan yang ia perbuat dan cuci tangan dengan segala alasan yang dilontarkan.

Saya akan menceritakan pengalaman pribadi saya mengenai sikap mengakui kesalahan diri sendiri. Cerita ini didapat belum lama ini yaitu saat saya semester 3. Pada saat semester 3 saya berpikir bahwa IPK tidak begitu penting sedangkan orang tua saya menganggap bahwa IPK itu sangat penting dan sampai pada ujungnya saya mengabaikan IPK saya. Saat semester 1 saya mendapat IPK diatas 3 begitupun pada semester 2. Pada saat semester 3 IPK saya menjadi turun jauh menjadi 2.8 dan saya menanggapinya dengan biasa saja.

IPK saya bisa menurun dikarenakan saya tidak mengikuti berbagai macam matkul dan saya tertimpa sakit pada saat itu. Namun setelah semester 3 terlewati lalu masuk ke semester 4, saya menyadari kenapa ipk saya bisa sangat turun padahal yg seharusnya pada semester 3 ipk saya bisa lebih diatas 3. Pada saat semester 4 saya sangat menyesal dan saya selalu berpikir kenapa pada saat semester 3 saya selalu bermalas malasan, sehingga saya kesulitan untuk menaikkan ipk dikarenakan ipk di semester 3 sudah anjlok.
  

Dan saya juga telah membohongi kedua orang tua saya mengenai IPK saya yang selalu diatas 3.2, tapi dibalik kebohongan saya itu saya sangat menyesal dan selalu ingin memperbaiki IPK saya dan pada akhirnya sampai semester 7 ini Alhamdulillah setelah saya bekerja keras saya dapat mendapatkan IPK 3.33 dan saya akan usahakan kedepannya IPK saya akan bertambah menjadi 3.5

Dari cerita diatas saya mengakui kesalahan saya bahwa saya terlalu meremehkan mengenai IPK dan saya mengakui kesalahan bahwa saya tidak bersungguh sungguh dalam belajar padahal orang tua saya sudah membiayai kuliah saya mati-matian agar saya kelak menjadi orang yang sukses dan mulai saat ini saya akan mencoba untuk memperbaiki diri saya sendiri.

Kesimpulan yang bisa saya ambil yaitu jangan malu untuk mengakui kesalahan diri sendiri meskipun penyesalan datangnya selalu belakangan. Dengan mengakui kesalahan diri sendiri akan menjadikan kita pribadi yang lebih baik dari sebelumnya.