Minggu, 08 Mei 2016

PARALLEL COMPUTATION


d. Pengantar Thread Programming
Dalam pemrograman komputer, sebuah thread adalah informasi terkait dengan penggunaan sebuah program tunggal yang dapat menangani beberapa pengguna secara bersamaan. Dari program point-of-view, sebuah thread adalah informasi yang dibutuhkan untuk melayani satu pengguna individu atau permintaan layanan tertentu. Jika beberapa pengguna menggunakan program atau permintaan bersamaan dari program lain yang sedang terjadi, thread yang dibuat dan dipelihara untuk masing-masing proses. Thread memungkinkan program untuk mengetahui user sedang masuk didalam program secara bergantian dan akan kembali masuk atas nama pengguna yang berbeda. Salah satu informasi thread disimpan dengan cara menyimpannya di daerah data khusus dan menempatkan alamat dari daerah data dalam register. Sistem operasi selalu menyimpan isi register saat program interrupted dan restores ketika memberikan program kontrol lagi.
Sebagian besar komputer hanya dapat mengeksekusi satu instruksi program pada satu waktu, tetapi karena mereka beroperasi begitu cepat, mereka muncul untuk menjalankan berbagai program dan melayani banyak pengguna secara bersamaan. Sistem operasi komputer memberikan setiap program "giliran" pada prosesnya, maka itu memerlukan untuk menunggu sementara program lain mendapat giliran. Masing-masing program dipandang oleh sistem operasi sebagai suatu tugas dimana sumber daya tertentu diidentifikasi dan terus berlangsung. Sistem operasi mengelola setiap program aplikasi dalam sistem PC (spreadsheet, pengolah kata, browser Web) sebagai tugas terpisah dan memungkinkan melihat dan mengontrol item pada daftar tugas. Jika program memulai permintaan I / O, seperti membaca file atau menulis ke printer, itu menciptakan thread. Data disimpan sebagai bagian dari thread yang memungkinkan program yang akan masuk kembali di tempat yang tepat pada saat operasi I / O selesai. Sementara itu, penggunaan bersamaan dari program diselenggarakan pada thread lainnya. Sebagian besar sistem operasi saat ini menyediakan dukungan untuk kedua multitasking dan multithreading. Mereka juga memungkinkan multithreading dalam proses program agar sistem tersebut disimpan dan  menciptakan proses baru untuk setiap thread.


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.
Mekanisme ini terhitung lambat, karenanya disebut dengan static. Selain itu teknik ini tidak mudah diterapkan dan rentan kesalahan. Alasannya, pembagian pekerjaan yang dinamis di antara thread-thread menyebabkan load balancing-nya cukup rumit. Untuk memudahkannya programmer harus menggunakan protocol komunikasi yang kompleks untuk menerapkan scheduler load balancing. Kondisi ini mendorong pemunculan concurrency platforms yang menyediakan layer untuk mengkoordinasi, menjadwalkan, dan mengelola sumberdaya komputasi paralel.
Sebagian platform dibangun sebagai runtime libraries atau sebuah bahasa pemrograman paralel lengkap dengan compiler dan pendukung runtime-nya.
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. Nested parallelism memungkinkan sebuah subroutine di-spawned (ditelurkan dalam jumlah banyak seperti telur katak) sehingga program utama tetap berjalan sementara subroutine menghitung hasilnya. Sedangkan parallel loops seperti halnya fungsi for namun memungkinkan iterasi loop dilakukan secara bersamaan.
e. Pengantar Message Passing dan OpenMP
OpenMP (Open Multi-Processing) adalah sebuah antarmuka pemrograman aplikasi (API) yang mendukung multi processing shared memory pemrograman di C, C++ dan Fortran pada berbagai arsitektur, termasuk UNix dan Microsoft Windows platform. OpenMP Terdiri dari satu set perintah kompiler, perpustakaan rutinitas, dan variabel lingkungan yang mempengaruhi run-time. Banyak Aplikasi dibangun dengan model hibrida pemrograman paralel  dapat dijalankan pada komputer cluster dengan menggunakan OpenMP dan Message Passing Interface (MPI), atau lebih transparan dengan menggunakan ekstensi OpenMP non-shared memory systems.
Sejarah OpenMP dimulai dari diterbitkannya API pertama untuk Fotran 1.0 pada Oktober 1997 oleh OpenMP Architecture Review Board (ARB). Oktober tahun berikutnya OpenMP Architecture Review Board (ARB) merilis standart C / C++. Pada tahun 2000 mengeluarkan versi 2.0 untuk fotran dan poda tahun 2002 dirilis versi 2.0 untuk C / C++. Pada tahun 2005 dirilis versi 2.5 yang merupakan pengabungan fotran, C, dan C++/ pada mei 2008 versi 3.0 yang terdapat didalmnya konsept tasks dan task construct.
OpenMP mengimplementasi multithreading. Bagian kode yang akan dijalankan secara parallel ditandai sesuai dengan Preprocessor directif sehingga akan membuat thread-thread sebelum dijalnkan. Setiap thread memiliki id yang di buat menggunakan fungsi (omp_get_thread_num() pada C/C++ dan OMP_GET_THREAD_NUM() pada Fortran). Secara default, setiap thread mengeksekusi kode secara parallel dan independent. "Work-sharing constructs" dapat dapat digunakan untuk membagi tugas antar thread sehingga setiap thread menjalankan sesuai bagian alokasi kodenya. Fungsi OpenMP berada pada file header yang berlabel “omp.h” di C / C++.
f. Pengantar Pemrograman CUDA GPU

