Halaman

Pengantar Komputasi Modern # (Tugas 3)

Kamis, 21 Juni 2018

Konsep Paralel

Paralel Processing adalah kemampuan menjalankan tugas atau aplikasi lebih dari satu aplikasi dan dijalankan secara simultan atau bersamaan pada sebuah komputer. Secara umum, Paralel Processingadalah sebuah teknik dimana sebuah masalah dibagi dalam beberapa masalah kecil untuk mempercepat proses penyelesaian masalah.

Hukum Paralel Processing
·                     Hukum Amdahl
“Peningkatan kecepatan secara paralel akan menjadi linear, melipatgandakan kemampuan proses sebuah komputer dan mengurangi separuh dari waktu proses yang diperlukan untuk menyelesaikan sebuah masalah.”
·                     Hukum Gustafson
“Sebuah komputasi paralel berjalan dengan menggunakan dua atau lebih mesin untuk mempercepat penyelesaian masalah dengan memperhatikan faktor eksternal, seperti kemampuan mesin dan kecepatan proses tiap-tiap mesin yang digunakan.

Komputasi Parallel
Komputasi Parallel adalah salah satu teknik melakukan komputasi secara bersamaan dengan memanfaatkan beberapa komputer secara bersamaan.
Komputasi Paralel membutuhkan :
·                     Algoritma
·                     Bahasa Pemograman
·                     Compiler

Contoh Komputasi Paralel:

Bagan Komputasi  Paralel Terdistribusi

Pada gambar diatas terdapat sebuah masalah, dimana masalah tersebut dibagi menjadi beberapa bagian lalu bagian dari masalah tersebut dibagikan ke-tiga CPU untuk diselesaikan secara bersamaan.


Distributed Processing
Distributed Processing atau Distributed Computing System adalah sekumpulan peralatan pemrosesan yang saling terhubung melalui jaringan komputer dan saling bekerjasama untuk mengerjakan tugas-tugas tertentu. Yang dimaksud dengan peralatan pemrosesan dataadalah peralatan komputasi yang dapat mengeksekusi sendiri sebuah program.
Sekumpulan peralatan yang saling terhubung akan mendistribusikan berbagai macam hal, dianataranya adalah:
·                     Processing Logic / Pemrosesan secara logis
·                     Fungsi. Beberapa fungsi sistem komputer dapat didelegasikan ke beberapa hardware atau software
·                     Data
·                     Kontrol
Kriteria Distributed Processing
Pemrosesan terdistribusi (Distributed Processing) dapat dikelompokkan berdasarkan beberapa kriteria, yaitu:
·                     Degree of Computing / tingkat hubungan : Tinggi atau rendah ? Jumlah data yang saling digunakan dibandingkan dengan jumlah pemrosesan lokal
·                     Struktur antar hubungan : kuat atau lemah ? Jika komponen di Share dikatakan kuat ?
·                     Kesalingtergantungan komponen-komponen : Kuat atau lemah dalam mengekseskusi proses.
·                     Keselarasan antar komponen : selaras atau tidak selaras ?

Architectural Paralel Computer
Dalam taksonomi arsitektur paralel ada dua keluarga arsitektur paralel yang banyak diterapkan adalah
·                     Single Instruction Single Data (SISD)
Single Instruction Single Data (SISD) ini memiliki hanya satu instruksi yang dieksekusi secara serial. Komputer ini adalah tipe komputer konvensional. Menururut mereka tipe komputer ini tidak ada dalam praktik komputer paralel karena bahkan mainframe pun tidak lagi menggunakan satu processor. Klasifikasi ini sekedar untuk melengkapi definisi komputer paralel. Beberapa contoh komputer yang menggunakan model SISD adalah UNIVACI, IBM 360, CDC 7600, Cray 1 dan PDP 1.
·                     Single Instruction Multiple Data (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).
·                     Multiple Instruction Multiple Data (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, bahkan banyak supercomputer yang menerapkan arsitektur ini. Beberapa komputer yang menggunakan model MIMD adalah IBM POWER5, HP/Compaq AlphaServer, Intel IA32, AMD Opteron, Cray XT3 dan IBM BG/L.

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.
Contoh:
Sebuah web browser mempunyai thread untuk menampilkan gambar atau tulisan sedangkan thread yang lain berfungsi sebagai penerima data dari network.
Threading dibagi menjadi 2, yaitu :
·                     Static Threading
Teknik ini biasa digunakan untuk komputer dengan chip multi processors 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
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).

