Senin, 09 Mei 2016

Parallel Computation (Bagian 2)

D.    Pengantar Thread Programming
Dalam pemrograman computer, thread adalah sebuah alur kontrol dari sebuah proses. Suatu proses yang multithreaded mengandung beberapa perbedaan alur kontrol dengan ruang alamat yang sama. Keuntungan dari multithreaded meliputi peningkatan respon dari user, pembagian sumber daya proses, ekonomis, dan kemampuan untuk mengambil keuntungan dari arsitektur multiprosesor.

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, Open MP
MPI (Message Passing Interface) yaitu suatu standard dan message passing interface partabel system yang didesain oleh grup penelitian untuk mengembangkan fungsi dan macam-macam dari computer parallel.

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
Sebuah GPU (Graphical Processing Unit) pada 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 /sebagaimana kenyataan sesungguhnya, 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 (Compute Unified Device Architecture) merupakan platform parallel computing dan model pemrograman yang telah dibuat oleh NVIDIA dan diimplementasikan oleh GPU(Graphic Processing Unit). CUDA memberikan akses pengembangan untuk kumpulan visual instruction dan ingatan dari parallel computasional elemen CUDA GPU.



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 GTX


Keuntungan dengan CUDA sebenarnya tidak luput dari teknologi aplikasi yang ada. CUDA akan mempercepat proses aplikasi tertentu, tetapi tidak semua aplikasi yang ada akan lebih cepat walaupun sudah mengunakan fitur CUDA. Hal ini tergantung seberapa cepat procesor yang digunakan, dan seberapa kuat sebuah GPU yang dipakai. Dan bagian terpenting adalah aplikasi apa yang memang memanfaatkan penuh kemampuan GPU dengan teknologi CUDA. Kedepan seperti pengembang software Adobe akan ikut memanfaatkan fitur CUDA pada aplikasi mereka. Jawaban akhir adalah, untuk memanfaatkan CUDA kembali melihat aplikasi software yang ada. Apakah software yang ada memang mampu memanfaatkan CUDA dengan proses melalui GPU secara penuh. Hal tersebut akan berguna untuk mempercepat selesainya proses pada sebuah aplikasi. Dengan kecepatan proses GPU, aplikasi akan jauh lebih cepat. Khususnya teknologi ilmu pengetahuan dengan ramalan cuaca, simulator pertambangan atau perhitungan yang rumit dibidang keuangan. Sedangkan aplikasi umum sepertinya masih harus menunggu.

Sumber:

Parallel Computation (bagian 1)

A.    Parallelism Concept


Parallelism Concept adalah suatu bentuk komputasi dimana instruksi-instruksi dijalankan secara berkesinambungan. Masalah yang besar dapat dibagi menjadi beberapa masalah yang lebih kecil(submasalah), untuk kemudian diselesaikan secara serempak. Jadi intinya, komputasi parallel itu bisa banyak memproses dengan banyak komputer secara bersamaan dan diabagi menjadi beberapa bagian kecil untuk memecahkan masalah

Analogi yang paling gampang adalah, bila anda dapat merebus air sambil memotong-motong bawang saat anda akan memasak, waktu yang anda butuhkan akan lebih sedikit dibandingkan bila anda mengerjakan hal tersebut secara berurutan ( serial ). Atau waktu yang anda butuhkan memotong bawang akan lebih sedikit jika anda kerjakan berdua. Performa dalam pemrograman paralel diukur dari berapa banyak peningkatan kecepatan ( speed up ) yang diperoleh dalam menggunakan tehnik paralel. Secara informal, bila anda memotong bawang sendirian membutuhkan waktu 1 jam dan dengan bantuan teman, berdua anda bisa melakukannya dalam 1/2 jam maka anda memperoleh peningkatan kecepatan sebanyak 2 kali.

B.    Distributed Processing


Gambar diatas merupakan contoh dari sebuah komputasi paralel, dimana pada gambar diatas terdapat sebuah masalah, dari masalah tersebut dibagi menjadi beberapa bagian agar sebuah masalah dapat dengan cepat diselesaikan dengan waktu yang cepat dan efisen
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.

C.    ARCHITECTURAL PARALLEL COMPUTER
1.     SISD (Single Instruction Single Data Stream)


SISD merupakan prosesor tunggal, yang bukan paralel. Beberapa contoh komputer yang menggunakan model SISD adalah UNIVAC1, IBM 360, CDC 7600, Cray 1 dan PDP 1.

2.     SIMD (Single Instruction Multiple Data Stream)


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

3.     MISD ( Multiple Instruction Single Data Stream )


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.

4.     MIMD (Multiple Instruction Multiple Data Stream)


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.









