Sabtu, 30 Juni 2018

Paralel Computation - Tugas Semester 8 Minggu ke-4

Paralel Computation


Pembahasan :
A. Paralleism concenpt
B. Distributed processing
C. Architectural parallel computer
D. Prengantar thread programming
E. Pengantar massage passing dan open MP
F. Pengantar pemrograman CUDA GPU

A. Paralleism concenpt
Paralelisme adalah memberikan dua atau lebih bagian dari seluruh kalimat bentuk yang sama sehingga memberikan pola tertentu. Berbagai macam paralelisme adalah perangkat retoris. Hal ini juga terdapt pula dalam puisi maupun penggunan secara verbal. Selain itu di dalam puisi Perjanjian Lama terdapat pula paralelisme.
Paralelisme adalah majas yang mengulang kata di setiap baris yang sama dalam satu bait di dalam penggunaan puisi. Contoh:
Kau berkertas putih
Kau bertinta hitam
Kau beratus halaman
Kau bersampul rapi

B. Distributed processing
Distributed Processing adalah kemampuan menjalankan semua proses pengolahan data secara bersama antara komputer yang berfungsi sebagai 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 maka prosesor yang lain akan mengambil alih tugasnya. Dalam proses distribusi sudah mutlak diperlukan perpaduan yang mendalam antara teknologi komputer dan telekomunikasi, karena selain proses yang harus didistribusikan, semua host komputer wajib melayani terminal-terminalnya dalam satu perintah dari komputer pusat.

C. Architectural parallel computer
Arsitektur Komputer Paralel adalah sekumpulan elemen pemroses (Processing Elements) yang bekerjasama dalam menyelesaikan sebuah masalah besar.

Arsitektur paralel diperlukan karena :

Tuntutan aplikasi
Trend Teknolog
Trend Arsitekture
Ekonomi
Trend saat ini :
– Kebanyakan mikroprosesor sekarang ini mempunyai fasilitas untuk mendukung multiprosesor.
– Server dan workstation berarsitektur multiprosesor : Sun, SGI, DEC, COMPAQ!…
– Mikroprosesor yad (dan sekarang) adalah multiprosesor
Untuk melakukan berbagai jenis komputasi paralel diperlukan infrastruktur mesin paralel yang terdiri dari banyak komputer yang dihubungkan dengan jaringan dan mampu bekerja secara paralel untuk menyelesaikan satu masalah. Untuk digunakan perangkat lunak pendukung yang biasa disebut middleware yang berperan mengatur distribusi antar titik dalam satu mesin paralel. Selanjutnya pemakai harus membuat pemrograman paralel untuk merealisasikan komputasi.

Yang perlu diingat adalah komputasi paralel berbeda dengan multitasking. Pengertian multitasking adalah komputer dengan processor tunggal mengeksekusi beberapa tugas secara bersamaan. Walaupun beberapa orang yang bergelut di bidang sistem operasi beranggapan bahwa komputer tunggal tidak bisa melakukan beberapa pekerjaan sekaligus, melainkan proses penjadwalan yang berlakukan pada sistem operasi membuat komputer seperti mengerjakan tugas secara bersamaan. Sedangkan komputasi paralel sudah dijelaskan sebelumnya, bahwa komputasi paralel menggunakan beberapa processor atau komputer. Selain itu komputasi paralel tidak menggunakan arsitektur Von Neumann.

D. Prengantar thread programming
Threading / Thread adalah sebuah alur kontrol dari sebuah proses. Konsep threading adalah menjalankan 2 proses ( proses yang sama atau proses yang berbeda ) dalam satu waktu. Contohnya sebuah web browser mempunyai thread untuk menampilkan gambar atau tulisan sedangkan thread yang lain berfungsi sebagai penerima data dari network. Threading dibagi menjadi 2 :

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.

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.

E. Pengantar massage passing dan open MP
Message Passing Interface (MPI)