Graphics Processing Unit merupakan prosesor yang didedikasikan untuk render cepat dalam pemrosesan polygon baik itu texturing dan shading. Terdiri atas banyak core namun masih menggunakan arsitektur yang sederhana, sehingga harganya relative murah dan di produksi secara missal untuk berbagai keperluan misalnya peneilitian/ilmuah.
CUDA, Compute Unified Device Architecture merupakan suatu framework dari bahasa pemrograman yang mendukung bahas C language, dimana mampu berkomunikasi langsung dengan GPU dan sangat mudah bekerjasama untuk segala multi-threading  parallel execution hampir diseluruh prosesor pada GPU. CUDA menggukan konsep nvcc sebagai ORM dalam object programmingnya. CUDA merupakan produk dari NVIDIA sebagai produsen graphic komputer ternama.
Platform CUDA dapat diakses oleh pengembang perangkat lunak melalui library CUDA-accelerated , perintah kompiler (seperti OpenACC ), dan ekstensi untuk bahasa pemrograman standar industri, termasuk C, C++ dan Fortran . C / C++ programmer menggunakan CUDA C / C + +, yang disusun dengan "nvcc", NVIDIA LLVM berbasis C / C++ compiler, dan Fortran programmer dapat menggunakan 'CUDA Fortran', yang disusun dengan PGI CUDA Fortran compiler dari The Portland Grup. Selain library, arahan compiler, CUDA C / C++ dan CUDA Fortran, platform CUDA mendukung interface komputasi lainnya, termasuk Khronos Grup 's OpenCL , Microsoft DirectCompute , dan C++ AMP . Pemrograman pihak ketiga juga tersedia untuk Python , Perl , Fortran , Java , Ruby , Lua , Haskell, Matlab , IDL , dan dukungan asli di Mathematica.
Dalam permainan komputer industri, GPU yang digunakan tidak hanya untuk rendering grafis tetapi juga dalam perhitungan fisika permainan (efek fisik seperti puing-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 oleh urutan besarnya atau lebih.
CUDA memiliki beberapa keunggulan dibandingkan tradisional perhitungan tujuan umum pada GPU (GPGPU) menggunakan API grafis:
·         Tersebar membaca - kode dapat membaca dari alamat sewenang-wenang dalam memori.
·         Memori bersama - CUDA memperlihatkan cepat memori bersama wilayah (sampai 48KB per Multi-Processor) yang dapat dibagi di antara benang. Ini dapat digunakan sebagai cache dikelola pengguna, memungkinkan bandwidth yang lebih tinggi daripada yang mungkin menggunakan pencarian tekstur.
·         Download lebih cepat dan readbacks ke dan dari GPU.
·         Dukungan penuh untuk integer dan bitwise operasi, termasuk pencarian tekstur bulat.

Sumber :
-          http://chachados.blogspot.co.id/2013/07/parallel-computation.html
-          http://randyap14.blogspot.co.id/2015/12/parallel-computation-pengantar.html

PARALLEL COMPUTATION


a.    Paralelisme Concept
Paralelisme (parallelism) lahir dari pendekatan yang biasa dipergunakan oleh para perancang sistem untuk menerapkan konsep pemrosesan konkuren. Teknik ini meningkatkan kecepatan proses dengan cara memperbanyak jumlah modul perangkat keras yang dapat beroperasi secara simultan disertai dengan membentuk beberapa proses yang bekerja secara simultan pada modul-modul perangkat keras tersebut. Secara formal, pemrosesan paralel adalah sebuah bentuk efisien pemrosesan informasi yang menekankan pada eksploitasi dari konkurensi kejadian-kejadian dalam proses komputasi.Pemrosesan paralel dapat terjadi pada beberapa tingkatan (level) proses. Tingkatan tertinggi pemrosesan paralel terjadi pada proses di antara banyak job (pekerjaan) atau pada program yang menggunakan multiprogramming, time sharing, dan multiprocessing. Multiprogramming kemampuan eksekusi terhadap beberapa proses perangkat lunak dalam sebuah system secara serentak, jika dibandingkan dengan sebuah proses dalam satu waktu, dan timesharing berarti menyediakan pembagian selang waktu yang tetap atau berubah-ubah untuk banyak program. Multiprocessing adalah dukungan sebuah sistem untuk mendukung lebih dari satu prosesor dan mengalokasikan tugas kepada prosesor-prosesor tersebut. Multiprocessing sering diimplementasikan dalam perangkat keras (dengan menggunakan beberapa CPU sekaligus), sementara multiprogramming sering digunakan dalam perangkat lunak. Sebuah sistem mungkin dapat memiliki dua kemampuan tersebut, salah satu di antaranya, atau tidak sama sekali. Pemrosesan paralel dapat juga terjadi pada proses di antara prosedurprosedur atau perintah perintah (segmen program) pada sebuah program. Untuk meningkatkan kecepatan proses komputasi, dapat ditempuh dua cara :

Peningkatan kecepatan perangkat keras.
Komponen utama perangkat keras komputer adalah processor. Meskipun kecepatan processor dapat ditingkatkan terus, namun karena keterbatasan materi pembuatnya, tentu ada suatu batas kecepatan yang tak mungkin lagi dapat dilewati. Karena itu timbul ide pembuatan komputer multiprocessor. Dengan adanya banyak processor dalam satu komputer, pekerjaan bisa dibagi-bagi kepada masing-masing processor. Dengan demikian lebih banyak proses dapat dikerjakan dalam satu saat. Peningkatan kecepatan setiap proses bisa dicapai melalui peningkatan kecepatan perangkat lunak. Kecepatan perangkat lunak sangat ditentukan oleh algoritmanya.

Peningkatan kecepatan perangkat lunak.
Program komputer untuk komputer sekuensial harus menyediakan sederetan operasi untuk dikerjakan oleh prosesor tunggal. Program komputer untuk komputer paralel harus menyediakan sederetan operasi untuk beberapa prosesor untuk dikerjakan secara paralel, termasuk operasi untuk mengatur dan mengitegrasikan prosesor-prosesor yang terpisah tersebut mengerjakan suatu komputasi yang koheren. Kebutuhan akan pembuatan dan pengaturan berbagai aktivitas komputasi paralel menambah dimensi baru proses dari pemrograman komputer. Algoritma untuk problem yang spesifik harus diformulasikan sedemikian rupa, agar menghasilkan aliran operasi paralel yang kemudian akan dieksekusi di prosesor yang berbeda. Karena itu, meskipun arsitektur multiprosesor dan multikomputer mempunyai pontensi yang tinggi untuk meningkatkan kemampuan komputasi, potensi ini akan tercapai melalui pengertian yang baik mengenai bahasa pemrograman paralel dan perancangan algoritma paralel.

b.    Distributed Processing
Pemrosesan paralel adalah pendekatan komputasi untuk meningkatkan tingkat di mana satu set data diolah dengan pengolahan bagian yang berbeda dari data pada waktu yang sama secara simultan atau bersamaan pada sebuah komputer dan berfungsi memecah beban besar menjadi beberapa beban kecil untuk mempercepat proses penyelesaian masalah. 
Didistribusikan pengolahan paralel menggunakan pemrosesan paralel pada beberapa mesin. Salah satu contoh dari hal ini adalah bagaimana beberapa komunitas memungkinkan pengguna untuk mendaftar dan mendedikasikan komputer mereka sendiri untuk memproses beberapa data set yang diberikan kepada mereka oleh server. Ketika ribuan pengguna mendaftar untuk ini, banyak data dapat diproses dalam jumlah yang sangat singkat.
Tipe lain dari komputasi paralel yang kadang-kadang disebut "didistribusikan" adalah gagasan dari sebuah komputer paralel cluster. Sebuah cluster akan banyak CPU terhubung melalui kecepatan tinggi koneksi ethernet ke hub sentral (Server) yang memberi masing-masing beberapa pekerjaan yang harus dilakukan. Metode cluster mirip dengan metode yang dijelaskan dalam paragraf di atas, kecuali bahwa semua CPU secara langsung terhubung ke server, dan satu-satunya tujuan mereka adalah untuk melakukan perhitungan yang diberikan kepada mereka.


Parallel distributed computing dapat dibentuk dari :
- Ada : digunakan konsep pertemuan yang menggabungkan fitur RPC dan monitor.
- PVM (Parallel Virtual Machine) untuk mendukung workstation clusters
-  MPI (Message-Passing Interface) programming GUI untuk parallel computers.

c. Architectural Parallel Computer
SISD
Yang merupakan singkatan dari Single Instruction, Single Data adalah satu-satunya yang menggunakan arsitektur Von Neumann. Ini dikarenakan pada model ini hanya digunakan 1 processor saja. Oleh karena itu model ini bisa dikatakan sebagai model untuk komputasi tunggal. Sedangkan ketiga model lainnya merupakan komputasi paralel yang menggunakan beberapa processor. Beberapa contoh komputer yang menggunakan model SISD adalah UNIVAC1, IBM 360, CDC7600, Cray1 dan PDP1.
SIMD
Yang merupakan singkatan dari Single Instruction, Multiple Data. SIMD menggunakan banyak processor dengan instruksi yang sama, namun setiap processor mengolah data yang berbeda. Sebagai contoh kita ingin mencari angka 27 pada deretan angka yang terdiri dari 100 angka, dan kita menggunakan 5 processor. Pada setiap processor kita menggunakan algoritma atau perintah yang sama, namun data yang diproses berbeda. Misalnya processor 1 mengolah data dari deretan / urutan pertama hingga urutan ke 20, processor 2 mengolah data dari urutan 21 sampai urutan 40, begitu pun untuk processor-processor yang lain. 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).
MISD
Yang merupakan singkatan dari Multiple Instruction, Single Data. MISD menggunakan banyak processor dengan setiap processor menggunakan instruksi yang berbeda namun mengolah data yang sama. Hal ini merupakan kebalikan dari model SIMD. Untuk contoh, kita bisa menggunakan kasus yang sama pada contoh model SIMD namun cara penyelesaian yang berbeda. Pada MISD jika pada komputer pertama, kedua, ketiga, keempat dan kelima sama-sama mengolah data dari urutan 1-100, namun algoritma yang digunakan untuk teknik pencariannya berbeda di setiap processor. Sampai saat ini belum ada komputer yang menggunakan model MISD.
MIMD
Yang merupakan singkatan dari Multiple Instruction, Multiple Data. MIMD menggunakan banyak processor dengan setiap processor memiliki instruksi yang berbeda dan mengolah data yang berbeda. Namun banyak komputer yang menggunakan model MIMD juga memasukkan komponen untuk model SIMD. Beberapa komputer yang menggunakan model MIMD adalah IBM POWER5, HP/Compaq AlphaServer, Intel IA32, AMD Opteron, Cray XT3 dan IBM BG/L.
Sumber :
-          http://ridwanraa.blogspot.co.id/2015/12/parallelism-concept.html
-          http://chachados.blogspot.co.id/2013/07/parallel-computation.html