Selasa, 19 April 2016

File Service Terdistribusiy

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

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

2.     Perkembangan baru
·         Persistent object stores (storage of objects)

3.     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 diload paling berat dalam sebuah intranet, sehingga fungsionalitas dan performancenya sangat penting.

·       Transparansi akses
·       Transparansi lokasi
·       Transparansi mobilitas
·       Transparansi performance
·       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 direstart dan service direstore kembali setelah mengalami failure tanpa perlu merecover state sebelumnya.

f.       Konsistensi
Ketika filefile direplikasi atau dicache pada site yang berbeda, ada delay yang tak bias dihindari pada propagasi modifikasi dari satu site ke set lain yang membawa copy, dan ini bisa menghasilkan beberapa deviasi dari onecopy 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.

Opsi Perancangan Layanan File

1.    Stateful
· Server menyimpan informasi tentang file yang open, posisi sekarang(current position)       dan   file locks open (dibuka) sebelum access dan kemudian ditutup
·       Performa yang lebih baik – pesan yang lebih pendek, dimungkinkan untuk read-ahead
·       server failure
·       kehilangan state
·       client failure - tables fill up
·       menyediakan file locks

2.    Stateless
·       Server tidak menyimpan state informasi
·       file operations idempotent, harus mengandung semua yangdiperlukan (longer message)
·       perancangan file server yang lebih simpel
·       dapat dengan mudah di-recovery apabila client ataupun server crash
·       locking membutuhkan extra lock server untuk mempertahankan

File Service Architecture

Pembagian tanggung jawab antar modul didefinisikan sebagai berikut ini :
·       Layanan file flat
Layanan file flat berkonsentrasi pada pengimplementasian operasi dari konten suatu file.

·       Layanan direktori
Layanan direktori menyediakan pemetaan antara nama teks untuk file dan UFIDnya.

·       Modul klien
Modul klien berjalan pada tiap komputer klien, mengintegrasi dan mengextend operasi dari layanan file flat dan layanan direktori dibawah antarmuka pemrograman aplikasi tunggal yang bisa digunakan oleh program tingkat pengguna di komputer klien.

·       Antarmuka layanan file flat
Merupakan antarmuka RPC yang digunakan oleh modul klien. Tidak digunakan secara langsung oleh program tingkat pengguna.

Sumber :
·       http://fandystress.blogspot.co.id/2012/04/komponen-file-service.html
Komponen File Service

Komponen-komponen file service terdiri dari :

1.     File Service
Pengoperasian dari masing-masing file atau File service adalah suatu perincian atau pelayanan dari file system yang ditawarkan pada komputer client. Suatu file server adalah implementasi dari file service dan berjalan pada satu atau lebih mesin. File itu sendiri berisi dari nama, data dan atribut file seperti kepemilikan file, ukuran, waktu pembuatan file dan hak akses file.

2.     Directory Service
Management atau pengaturan direktori. Sebuah service yang digunakan untuk menghubungkan semua resource yang ada pada jaringan dan berperan semacam sebuah buku telpon raksasa. Directory service pada NT 4 mempunyai peran penting dalam mengatur proses logon dan administrasi security secara terpusat.

Pada generasi DS yang lebih lanjut, Microsoft memperkenalkan ADS yang disertakan bersama OS Windows 2000 server. ADS generasi kedua ini mempunyai kemampuan yang jauh lebih besar daripada pendahulunya. Selain itu Microsoft juga mempermudah administrasi dari ADS dengan menggunakan system hierarchical view dan multimaster.

3.     Naming Service
Suatu name service dapat menyimpan kumpulan satu atau lebih konteks penamaan yaitu sehimpunan keterkaitan antara nama dan atribut objek, seperti user, komputer, services, dan remote object.

a.     Location independence :
File dapat dipindahkan tanpa penggantian nama. Hal-hal yang umum untuk penamaan file dan direktori :
1.     Mesin + nama path e.g / machine / path atau machine : path
2.     Mounting File sistem secara remote kedalam hirarki local file
3.     Single name space yang sama pada semua mesin

b.     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. NFS merupakan protokol yang sangat mendukung dalam pengaplikasian suatu file system yang terdistribusi.


Sumber :

Interface Service
Interface service merupakan metode standart komunikasi yang merupakan titik point untuk mengakses fungsionalitas yang diarahkan oleh aplikasi. Misalkan pada sebuah jaringan terdapat dua buah client, kemudian pada client 1 akan mengirimkan file kepada client 2. Untuk itu dibuatlah tampilan atau tools untuk memerintahkan client 1 agar mengirim file ke client 2, hal ini disebut client service.

Sumber :