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.


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

  2. 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.
  3. 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.
  4. 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 diterapkan

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


  1. Shared Memory
    Shared 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 identik
    Akses yang sama dan waktu akses ke memori
    Kadang-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 SMP
    Satu SMP dapat secara langsung mengakses memori SMP lain
    Tidak semua prosesor memiliki waktu akses yang sama untuk semua memori
    Akses memori lintas link lebih lambat
    Jika koherensi cache dipertahankan, maka juga dapat disebut CC-NUMA - Cache Coherent NUMA
    Beberapa 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

  2. Distributed Memory
    Seperti 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.

  3. Hybrid Memory
    Komputer 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 penting
    c. 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.
  1. POSIX Thread
    Ditentukan oleh standar IEEE POSIX 1003.1c (1995).
    Hanya menggunakan  Bahasa C saja
    Bagian dari sistem operasi Unix / Linux
    Berbasis library
    Biasa disebut sebagai Pthreads
    Paralelisme yang sangat eksplisit
    Membutuhkan perhatian programmer yang signifikan terhadap detail

  2. OpenMP
    Standar industri, didefinisikan bersama dan disahkan oleh sekelompok vendor perangkat keras perangkat lunak dan perangkat lunak komputer utama, organisasi dan individu
    Compiler merupakan Derived Based
    Portable / multi-platform, termasuk platform Unix dan Windows
    Tersedia dalam implementasi C / C ++ dan Fortran
    Dapat 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:
  1. Compiler Directives
  2. Runtime Library Routines
  3. 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:
  1. Klien yang berinteraksi dengan pengguna
  2. Server aplikasi yang berisi logika bisnis aplikasi
  3. Manajer sumber daya yang menyimpan data







Sumber Referensi 
  1. Rajkumar Buyya, ... S. Thamarai Selvi, in Mastering Cloud Computing, 2013
  2. Michael McCool, ... James Reinders, in Structured Parallel Programming, 2012
  3. George M. Raskulinec, Evgeny Fiksman, in High Performance Parallelism Pearls, 2015
  4. Dinkar Sitaram, Geetha Manjunath, in Moving To The Cloud, 2012
  5. https://www.ibm.com/support/knowledgecenter/en/SSAL2T_8.2.0/com.ibm.cics.tx.doc/concepts/c_wht_is_distd_comptg.html
  6. https://nyu-cds.github.io/python-gpu/02-cuda/
  7. https://en.wikipedia.org/wiki/Parallel_computing







Komentar

Postingan populer dari blog ini

Analisa Website gunadarma.ac.id

CGI... from IMAGI to REALITY

Tugas 1 : Konsep Dasar Komputasi dan Implementasinya