Selasa, 19 April 2016

File Service Terdistribusi


File Sistem Terdistribusi ( Distributed File System , disingkat) adalah file sistem yang mendukung sharing files dan resources dalam bentuk penyimpanan persistent di sebuah network. File server pertama kali didevelop pada tahun 1970 dan Sun NFS (Network File System) menjadi DFS pertama yang banyak digunakan setelah awal pemunculannya di tahun 1985. DFS yang terkenal selain NFS adalah AFS (Andrew File System) dan CIFS (Common Internet File System).
Sebuah file server menyediakan file service ke client. Dari sisi client terdapat interface untuk file service dalam hal operasi primitif file, seperti membuat file (create), menghapus (delete) dan read / write file. Komponen perangkat keras utama yang mana file server mengontrolnya adalah sebuah local storage (umumnya disk drive / HDD). Ditempat itulah file-file tersimpan dan dari tempat tersebut request client meretrive file. Pada DFS client, server dan juga perangkat penyimpanan merupakan mesin terpisah dalam sebuah lingkungan terdistribusi (Intranet).
Tujuan utama dari sistem file terdistribusi yaitu mencontoh fungsi dari sistem file non‐terdistribusi pada program klien yang berjalan di komputer‐komputer dalam suatu jaringan. Dimulai dengan pembahasan mengenai sistem storage terdistribusi dan non‐terdistribusi. Sistem file awalnya dikembangkan untuk sistem komputer terpusat dan komputer desktop sebagai fasilitas sistem operasi yang menyediakan antarmuka pemrograman yang bagus dalam storage disk. Setelah itu, mereka menambahkan fasilitas seperti kontrol akses dan mekanisme file‐locking yang membuatnya menjadi lebih berguna dalam pengiriman data dan program. Sistem file terdistribusi mendukung pengiriman informasi dalam bentuk file dan sesumber hardware dalam bentuk storage lewat intranet. File service yang telah dirancang dengan baik menyediakan akses ke file yang disimpan pada server dengan performance yang sama atau bahkan lebih baik dari file yang disimpan pada local disk. Desainnya disesuaikan dengan performance dari jaringan lokal dan oleh karena itulah menjadi yang paling efektif dalam menyediakan pengiriman storage untuk digunakan di intranet.
Layanan File Terdistribusi
1.Layanan Dasar
– Tempat penyimpanan tetap untuk data dan program
– Operasi terhadap file (create, open, read,…)
– Multiple remote clients (dalam intranet)
– File sharing
– Menggunakan semantic one-copy update umum, melalui RPC
  1. Perkembangan baru