MPI adalah sebuah standard pemrograman yang memungkinkan pemrogram untuk membuat sebuah aplikasi yang dapat dijalankan secara paralel. Proses yang dijalankan oleh sebuah aplikasi dapat dibagi untuk dikirimkan ke masing-masing compute node yang kemudian masing-masing compute node tersebut mengolah dan mengembalikan hasilnya ke komputer head node.Untuk merancang aplikasi paralel tentu membutuhkan banyak pertimbangan-pertimbangan diantaranya adalah latensi dari jaringan dan lama sebuah tugas dieksekusi oleh prosesor.

MPI ini merupakan standard yang dikembangkan untuk membuat aplikasi pengirim pesan secara portable. Sebuah komputasi paralel terdiri dari sejumlah proses, dimana masing-masing bekerja pada beberapa data lokal. Setiap proses mempunyai variabel lokal, dan tidak ada mekanismesuatu proses yang bisa mengakses secara langsung memori yang lain. Pembagian data antar  proses dilakukan dengan message passing, yaitu dengan mengirim dan menerima pesan antar  proses. MPI menyediakan fungsi-fungsi untuk menukarkan antar pesan. Kegunaan MPI yang lain :

menulis kode paralel secara portable
mendapatkan performa yang tinggi dalam pemrograman paralel
menghadapi permasalahan yang melibatkan hubungan data irregular atau dinamis yang tidak  begitu cocok dengan model data paralel.
OpenMP

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.

F. Pengantar pemrograman CUDA GPU
GPU ( Graphical Processing Unit ) awalnya adalah sebuah prosesor yang berfungsi khusus untuk melakukan rendering pada kartu grafik saja, tetapi seiring dengan semakin meningkatnya kebutuhan rendering, terutama untuk mendekati waktu proses yang realtime, maka meningkat pula kemampuan prosesor grafik tersebut. akselerasi peningkatan teknologi GPU ini lebih cepat daripada peningkatan teknologi prosesor sesungguhnya ( CPU ), dan pada akhirnya GPU menjadi General Purpose, yang artinya tidak lagi hanya untuk melakukan rendering saja melainkan bisa untuk proses komputasi secara umum.

Penggunaan Multi GPU dapat mempercepat waktu proses dalam mengeksekusi program karena arsitekturnya yang natively parallel. Selain itu Peningkatan performa yang terjadi tidak hanya berdasarkan kecepatan hardware GPU saja, tetapi faktor yang lebih penting adalah cara membuat kode program yang benarbenar bisa efektif berjalan pada Multi GPU.

CUDA merupakan teknologi anyar dari produsen kartu grafis Nvidia, dan mungkin belum banyak digunakan orang secara umum. Kartu grafis lebih banyak digunakan untuk menjalankan aplikasi game, namun dengan teknologi CUDA ini kartu grafis dapat digunakan lebih optimal ketika menjalankan sebuah software aplikasi. Fungsi kartu grafis Nvidia digunakan untuk membantu Processor (CPU) dalam melakukan kalkulasi dalam proses data.

CUDA merupakan singkatan dari Compute Unified Device Architecture, didefinisikan sebagai sebuah arsitektur komputer parallel, dikembangkan oleh Nvidia. Teknologi ini dapat digunakan untuk menjalankan proses pengolahan gambar, video, rendering 3D, dan lain sebagainya. VGA – VGA dari Nvidia yang sudah menggunakan teknologi CUDA antara lain : Nvidia GeForce GTX 280, GTX 260,9800 GX2, 9800 GTX+,9800 GTX,9800 GT,9600 GSO, 9600 GT,9500 GT,9400 GT,9400 mGPU,9300 mGPU,8800 Ultra,8800 GTX,8800 GTS,8800 GT,8800 GS,8600 GTS,8600 GT,8500 GT,8400 GS, 8300 mGPU, 8200 mGPU, 8100 mGPU, dan seri sejenis untuk kelas mobile ( VGA notebook ).