Pengantar Programming GPU-CUDA
Graphic Processing Unit (GPU)
GPU (Graphic Processing Unit) sendiri merupakan sebuah alat/hardware, yang berfungsi sebagai render grafis terdedikasi dalam kesatuan sistem hardware PC atau Notebook. GPU bisa berada pada Video Card khusus (VGA Card) atau terintegrasi dalam Motherboard berupa Integrated GPU. GPU berfungsi untuk mengolah dan memanipulasi grafis pada CPU (Central Processing Unit), untuk nantinya ditampilkan dalam bentuk Visual Grafis pada Monitor (output).
CUDA (Compute Unified Device Architecture)
CUDA (Compute Unified Device Architecture) adalah arsitektur komputasi paralel yang dikembangkan oleh NVIDIA. CUDA adalah mesin komputasi dalam pemrosesan grafis NVIDIA unit (GPU) yang dapat diakses oleh pengembang perangkat lunak melalui varian dari bahasa pemrograman standar industri. CUDA merupakan kumpulan program-program yang menerjemahkan teks dalam bentuk bahasa komputer (computer language) berupa source language/source code, ke dalam bentuk bahasa komputer yang lain (target language/object code). Arsitektur CUDA memungkinkan GPU (yang telah support CUDA) menjadi arsitektur terbuka seperti layaknya CPU (Central Processing Unit atau Processor). Hanya, tidak seperti CPU, GPU memiliki arsitektur banyak-inti yang pararel. Setiap inti memiliki kemampuan untuk menjalankan ribuan “thread” secara simultan. Jika aplikasi yang dijalankan sesuai dengan arsitektur ini, GPU dapat menyediakan keuntungan yang lebih besar dari segi performa proses aplikasi tersebut.
Komponen Pendukung CUDA
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.
Kelebihan CUDA:
·                     CUDA menggunakan bahasa “C” standar, dengan beberapa ekstensi yang simpel.
·                     Shared memory – CUDA menyingkapkan wilayah memory yang cepat (berukuran 16 KB) yang dapat di bagi diantara thread-thread yang ada. Hal ini dapat digunakan sebagai user-managed-cache, sehingga mengaktifkan bandwitdth yang lebih besar (dari besaran bandwidth yang dimungkinkan), menggunakan texture loops.
·                     Proses download dan readbacks yang lebih cepat, dari dan ke GPU.
·                     Support penuh terhadap operasi integer dan bitwise.
Kelemahan CUDA:
·                     CUDA tidak support texture rendering,
·                     Bus Bandwidth dan latensi antara CPU dengan GPU bisa jadi bottleneck (tidak imbang),
·                     CUDA hanya terdapat pada GPU Nvidia.




Sumber :





Read more ...