– Persistent object stores (storage of objects)
  1. Persistent Java, Corba, …
– Replikasi, caching keseluruhan file
–Multimedia terdistribusi (contoh: file server Tiger video)
Keperluan sistem file terdistribusi
a.Transpansi
File service biasanya merupakan service yang harus di‐load paling berat dalam sebuah
intranet, sehingga fungsionalitas dan performance‐nya sangat penting.
o Transparansi akses
o Transparansi lokasi
o Transparansi mobilitas
o Transparansi performance
o Transparansi pengukuran
b.Update file konkuren
Perubahan pada sebuah file oleh seorang klien seharusnya tidak menganggu operasi dari klien lain yang pada saat bersamaan mengakses atau mengubah file yang sama.
c.Replikasi file
Beberapa file service mendukung penuh replikasi, tetapi kebanyakan mendukung caching file atau portion file secara lokal, bentuk replikasi yang terbatas.
d.Keheterogenan sistem operasi dan hardware
Antarmuka service sebaiknya didefinisikan sehingga software klien dan server dapat diimplementasikan untuk sistem operasi dan komputer yang berbeda.
e.Toleransi kesalahan
Server bisa menjadi stateless, sehingga dapat di‐restart dan service di‐restore kembali setelah mengalami failure tanpa perlu me‐recover state sebelumnya.
f.Konsistensi
Ketika file‐file direplikasi atau di‐cache pada site yang berbeda, ada delay yang tak bisa dihindari pada propagasi modifikasi dari satu site ke set lain yang membawa copy, dan ini bisa menghasilkan beberapa deviasi dari one‐copy semantic.
g.Keamanan
Secara virtual, semua sistem file menyediakan mekanisme kontrol akses berdasarkan kegunaan dari daftar kontrol akses.
h.Efisiensi
File service terdistribusi sebaiknya menawarkan fasilitas yang paling tidak, sama bagusnya dengan yang ditemukan pada sistem file konvensional, dan sebaiknya mendapat level performance yang dapat diperhitungkan.
Komponen File service
Komponen-komponen file service adalah terdiri dari :
  • File Service
Pengoperasian dari masing-masing file.
  • Directory Service
Management atau pengaturan direktori
  • Naming Service
– Location Independence :
File dapat dipindahkan tanpa penggantian nama
– Hal yang umum untuk penamaan file dan directori :
Mesin + nama path e.g / machine / path atau machine : path
Mounting File sistem secara remote kedalam hirarki local file.
Single name space yang sama pada semua mesin.
– Dua level penamaan :
Nama simbolik yang dilihat user dan nama binary yang dilihat oleh sistem.
Contoh File Service
NFS (Network File System)
Network File System (NFS) merupakan sebuah protokol yang dikembangkan oleh Sun Microsystem pada tahun 1984 dan NFS didefinisikan dalam RFC 1094, 1813 dan 3530 sebagai DFS yang mengijikan sebuah komputer untuk mengakses file melalui network serasa akses file di disk local.
Tujuan dari NFS adalah untuk memungkinkan terjadinya pertukaran sistem berkas secara transparan antara mesin-mesin bebas tersebut.
Protokol NFS
NFS umumnya menggunakan protokol Remote Procedure Call (RPC) yang berjalan di atas UDP dan membuka port UDP dengan port number 2049 untuk komunikasi antara client dan server di dalam jaringan. Client NFS selanjutnya akan mengimpor sistem berkas remote dari server NFS, sementara server NFS mengekspor sistem berkas lokal kepada client.
Mesin-mesin yang menjalankan perangkat lunak NFS client dapat saling berhubungan dengan perangkat lunak NFS server untuk melakukan perintah operasi tertentu dengan menggunakan request RPC.
Kebutuhan file sistem terdistribusi
  1. Transpansi
Keseimbangan antara flesibilitas dan skalabilitas terhadap kompleksitas dan performansi dalam desainnya.
  1. Update file konkuren
Perubahan pada sebuah file oleh seorang klien seharusnya tidak menganggu operasi dari klien lain yang pada saat bersamaan mengakses atau mengubah file yang sama.
  1. Replikasi file
Beberapa file service mendukung penuh replikasi, tetapi kebanyakan mendukung caching file atau portion file secara lokal, bentuk replikasi yang terbatas.
  1. Ke‐heterogen‐an sistem operasi dan hardware
Antarmuka service sebaiknya didefinisikan sehingga software klien dan server dapat diimplementasikan untuk sistem operasi dan komputer yang berbeda.
  1. Toleransi kesalahan
