Parallism Concept and etc
·
Parallism 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.
Tingkat Paralelisme
Berdasarkan tingkat paralelismenya
prosesor paralel dapat dibagi menjadi beberapa tingkat sebagai berikut :
1. Komputer Array :
a. Prosesor array : beberapa prosesor yang
bekerja sama untuk mengolah set instruksi yang sama dan data yang berbeda –
beda atau biasa disebut SIMD (Single Instruction-stream Multiple Data)
b. Prosesor vektor : beberapa prosesor
yang disusun seperti pipeline.
2. Multiprosesor, yaitu sebuah sistem yang
memiliki 2 prosesor atau lebih yang saling berbagi memori.
3. Multikomputer, yaitu sebuah sistem yang
memiliki 2 prosesor atau lebih yang masing-masing prosesor memiliki memori
sendiri.
Jenis-Jenis Pemrosesan Paralel
Pemrosesan paralel dapat dibagi ke dalam
beberapa klasifikasi, sebagai berikut :
1. Berdasarkan simetri penjadwalannya, pemrosesan
parallel dapat dibagi dalam beberapa jenis:
a) Asymmetric Multiprocessing (ASMP)
b) Symmetric Multiprocessing (SMP)
c) ClusteringPoliteknik Telkom Sistem
Komputer
2. Berdasarkan aliran instruksi dan
datanya, pemrosesan parallel dapat dibagi dalam beberapa jenis:
a) SISD (Single Instruction on Single Data
Stream)
b) SIMD (Single Instruction on Multiple
Data Stream)
c) MISD (Multiple Instruction on Single
Data Stream)
d) MIMD (Multiple Instruction on Multiple
Data Stream)
3. Berdasarkan kedekatan antar prosesor,
pemrosesan parallel dapat dibagi dalam beberapa jenis:
a) Multikomputer (Loosely Coupled/ local
memory) dengan memori yang terdistribusi
b) Multiprosesor (Tightly Coupled/ global
memory) dengan memori yang dapat digunakan bersama (shared memory)
·
Distributed Processing
Distributed data processing (DDP) system
merupakan bentuk yang sering digunakan sekarang sebagai perkembangan dari time
sharing system. Bila beberapa sistem komputer yang bebas tersebar yang masing-masing
dapat memproses data sendiri dan dihubungkan dengan jaringan telekomunikasi,
maka istilah time sharing sudah tidak tepat lagi. DDP system dapat
didefinisikan sebagai suatu sistem komputer interaktif yang terpencar secara
geografis dan dihubungkan dengan jalur telekomunikasi dan seitap komputer mampu
memproses data secara mandiri dan mempunyai kemampuan berhubungan dengan
komputer lain dalam suatu sistem.
Contoh Sistem Pengolahan Data
terdistribusi
Internet
·
Jaringan komputer dan aplikasi yang heterogen.
·
Mengimplementasikan protokol internet.
Intranet
·
Jaringan yang teradminitrasi secara lokal.
·
Terhubung ke internet melalui firewall.
·
Menyediakan layanan internet dan eksternal.
Mobile Computing ( Sistem Komunikasi
telepon seluler)
·
Menggunakan frekuensi radio sebagai media transmisi
·
Perangkat dapat bergerak kemanapun asal masih terjangkau dengan
frekuensinya
·
Dapat menghandle/dihububngkan dengan perangkat lain
Sistem Telepon
·
ISDN atau yang biasa disebut jaringan telpon tetap (dengan kabel).
·
PSTN jaringan telepon/telekomunikasi yang semuanya digital.
Network File System (NTFS)
·
WWW
Contoh Impementasi Distributed Data
Processing System
Aplikasi facebook.Com yang biasa anda
gunakan untuk bersosialisai dengan saudara, kawan dan orang di seluruh dunia
melalui internet. Bila kita lihat aplikasi tersebut, database tidak
didistribusikan, tetapi proses sistem dan penggunaan fungsi-fungsi atau feature
pada sistem terpisah-pisah prosesnya tidak satu proses saja dalam satu waktu.
Pada waktu tertentu ada orang yang sedang isi status, dan mungkin di waktu yang
sama ada sedang mencari teman, ada yang mengupload foto dan sebagainya. Tampak disini beberapa proses pada sistem
terdistribusi pada setiap client yang berbeda.
Pada penggunaan aplikasi pembayaran /
transaksi online pada suatu perusahaan, misalnya saja tiket pesawat terbang.
Aplikasi tersebut juga contoh dari aplikasi pengolahan data terdistribusi,
dimana data pembayaran ada tersimpan di database bank, sementara data tiketnya
tersimpan di database server maskapai yang menyediakan aplikasi tiket online
tersebut. Jadi dapat dikatakan bila aplikasi yang digunakan menggunakan
database yang terpisah tidak satu database saja, maka dapat dikatakan itu
adalah aplikasi pengolahan data terdistribusi atau dikenal juga dengan
distributed data processing system.
·
Architectural Parallel Computer
Arsitektur komputer paralel ada beberapa
versi pengertian. Di sini saya akan menjelaskan sedikit tentang arsitektur
komputer menurut Flynn. Sesuai taksonomi Flynn, seorang Designer Processor,
Organisasi Prosesor dibagi menjadi 4 :
- SISD
Single
Instruction – Single Data. Komputer ini memiliki hanya satu prosesor dan satu
instruksi yang dieksekusi secara serial. Komputer ini adalah tipe komputer
konvensional. Beberapa contoh komputer yang menggunakan model SISD adalah
UNIVAC1, IBM 360, CDC 7600, Cray 1 dan PDP 1.
- 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).
- MISD
Multiple
Instructions – Single Data. Teorinya komputer ini memiliki satu prosesor dan
mengeksekusi beberapa instruksi secara paralel. Sampai saat ini belum ada
komputer yang menggunakan model MISD karena sistemnya tidak mudah.
- 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.
Sistem komputer paralel dibedakan dari cara
kerja memorinya menjadi shared memory dan distributed memory. Shared memory
berarti memori tunggal diakses oleh satu atau lebih prosesor untuk menjalankan
instruksi sedangkan distributed memory berarti setiap prosesor memiliki memori
sendiri untuk menjalankan instruksi. Komponen-komponen utama dari arsitektur
komputer paralel cluster PC antara lain:
Prosesor (CPU). Bagian paling penting
dalam sistem, untuk multicore terdapat lebih dari satu core yang mengakses
sebuah memori (shared memory).
Memori. Bagian ini dapat diperinci lagi
menjadi beberapa bagian penyusunnya seperti RAM, cache memory dan memori
eksternal.
Sistem Operasi. Software dasar untuk
menjalankan sistem komputer.
Cluster Middleware. Antarmuka antara
hardware dan software.
Programming Environment dan Software
Tools. Software yang digunakan untuk pemrograman paralel termasuk software
pendukungnya.
User Interface. Software yang menjadi
perantara hardware dengan user.
Aplikasi. Software berisi program
permasalahan yang akan diselesaikan.
Jaringan. Penghubung satu PC (prosesor)
dengan PC yang lain sehingga memungkinkan pemanfaatan sumberdaya secara
simultan.
·
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.
·
Pengantar Message Pasing
Massage Passing merupkan suatu teknik
bagaimana mengatur suatu alur komunikasi messaging terhadap proses pada system.
Message passing dalam ilmu komputer adalah suatu bentuk komunikasi yang
digunakan dalam komputasi paralel , pemrograman-berorientasi objek , dan
komunikasi interprocess . Dalam model ini, proses atau benda dapat mengirim dan
menerima pesan yang terdiri dari nol atau lebih byte, struktur data yang
kompleks, atau bahkan segmen kode ke proses lainnya dan dapat melakukan
sinkronisasi. Objek didistribusikan dan metode sistem remote doa seperti ONC
RPC , CORBA , Java RMI , DCOM , SOAP , . NET Remoting , CTO , QNX Neutrino RTOS
, OpenBinder , D-Bus , Unison RTOS dan serupa pesan lewat sistem.Paradigma
Message passing yaitu :
1.
Banyak contoh dari paradigma sekuensial dipertimbangkan bersama-sama.
2.
Programmer membayangkan beberapa prosesor, masing-masing dengan memori,
dan menulis sebuah program untuk berjalan pada setiap prosesor.
3.
Proses berkomunikasi dengan mengirimkan pesan satu sama lain
·
Open MP
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.
·
Pengantar Pemrograman Cuda
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 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.
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.
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:
http://flashintata.blogspot.co.id/2013/05/parallel-computation.html
http://athiaatlbry84.blogspot.com/2019/06/distributed-processing.html
http://seto.citravision.com/berita-48-parallel-computation–architectural-parallel-computer.html
The International Conference on Dependable Systems and
Networks
Symposium on Principles of Distributed Computing
Journal of Parallel and Distributed Computing
IEEE transactions on Parallel and Distributed Systems
Distributed Computing
Komentar
Posting Komentar