Singkatnya, CUDA dapat memberikan proses dengan pendekatan bahasa C, sehingga programmer atau pengembang software dapat lebih cepat menyelesaikan perhitungan yang komplek. Bukan hanya aplikasi seperti teknologi ilmu pengetahuan yang spesifik. CUDA sekarang bisa dimanfaatkan untuk aplikasi multimedia. Misalnya meng-edit film dan melakukan filter gambar. Sebagai contoh dengan aplikasi multimedia, sudah mengunakan teknologi CUDA. Software TMPGenc 4.0 misalnya membuat aplikasi editing dengan mengambil sebagian proces dari GPU dan CPU. VGA yang dapat memanfaatkan CUDA hanya versi 8000 atau lebih tinggi.

Sabtu, 21 April 2018

Softskill Semester 8 Pertemuan ke – 3


Pembahasan:
-          Quantum Computation
-          Entanglement
-          Pengoperasian data qubit
-          Quantum Gates
-          Algoritma Shoi

Quantum Computation (Komputer Kuantum)
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 algoritme baru yang bisa digunakan dalam sistem kuantum yaitu algoritme shor dan algoritme 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.

Entanglement
Quantum entanglement adalah salah satu fenomena paling unik di dunia Quantum Fisika. Fenomena ini memungkinkan dua atom untuk mempunyai properti yang sama atau berlawanan satu sama lain, tanpa adanya interaksi diantara keduanya. Jadi meskipun jarak memisahkan dua atom itu, keduanya akan tetap terhubung seketika seolah ada sinyal yang mampu mempengaruhi keadaan mereka yang bergerak lebih cepat dari kecepatan cahaya. Agak sulit untuk membayangkan fenomena ini di dalam kejadian sehari-hari. Namun kita dapat membuat perumpamaan sebagai berikut.

Misalnya, kita mempunyai dua buah bola yang mempunyai ukuran sama dan berbentuk sama. Dua buah bola ini, kemudian di entangle-kan sehingga satu bola berputar searah jarum jam dan bola satunya berputar sebaliknya. Kemudian, seorang astronot yang akan dikirim ke Mars mengambil salah satu bola itu untuk ditempatkan di Koloni mereka. Sesampainya di Mars, bola itu ditempatkan di sebuah ruangan hampa di sebuah bunker di bawah permukaan Mars. Sehingga tidak mungkin ada sinyal atau sistem komunikasi yang mampu mempengaruhi keadaan bola itu dari jauh. Bola yang di bumi, katakanlah yang berputar searah jarum jam, dibalik arah putarannya sehingga berlawanan arah jarum jam. Maka, bola yang ada di Mars seketika itu juga (tanpa ada jeda waktu) akan berputar menjadi searah jarum jam.

Einstein menolak keras adanya Quantum Entanglement ini, walaupun persamaan matematika yang ia buat menunjukan dengan sangat tepat keberadaannya. Dia percaya bahawa Quantum Entanglement terjadi karena dua buah atom yang entangle pastilah mempunyai mempunyai sebuah variabel yang sama. Jadi meskipun jarak memisahkan, variable itu tetaplah terikat diantara kedua atom tersebut. Tapi nyatanya, tidak ada variable itu, tidak ada sistem komunikasi diantaranya, dan tidak mungkin terjadi interaksi karena dua buah partikel dapat ber-entangle secara seketika walaupun dipisahkan jarak yang sangat jauh. Jika ada sistem komunikasi diantara dua buah partikel, maka sistem komunikasi itu pastilah terjadi dalam kecepatan yang melebihi kecepatan cahaya. Sampai saat ini, kecepatan seperti itu belumlah ditemukan, dan mungkin tidak akan pernah ada.