Server bisa menjadi stateless, sehingga dapat di‐restart dan service di‐restore kembali setelah mengalami failure tanpa perlu me‐recover state sebelumnya.
  1. Konsistensi
Ketika file‐file direplikasi atau di‐cache pada site yang berbeda, ada delay yang tak bisa dihindari pada propagasi modifikasi dari satu site ke set lain yang membawa copy, dan ini bisa menghasilkan beberapa deviasi dari one‐copy semantic.
  1. Keamanan
Secara virtual, semua sistem file menyediakan mekanisme kontrol akses berdasarkan kegunaan dari daftar kontrol akses.
  1. Efisiensi
File service terdistribusi sebaiknya menawarkan fasilitas yang paling tidak, sama bagusnya dengan yang ditemukan pada sistem file konvensional, dan sebaiknya mendapat level performance yang dapat diperhitungkan.

Sumber :

Jumat, 08 April 2016

Distributed Computation Dalam Cloud Computing dan Map Reduce dan NoSQL

Distributed Computation Dalam Cloud Computing
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.
Bidang ilmu komputer yang berkaitan dengan sistem terdistribusi disebut komputasi terdistribusi. Sebuah sistem terdistribusi terdiri dari lebih dari satu komputer self-directed berkomunikasi melalui jaringan. Komputer-komputer ini menggunakan memori lokal mereka sendiri. Semua komputer dalam sistem terdistribusi berbicara satu sama lain untuk mencapai tujuan bersama tertentu. Atau, pengguna yang berbeda pada setiap komputer mungkin memiliki kebutuhan individu yang berbeda dan sistem terdistribusi akan melakukan koordinasi sumber daya bersama (atau bantuan berkomunikasi dengan node lain) untuk mencapai tugas-tugas masing-masing. Node berkomunikasi menggunakan message passing. Komputasi terdistribusi juga dapat diidentifikasi sebagai menggunakan sistem terdistribusi untuk memecahkan masalah besar tunggal dengan melanggar itu dengan tugas, masing-masing yang dihitung masing-masing komputer dari sistem terdistribusi. Biasanya, mekanisme toleransi berada di tempat untuk mengatasi kegagalan komputer individu. Struktur (topologi, delay dan kardinalitas) dari sistem ini tidak dikenal di muka dan itu bersifat dinamis. Komputer individu tidak harus tahu segala sesuatu tentang seluruh sistem atau masukan lengkap (untuk masalah yang akan dipecahkan).
Secara sederhana, distributed computing dapat diartikan sebagai suatu teknologi yang dapat memecahkan suatu masalah besar ke dalam proses-proses kecil ke banyak komputer untuk kemudian proses kecil itu dipecahkan secara simultan dan apabila sudah didapatkan solusi-solusi kecil maka disatukan kembali dalam satu solusi yang besar dan terintegrasi. Dari tujuannya, distributed computing menghubungkan banyak user dan resource yang bekerjasama memecahkan permasalahan dalam sistem yang terbuka, transparan dan memiliki skalabilitas yang tinggi. Distributed computing mengacu pada penggunaan sistem terdistribusi untuk memecahkan masalah komputasi. Dalam distributed computing, masalah dibagi menjadi banyak tugas, masing-masing yang diselesaikan oleh satu komputer. Komputer yang saling berinteraksi untuk mencapai tujuan bersama. Sebuah sistem terdistribusi terdiri dari beberapa komputer otonom yang berkomunikasi melalui jaringan komputer.
Sumber : http://roadtotrinity.blogspot.co.id/2015/10/distribusi-computation-dalam-cloud.html

http://randyap14.blogspot.co.id/2015/10/distributed-computation-dalam-cloud.html



Map Reduce dan NoSQL.
MapReduce adalah model pemrogramana rilisan Google yang ditujukan untuk memproses data berukuran raksasa secara terdistribusi dan parallel dalam cluster yang terdiri atas ribuan komputer. Dalam memproses data, MapReduce dibagi menjadi 2 proses utama, yaitu Map dan Reduce. Proses Map bertugas untuk mengumpulkan informasi dari potongan-potongan data yang terditribusi dalam tiap komputer dalam cluster (kelompok komputer yang saling terhubung). Hasilnya deserahkan kepada proses Reduce untuk diproses lebih lanjut. Hasil proses Reduce merupakan hasil akhir yang dikirim ke pengguna.
Berikut daftar produk open source mengenai Map Reduce :
  1. Apache Hadoop
  2. Pig
  3. Cascading
  4. Microsoft Dryad
  5. IBM MapReduce Tool for Eclipse
  6. Skynet
  7. CouchDB
NoSQL adalah tipe database yang sangat jauh berbeda dengan konsep RDBMS ataupun ODBMS. Perbedaan utamanya sendiri yaitu karena tidak mengenal istilah relation dan tidak menggunakan konsep schema. Dalam NoSQL, setiap tabel berdiri sendiri tanpa tergantung dengan tabel lainnya. NoSQL Database adalah sebuah database yang bertipe NoSQL, yaitu database ini tidak mengenal istilah relational dan tidak menggunakan konsep schema. Contoh dari NoSQL Database salah satunya adalah MongoDB.
Berlawanan dengan kesalahpahaman yang disebabkan oleh namanya, NoSQL tidak melarangbahasa query terstruktur (SQL) Meskipun benar bahwa beberapa sistem NoSQL sepenuhnya non-relasional, yang lain hanya menghindari fungsi relasional dipilih seperti skema tabel tetap dan bergabung dengan operasi. Sebagai contoh, daripada menggunakan tabel, database NoSQL mungkin mengatur data menjadi objek, kunci / nilai berpasangan atau tupel.
Contoh aplikasi NoSQL
-          MongoDB
Description: logo_10gen_mongodb1
MongoDB merupakan basis data yang paling populer diantara basis data NoSQL lainnya. Hal ini dikarenakan pemasangan maupun penggunaan mongoDB tidaklah sulit atau merepotkan penggunanya. Selain itu mongoDB juga merupakan salah satu basis data yang open source sehingga pengembangan mongoDB sendiri cukup pesat karena setiap orang bisa berpartisipasi untuk mengembangkannya.
MongoDB merupakan basis data NoSQL yang document based. Ia menyimpan data-datanya dalam suatu dokumen JSON yang disebut BSON (Binary JSON).
-          CouchDB
Description: couchdb
Apache CouchDB, biasa disebut dengan CouchDB saja, merupakan basis data NoSQL yang dikembangkan oleh Apache. CouchDB lebih dulu muncul jauh sebelum mongoDB yaitu pada tahun 2005. CouchDB tidak menyimpan datanya dalam tabel melainkan dalam dokumen seperti halnya mongoDB.
-          Cassandra
Description: cassandra logo
Cassandra merupakan sebuah sistem penyimpanan data terdistribusi untuk menangani jumlah data yang sangat besar dan terstruktur. Cassandra juga dikembangkan Apache, pengembang yang sama untuk basis data CouchDB.
https://dyaherwiyanti.wordpress.com/2016/03/28/map-reduce-dan-nosql-not-only-sql/