Pengantar Komputasi Modern(Tugas #2)

Senin, 23 April 2018



A.  Komputasi Grid

 
Pengertian Komputasi Grid
Komputasi Grid adalah penggunaan sumber daya yang melibatkan banyak komputer yang terdistribusi dan terpisah secara geografis untuk memecahkan persoalan komputasi dalam skala besar.

Konsep Dasar dari Komputasi Grid

1.  Sumber daya dikelola dan dikendalikan secara lokal.
2.   Sumber daya berbeda dapat mempunyai kebijakan dan mekanisme berbeda, mencakup Sumber daya komputasi dikelola oleh sistem batch berbeda, Sistem storage berbeda pada node berbeda, Kebijakan berbeda dipercayakan kepada user yang sama pada sumber daya berbeda pada Grid.
3.   Sifat alami dinamis: Sumber daya dan pengguna dapat sering berubah.
4.   Lingkungan kolaboratif bagi e-community (komunitas elektronik, di internet)
5.   Tiga hal yang di-,sharing dalam sebuah sistem grid, antara lain : Resource, Network dan Proses. Kegunaan / layanan dari sistem grid sendiri adalah untuk melakukan high throughput computing dibidang penelitian, ataupun proses komputasi lain yang memerlukan banyak resource komputer.

Elemen-Elemen dalam Komputasi Grid
1.Hardware/sumber daya;
2.Software; dan
3.Brainware (orang yang memelihara dan memakai komputasi grid).

Cara Kerja Komputasi Grid
Menurut tulisan singkat oleh Ian Foster ada check-list yang dapat digunakan untuk mengidentifikasi bahwa suatu sistem melakukan komputasi grid yaitu :
1. Sistem tersebut melakukan koordinasi terhadap sumberdaya komputasi yang tidak berada dibawah suatu kendali terpusat. Seandainya sumber daya yang digunakan berada dalam satu cakupan domain administratif, maka komputasi tersebut belum dapat dikatakan komputasi grid.
2. Sistem tersebut menggunakan standard dan protokol yang bersifat terbuka (tidak terpaut pada suatu implementasi atau produk tertentu). Komputasi grid disusun dari kesepakatan-kesepakatan terhadap masalah yang fundamental, dibutuhkan untuk mewujudkan komputasi bersama dalam skala besar. Kesepakatan dan standar yang dibutuhkan adalah dalam bidang autentikasi, otorisasi, pencarian sumberdaya, dan akses terhadap sumber daya.
3. Sistem tersebut berusaha untuk mencapai kualitas layanan yang canggih, (nontrivial quality of service)             yang jauh diatas kualitas layanan komponen individu dari komputasi grid tersebut.

Kelebihan dan Kekurangan Grid Computing


Kelebihan :

1. Grid computing menjanjikan peningkatan utilitas, dan fleksibilitas yang lebih besar untuk sumberdaya infrastruktur, aplikasi dan informasi. Dan juga menjanjikan peningkatan produktivitas kerja perusahaan.
2. Grid computing bisa memberi penghematan uang, baik dari sisi investasi modal maupun operating cost–nya.


Kekurangan :

1. Manajemen institusi yang terlalu birokratis menyebabkan mereka enggan untuk merelakan fasilitas yang dimiliki untuk digunakan secara bersama agar mendapatkan manfaat yan lebih besar bagi masyarakat luas.
2. Masih sedikitnya Sumber Daya Manusia yang kompeten dalam mengelola grid computing. Contonhya kurangnya pengetahuan yang mencukupi bagi teknisi IT maupun user non teknisi mengenai manfaat dari grid computing itu sendiri.

B. Virtualisasi

Pengertian Virtualisasi
Virtualisasi bisa diartikan sebagai pembuatan suatu bentuk atau versi virtual dari sesuatu yang bersifat fisik, misalnya sistem operasi,  perangkat storage/penyimpanan data atau sumber daya jaringan.
Virtualisasi bisa diimplementasikan kedalam berbagai bentuk, antara lain (Harry Sufehmi, Pengenalan Virtualisasi, 20090607) :
Network Virtualization : VLAN, Virtual IP (untclustering), Multilink
Memory Virtualization : pooling memory dari node-node di cluster
Grid Computing : banyak komputer = satu
Application Virtualization : Dosemu, Wine
Storage Virtualization : RAID, LVM
Platform Virtualization : virtual computer

Kelebihan dan Kekurangan Virtualisasi

Kelebihan :

1.      Pengurangan Biaya Investasi Hardware. Investasi hardware dapat ditekan lebih rendah karena virtualisasi hanya mendayagunakan kapasitas yang sudah ada. Tak perlu ada penambahan perangkat komputer, server dan pheriperal secara fisik. Kalaupun ada penambahan kapasitas harddisk dan memori, itu lebih ditujukan untuk mendukung stabilitas kerja komputer induk, yang jika dihitung secara finansial, masih jauh lebih hemat dibandingkan investasi hardware baru.
2.      Kemudahan Backup & Recovery. Server-server yang dijalankan didalam sebuah mesin virtual dapat disimpan dalam 1 buah image yang berisi seluruh konfigurasi sistem. Jika satu saat server tersebut crash, kita tidak perlu melakukan instalasi dan konfigurasi ulang. Cukup mengambil salinan image yang sudah disimpan, merestore data hasil backup terakhir dan server berjalan seperti sedia kala. Hemat waktu, tenaga dan sumber daya.
3.      Kemudahan Deployment. Server virtual dapat dikloning sebanyak mungkin dan dapat dijalankan pada mesin lain dengan mengubah sedikit konfigurasi. Mengurangi beban kerja para staff IT dan mempercepat proses implementasi suatu sistem

Kekurangan :

1.      Satu Pusat Masalah. Virtualisasi bisa dianalogikan dengan menempatkan semua telur didalam 1 keranjang. Ini artinya jika server induk bermasalah, semua sistem virtual machine didalamnya tidak bisa digunakan. Hal ini bisa diantisipasi dengan menyediakan fasilitas backup secara otomatis dan periodik atau dengan menerapkan prinsip fail over/clustering
2.      Spesifikasi Hardware. Virtualisasi membutuhkan spesifikasi server yang lebih tinggi untuk menjalankan server induk dan mesin virtual didalamnya
3.      Satu Pusat Serangan. Penempatan semua server dalam satu komputer akan menjadikannya sebagai target serangan. Jika hacker mampu menerobos masuk kedalam sistem induk, ada kemungkinan ia mampu menyusup kedalam server- server virtual dengan cara menggunakan informasi yang ada pada server induk

C. Distribusi Komputasi dalam Cloud


Distributed Computing adalah ilmu yang memecahkan masalah besar dengan memberikan bagian kecil dari masalah untuk banyak komputer untuk memecahkan dan kemudian menggabungkan solusi untuk bagian-bagian menjadi solusi untuk masalah tersebut. Distributed computing terkait dengan system perangkat keras dan perangkat lunak yang memiliki lebih dari satu elemen pemrosesan atau storage element.
Kegiatan ini merupakan kumpulan beberapa computer yang terhubung untuk melakukan pendistribusian, seperti mengirim dan menerima data serta melakukan interaksi lain antar computer yang dimana membutuhkan sebuah jaringan agar computer satu dan lainnya bisa saling berhubung dan melakukan interaksi. Hal ini semua dilakukan dengan cloud computing yang seperti kita ketahui memberikan layanan dimana informasinya disimpan di server secara permanen dan disimpan di computer client secara temporary.
Komputasi Terdistribusi merupakan salah satu tujuan dari Cloud Computing, karena menawarkan pengaksesan sumber daya secara parallel, para pengguna juga bisa memanfaatkannya secara bersamaan (tidak harus menunggu dalam antrian untuk mendapatkan pelayanan), terdiri dari banyak sistem sehingga jika salah satu sistem crash, sistem lain tidak akan terpengaruh, dapat menghemat biaya operasional karena tidak membutuhkan sumber daya (resources).
Distribusi komputasi ini memiliki definisi mempelajari penggunaan terkoordinasi dari computer secara fisik terpisah atau terdistribusi. Pada distributed computing ini, program dipisah menjadi beberapa bagian yang dijalankan secara bersamaan pada banyak computer yang terhubung melalui jaringan internet.
Pada cloud computing, penyimpanan data hanya dilakukan pada server utama, sehingga pengguna hanya dapat mengaksesnya tanpa harus mengetahui infrastruktur pembuatan aplikasinya. Hanya perlu interface software saja untuk mengakses server. Interface ini pada umumnya merupakan web browser yang tersedia dengan banyak pilihan dan tidak berbayar.
Cloud computing dipecah ke dalam beberapa kategori yang berbeda berdasarkan jenis layanan yang disediakan. SaaS (Software as a Service) adalah kategori komputasi awan di mana sumber daya utama yang tersedia sebagai layanan perangkat lunak aplikasi. PaaS (Platform as a Service) adalah kategori / penerapan komputasi awan di mana penyedia layanan memberikan platform komputasi atau solusi tumpukan untuk pelanggan mereka melalui internet. IaaS (Infrastructure as a Service) adalah kategori komputasi awan di mana sumber daya utama yang tersedia sebagai layanan yang infrastruktur perangkat keras. DaaS (Desktop sebagai Layanan), yang merupakan layanan muncul-Aas berkaitan dengan memberikan pengalaman seluruh desktop melalui internet. Ini kadang-kadang disebut sebagai virtualisasi desktop / virtual desktop atau desktop host.

D. Cloud Computing, MapReduce, dan  noSQL

Pengertian Cloud Computing

Cloud computing adalah sebuah konsep pemahaman dalam rangka pembuatan kerangka kerja komputasi secara online lokal (LAN) maupun global (internet) dimana terdapat beragam aplikasi maupun data  dan media penyimpanan yang dapat diakses dan digunakan secara berbagi (shared service) dan bersamaan (simultaneous access) oleh para pengguna yang beragam – mulai dari perseorangan sampai kepada kelas pengguna korporasi atau perusahaan.

Pengertian MapReduce


MapReduce adalah model pemrograman rilisan Google yang ditujukan untuk memproses data berukuran raksasa secara terdistribusi dan paralel dalam cluster yang terdiri atas ribuan komputer. Dalam memproses data, secara garis besar MapReduce dapat dibagi dalam dua proses yaitu proses Map dan proses Reduce. Kedua jenis proses ini didistribusikan atau dibagi-bagikan ke setiap komputer dalam suatu cluster (kelompok komputer yang salih terhubung) dan berjalan secara paralel tanpa saling bergantung satu dengan yang lainnya. Proses Map bertugas untuk mengumpulkan informasi dari potongan-potongan data yang terdistribusi dalam tiap komputer dalam cluster. Hasilnya diserahkan kepada proses Reduce untuk diproses lebih lanjut. Hasil proses Reduce merupakan hasil akhir yang dikirim ke pengguna.

Pengertian NoSQL


NoSQL adalah sebuah konsep mengenai penyimpanan data non-relasional. Berbeda dengan model basis data relasional yang selama ini digunakan, NoSQL menggunakan beberapa metode yang berbeda-beda ( Wikipedia ). Metode ini bergantung dari jenis database yang digunakan. Karena NoSQL sendiri merupakan konsep database, dan pada implementasinya, banyak jenis-jenis dari NoSQL ini.
NoSQL sangat berguna pada data-data yang terus-menerus berkembang, dimana  data tersebut sangat kompleks sehingga sebuah database relational tidak lagi bisa mengakomodir. Salah satu bentuknya adalah ketika suatu data saling berhubungan satu sama lain, maka akan muncul proses duplikasi data. Dimana data saling memanggil ke beberapa permintaan, tambahan data baru, perubahan data, dan lain-lain dengan key yang sama. Karena faktor hubungan antar data yang sama terjadi terus-menerus, mendorong faktor redudansi data, data menjadi berlipat-lipat, dan pada akhirnya akan menyebabkan crash pada database berkonsep RDBMS.
Contoh NoSQL adalah OrientDB
OrientDB merupakan basis data graf terdistribusi generasi kedua. Basis data ini dibuat dalam bahasa Java oleh Orient Technologies LTD dan dirilis pertama kali tahun 2010. OrientDB diklaim sangat cepat dan mampu menyimpan 220.000 record per detik diperangkat standar.



Sumber:




Read more ...

Komentar Terakhir