Pengoperasian data qubit
Sebuah qubit adalah unit dasar informasi dalam sebuah komputer kuantum. Sementara sedikit dapat mewakili hanya satu dari dua kemungkinan seperti 0 / 1, ya / tidak, qubit dapat mewakili lebih: 0 / 1, 1 dan 0, probabilitas terjadinya setiap saat dikombinasikan dengan qubit lebih, dan semua yang secara bersamaan. 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).

Untuk memanipulasi sebuah qubit, maka menggunakan Quantum Gates (Gerbang Kuantum). Cara kerjanya yaitu sebuah gerbang kuantum bekerja mirip dengan gerbang logika klasik. Gerbang logika klasik mengambil bit sebagai input, mengevaluasi dan memproses input dan menghasilkan bit baru sebagai output.
Quantum Gates
Quantum Gates / Gerbang Quantum 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 computing gerbang quantum terdiri dari beberapa bilangan qubits, sehingga quantum gates lebih susah untuk dihitung daripada gerang logika pada komputer digital.

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 Shor bergantung pada hasil dari teori bilangan. Hasil ini adalah: fungsi periodik. Dalam konteks algoritma Shor, n akan menjadi bilangan yang akan difaktorkan. Jika dua bilangan tersebut adalah coprime itu berarti bahwa pembagi umumnya adalah 1. Perhitungan fungsi ini untuk jumlah eksponensial, dari itu akan mengambil waktu eksponensial pada komputer klasik. Algoritma Shor memanfaatkan paralelisme kuantum untuk melakukan jumlah eksponensial operasi dalam satu langkah.

Minggu, 11 Maret 2018

Implementasi Teori Komputasi

1. Implementasi Komputasi Modern pada Bidang Fisika

     Implementasi komputasi modern di bidang fisika ada Computational Physics yang mempelajari suatu gabungan antara Fisika, Komputer Sains dan Matematika Terapan untuk memberikan solusi pada “Kejadian dan masalah yang kompleks pada dunia nyata” baik dengan menggunakan simulasi juga penggunaan algoritma yang tepat. Pemahaman fisika pada teori, eksperimen, dan komputasi haruslah sebanding, agar dihasilkan solusi numerik dan visualisasi / pemodelan yang tepat untuk memahami masalah Fisika.
Untuk melakukan pekerjaan seperti evaluasi integral, penyelesaian persamaan differensial, penyelesaian persamaan simultan, mem-plot suatu fungsi/data, membuat pengembangan suatu seri fungsi, menemukan akar persamaan dan bekerja dengan bilangan kompleks yang menjadi tujuan penerapan fisika komputasi. Banyak perangkat lunak ataupun bahasa yang digunakan, baik MatLab, Visual Basic, Fortran, Open Source Physics (OSP), Labview, Mathematica, dan lain sebagainya digunakan untuk pemahaman dan pencarian solusi numerik dari masalah-masalah pada Fisika komputasi.

2. Implementasi Komputasi Modern pada Bidang Kimia

     Implementasi komputasi modern di bidang kimia adalah Computational Chemistry yaitu penggunaan ilmu komputer untuk membantu menyelesaikan masalah kimia, contohnya penggunaan super komputer untuk menghitung struktur dan sifat molekul. Istilah kimia teori dapat didefinisikan sebagai deskripsi matematika untuk kimia, sedangkan kimia komputasi biasanya digunakan ketika metode matematika dikembangkan dengan cukup baik untuk dapat digunakan dalam program komputer. Perlu dicatat bahwa kata “tepat” atau “sempurna” tidak muncul di sini, karena sedikit sekali aspek kimia yang dapat dihitung secara tepat. Hampir semua aspek kimia dapat digambarkan dalam skema komputasi kualitatif atau kuantitatif hampiran.