Pengantar Quantum Computational

A.    PENDAHULUAN
Komputer kuantum adalah salah satu komputer yang belum sama sekali ada di dunia ini. Karena ini merupakan komputer yang sangat mustahil di ciptakan. Tapi mungkin saja ini bisa tercipta. Jika dikatakan, komputer kuantum hanya butuh waktu 20 menit untuk mengerjakan sebuah proses yang butuh waktu 1025 tahun pada komputer saat ini, kita tentu akan tercengang. Hal inilah yang membuat para ilmuwan begitu tertarik untuk mengembangkan kemungkinan terbentuknya komputer kuantum. Meskipun hingga saat ini belum tercipta sebuah komputer kuantum yang dibayangkan oleh para ilmuwan, kemajuan ke arah sana terus berlangsung. Bahkan yang menarik, ternyata perkembangan komputer kuantum juga mengikuti apa yang dikatakan oleh Gordan Moore sang Genius IBM “Kemampuan Prosesor akan meningkat dua kali lipat dalam jangka waktu 18 bulan”. Jika hal ini benar, para ilmuwan akan dapat membangun sebuah komputer kuantum hanya dalam waktu lima tahun ke depan. Pengertian sederhana dari computer kuantum adalah jenis chip processor terbaru yang diciptakan berdasar perkembangan mutakhir dari ilmu fisika (dan matematika) quantum.

 Sumber : https://zarapintar.wordpress.com/2015/06/04/pengantar-quantum-computation/
B.      Entanglement
Setelah sedikit memahami apa itu quantum computation dan quantum  computer kita akan memasuki pembahasan dari Entanglement. Entanglement sendiri masih bagian dari Quantum Computation. Entanglement adalah suatu teori mekanika quantum yang menggambarkan seberapa cepat dan betapa kuatnya keterhubungan partikel-partikel pada Quantum computer yang dimana jika suatu partikel diperlakukan "A" maka akan memberikan dampak "A" juga ke partikel lainnya.

       Entanglement memungkinkan informasi kuantum tersebar dalam puluhan ribu kilometer, dan hanya dibatasi oleh seberapa cepat dan seberapa banyak pasangan entanglement dapat bekerja dalam ruang. Dari sumber yang saya dapatkan dari internet : [Quantum entanglement]  merupakan fenomena yang menghubungkan dua partikel sedemikian rupa sehingga perubahan yang terjadi pada satu partikel seketika itu juga tercermin dalam partikel lainnya, meski mungkin secara fisik diantara mereka terpisah beberapa tahun cahaya.
Sumber:http://cichaputri.blogspot.co.id/2015/06/pengantar-quantum-computation.html

C.     Pengoperasian Data Qubit
Qubit merupakan kuantum bit , mitra dalam komputasi kuantum dengan digit biner atau bit dari komputasi klasik. Sama seperti sedikit adalah unit dasar informasi dalam komputer klasik, qubit adalah unit dasar informasi dalam komputer kuantum . Dalam komputer kuantum, sejumlah partikel elemental seperti elektron atau foton dapat digunakan (dalam praktek, keberhasilan juga telah dicapai dengan ion), baik dengan biaya mereka atau polarisasi bertindak sebagai representasi dari 0 dan / atau 1. Setiap partikel-partikel ini dikenal sebagai qubit, sifat dan perilaku partikel-partikel ini (seperti yang diungkapkan dalam teori kuantum ) membentuk dasar dari komputasi kuantum. Dua aspek yang paling relevan fisika kuantum adalah prinsip superposisi dan Entanglement Superposisi, pikirkan qubit sebagai elektron dalam medan magnet. Spin elektron mungkin baik sejalan dengan bidang, yang dikenal sebagai spin-up, atau sebaliknya ke lapangan, yang dikenal sebagai keadaan spin-down. Mengubah spin elektron dari satu keadaan ke keadaan lain dicapai dengan menggunakan pulsa energi, seperti dari Laser - katakanlah kita menggunakan 1 unit energi laser. Tapi bagaimana kalau kita hanya menggunakan setengah unit energi laser dan benar-benar mengisolasi partikel dari segala pengaruh eksternal? Menurut hukum kuantum, partikel kemudian memasuki superposisi negara, di mana ia berperilaku seolah-olah itu di kedua negara secara bersamaan. Setiap qubit dimanfaatkan bisa mengambil superposisi dari kedua 0 dan 1. Dengan demikian, jumlah perhitungan bahwa komputer kuantum dapat melakukan adalah 2^n, dimana n adalah jumlah qubit yang digunakan.

