Tugas 4 : Parallel Pomputation, Architecural Parallel Computer, Thread programming, Massage passing, OpenMP, CUDA GPU, Distributed processing
Parallel Computation
Metode pemecahan masalah yang umum
digunakan dalam sebagian besar permasalahan konvensional sederhana hingga
masalah rumit yang dapat dijangkau adalah komputasi serial. Komputasi yang
selama ini dikenal yang dilakukan secara luas adalah komputasi serial ini. Namun
ternyata dengan semakin majunya teknologi terutama dalam hal problem solving,
ditemukanlah sebuah konsep yang dinamakan komputasi paralel yang saat ini telah
banyak digunakan meskipun kita tidak menyadarinya.
Untuk dapat lebih memahami mengenai perbedaan antara komputasi paralel
dan komputasi serial maka sebaiknya mengenali terlebih dahulu mengenai klasifikasi
dari arsitektural komputer yang diajukan oleh Michael J. Flynn pada tahun 1966.
Terdapat empat klasifikasi yang didefinisikan oleh Flynn didasarkan pada jumlah
aliran instruksi bersamaan (atau kontrol) dan aliran data yang tersedia dalam
arsitektur.
- Single Instruction stream, Single Data stream (SISD)SIMD dapat dijelaskan sebagai komputer dengan beberapa elemen pemrosesan yang melakukan operasi yang sama pada beberapa titik data secara bersamaan. Mesin yang menerapkan SIMD telah mengaplikasikan paralelisme pada tingkat data, tetapi tidak secara konkurensi, perhitungan dilakukan secara simultan (paralel), tetapi hanya satu proses (instruksi) tunggal pada suatu saat tertentu. Mesin instruksi tunggal, banyak data (SIMD) memungkinkan aliran instruksi tunggal untuk mengontrol banyak elemen pemrosesan secara berbaris. Setiap prosesor memiliki memori data sendiri sehingga selama setiap langkah instruksi, banyak set data diproses secara bersamaan.
- Single instruction stream, multiple data streams (SIMD)
SIMD dapat dijelaskan sebagai komputer dengan beberapa elemen pemrosesan yang melakukan operasi yang sama pada beberapa titik data secara bersamaan. Mesin yang menerapkan SIMD telah mengaplikasikan paralelisme pada tingkat data, tetapi tidak secara konkurensi, perhitungan dilakukan secara simultan (paralel), tetapi hanya satu proses (instruksi) tunggal pada suatu saat tertentu.
Mesin instruksi tunggal, banyak data (SIMD) memungkinkan aliran instruksi tunggal untuk mengontrol banyak elemen pemrosesan secara berbaris. Setiap prosesor memiliki memori data sendiri sehingga selama setiap langkah instruksi, banyak set data diproses secara bersamaan. - Multiple Instruction streams, single data stream (MISD)
Multiple instruction, single data (MISD) memungkinkan urutan data umum untuk dikirim ke beberapa prosesor yang masing-masing beroperasi pada data dengan instruksi yang berbeda. MISD merupakan jenis arsitektur komputasi paralel di mana banyak unit fungsional melakukan operasi berbeda pada data yang sama. Ini adalah arsitektur yang tidak umum digunakan. Hal ini dikarenakan pada permasalahan yang umum ditemui, menggunakan satu unit pemrosesan pada satu data sudahlah dianggap cukup untuk menyelesaikan masalah tersebut.
Menggunakan beberapa unit pemrosesan pada satu data yang sama, biasanya hanya dilakukan untuk memastikan tidak adanya kesalahan atau membuat kemungkinan terjadinya kesalahan menjadi sekecil mungkin. Sistem ini digunakan sebagai fault tolerance. Sebagai pemahaman mudahnya, terdapat suatu permalahan yang diselesaikan oleh banyak individu, maka bila ditemukan hasil yang mayoritas sama atau bahkan keseluruhannya sama, maka dapat dikatakan penyelesaian tersebut mendekati kepastian. Sistem ini merupakan heterogen beroperasi pada aliran data yang sama dan harus menyetujui hasilnya. Salah satu contohnya adalah komputer kontrol penerbangan Space Shuttle. - Multiple instruction streams, multiple data streams (MIMD)
Multiple instruction, multiple data (MIMD) machines merujuk ke sejumlah prosesor yang menjalankan instruksi berbeda pada aliran data yang berbeda secara bersamaan.
Ini adalah arsitektur pemrosesan paralel paling umum di mana semua jenis aplikasi terdistribusi dapat diprogram. Beberapa prosesor otonom yang bekerja secara paralel pada aliran data independen. Logika aplikasi yang berjalan pada prosesor ini juga bisa sangat berbeda. Semua sistem terdistribusi diakui sebagai arsitektur MIMD.
Secara definisi, komputasi paralel adalah penggunaan dua atau lebih
prosesor (core, komputer) dalam kombinasi untuk memecahkan satu masalah. Berdasarkan
klasifikasi Flynn, maka kategori dari arsitektur yang dapat diterapkan konsep
paralel adalah pada MIMD dan MISD. Sedangkan untuk SISD, merupakan program
sekuensial seutuhnya. Terdapat sebuah pengecualian pada model SIMD, terdapat subset yakni Single instruction,
multiple threads (SIMTmerupakan model
eksekusi yang digunakan dalam komputasi paralel di mana instruksi tunggal,
banyak data (SIMD) dikombinasikan dengan multithreading.
Pada
umumnya ada empat jenis komputasi paralel, yang tersedia dari vendor komputasi
paralel yang memiliki hak dan open source - paralelisme tingkat bit,
paralelisme tingkat instruksi, paralelisme tugas, atau paralelisme tingkat
superword.
- Paralelisme tingkat-bit: meningkatkan ukuran kata prosesor, yang mengurangi jumlah instruksi yang harus dijalankan prosesor untuk melakukan operasi pada variabel yang lebih besar daripada panjang kata.
- Paralelisme tingkat instruksi: pendekatan perangkat keras bekerja berdasarkan paralelisme dinamis, di mana prosesor memutuskan pada saat run-time mana instruksi untuk dieksekusi secara paralel; pendekatan perangkat lunak bekerja berdasarkan paralelisme statis, di mana kompiler memutuskan instruksi mana yang harus dieksekusi secara paralel
- Paralelisme tugas: suatu bentuk paralelisasi kode komputer di beberapa prosesor yang menjalankan beberapa tugas berbeda pada saat yang sama pada data yang sama
- Paralelisme tingkat-kata: suatu teknik vektorisasi yang dapat mengeksploitasi paralelisme kode inline
Untuk dapat
dipahami lebih mudah, maka berikut ini adalah karakteristik dari komputasi
serial dan komputasi paralel:
Komputasi
Seri:
-Masalah
dipecah menjadi serangkaian instruksi yang terpisah
-Instruksi dieksekusi secara berurutan satu
demi satu
-Dieksekusi
pada satu prosesor
-Hanya satu
instruksi yang dapat dijalankan kapan saja
Komputasi
Paralel:
-Masalah
dipecah menjadi bagian-bagian terpisah yang dapat dipecahkan secara bersamaan
-Setiap
bagian selanjutnya dipecah menjadi serangkaian instruksi
-Instruksi
dari setiap bagian dijalankan secara bersamaan pada prosesor yang berbeda
-Terdapat mekanisme kontrol / koordinasi keseluruhan
yang diterapkanArchitecural parallel computer
Pemrosesan paralel telah dikembangkan sebagai teknologi efektif di
komputer modern untuk memenuhi permintaan akan kinerja yang lebih tinggi, biaya
lebih rendah, dan hasil akurat dalam aplikasi kehidupan nyata. Suatu event yang
terjadi secara concurent adalah hal yang umum di komputer saat ini karena
praktik multiprogramming, multiprocessing, atau multicomputing.
Pada paralel computing, salah satu hal yangmenjadi fokus adalah memory.
Karena terdapat sebuah mekanisme untuk melakukan suatu task secara bersama,
maka bagaimana pemetaan dari pembagian memory yang digunakan perlu
diperhatikan. Terdapat 3 buah model arsitektur memory yang diterapkan dalam
parallel computing.
- Shared MemoryShared Memory Parallel Computer sangat bervariasi, tetapi umumnya memiliki kemampuan yang sama untuk semua prosesor untuk mengakses semua memori sebagai ruang alamat global. Beberapa prosesor dapat beroperasi secara independen tetapi berbagi sumber daya memori yang sama. Perubahan pada lokasi memori yang dipengaruhi oleh satu prosesor dapat dilihat oleh semua prosesor lainnya. Secara historis, mesin memori bersama telah diklasifikasikan sebagai UMA dan NUMA, berdasarkan waktu akses memori.· Uniform Memory Access (UMA)Paling umum diwakili hari ini oleh mesin Symmetric Multiprocessor (SMP)Menggunakan prosesor identikAkses yang sama dan waktu akses ke memoriKadang-kadang disebut CC-UMA - Cache Coherent UMA. Cache koheren berarti jika satu prosesor mendukung lokasi dalam memori bersama, semua prosesor lain tahu tentang dukungan tersebut. Koherensi cache berhasil pada tingkat perangkat keras.· Uniform Memory Access (UMA)Seringkali dibuat dengan menghubungkan secara fisik dua atau lebih SMPSatu SMP dapat secara langsung mengakses memori SMP lainTidak semua prosesor memiliki waktu akses yang sama untuk semua memoriAkses memori lintas link lebih lambatJika koherensi cache dipertahankan, maka juga dapat disebut CC-NUMA - Cache Coherent NUMABeberapa keuntungan menggunakan shared memory adalah ruang alamat global memberikan perspektif pemrograman yang user-friendly memori, share data antar tugas berlangsung cepat dan seragam karena kedekatan memori dengan CPU.Kerugian utama adalah kurangnya skalabilitas antara memori dan CPU. Dengan menambahkan lebih banyak CPU dapat secara geometris meningkatkan lalu lintas pada jalur memori-CPU bersama, dan untuk sistem cache yang koheren, secara geometris meningkatkan lalu lintas yang terkait dengan manajemen cache / memori. Selain itu, programmer juga bertanggung jawab untuk dapat memastikan bahwa sinkrosinasi pada memori global yang dilakukan telah tepat
- Distributed MemorySeperti halnya dengan sistem shared memory, sistem distributed memory sangat bervariasi tetapi berbagi karakteristik umum, yakni sistem memori terdistribusi memerlukan jaringan komunikasi untuk menghubungkan memori antar-prosesor. Prosesor memiliki memori lokal mereka sendiri. Alamat memori dalam satu prosesor tidak memetakan ke prosesor lain, sehingga tidak ada konsep ruang alamat global di semua prosesor.
Karena setiap prosesor memiliki memori lokal sendiri, ia beroperasi secara independen. Perubahan yang dilakukan pada memori lokal tidak berpengaruh pada memori prosesor lain. Karenanya, konsep koherensi cache tidak berlaku. Ketika prosesor membutuhkan akses ke data dalam prosesor lain, biasanya tugas programmer untuk secara eksplisit menentukan bagaimana dan kapan data dikomunikasikan. Sinkronisasi antar tugas juga merupakan tanggung jawab programmer.Kelebihan dari penggunaan distributed memory adalah :a. Memori dapat diskalakan dengan jumlah prosesor.
b. Jumlah prosesor dan ukuran memori bertambah secara proporsional.
c. Setiap prosesor dapat dengan cepat mengakses memorinya sendiri tanpa gangguan dan tanpa mengeluarkan biaya overhead dengan mencoba mempertahankan koherensi cache global.
d. Efektivitas biaya: dapat menggunakan komoditas, prosesor dan jaringan off-the-shelf.Kekurangan :a. Programmer bertanggung jawab atas banyak detail yang terkait dengan komunikasi data antar prosesor.
b. Mungkin sulit untuk memetakan struktur data yang ada, berdasarkan memori global, ke organisasi memori ini.
c. Waktu akses memori yang tidak seragam - data yang berada di node jauh membutuhkan waktu lebih lama untuk diakses daripada data lokal node. - Hybrid MemoryKomputer terbesar dan tercepat di dunia saat ini menggunakan arsitektur memori bersama dan didistribusikan. Komponen memori bersama dapat berupa mesin memori bersama dan / atau unit pemrosesan grafis (GPU). Komponen memori terdistribusi adalah jaringan beberapa mesin memori / GPU bersama, yang hanya tahu tentang memori mereka sendiri - bukan memori pada komputer lain. Oleh karena itu, komunikasi jaringan diperlukan untuk memindahkan data dari satu mesin ke mesin lainnya. Tren saat ini tampaknya menunjukkan bahwa jenis arsitektur memori ini akan terus menang dan meningkat pada komputasi tingkat tinggi untuk masa yang akan datang.Karakteristik :
a. Semua yang umum terdapat pada arsitektur memori bersama dan didistribusikan.b. Peningkatan skalabilitas merupakan keuntungan pentingc. Meningkatnya kompleksitas programmer adalah kelemahan penting
Selain terkait dengan memory, parallel computation juga tidak lepas dari konsep pemrogramman paralel sebagai landasan implementasi sistem. Terdapat beberapa model pemrograman paralel yang umum digunakan, yakni :
- Shared Memory (tanpa threads)
- Threads
- Distributed Memory / Message Passing
- Data Parallel
- Hybrid
- Single Program Multiple Data (SPMD)
- Multiple Program Multiple Data (MPMD)
Pembahasan lebih lanjut akan dilakukan pada model threads dan message passing.
Thread Model
Model pemrograman ini adalah jenis pemrograman shared memory. Dalam model
thread parallel programming, proses "heay-weight" tunggal dapat
memiliki beberapa "light-weight" dimana terdapat jalur eksekusi bersamaan. Sebagai contoh:
- Program utama mengeksekusi perintah A.IN dijadwalkan untuk dijalankan oleh sistem operasi asli. A.IN memuat dan memperoleh semua sistem dan sumber daya pengguna yang diperlukan untuk dijalankan. Ini adalah proses "heay-weight".
- A.IN melakukan beberapa pekerjaan serial, dan kemudian menciptakan sejumlah tasks (threads) yang dapat dijadwalkan dan dijalankan oleh sistem operasi secara bersamaan.
- Setiap threads memiliki data lokal, tetapi juga, membagikan seluruh sumber daya A.IN. Ini dilakukan untuk menghemat overhead yang terkait dengan mereplikasi sumber daya program untuk setiap threads ("ringan"). Setiap threads juga mendapat manfaat dari tampilan memori global karena berbagi ruang memori A.IN
- Sebuah thread work paling baik digambarkan sebagai subrutin dalam program utama. Threads apa pun dapat menjalankan subrutin mana pun pada saat yang sama dengan Threads lainnya.
- Threads berkomunikasi satu sama lain melalui memori global (dengan memperbarui lokasi alamat). Hal ini memerlukan konstruksi sinkronisasi untuk memastikan bahwa lebih dari satu Threads tidak memperbarui alamat global yang sama kapan saja.
Dari perspektif pemrograman, implementasi Threads biasanya terdiri dari:
Library subrutin yang dipanggil dari
dalam paralel source code, Seperangkat compiler
directive yang tertanam dalam source code serial atau paralel, programmer
bertanggung jawab untuk menentukan paralelisme (walaupun kompiler terkadang
dapat membantu).
Implementasi Threads bukan hal baru dalam komputasi. Secara historis,
vendor perangkat keras telah mengimplementasikan utas versi milik mereka
sendiri. Implementasi ini sangat berbeda satu sama lain sehingga menyulitkan programmer
untuk mengembangkan portable threaded applications. Standardisasi dalam
thread programming telah menghasilkan dua implementasi Threads yang sangat
berbeda yakni POSIX Threads dan OpenMP.
- POSIX ThreadDitentukan oleh standar IEEE POSIX 1003.1c (1995).
Hanya menggunakan Bahasa C sajaBagian dari sistem operasi Unix / LinuxBerbasis libraryBiasa disebut sebagai PthreadsParalelisme yang sangat eksplisit
Membutuhkan perhatian programmer yang signifikan terhadap detail - OpenMPStandar industri, didefinisikan bersama dan disahkan oleh sekelompok vendor perangkat keras perangkat lunak dan perangkat lunak komputer utama, organisasi dan individuCompiler merupakan Derived BasedPortable / multi-platform, termasuk platform Unix dan WindowsTersedia dalam implementasi C / C ++ dan FortranDapat dimulai dengan kode secara serial
Beberapa implementasi
lainnya dari thread adalah :
- Microsoft threads
- Java, Python threads
- CUDA(Compute Unified Device Architecture) threads for GPUs
OpenMP
OpenMP(Open Multi-Processing) adalah Application Program Interface
(API), yang secara bersama-sama didefinisikan oleh sekelompok vendor perangkat
keras dan perangkat lunak komputer utama. OpenMP menyediakan model yang
portabel dan dapat diskalakan untuk pengembang aplikasi paralel memori bersama.
API mendukung C / C ++ dan Fortran pada berbagai macam arsitektur. Tutorial ini
mencakup sebagian besar fitur utama OpenMP 3.1, termasuk berbagai konstruk dan
arahan untuk menentukan wilayah paralel, pembagian kerja, sinkronisasi, dan
lingkungan data. Fungsi Runtime Library dan variabel lingkungan juga tercakup.
Antarmuka
Program Aplikasi (API) yang dapat digunakan untuk secara langsung mengarahkan
paralelisme memori bersama multi-threading.
Terdiri
dari tiga komponen API utama:
- Compiler Directives
- Runtime Library Routines
- Environment Variables
CUDA(Compute Unified Device Architecture) threads for GPUs
Blok thread adalah abstraksi pemrograman yang mewakili sekelompok thread
yang dapat dieksekusi secara serial atau paralel. Untuk pemetaan proses dan
data yang lebih baik, utas dikelompokkan ke dalam blok utas. Jumlah thread bervariasi
dengan memori bersama yang tersedia. Jumlah thread dalam blok ulir sebelumnya
dibatasi oleh arsitektur hingga total 512 utas per blok, tetapi pada Juli 2019,
dengan CUDA toolkit 10 dan perangkat terbaru termasuk Volta, blok dapat berisi
hingga 1024 thread.
Dalam pemrograman CUDA, CPU dan GPU digunakan untuk komputasi. Biasanya,
kami merujuk ke sistem CPU dan GPU masing-masing sebagai host dan perangkat.
CPU dan GPU adalah platform terpisah dengan ruang memori mereka sendiri.
Biasanya, kami menjalankan beban kerja serial pada CPU dan melepaskan komputasi
paralel ke GPU.
CUDA adalah platform komputasi paralel dan model pemrograman yang dapat
digunakan bahasa tingkat lebih tinggi untuk mengeksploitasi paralelisme. Di
CUDA, kernel dijalankan dengan bantuan utas. Utas adalah entitas abstrak yang
mewakili eksekusi kernel. Kernel adalah program kecil atau fungsi. Aplikasi
multi-ulir menggunakan banyak utas yang berjalan pada saat yang sama, untuk
mengatur komputasi paralel. Setiap utas memiliki indeks, yang digunakan untuk
menghitung lokasi alamat memori dan juga untuk mengambil keputusan kontrol.
Distributed
Memory / Message Passing Model
Model ini
menunjukkan karakteristik berikut:
- Serangkaian tugas yang menggunakan memori lokal mereka sendiri selama perhitungan. Banyak tugas dapat berada di mesin fisik yang sama dan / atau di sejumlah mesin yang sewenang-wenang.
- Tugas bertukar data melalui komunikasi dengan mengirim dan menerima pesan.
- Transfer data biasanya membutuhkan operasi koperasi untuk dilakukan oleh setiap proses. Misalnya, operasi pengiriman harus memiliki operasi penerimaan yang cocok.
Message Passing Interface Standard (MPI) adalah standar kelulusan pesan
yang didasarkan pada konsensus Forum MPI, yang memiliki lebih dari 40
organisasi yang berpartisipasi, termasuk vendor, peneliti, pengembang
perpustakaan perangkat lunak, dan pengguna. Tujuan dari Message Passing
Interface adalah untuk menetapkan standar portabel, efisien, dan fleksibel
untuk pengiriman pesan yang akan banyak digunakan untuk menulis program
pengiriman pesan. Dengan demikian, MPI adalah pustaka lewat pesan standar dan
vendor independen pertama. Keuntungan mengembangkan perangkat lunak message
passing menggunakan MPI sangat cocok dengan tujuan desain portabilitas,
efisiensi, dan fleksibilitas. MPI bukan merupakan standar IEEE atau ISO, tetapi
pada kenyataannya, telah menjadi "standar industri" untuk menulis
program lewat pesan pada platform HPC.
Dari perspektif pemrograman, implementasi message passing biasanya
terdiri dari perpustakaan subrutin. Panggilan ke subrutin ini tertanam dalam
kode sumber. Programmer bertanggung jawab untuk menentukan semua paralelisme.Secara
historis, berbagai pustaka lewat pesan telah tersedia sejak 1980-an.
Implementasi ini sangat berbeda satu sama lain sehingga menyulitkan programmer
untuk mengembangkan aplikasi portabel.
Pada tahun 1992, Forum MPI dibentuk dengan tujuan utama membangun
antarmuka standar untuk implementasi message passing.Bagian 1 dari Message
Passing Interface (MPI) dirilis pada tahun 1994. Bagian 2 (MPI-2) dirilis pada
tahun 1996 dan MPI-3 pada tahun 2012. MPI adalah standar industri "de
facto" untuk penyampaian pesan, menggantikan hampir semua implementasi
penyampaian pesan lainnya yang digunakan untuk pekerjaan produksi. Implementasi
MPI ada untuk hampir semua platform komputasi paralel populer. Tidak semua
implementasi menyertakan semuanya dalam MPI-1, MPI-2 atau MPI-3.
MPI adalah spesifikasi untuk pengembang dan pengguna perpustakaan yang
mengirim pesan. Dengan sendirinya, ini BUKAN perpustakaan - melainkan
spesifikasi seperti apa perpustakaan itu seharusnya. MPI terutama membahas
model pemrograman paralel pesan-lewat: data dipindahkan dari ruang alamat dari
satu proses ke proses lain melalui operasi koperasi pada setiap proses.
Secara
sederhana, tujuan dari Message Passing Interface adalah untuk menyediakan
standar yang banyak digunakan untuk menulis program passing pesan. Antarmuka
mencoba menjadi:
- Praktis
- Portable
- Efisien
- Fleksibel
Hari ini,
MPI berjalan di hampir semua platform perangkat keras:
- Memori Terdistribusi
- Berbagi memori
- Hibrida
Model
pemrograman jelas tetap model memori terdistribusi, terlepas dari arsitektur
fisik yang mendasari mesin. Semua
paralelisme eksplisit, yakni programmer bertanggung jawab untuk mengidentifikasi
paralelisme dengan benar dan mengimplementasikan algoritma paralel menggunakan
konstruksi MPI.
Distributed
Processing
Distributed Processing, juga dikenal sebagai komputasi
terdistribusi, didefinisikan sebagai menggunakan jaringan komputer untuk
melakukan tugas tertentu dengan satu komputer utama yang digunakan untuk tugas
yang lebih rumit.(LoveToKnow Corp).
Distributed Processing adalah sistem
yang terdiri dari jaringan mikrokomputer yang melakukan fungsi tertentu dan
dihubungkan dengan komputer utama yang digunakan untuk tugas yang lebih
kompleks(Houghton Mifflin Harcourt Publishing Company).
Berdasarkan definisi dari IBM, sistem komputer terdistribusi terdiri
dari beberapa komponen perangkat lunak yang ada di banyak komputer, tetapi
dijalankan sebagai satu sistem. Komputer yang berada dalam sistem terdistribusi
dapat secara fisik berdekatan dan terhubung oleh jaringan lokal, atau mereka
dapat secara geografis jauh dan terhubung oleh jaringan area luas. Sistem
terdistribusi dapat terdiri dari sejumlah konfigurasi yang memungkinkan,
seperti mainframe, komputer pribadi, workstation, minicomputer, dan sebagainya.
Tujuan dari komputasi terdistribusi adalah untuk membuat jaringan seperti itu
berfungsi sebagai komputer tunggal.
“Komputasi paralel membagi aplikasi menjadi tugas-tugas yang dieksekusi
pada saat yang sama sedangkan komputasi terdistribusi membagi aplikasi menjadi
tugas-tugas yang dieksekusi di lokasi yang berbeda menggunakan sumber daya yang
berbeda” (Leopold 3).
“A
distributed system is a collection of autonomous computers that are
interconnected with each other and cooperate, thereby sharing resources such as
printers and databases” (Leopold 2).
Menurut Claudia Leopold, ada delapan motivasi utama untuk menerapkan
sistem terdistribusi daripada hanya memanfaatkan sumber daya komputasi dari
komputer standar. Keuntungan-keuntungan ini dijelaskan secara singkat di bawah
ini:
(1) Sistem
terdistribusi meningkatkan "kinerja absolut" dari sistem komputasi
(2) Rasio
Harga terhadap Kinerja untuk sistem lebih menguntungkan untuk sistem
terdistribusi
(3)
Keuntungan teknologi
(4)
Beberapa aplikasi adalah masalah yang terdistribusi secara inheren (mereka
dipecahkan paling mudah menggunakan cara komputasi terdistribusi
(5)
Komputasi terdistribusi memungkinkan pembagian sumber daya - baik perangkat
keras maupun perangkat lunak
(6) Setiap
bagian dari perangkat keras dapat diganti jika gagal.
(7)
Komputasi Terdistribusi memungkinkan sistem untuk tumbuh secara bertahap ketika
komputer ditambahkan satu per satu.
(8)
Komputasi terdistribusi memungkinkan untuk "memulung." Menurut Leopold,
“banyak daya yang terbuang, terutama selama jam kerja. Dengan mengintegrasikan
komputer ke dalam sistem terdistribusi, kelebihan daya komputasi dapat dibuat
tersedia untuk pengguna atau aplikasi lain. "
Meskipun komputasi terdistribusi adalah metode yang berbeda untuk
memanfaatkan kekuatan yang tidak terpakai dari komputer jaringan, ia memiliki
kemiripan yang mirip dengan arsitektur komputasi multi-prosesor lain: komputasi
paralel, yang merupakan praktik menggunakan beberapa prosesor di lokasi yang sama
untuk menyebarkan tugas komputasi.
Komputasi terdistribusi adalah metode komputasi yang sangat mirip dengan
komputasi paralel. Komputasi terdistribusi memungkinkan pengguna atau komputer
yang berbeda untuk berbagi informasi. Komputasi terdistribusi dapat
memungkinkan aplikasi pada satu mesin untuk meningkatkan daya pemrosesan,
memori, atau penyimpanan pada mesin lain. Ada kemungkinan bahwa komputasi
terdistribusi dapat meningkatkan kinerja aplikasi yang berdiri sendiri, tetapi
ini sering bukan alasan untuk mendistribusikan aplikasi.
Beberapa aplikasi, seperti pengolah kata, mungkin tidak mendapat manfaat
dari distribusi sama sekali. Dalam banyak kasus, masalah tertentu mungkin
menuntut distribusi. Jika perusahaan ingin mengumpulkan informasi di seluruh
lokasi, distribusi adalah hal yang wajar. Dalam kasus lain, distribusi dapat
memungkinkan kinerja atau ketersediaan ditingkatkan. Jika suatu aplikasi harus
berjalan pada PC dan aplikasi perlu melakukan perhitungan yang panjang,
mendistribusikan perhitungan ini ke mesin yang lebih cepat mungkin memungkinkan
kinerja ditingkatkan.
Sistem terdistribusi dapat diterapkan dengan memisahkan fungsi menjadi
dua bagian: klien dan server. Desain umum sistem klien / server menggunakan
tiga tingkatan, seperti yang dijelaskan dalam arsitektur klien / server tiga
tingkat.
Cara umum mengatur perangkat lunak untuk berjalan pada sistem
terdistribusi adalah dengan memisahkan fungsi menjadi dua bagian: klien dan
server. Klien adalah program yang menggunakan layanan yang disediakan program
lain. Program yang menyediakan layanan disebut server. Klien membuat permintaan
untuk layanan, dan server melakukan layanan itu. Fungsi server seringkali
memerlukan beberapa manajemen sumber daya, di mana server menyinkronkan dan
mengelola akses ke sumber daya, dan menanggapi permintaan klien dengan data
atau informasi status. Program klien biasanya menangani interaksi pengguna dan
sering meminta data atau memulai beberapa modifikasi data atas nama pengguna.
Desain umum sistem klien / server menggunakan tiga tingkatan:
- Klien yang berinteraksi dengan pengguna
- Server aplikasi yang berisi logika bisnis aplikasi
- Manajer sumber daya yang menyimpan data
Sumber Referensi
- Rajkumar Buyya, ... S. Thamarai Selvi, in Mastering Cloud Computing, 2013
- Michael McCool, ... James Reinders, in Structured Parallel Programming, 2012
- George M. Raskulinec, Evgeny Fiksman, in High Performance Parallelism Pearls, 2015
- Dinkar Sitaram, Geetha Manjunath, in Moving To The Cloud, 2012
- https://www.ibm.com/support/knowledgecenter/en/SSAL2T_8.2.0/com.ibm.cics.tx.doc/concepts/c_wht_is_distd_comptg.html
- https://nyu-cds.github.io/python-gpu/02-cuda/
- https://en.wikipedia.org/wiki/Parallel_computing
Komentar
Posting Komentar