3. Implementasi Komputasi Modern pada Bidang Matematika.

     Menyelesaikan sebuah masalah yang berkaitan dengan perhitungan matematis, namun dalam pengertian yang akan dibahas dalam pembahasan komputasi modern ini merupakan sebuah sistem yang akan menyelesaikan masalah matematis menggunakan komputer dengan cara menyusun algoritma yang dapat dimengerti oleh komputer yang berguna untuk menyelesaikan masalah manusia.

4. Implementasi Komputasi Modern pada Bidang Ekonomi

     Pemrograman yang didesain khusus untuk komputasi ekonomi, dan pengembangan alat bantu dalam pendidikan komputasi ekonomi. Karena dibidang ekonomi pasti memiliki permasalahan yang harus dipecahkan oleh algoritma contohnya adalah memecahkan teori statistika untuk memecahkan permasalahan keuangan.

Salah satu contoh komputasi di bidang ekonomi adalah komputasi statistik. Komputasi statistik adalah jurusan yang mempelajari teknik pengolahan data, membuat program, dan analisis data serta teknik penyusunan sistem informasi statistik seperti penyusunan basis data, komunikasi data, sistem jaringan, dan diseminasi data statistik.

5. Implementasi Komputasi Dalam Bidang Geologi dan Geografi
     Geologi dan Geografi, pada bidang ini dapat dilakukan pemanfaatan seperti pemodelan terhadap akses keadaan geografis suatu permukaan wilayah yang dapat dipantau jika terjadi pergerakan atau getaran. Selain itu dapat dilakukan pengiriman informasi mengenai prakiraan cuaca yang sangat berguna bagi segala hal terutama transportasi udara dan laut.

Sumber :
 1. http://ferdianrezpector.blogspot.co.id/2015/04/implementasi-komputer-pada-berbagai.html
 2. http://ferdianrezpector.blogspot.co.id/2015/04/implementasi-komputer-pada-berbagai.html
3. http://mihanasakurai.blogspot.co.id/2015/04/abstraksi-oky-riyani.html

Teori Komputasi

Teori Komputasi

Menurut wikipedia: Teori komputasi adalah cabang ilmu komputer dan matematika yang membahas apakah dan bagaimanakah suatu masalah dapat dipecahkan pada model komputasi, menggunakan algoritme. Bidang ilmu ini terutama membahas hal terkait komputabilitas dan kompleksitas, dalam kaitannya dengan formalisme komputasi.

Komputasi tidak sama dengan kalkulasi ,Kalkulasi adalah proses mentransformasikan satu atau lebih input menjadi luaran (output).
Contoh: Kalikan 20 dengan 5, hasilnya 100

Kalkulasi melibatkan angka-angka dan kata-kata yang menyatakan proses sederhana, sedangkan komputasi menggunakan rule, bahkan bisa tanpa angka-angka.
Kalkulasi adalah prasyarat untuk komputasi.

Teori komputasi dibagi lagi menjadi 3 ranting:
a. Teori otomata (automata theory)
b. Teori komputabilitas (computability theory) adalah bertugas sebagai pemeriksa batasan-batasan pada model-model teoritis yang digunakan oleh komputer.
c. Teori kompleksitas (computational complexity theory) adalah sebuah ilmu dimana mengkaji sebuah sistem yang dinamik secara keseluruhan.

Beberapa model komputasi:

1. Mobile Computing atau Komputasi Bergerak
    Mobile computing (komputasi bergerak) adalah sebuah kemajuan teknologi komputer yang dapat berkomunikasi menggunakan jaringan tanpa menggunakan kabel serta mudah dibawa atau berpindah tempat, tetapi berbeda dengan komputasi nirkabel.
Contohnya: smartphone, dll

2. Grid Computing
    Komputasi grid disini adalah memanfaatkan suatu kekuatan pengolahan idle berbagai unit komputer, dan menggunakan kekuatan proses untuk menghitung satu pekerjaan.

3. Cloud Computing atau Komputasi Awan
Cloud computing adalah perluasan dari konsep pemrograman berorientasi objek abstraksi.