D.    Quantum Gates
Quantum Logic Gates, Prosedur berikut menunjukkan bagaimana cara untuk membuat sirkuit reversibel yang mensimulasikan dan sirkuit ireversibel sementara untuk membuat penghematan yang besar dalam jumlah ancillae yang digunakan.
Setiap perhitungan klasik dapat dipecah menjadi urutan klasik gerbang logika yang bertindak hanya pada bit klasik pada satu waktu, sehingga juga bisa setiap kuantum perhitungan dapat dipecah menjadi urutan gerbang logika kuantum yang bekerja pada hanya beberapa qubit pada suatu waktu. Perbedaan utama adalah bahwa gerbang logika klasik memanipulasi nilai bit klasik, 0 atau 1, gerbang kuantum dapat sewenang-wenang memanipulasi nilai kuantum multi-partite termasuk superposisi dari komputasi dasar yang juga dilibatkan. Jadi gerbang logika kuantum perhitungannya jauh lebih bervariasi daripada gerbang logika perhitungan klasik.
E.     Algoritma Shor
Algoritma Shor adalah contoh lanjutan paradigma dasar (berapa banyak waktu komputasi diperlukan untuk menemukan faktor bilangan bulat n-bit?), tapi algoritma ini tampak terisolir dari kebanyakan temuan lain ilmu informasi quantum. Sekilas, itu cuma seperti trik pemrograman cerdik dengan signifikansi fundamental yang kecil. Penampilan tersebut menipu; para periset telah menunjukkan bahwa algoritma Shor bisa ditafsirkan sebagai contoh prosedur untuk menetapkan level energi sistem quantum, sebuah proses yang fundamental. Seiring waktu berjalan dan kita mengisi lebih banyak pada peta, semestinya kian mudah memahami prinsip-prinsip yang mendasari algortima Shor dan algoritma quantum lainnya .
Dengan sistem logika yang baru, para ilmuwan harus memikirkan sebuah algoritma yang berbeda untuk memproses informasi. Inilah yang sebenarnya merupakan inti dari komputer kuantum. Beberapa algoritma telah dikembangkan dan yang di antaranya telah berhasil ditemukan adalah algoritma Shor yang ditemukan oleh Peter Shor pada tahun 1995. Lewat algoritma Shor ini, sebuah komputer kuantum dapat memecahkan sebuah kode rahasia yang saat ini secara umum digunakan untuk mengamankan pengiriman data. Kode ini disebut kode RSA. 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.


Pengantar Komputasi Cloud


A.    Pendahuluan
Definisi cloud computing (komputasi awan) merupakan gabungan pemanfaatan teknologi komputer (komputasi) dalam suatu jaringan dengan pengembangan berbasis internet (awan) yang mempunyai fungsi untuk menjalankan program atau aplikasi melalui komputer – komputer yang terkoneksi pada waktu yang sama, tetapi tak semua yang terkonekasi melalui internet menggunakan cloud computing.
Teknologi komputer berbasis sistem Cloud ini merupakan sebuah teknologi yang menjadikan internet sebagai pusat server untuk mengelola data dan juga aplikasi pengguna. Teknologi ini mengizinkan para pengguna untuk menjalankan program tanpa instalasi dan mengizinkan pengguna untuk mengakses data pribadi mereka melalui komputer dengan akses internet.
Manfaat Cloud Computing Serta Penerapan Dalam Kehidupan Sehari – hari

1.    Semua Data Tersimpan di Server Secara Terpusat

2.    Keamanan Data

3.    Fleksibilitas dan Skalabilitas yang Tinggi

4.    Investasi Jangka Panjang

 

Cara Kerja Sistem Cloud Computing

Sistem Cloud bekerja menggunakan internet sebagai server dalam mengolah data. Sistem ini memungkinkan pengguna untuk login ke internet yang tersambung ke program untuk menjalankan aplikasi yang dibutuhkan tanpa melakukan instalasi. Infrastruktur seperti media penyimpanan data dan juga instruksi/perintah dari pengguna disimpan secara virtual melalui jaringan internet kemudian perintah – perintah tersebut dilanjutkan ke server aplikasi. Setelah perintah diterima di server aplikasi kemudian data diproses dan pada proses final pengguna akan disajikan dengan halaman yang telah diperbaharui sesuai dengan instruksi yang diterima sebelumnya sehingga konsumen dapat merasakan manfaatnya.

Contohnya lewat penggunaan email seperti Yahoo ataupun Gmail. Data di beberapa server diintegrasikan secara global tanpa harus mendownload software untuk menggunakannya. Pengguna hanya memerlukan koneksi internet dan semua data dikelola langsung oleh Yahoo dan juga Google. Software dan juga memori atas data pengguna tidak berada di komputer tetapi terintegrasi secara langsung melalui sistem Cloud menggunakan komputer yang terhubung ke internet.



B.     PENGANTAR 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. Grid Computing erat kaitannya dengan metode komputasi paralel. Metode ini dapat membagi kerja komputer menjadi beberapa bagian sehingga, tidak memberatkan kerja komputer itu sendiri dan mempercepat kerja komputer.
Konsep Grid Computing
Beberapa konsep dasar dari grid computing :
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. 

Prinsip Kerja Grid Computing
Dua prinsip kerja utama grid computing yang membedakannya dari arsitektur komputasi yaitu virtualisasi dan provisioning.
a. Virtualisasi
Setiap sumberdaya (semisal komputer, disk, komponen aplikasi dan sumber informasi) dikumpulkan bersama-sama menurut jenisnya, lalu disediakan bagi konsumen (semisal orang atau program software). Virtualisasi berarti meniadakan koneksi secara fisik antara penyedia dan konsumen sumberdaya, dan menyiapkan sumberdaya untuk memenuhi kebutuhan tanpa konsumen mengetahui bagaimana permintaannya bisa terlayani. 

b. Provisioning
Ketika konsumen meminta sumberdaya melalui layer virtualisasi, sumberdaya tertentu di belakang layer didefinisikan untuk memenuhi permintaan tersebut, dan kemudian dialokasikan ke konsumen. Provisioning sebagai bagian dari grid computing berarti bahwa system menentukan bagaimana cara memenuhi kebutuhan konsumen seiring dengan mengoptimasi jalannya sistem secara keseluruhan.

Sumber : http://abdullathiif.blogspot.co.id/2016/03/pengantar-komputasi-grid.html
C.    Virtualisasi
Virtualisasi adalah membuat sebuah simulasi dari perangkat keras, sistem operasi, jaringan maupun yang lainnya. Di bidang teknologi informasi, virtualisasi digunakan sebagai sarana untuk improvisasi skalabilitas dari perangkat keras yang ada.
Dengan virtualisasi, beberapa sistem operasi dapat berjalan secara bersamaan pada satu buah komputer. Hal ini tentunya dapat mengurangi biaya yang harus dikeluarkan oleh sebuah perusahaan. Di masa akan datang, teknologi virtualisasi akan banyak digunakan baik oleh perusahaan yang bergerak dibidang teknologi informasi maupun yang tidak murni bergerak di bidang teknologi informasi namun menggunakan teknologi informasi sebagai sarana untuk memajukan usahanya.
Menurut Alan Murphy dalam papernya Virtualization Defined – Eight Different Ways, menyebutkan setidaknya terdapat delapan istilah dalam penerapan virtualisasi. Diantaranya adalah operating system virtualization, application server virtualization, application virtualization, management virtualization, network virtualization, hardware virtualization, storage virtualization dan service virtualization.
Dalam hardware virtualization, perangkat lunak bekerja membentuk sebuah virtual machine yang bertindak seolah-olah seperti sebuah komputer asli dengan sebuah sistem operasi terinstall di dalamnya. Salah contoh yang mudah misalkan terdapat satu buah komputer yang telah terinstall GNU/Linux Linux Mint. Kemudian dengan menggunakan perangkat lunak virtualisasi misalnya Virtualbox, kita dapat menginstall sistem operasi lain sebagai contoh Windows XP atau FreeBSD.Kaciak: Pengertian Virtualisasi: http://dosen.gufron.com/artikel/pengertian-virtualisasi/8/
Perangkat lunak yang digunakan untuk menciptakan virtual machine pada host machine biasa disebut sebagaihypervisor atau Virtual Machine Monitor (VMM).

Contoh aplikasi virtuallisasi
-      VirtualBox 
VirtualBox memiliki berkat berikut setia kepada kombinasi bebas-as-harga tag bir-,-platform dukungan lintas, dan sejumlah besar fitur yang membuat berjalan dan pemeliharaan mesin virtual angin. 
-      VMware 
VMware untuk pengguna desktop datang dalam dua rasa utama: VMware Player dan VMware Workstation. VMware Player adalah solusi gratis ditujukan untuk pengguna biasa yang perlu untuk membuat dan menjalankan mesin virtual tetapi tidak perlu tingkat perusahaan solusi canggih. 
-      QEMU
QEMU adalah alat virtualisasi yang kuat untuk mesin Linux dibangun di atas belakang sistem KVM (Kernel-based Virtual Machine). QEMU mengeksekusi kode tamu langsung pada perangkat keras host, bisa meniru mesin-mesin di seluruh jenis perangkat keras dengan terjemahan dinamis, dan mendukung auto-ukuran disk virtual. 

Selasa, 22 Maret 2016

OSI Model


         Model referensi OSI (Open System Interconnection) merupakan model standarisasi protokol international yang dibuat oleh ISO (International Standard Organization). Model OSI terdiri dari tujuh layer yaitu :
1. Phisycal layer
Merupakan layer kesatu atau layer bawah pada model referensi OSI layer. Pada layer ini data diterima dari data link layer berupa Frame yang dan diubah menjadi Bitstream yang akan dikirim ketujuan berupa sinyal melalui media komunikasi. Pada penerima, layer ini akan mengubah sinyal dari pengirim menjadi Bite dan sebelum dikirim ke data link layer Bite diubah menjadi Byte.
2. Data Link layer
Merupakan layer kedua pada model referensi OSI layer. Pada layer ini data diterima dari network layer berupa Paket yang kemudian diencapsulasi menjadi Frame, dengan memberikan layer-2 header. Dan kemudian dikirim ke phisycal layer untuk diteruskan ke penerima. Pada penerima, layer ini mengubah Byte menjadi Frame, frame header akan dilepas (dekapsulasi), kemudian dikirim ke network layer menjadi Paket.
3. Network layer
Merupakan layer ketiga pada model referensi OSI layer. Layer ini berfungsi sebagai mengantarkan paket ketujuan, yang dikenal dengan Routing.Layer ini mengontrol paket yang akan dikirim ke data link layer dengan cara mencari route yang paling murah dan cepat.
4. Transport layer
Merupakan layer keempat pada model referensi OSI layer. Layer ini mampu memberikan layanan berupa Multiduplexing dan Demultiduplexing, sehingga pada layer ini memungkinkan sebuah host dapat melayani lebih dari satu proses.
5. Session layer
Merupakan layer kelima pada model referensi OSI layer. Lapisan ini membuka, merawat, mengendalikan dan melakukan hubungan antar simpul. Pada layer ini data di transfer dengan jernih dan terkait antara satu dengan yang lain, tetapi kualitas data tersebut akan mengalami delay, through-put. Hal tersebut dimaksudkan untuk menjaga mutu dari fungsi-funsi transport.
6. Presentation layer
Merupakan layer keenam pada model referensi OSI layer. Presentation layer berhubungan dengan syntax data yang dipertukarkan diantara aplikasi, dengan tujuan untuk mengatasi perbedaan format penyajian data.
7. Application layer
Merupakan layer ketujuh atau layer atas pada model referensi OSI layer. Layer ini merupakan layer aplikasi dimana aplikasi pemakai diletakkan, dan layer ini bekerja sama dengan Presentation Layer untuk diterapkan pada sistem komunikasi data.