Senin, 29 Juni 2020

Konsep Dasar Parallel Computation, Distributed Processing, Architectural Parallel Computer, Thread Programming, Massage Passing, Open MP dan Pemrograman CUDA GPU

Parallel Computation
Komputasi paralel (Paralell Computation) adalah salah satu teknik melakukan komputasi secara bersamaan dengan memanfaatkan beberapa komputer independen secara bersamaan. Biasanya diperlukan saat kapasitas yang diperlukan sangat besar, baik karena harus mengolah data dalam jumlah besar ataupun karena tuntutan proses komputasi yang banyak. Untuk melakukan berbagai jenis komputasi paralel diperlukan infrastruktur mesin paralel yang terdiri dari banyak komputer yang dihubungkan dengan jaringan dan mampu bekerja secara paralel untuk menyelesaikan satu masalah. Adapun tujuan utama komputasi paralel adalah meningkatkan kinerja komputer dalam menyelesaikan berbagai masalah. Dengan membagi sebuah masalah besar ke dalam beberapa masalah kecil, membuat kinerja menjadi cepat.
Komputasi paralel membutuhkan :
  1.       Algoritma
  2.       Bahasa Pemrogaman
  3.       Compiler


Masalah komputasi harus bisa :
  • Dipecah menjadi potongan-potongan diskrit pekerjaan yang bisa dipecahkan secara bersamaan;
  • Dijalankan beberapa instruksi program setiap saat;
  • Dipecahkan dalam waktu yang lebih singkat dengan beberapa sumber daya komputasi dibandingkan dengan satu sumber komputasi.


Sumber daya perhitungan biasanya :
  • Satu komputer dengan beberapa prosesor / core
  • Sejumlah komputer seperti itu sewenang - wenang yang dihubungkan oleh sebuah jaringan


Mengapa menggunakan komputasi paralel dibandingkan dengan komputasi serial ? Komputasi paralel jauh lebih cocok untuk pemodelan, simulasi dan pemahaman fenomena dunia nyata yang kompleks, diantaranya :
  • Save Time
Secara teori, membuang lebih banyak sumber daya pada suatu tugas akan memperpendek waktu sampai selesai, dengan penghematan biaya potensial. Komputer paralel bisa dibangun dari komponen komoditas murah.

  • Solve Larger (Lebih Kompleks Masalah)
Banyak masalah begitu besar dan / atau rumit sehingga tidak praktis atau tidak mungkin untuk menyelesaikannya di satu komputer, terutama mengingat keterbatasan memori komputer.

  • Provide Concurrency (Menyediakan Konflik) 
Sumber daya komputasi tunggal hanya bisa melakukan satu hal pada satu waktu. Beberapa sumber daya komputasi dapat melakukan banyak hal sekaligus.

Distributed Processing

Yang dimaksud Distributed Processing adalah mengerjakan semua proses pengolahan data secara bersama antara komputer pusat dengan beberapa komputer yang lebih kecil dan saling dihubungkan melalui jalur komunikasi. Setiap komputer tersebut memiliki prosesor mandiri sehingga mampu mengolah sebagian data secara terpisah, kemudian hasil pengolahan tadi digabungkan menjadi satu penyelesaian total. Jika salah satu prosesor mengalami kegagalan atau masalah yang lain akan mengambil alih tugasnya.

Tahun 1970 setelah beban pekerjaan bertambah banyak dan harga perangkat komputer besar mulai terasa sangat mahal, maka mulailah digunakan konsep proses distribusi (Distributed Processing). Dalam proses ini beberapa host komputer mengerjakan sebuah pekerjaan besar secara paralel untuk melayani beberapa terminal yang tersambung secara seri disetiap host komputer. Dalam proses distribusi sudah mutlak diperlukan perpaduan yang mendalam antara teknologi komputer dan telekomunikasi, karena selain proses yang harus didistribusikan, semua host komputer wajib melayani terminal - terminalnya dalam satu perintah dari komputer pusat.

Contoh dari Distributed Data Processing System adalah
  • ATM, komputer yang dirancang untuk tugas-tugas melaksanakan proyek, analisis finansial, penjadwalan waktu dan akuntansi.
  • Pengolahan data pada server yahoo yang tersebar hampir di seluruh dunia secara distribusi, setiap wilayah mempunyai server masing-masing. Seperti di indonesia mempunyai server tersendiri sehingga pengolahan data tidak di pusat melainkan di wilayah masing-masing.


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 :
  1. 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.
  2. 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).
  3. 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.
  4. 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.


Thread Programming

Threading / Thread adalah sebuah alur kontrol dari sebuah proses layanan informasi yang diminta oleh user. Konsep threading adalah menjalankan 2 proses yang sama atau proses yang berbeda dalam satu waktu. Banyak sistem operasi modern telah memiliki konsep yang memungkinkan sebuah proses untuk memiliki eksekusi multi-threads. Keuntungan dari multithreaded meliputi peningkatan respon dari pengguna, pembagian sumber daya proses, ekonomis, dan kemampuan untuk mengambil keuntungan dari arsitektur multiprosesor.




Multithreaded Process
Benefits / manfaat
  •  Kemampuan reaksi
  • Sumber daya berbagi
  • Ekonomi
  • Scalabilas


Thread bermanfaat untuk Multi threading yang berguna untuk Multi processor dan Single processor. Kegunaan untuk system Multi processor, adalah :
  • Sebagai unit pararel atau tingkat granularitas pararelisme.
  • Peningkatan kinerja disbanding berbasis proses.


Kegunaan Multithreading pada single processor, adalah :
  • Kerja foreground dan background sekaligus di satu aplikasi.
  • Penanganan asynchronous processing menjadi lebih baik.
  • Mempercepat eksekusi program.
  • Pengorganisasian program menjadi lebih baik.


Multicore Programming
Multicore systems mendesak/memaksa para programmer untuk melewati tantangan yang meliputi :
  • Pembagian aktivitas
  • Saldo/Timbangan
  • Data yang telah hancur
  • Ketergantungan Data
  • Pengujian dan Debugging


Kegunaan Thread
Multithreading berguna untuk multiprocessor dan singleprocessor. Kegunaan untuk system multiprocessor adalah :
  • Sebagai unit pararel atau tingkat granularitas pararelisme.
  • Peningkatan kinerja disbanding berbasis proses.


Kegunaan multithreading pada singleprocessor, adalah :
  • Kerja foreground dan background sekaligus di satu aplikasi.
  • Penanganan asynchronous proseccing menjadi baik.
  • Mempercepat eksekusi program.
  • Pengorganisasian program menjadi lebih baik.


Manfaat utama banyak thread di satu proses adalah memaksimumkan derajat kongkurensi antara operasi-operasi yang terkait erat. Aplikasi jauh lebih efisien dikerjakan sebagai sekumpulan thread disbanding sekumpulan proses.

Threading dibagi menjadi 2 diantaranya :

  • Static Threading

Teknik ini biasa digunakan untuk komputer dengan chip multiprocessors. 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 disebut static karena lambat. Teknik ini juga tidak mudah diterapkan dan beresiko mengalami kesalahan. Alasannya, pembagian pekerjaan yang dinamis di antara thread-thread menyebabkan load balancing-nya cukup rumit. 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

Concurrency platform ini menyediakan scheduler yang melakukan load balacing secara otomatis. Platformnya masih dalam pengembangan namun sudah mendukung dua fitur, yaitu nested parallelism dan parallel loops. Nested parallelism memungkinkan sebuah subroutine dimunculkan dalam jumlah banyak sehingga program utama tetap berjalan sementara subroutine menghitung hasilnya. Sedangkan parallel loops seperti halnya fungsi for namun memungkinkan iterasi loop dilakukan secara bersamaan.

Massage Passing, OpenMP

OpenMP (Open Multi-Processing) adalah sebuah antarmuka pemrograman aplikasi (API) yang mendukung multi processing shared memory pemrograman di C, C++ dan Fortran pada berbagai arsitektur, termasuk UNix dan Microsoft Windows platform. OpenMP Terdiri dari satu set perintah kompiler, perpustakaan rutinitas, dan variabel lingkungan yang mempengaruhi run-time. Banyak Aplikasi dibangun dengan model hibrida pemrograman paralel dapat dijalankan pada komputer cluster dengan menggunakan OpenMP dan Message Passing Interface (MPI), atau lebih transparan dengan menggunakan ekstensi OpenMP non-shared memory systems. OpenMP merupakan model portabel dan skalabel yang memberikan interface sederhana dan fleksibel bagi programer shared memory dalam membangun aplikasi paralel. Program multithread dapat ditulis dalam berbagai cara. Beberapa diantaranya memungkinkan untuk melakukan interaksi yang kompleks antar thread. OpenMP mencoba untuk memberikan kemudahan pemrograman serta membantu dalam menghindari kesalahan program, melalui pendekatan terstruktur. Pendekatan ini dikenal sebagai model pemrograman fork-join.

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.

Kegunaan dari Message Passing ialah :
  1. Menyediakan fungsi-fungsi untuk menukar pesan.
  2. Menulis kode paralel secara portable.
  3. Mendapatkan performa yang tinggi dalam pemrograman paralel.
  4. Menghadapi permasalahan yang melibatkan hubungan data irregular atau dinamis yang tidak begitu cocok dengan model data paralel.


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


OpenMP bekerja berdasarkan model shared memory, maka secara default data dibagi diantara thread-thread dan dapat terlihat dari setiap thread. Terkadang program akan membutuhkan variabel dengan nilai thread spesifik. Jika setiap thread memiliki variabel duplikat akan sangat berpotensi memiliki nilai yang berbeda-beda pada setiap variabel duplikat tersebut.

Sinkronisasi (pengkoordinasian) aksi dari thread adalah sesuatu yang sangat penting untuk menjamin data yang harus dibagi dan untuk mencegah terjadinya data race condition. Secara default OpenMP telah menyediakan mekanisme untuk menunggu thread dalam suatu tim thread sehingga semua thread menyelesaikan tugasnya dalam region, kemudian dapat melanjutkan ke proses selanjutnya. Mekanisme ini dikenal sebagai barrier.

Pemrograman CUDA GPU

CUDA (Compute Unified Device Architecture) merupakan platform komputasi paralel dan model pemrograman yang membuat penggunaan GPU untuk komputasi tujuan umum sederhana dan elegan. Pengembang masih memprogram di C, C ++, Fortran yang familiar, atau daftar bahasa pendukung yang terus berkembang, dan menggabungkan ekstensi bahasa ini dalam bentuk beberapa kata kunci dasar.Kata kunci ini membiarkan pengembang mengekspresikan sejumlah besar paralelisme dan mengarahkan kompilator ke bagian aplikasi yang memetakan ke GPU.

GPU ( Graphical Processing Unit ) 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, 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.

Teknologi CUDA dapat digunakan untuk menjalankan proses pengolahan gambar, video, rendering 3D, dan lain sebagainya. VGA – VGA dari Nvidia yang sudah menggunakan teknologi CUDA antara lain : Nvidia GeForce GTX 280, GTX 260,9800 GX2, 9800 GTX+,9800 GTX,9800 GT,9600 GSO, 9600 GT,9500 GT,9400 GT,9400 mGPU,9300 mGPU,8800 Ultra,8800 GTX,8800 GTS,8800 GT,8800 GS,8600 GTS,8600 GT,8500 GT,8400 GS, 8300 mGPU, 8200 mGPU, 8100 mGPU, dan seri sejenis untuk kelas mobile ( VGA notebook ).

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.




DAFTAR PUSTAKA
http://rachmatwidyan.blogspot.com/2018/03/parallel-computation.html
https://pandanwulan.wordpress.com/2015/06/28/konsep-distribusi-processing-arsitektur-komputer-paralel-thread-programming-message-passing-atau-openmp-dan-pemrograman-cuda-pada-gpu/
https://id.wikipedia.org/wiki/Jaringan_komputer
https://andri102.wordpress.com/game/soft-skill/konsep-komputasi-parallel-processing/#:~:text=Amdahl%20berpendapat%2C%20%E2%80%9CPeningkatan%20kecepatan%20secara,diperlukan%20untuk%20menyelesaikan%20sebuah%20masalah.%E2%80%9D
https://fikrinm93.wordpress.com/2016/06/17/242/

Sabtu, 09 Mei 2020

Quantum Computation, Entanglement Quantum, pengoperasian data Qubit, Quantum Gates dan Algoritma Shor


Quantum Computation

Bagaimana Cara Kerja Komputer Quantum?

Komputer kuantum melakukan perhitungan berdasarkan probabilitas keadaan objek sebelum diukur - bukan hanya 1s atau 0s - yang berarti mereka memiliki potensi untuk memproses data secara eksponensial lebih banyak dibandingkan dengan komputer klasik.

Komputer klasik melakukan operasi logis menggunakan posisi pasti dari keadaan fisik. Ini biasanya biner, artinya operasinya didasarkan pada salah satu dari dua posisi. Status tunggal - seperti hidup atau mati, naik atau turun, 1 atau 0 - disebut sedikit.

Dalam komputasi kuantum, operasi bukannya menggunakan keadaan kuantum suatu objek untuk menghasilkan apa yang dikenal sebagai qubit. Keadaan ini adalah sifat-sifat yang tidak terdefinisi dari suatu objek sebelum terdeteksi, seperti putaran elektron atau polarisasi foton.

Alih-alih memiliki posisi yang jelas, keadaan kuantum yang tidak terukur terjadi dalam 'superposisi' campuran, tidak seperti koin yang berputar di udara sebelum mendarat di tangan Anda.

Superposisi ini dapat terjerat dengan objek-objek lain, yang berarti hasil akhirnya akan berhubungan secara matematis bahkan jika kita belum tahu apa itu.

Matematika yang rumit di balik keadaan 'koin berputar' terjerat ini dapat dihubungkan ke algoritma khusus untuk membuat pekerjaan singkat dari masalah yang membutuhkan waktu lama bagi komputer klasik untuk menyelesaikannya ... jika mereka dapat menghitungnya sama sekali.

Algoritma seperti itu akan berguna dalam memecahkan masalah matematika yang kompleks, memproduksi kode keamanan yang sulit untuk dipecahkan, atau memprediksi interaksi beberapa partikel dalam reaksi kimia.

Jenis komputer kuantum

Membangun komputer kuantum fungsional membutuhkan memegang objek dalam keadaan superposisi cukup lama untuk melakukan berbagai proses pada mereka.

Sayangnya, sekali suatu superposisi bertemu dengan bahan-bahan yang merupakan bagian dari sistem yang terukur, ia kehilangan keadaan di sela-sela dalam apa yang dikenal sebagai dekoherensi dan menjadi bit klasik lama yang membosankan.

Perangkat harus dapat melindungi keadaan kuantum dari dekoherensi, sambil tetap membuatnya mudah dibaca.

Berbagai proses mengatasi tantangan ini dari sudut yang berbeda, apakah itu menggunakan proses kuantum yang lebih kuat atau untuk menemukan cara yang lebih baik untuk memeriksa kesalahan.

Supremasi komputasi kuantum

Untuk saat ini, teknologi klasik dapat mengatur tugas apa pun yang dilemparkan ke komputer kuantum. Supremasi kuantum menggambarkan kemampuan komputer kuantum untuk mengungguli rekan-rekan klasik mereka.

Beberapa perusahaan, seperti IBM dan Google, mengklaim kami mungkin dekat, karena mereka terus menjejalkan lebih banyak qubit bersama dan membangun perangkat yang lebih akurat.

Tidak semua orang yakin bahwa komputer kuantum sepadan dengan usaha. Beberapa ahli matematika percaya ada hambatan yang secara praktis tidak mungkin diatasi, membuat komputasi kuantum selamanya tidak terjangkau.

Waktu akan memberi tahu siapa yang benar.

Entanglement Quantum

Apa itu Entanglement Quantum (Keterikatan Kuantum)?

Dalam fisika kuantum, keterikatan partikel menggambarkan hubungan antara sifat-sifat fundamental mereka yang tidak mungkin terjadi secara kebetulan. Ini bisa merujuk ke negara-negara seperti momentum, posisi, atau polarisasi mereka.

Mengetahui sesuatu tentang salah satu karakteristik ini untuk satu partikel memberi tahu Anda sesuatu tentang karakteristik yang sama untuk partikel lainnya.

Pikirkan sepasang sarung tangan. Jika Anda menemukan sarung tangan kanan sendirian di laci Anda, Anda bisa yakin sarung tangan yang hilang akan pas dengan tangan kiri Anda. Kedua sarung tangan dapat digambarkan sebagai terjerat, karena mengetahui sesuatu tentang satu akan memberi tahu Anda sesuatu yang penting tentang yang lain yang bukan fitur acak.

Dalam mode, konsep ini tidak terlalu aneh. Tetapi konsep tersebut menimbulkan masalah bagi mekanika kuantum.

Apakah keterikatan kuantum bekerja dengan 'kenyataan'?

Fisikawan Niels Bohr dan Werner Heisenberg berpendapat bahwa keadaan objek hanya benar-benar ada begitu dikaitkan dengan pengukuran, yang berarti seseorang perlu mengamatinya secara eksperimental. Sampai saat itu, sifatnya hanyalah kemungkinan.

Bagi fisikawan lain, seperti Albert Einstein dan Erwin Schrödinger yang terkenal, ini sama tidak masuk akalnya dengan mengatakan kucing di dalam kotak tidak hidup atau mati sampai Anda melihat.

Akhirnya dua fisikawan Boris Podolsky dan Nathan Rosen berkolaborasi dengan Einstein untuk membuat eksperimen pemikiran, di mana dua objek berinteraksi dalam beberapa cara.

Dengan mengukur salah satu dari mereka, kita mungkin dapat mengerjakan beberapa detail mitranya tanpa perlu mengukurnya secara langsung, berkat sejarahnya yang 'terjerat'.

"Aksi Seram dikejauhan"

Menanggapi dilema ini (sekarang disebut EPR atau paradoks Einstein-Podolsky-Rosen) Bohr menyarankan bahwa keadaan kedua objek hanya menjadi 'nyata' pada saat yang sama, seolah-olah mereka langsung bertukar rincian tentang intrusi eksperimental ini di kejauhan.

Einstein menolak gagasan ini sebagai 'tindakan seram', mengklaim pada beberapa kesempatan bahwa "Tuhan tidak bermain dadu".

Beberapa dekade kemudian, ide-ide Bohr masih berdiri kokoh, dan sifat aneh keterikatan kuantum adalah bagian solid dari fisika modern. Fisika pada dasarnya benar-benar 'seram'.

Pengoperasian Data Qubit


Qubit merupakan kuantum bit , mitra dalam komputasi kuantum dengan digit biner atau bit dari komputasi klasik. Sama seperti sedikit adalah unit dasar informasi dalam komputer klasik, qubit adalah unit dasar informasi dalam komputer kuantum . Dalam komputer kuantum, sejumlah partikel elemental seperti elektron atau foton dapat digunakan (dalam praktek, keberhasilan juga telah dicapai dengan ion), baik dengan biaya mereka atau polarisasi bertindak sebagai representasi dari 0 dan / atau 1. Setiap partikel-partikel ini dikenal sebagai qubit, sifat dan perilaku partikel-partikel ini (seperti yang diungkapkan dalam teori kuantum ) membentuk dasar dari komputasi kuantum. Dua aspek yang paling relevan fisika kuantum adalah prinsip superposisi dan Entanglement

Superposisi, pikirkan qubit sebagai elektron dalam medan magnet. Spin elektron mungkin baik sejalan dengan bidang, yang dikenal sebagai spin-up, atau sebaliknya ke lapangan, yang dikenal sebagai keadaan spin-down. Mengubah spin elektron dari satu keadaan ke keadaan lain dicapai dengan menggunakan pulsa energi, seperti dari Laser – katakanlah kita menggunakan 1 unit energi laser. Tapi bagaimana kalau kita hanya menggunakan setengah unit energi laser dan benar-benar mengisolasi partikel dari segala pengaruh eksternal? Menurut hukum kuantum, partikel kemudian memasuki superposisi negara, di mana ia berperilaku seolah-olah itu di kedua negara secara bersamaan. Setiap qubit dimanfaatkan bisa mengambil superposisi dari kedua 0 dan 1. Dengan demikian, jumlah perhitungan bahwa komputer kuantum dapat melakukan adalah 2 ^ n, dimana n adalah jumlah qubit yang digunakan. Sebuah komputer kuantum terdiri dari 500 qubit akan memiliki potensi untuk melakukan 2 ^ 500 perhitungan dalam satu langkah. Ini adalah jumlah yang mengagumkan – 2 ^ 500 adalah atom jauh lebih dari yang ada di alam semesta (ini pemrosesan paralel benar – komputer klasik saat ini, bahkan disebut prosesor paralel, masih hanya benar-benar melakukan satu hal pada suatu waktu: hanya ada dua atau lebih dari mereka melakukannya). Tapi bagaimana partikel-partikel ini akan berinteraksi satu sama lain? Mereka akan melakukannya melalui belitan kuantum.

Quantum Gates

Pada saat ini, model sirkuit komputer adalah abstraksi paling berguna dari proses komputasi dan secara luas digunakan dalam industri komputer desain dan konstruksi hardware komputasi praktis. Dalam model sirkuit, ilmuwan komputer menganggap perhitungan apapun setara dengan aksi dari sirkuit yang dibangun dari beberapa jenis gerbang logika Boolean bekerja pada beberapa biner (yaitu, bit string) masukan. Setiap gerbang logika mengubah bit masukan ke dalam satu atau lebih bit keluaran dalam beberapa mode deterministik menurut definisi dari gerbang. dengan menyusun gerbang dalam grafik sedemikian rupa sehingga output dari gerbang awal akan menjadi input gerbang kemudian, ilmuwan komputer dapat membuktikan bahwa setiap perhitungan layak dapat dilakukan.
Quantum Logic Gates, Prosedur berikut menunjukkan bagaimana cara untuk membuat sirkuit reversibel yang mensimulasikan dan sirkuit ireversibel sementara untuk membuat penghematan yang besar dalam jumlah ancillae yang digunakan.

·         Pertama mensimulasikan gerbang di babak pertama tingkat.
·         Jauhkan hasil gerbang di tingkat d / 2 secara terpisah.
·         Bersihkan bit ancillae.
·         Gunakan mereka untuk mensimulasikan gerbang di babak kedua tingkat.
·         Setelah menghitung output, membersihkan bit ancillae.
·         Bersihkan hasil tingkat d / 2.

Sekarang kita telah melihat gerbang reversibel ireversibel klasik dan klasik, memiliki konteks yang lebih baik untuk menghargai fungsi dari gerbang kuantum. Sama seperti setiap perhitungan klasik dapat dipecah menjadi urutan klasik gerbang logika yang bertindak hanya pada bit klasik pada satu waktu, sehingga juga bisa setiap kuantum perhitungan dapat dipecah menjadi urutan gerbang logika kuantum yang bekerja pada hanya beberapa qubit pada suatu waktu. Perbedaan utama adalah bahwa gerbang logika klasik memanipulasi nilai bit klasik, 0 atau 1, gerbang kuantum dapat sewenang-wenang memanipulasi nilai kuantum multi-partite termasuk superposisi dari komputasi dasar yang juga dilibatkan. Jadi gerbang logika kuantum perhitungannya jauh lebih bervariasi daripada gerbang logika perhitungan klasik.

Algoritma Shor

Algoritma Shor, dinamai matematikawan Peter Shor, adalah algoritma kuantum yaitu merupakan suatu algoritma yang berjalan pada komputer kuantum yang berguna untuk faktorisasi bilangan bulat. Algoritma Shor dirumuskan pada tahun 1994.  Inti dari algoritma ini merupakan bagaimana cara menyelesaikan faktorisasi terhaadap bilanga interger atau bulat yang besar.

Efisiensi algoritma Shor adalah karena efisiensi kuantum Transformasi Fourier , dan modular eksponensial. Jika sebuah komputer kuantum dengan jumlah yang memadai qubit dapat beroperasi tanpa mengalah kebisingan dan fenomena interferensi kuantum lainnya, algoritma Shor dapat digunakan untuk memecahkan kriptografi kunci publik skema seperti banyak digunakan skema RSA. Algoritma Shor terdiri dari dua bagian:

1.      Penurunan yang bisa dilakukan pada komputer klasik, dari masalah anjak untuk masalah ketertiban -temuan.
2.      Sebuah algoritma kuantum untuk memecahkan masalah order-temuan.

Hambatan runtime dari algoritma Shor adalah kuantum eksponensial modular yang jauh lebih lambat dibandingkan dengan kuantum Transformasi Fourier dan pre-/post-processing klasik. Ada beberapa pendekatan untuk membangun dan mengoptimalkan sirkuit untuk eksponensial modular. Yang paling sederhana dan saat ini yaitu pendekatan paling praktis adalah dengan menggunakan meniru sirkuit aritmatika konvensional dengan gerbang reversibel , dimulai dengan penambah ripple-carry. Sirkuit Reversible biasanya menggunakan nilai pada urutan n ^ 3, gerbang untuk n qubit. Teknik alternatif asimtotik meningkatkan jumlah gerbang dengan menggunakan kuantum transformasi Fourier , tetapi tidak kompetitif dengan kurang dari 600 qubit karena konstanta tinggi.






DAFTAR PUSTAKA

https://www.sciencealert.com/quantum-computers

https://www.sciencealert.com/entanglement

https://putrinurani94.wordpress.com/2016/04/25/pengoperasian-data-qubit-quantum-gates-dan-algoritma-shor/

http://nafa1108.blogspot.co.id/2015/11/algoritma-shor.html

http://djuneardy.blogspot.co.id/2015/04/quantum-computing-entanglement.html

http://adryanepratama.blogspot.co.id/2015/06/pararel-concept.html


http://maladawatunnajah.blogspot.co.id/2015/11/pengoperasian-data-qubit.html

Kamis, 16 April 2020

Konsep Dasar Cloud Computing, Grid Computing, Virtualisasi, Distributed Computing, Map educe, no sql

Cloud Computing



Apa itu Cloud Computing?
Cloud Computing (dalam bahasa Indonesia disebut komputasi awan) adalah proses pengolahan daya komputasi (baik CPU, RAM, Network Speeds, Software, OS maupun Storage) melalui jaringan (biasanya lewat internet). Jadi transfer data yang terjadi bukan secara fisik dan sumber daya komputasi yang dimiliki berada di lokasi pengguna yang memakai layanannya.

Manfaat Cloud Computing
Komputasi awan sebenarnya jadi menurunkan permintaan hardware dan software dari sisi si pengguna. Satu-satunya hal yang harus bisa dijalankan/dilakuka oleh si pengguna adalah software interface dari sistem komputasi awan, yang bisa jadi sesederhana saja semacam browser web. Ini pastinya bisa membantu mengurangi pekerjaan pengguna dengan adanya teknonologi jaringan Cloud yang tanggap dan otomatis menyelesaikan masalah-masalah IT lainnya.
Bila Anda bukan dari pihak korporat/pebisnis, Anda juga sebenarnya sudah menggunakan teknologi komputasi awan. Anda mungkin tidak sadar, beberapa layanan cloud populer yang telah banyak digunakan semacam email tools GMail, Hotmail atau Yahoo bahkan sudah didukung teknologi ini.
Saat mengakses/memakai layanan email, data Anda akan disimpan di server cloud, bukan di komputer Anda. Teknologi dan infrastruktur di belakang cloud memang tidak tampak. Jadi, tidak penting lagi apakah layanan cloud didasarkan pada HTTP, XML, Ruby, PHP atau teknologi spesifik lainnya sejauh itu masih user-friendly dan juga fungsional tentunya. Anda sebagai pengguna bisa terhubung ke sistem cloud dari perangkat pribadi Anda sendiri semacam laptop, atau ponsel.
Komputasi awan juga memang memanfaatkan bisnis kecil secara efektif dengan sumber daya yang terbatas. Teknologi atau layanan ini bisa kasih akses ke usaha kecil menengah untuk teknologi yang sebelumnya berada di luar jangkauan mereka. Cloud computing kini banyak sekali membantu usaha kecil untuk mengubah biaya pengeluaran mereka malah menjadi untung.

Tipe-tipe Cloud
Ada empat macam/tipe cloud yang berbeda yang bisa Anda pakai sebagai pengguna, sesuai dengan kebutuhan bisnis. Berikut adalah keempatnya!
·         Private Cloud
Private Cloud ini berarti sumber daya cloud-nya digunakan bagi satu organisasi tertentu saja (secara privat, tidak dibagi ke pengguna/organisasi lain). Metode ini lebih banyak digunakan buat interaksi semacam intra-bisnis, di mana sumber daya cloud-nya bisa diatur, dimiliki, dan dioperasikan oleh organisasi satu yang sama.
·         Community Cloud
Community cloud mengacu pada penggunaan source bagi komunitas dan organisasi.
·         Public Cloud
Jenis cloud ini biasanya dipakai buat interaksi tipe B2C (Business to Consumer). Public Cloud menggunakan sumber daya komputasi yang dimiliki, diatur dan dioperasikan oleh pemerintah.
·         Hybrid Cloud
Jenis Cloud yang satu ini bisa digunakan untuk kedua jenis interaksi – B2B (Business to Business) atau B2C (Business to Consumer). Jadi, sumber daya komputasi terikat bersama tapi dengan cloud yang berbeda.

Struktur Cloud Computing

Cloud computing terdiri dari dua komponen yaitu Front End dan juga Back End. Front End terdiri dari klien Cloud Computing system-nya. Lalu dibagi lagi menjadi dua yaitu interface dan aplikasi yang diperlukan dalam mengakses platform cloud computing-nya.
Sementara Back End mengacu ke cloud itu sendiri, yaitu yang terdiri dari sumber daya. Sumber daya tersebut diperlukan bagi layanan komputasi awan. Layanannya apa saja? Ada berbagai layanan yang disediakan teknologi komputasi awan yaitu virtual machine, server, data storage, security mechanism, dan lain sebagainya. Jadi, semua layanan itu berada di bawah kendali si provider/penyedia komputasi awan.
Cloud computing bisa mendistribusikan sistem file yang kemudian disebar ke banyak hard disk maupun mesin. Datanya tidak pernah disimpan di satu tempat saja. Selain itu, jika satu unit gagal bekerja atau memproses, maka yang lain akan mengambil alih secara otomatis. Inilah canggihnya teknologi Cloud. Ruang disk pengguna dapat dialokasikan ke sistem file yang terdistribusi, sementara komponen penting lainnya semacam algoritma dimanfaatan buat alokasi sumber daya. Intinya, teknologi komputasi awan ini merupakan sistem distribusi yang kuat dan sangat bergantung ke algoritma yang kuat pula.



Grid Computing

Apa itu Grid Computing
Komputasi Grid atau Grid Computing adalah kumpulan sumber daya komputer dari berbagai lokasi untuk mencapai tujuan bersama. Grid dapat dianggap sebagai sistem terdistribusi dengan beban kerja non-interaktif yang melibatkan sejumlah besar file.
            Komputasi grid dibedakan dari sistem komputasi kinerja tinggi konvensional seperti komputasi cluster dalam bahwa komputer jaringan memiliki setiap node diatur untuk melakukan tugas yang berbeda atau aplikasi.  komputer Grid juga cenderung lebih heterogen dan geografis (dengan demikian tidak secara fisik ditambah) dari komputer klaster  Meskipun grid tunggal dapat didedikasikan untuk aplikasi tertentu, umumnya grid digunakan untuk berbagai tujuan.. Grids sering dibangun dengan tujuan umum perpustakaan software jaringan middleware.

Contoh Grid Computing:

·         Scientific Simulation
Komputasi grid diimplementasikan di bidang fisika, kimia, dan biologi untuk melakukan simulasi terhadap proses yang kompleks.
·         Medical Images
Penggunaan data grid dan komputasi grid untuk menyimpan medical-image. Contohnya adalah eDiaMoND project.
·         Computer-Aided Drug Discovery (CADD)
Komputasi grid digunakan untuk membantu penemuan obat. Salah satu contohnya adalah: Molecular Modeling Laboratory (MML) di University of North Carolina (UNC).
·         Big Science
Data grid dan komputasi grid digunakan untuk membantu proyek laboratorium yang disponsorioleh pemerintah Contohnya terdapat di DEISA.
·         E-Learning
Komputasi grid membantu membangun infrastruktur untuk memenuhi kebutuhan dalam pertukaran informasi dibidang pendidikan. Contohnya adalah AccessGrid.
·         Visualization
Komputasi grid digunakan untuk membantu proses visualisasi perhitungan yang rumit.
·         Microprocessor design
komputasi grid membantu untuk mengurangi microprocessor design cycle dan memudahkan design center untuk membagikan resource lebih efisien. Contohnya ada diMicroprocessor Design Group at IBM Austin.

Beberapa konsep dasar dari grid computing :
·         Sumber daya dikelola dan dikendalikan secara lokal.

·         Sumber daya berbeda dapat mempunyai kebijakan dan mekanisme berbeda, mencakup Sumber daya komputasi dikelola oleh sistem batch berbeda, Sistem storage berbeda pada node berbeda, Kebijakan berbeda dipercayakan kepada user yang sama pada sumber daya berbeda pada Grid.



·         Sifat alami dinamis: Sumber daya dan pengguna dapat sering berubah

·         Lingkungan kolaboratif bagi e-community (komunitas elektronik, di internet).

·         Tiga hal yang di-,sharing dalam sebuah sistem grid, antara lain : Resource, Network dan Proses. Kegunaan / layanan dari sistem grid sendiri adalah untuk melakukan high throughput computing dibidang penelitian, ataupun proses komputasi lain yang memerlukan banyak resource komputer.

Cara Kerja Grid Computing :
Menurut tulisan singkat oleh Ian Foster ada check-list yang dapat digunakan untuk mengidentifikasi bahwa suatu sistem melakukan komputasi grid yaitu :
1.    Sistem tersebut melakukan koordinasi terhadap sumberdaya komputasi yang tidak berada dibawah suatu kendali terpusat. Seandainya sumber daya yang digunakan berada dalam satu cakupan domain administratif, maka komputasi tersebut belum dapat dikatakan komputasi grid.

2.    Sistem tersebut menggunakan standard dan protokol yang bersifat terbuka (tidak terpaut pada suatu implementasi atau produk tertentu). Komputasi grid disusun dari kesepakatan-kesepakatan terhadap masalah yang fundamental, dibutuhkan untuk mewujudkan komputasi bersama dalam skala besar. Kesepakatan dan standar yang dibutuhkan adalah dalam bidang autentikasi, otorisasi, pencarian sumberdaya, dan akses terhadap sumber daya.

3.    Sistem tersebut berusaha untuk mencapai kualitas layanan yang canggih, (nontrivial quality of service) yang jauh diatas kualitas layanan komponen individu dari komputasi grid tersebut.

Kemudian hal yang tidak boleh dilupakan adalah mengenai keberadaan dari elemen-elemen dari grid computing, elemen ini tidak bisa dilepaskan dari grid computing. Elemen grid computing adalah hardware, software, dan brainware

Keuntungan Utama Penggunaan Grid Computing      
            Teknologi grid computing mampu menjadi solusi bagi perusahaanperusahaan untuk memiliki suatu sistem informasi yang berteknologi canggih, yang mampu mendukung kinerja perusahaan, dengan biaya yang lebih murah.     
Kemampuan teknologi tersebut untuk mendukung kinerja perusahaan tidak      diragukan lagi.  Teknologi grid computing membuka peluang bagi adanya kerjasama lintas organisasi, lintas benua, dan lintas bangsa. Selain itu, terbuka pula peluang untuk  melakukan komputasi yang rumit dengan menggunakan superkomputer yang canggih, tanpa harus melakukan investasi besar - besaran dalam bidang teknologi informasi
            Grid computing menjadi suatu hal yang menjanjikan bagi perusahaan disebabkan oleh 3 hal, yaitu:
1.    Lebih hemat biaya dalam penggunaan sejumlah tertentu sumber daya komputer,

2.    Sebagai cara untuk memecahkan masalah yang mungkin tidak dapat dipecahkan tanpa sejumlah besar daya komputasi, dan

3.    Karena menunjukkan bahwa sumberdaya dari banyak komputer dapat kooperatif dan dimanfaatkan secara sinergis, serta dikelola sebagai sebuah kolaborasi mencapai tujuan bersama

Kekurangan Grid Computing
Kekurangan pada grid computing yang lebih saya tekankan disini adalah mengenai hambatan yang dialami oleh masyarakat Indonesia dalam mengaplikasikan teknologi grid computing. Hambatan-hambatan tersebut adalah sebagai berikut :
1.    Manajemen institusi  yang terlalu birokratis menyebabkan mereka enggan untuk fasilitas yang dimiliki untuk digunakan secara bersama agar mendapatkan manfaat yang lebih besar bagi masyarakat luas.

2.    Masih sedikitnya sumber daya manusia yang  kompeten dalam mengelola grid computing.

3.    Kurangnya pengetahuan yang mencukupi bagi teknisi IT maupun user non teknisi mengenai manfaat dari grid computing itu sendiri.

KONSEP DASAR VIRTUALISASI


Virtualisasi adalah sebuah teknik yang saat ini banyak diterapkan untuk memenuhi kebutuhan TI yang semakin tinggi namun diikuti dengan tuntutan untuk mengefisiensikan biaya yang digunakan semaksimal mungkin.  Virtualisasi adalah teknologi yang telah diterapkan secara luas saat ini dengan dampak peningkatan operasional dan finansial yang positif. Virtualisasi adalah konsep dimana akses ke sebuah hardware seperti server diatur sehingga beberapa operating system (guest operation system) dapat berbagi sebuah hardware.  Tujuan dari virtualisasi adalah kinerja tingkat tinggi, ketersediaan, keandalan, ketangkasan, atau untuk membuat dasar keamanan dan manajemen yang terpadu.
Virtualisasi memungkinkan kita untuk berbagi hardware untuk digunakan beberapa sistem operasi. Virtualisasi dapat membuat sebuah tempat penyimpanan tunggal yang besar terlihat menjadi beberapa tempat penyimpanan dengan ukuran yang lebih kecil.
Setiap perusahaan memiliki tujuan yang berbeda mengapa menerapkan virtualisasi, salah satu tujuan yang ingin dicapai perusahaan dapat merupakan salah satu dari hal berikut :
·         Memungkinkan semua device yang terhubung dengan jaringan untuk mengakses aplikasi melalui jaringan, bahkan jika aplikasi tidak pernah dirancangan untuk dapat bekerja di device tersebut.
·         Isolasi beban perkerjaan atau aplikasi yang satu dengan yang lainnya untuk meningkatkan keamanan dan kemudahan pengelolaan lingkungan.
·         Isolasi aplikasi dari sistem operasi, memungkinkan aplikas untuk tetap berfungsi meskipun dirancang untuk sistem operasi dengan tipe yang berbeda
·         Isolasi aplikasi dari sistem operasi, memungkinkan sebuah aplikasi untuk bekerja di sistem operasi yang asing
·         Meningkatkan jumlah orang yang dapat didukung oleh aplikasi, dengan mengijinkan untuk menjalan aplikasi dari mesin-mesin yang berbeda secara bersamaan
·         Mengurangi waktu yang diperkukan untuk menjalankan apliksi, dengan memisahkan data atau aplikasi itu sendiri dan menyebar pekerjaan di beberapa sistem
·         Mengoptimalkan penggunaan sistem tunggal
·         Meningkatkan keandalan atau ketersediaan dari aplikasi atau beban kerja dengan pengulangan

Beberapa peralatan komputer dapat divirtualisasikan. Contoh peralatan komputer yang dapat divirtualisasikan adalah
·         Server. Mulai dari perspektif akses dan manajemen, sebuah server fisik tunggal dapat menjadi beberapa server yang biasa disebut dengan virtual server atau virtual machine (VM)
·         Desktop. Mirip dengan virtualisasi server, virtualisasi desktop dapat berarti dua hal. Yang pertama, memungkinkan pengguna untuk menjalankan beberapa sistem operasi desktop (Apple Mac OS dan Microsoft Windows OS) di dalam komputer yang sama. Yang kedua virtualisasi memungkinkan data dan layanan yang dimiliki oleh pengguna diletakkan di komputer yang digunakan bersama dengan data dan layanan milik orang lain.
·         Storage. Satu tempat penyimpanan fisik dapat terlihat menjadi beberapa driver virtual. Dengan kata lain, dengan menggunakan windows yang terpisah di console manajemen yang umum, administrator IT dapat memperlakukan drive virtual seperti drive fisik.
·         Application. Saat memvirtualisasi, aplikasi yang ditulis untuk sebuah lingkungan sistem operasi dapat dijalankan di lingkungan operasi yang lain untuk meningkatkan kecocokan aplikasi dan kemudahan pengelolaan. Operasi akan diarahkan ke sistem operasi yang sesuai.
·         Network. Di dalan jaringan, sebuah router fisik dapat mendukung beberapa, alamat IP untuk membuat router virtual. Sama seperti sebuah switch Ethernet fisik dapat mendukung beberapa alamat MAC (media access control) untuk membuat switch virtual. Sebuah hardware fisik dapat dibagi menjadi beberapa router atau switch virtual untuk mengurangi biaya.


Distributed Computing

Pengertian
Komputasi terdistribusi adalah bagian dari bidang ilmu komputer, yang menjelaskan tentang studi didistribusikan sistem. Sebuah sistem terdistribusi adalah sebuah sistem perangkat lunak, yang terletak pada komputer jaringan komunikasi dan mengkoordinasi dengan menggunakan pesan. Komponen dalam interaksi satu dengan lainnya bertujuan untuk mencapai tujuan yang sama.

Tujuan dan Keuntungan
Tujuan utama dari sistem komputasi terdistribusi adalah untuk menghubungkan setiap pengguna dengan sumber daya yang terpisah secara fisik ke dalam suatu sistem dengan menggunakan cara yang terkoordinasi. Dan dengan memerlukan kapasitas yang lebih besar dari kapasitas individual komponennya.
Openness merupakan properti dari sistem terdistribusi dimana setiap sub-sistem secara terus-menerus terbuka untuk berinteraksi dengan sistem yang lain. Salah satu masalah yang dihadapi dalam usaha menyatukan sumber daya yang terpisah ini antara lain adalah skalabilitas, dapat atau tidaknya sistem tersebut dikembangkan lebih jauh untuk mencakup sumber daya komputasi yang lebih banyak.
Konsekuensinya, sistem terdistribusi terbuka memberikan beberapa tantangan berikut:
·         Monotonicity.
Sesuatu yang telah dipublikasikan dalam sistem terbuka (open system) maka tidak dapat diambil kembali.
·         Pluralism.
Sub-sistem-subsistem berbeda dalam sistem open distributed dapat mempunyai informasi yang berbeda, dan mungkin menyebabkan konflik. Tidak ada pengatur kebenaran sentral dalam sistem open distributed.
·         Unbounded nondeterminism.
Subsistem-subsistem dapat naik dan turun, dan link komunikasi dapat masuk dan keluar antar sub-sistem dalam sistem open distributed. Karena itu, waktu yang diperlukan untuk menyelesaikan suatu operasi tidak dapat dibatasi dan dipastikan.

Kelemahan dan Kerugian
Jika tidak direncanakan dengan tepat, suatu distributed system dapat menurunkan reliabilitas total dari komputasi jika ketidak-tersediaan dari suatu node dapat menyebabkan gangguan bagi node-node lain. Troubleshooting dan diagnosing terhadap masalah dalam distributed system dapat menjadi lebih sulit, karena perlu analisis yang berkaitan dengan node jauh atau menginspeksi komunikasi antar node di dalam sistem.
Banyak tipe komputasi tidak cocok bagi lingkungan terdistribusi, biasanya yang berhubungan dengan jumlah komunikasi jaringan atau sinkronisasi yang dibutuhkan antar node. Jika bandwidth, latency, atau persyaratan komunikasi begitu signifikan, maka tidak ada keuntungan dari distributed computing dan kinerja dapat lebih burukk daripada lingkungan non-distributed.

Arsitektur
Terdapat banyak arsitektur dari perangkat keras dan perangkat lunak yang sangat bervariasi dan digunakan untuk distributed computing atau komputasi terdistribusi. Pada tingkat yang rendah, perlu adanya penghubung antara CPU dengan CPU lainnya yang berjumlah banyak. Pada tingkat yang lebih tinggi perlu dibutuhkannya interkoneksi untuk menghubungkan CPU yang ada dengan sistem komunikasi
Arsitektur umun yang digunakan oleh Distributed Computing atau Komputasi Terdistribusi yaitu sebagai berikut :
1. Client-server : klien menghubungi server untuk pengambilan data, kemudian server memformatnya dan menampilkannya ke pengguna.
2. 3-tier architecture : Kebanyakan aplikasi web adalah 3-Tier.
3. N-tier architecture : N-Tier biasanya menunjuk ke aplikasi web yang menyalurkan lagi permintaan kepada pelayanan enterprise. Aplikasi jenis ini paling berjasa bagi kesuksesanserver aplikasi.
4. Tightly coupled (clustered) : biasanya menunjuk kepada satu set mesin yang sangat bersatu yang menjalankan proses yang sama secara paralel, membagi tugas dalam bagian-bagian, dan kemudian mengumpulkan kembali dan menyatukannya sebagai hasil akhir.
5. Peer-to-peer : sebuah arsitektur di mana tidak terdapat mesin khusus yang melayani suatu pelayanan tertentu atau mengatur sumber daya dalam jaringan. Dan semua kewajiban dibagi rata ke seluruh mesin, yang dikenal sebagai peer.
6. Space based : Mengacu ke suatu infrastruktur yang membuat ilusi atau virtualisasi dari satu ruang-alamat (address-space) tunggal. Data secara transparan direplikasi sesuai dengan kebutuhan aplikasi.
7. Mobile code : berdasarkan prinsip arsitektur mendekatkan pemrosesan ke sumber data
8. Replicated repository : Di mana repository dibuat replikanya dan disebarkan ke dalam sistem untuk membantu pemrosesan online/offline dengan syarat keterlambatan pembaharuan data dapat diterima.


Map Reduce

Definisi
Setiap istilah perlu definisi, dan harus ada kesepakatan akan definisi tersebut biar tidak terjadi salah pengertian ataupun salah paham diantara para pengguna istilah tersebut. MapReduce pun punya definisi. MapReduce adalah model pemrograman rilisan Google yang ditujukan untuk memproses data berukuran raksasa secara terdistribusi dan paralel dalam cluster yang terdiri atas ribuan komputer. Dalam memproses data, secara garis besar MapReduce dapat dibagi dalam dua proses yaitu proses Map dan proses Reduce. Kedua jenis proses ini didistribusikan atau dibagi-bagikan ke setiap komputer dalam suatu cluster (kelompok komputer yang salih terhubung) dan berjalan secara paralel tanpa saling bergantung satu dengan yang lainnya. Proses Map bertugas untuk mengumpulkan informasi dari potongan-potongan data yang terdistribusi dalam tiap komputer dalam cluster. Hasilnya diserahkan kepada proses Reduce untuk diproses lebih lanjut. Hasil proses Reduce merupakan hasil akhir yang dikirim ke pengguna.

Desain dan Struktur, MapReduce itu sederhana.
Dari definisinya, MapReduce mungkin terkesan sangat ribet. Untuk memproses sebuah data raksasa, data itu harus dipotong-potong kemudian dibagi-bagikan ke tiap komputer dalam suatu cluster. Lalu proses Map dan proses Reduce pun harus dibagi-bagikan ke tiap komputer dan dijalankan secara paralel. Terus hasil akhirnya juga disimpan secara terdistribusi. Benar-benar terkesan merepotkan.
Beruntunglah, MapReduce telah didesain sangat sederhana alias simple. Untuk menggunakan MapReduce, seorang programer cukup membuat dua program yaitu program yang memuat kalkulasi atau prosedur yang akan dilakukan oleh proses Map dan Reduce. Jadi tidak perlu pusing memikirkan bagaimana memotong-motong data untuk dibagi-bagikan kepada tiap komputer, dan memprosesnya secara paralel kemudian mengumpulkannya kembali. Semua proses ini akan dikerjakan secara otomatis oleh MapReduce yang dijalankan diatas Google File System.


Program yang memuat kalkulasi yang akan dilakukan dalam proses Map disebut Fungsi Map, dan yang memuat kalkulasi yang akan dikerjakan oleh proses Reduce disebut Fungsi Reduce. Jadi, seorang programmer yang akan menjalankan MapReduce harus membuat program Fungsi Map dan Fungsi Reduce.
Fungsi Map bertugas untuk membaca input dalam bentuk pasangan Key/Value, lalu menghasilkan output berupa pasangan Key/Value juga. Pasangan Key/Value hasil fungsi Map ini disebut pasangan Key/Value intermediate. Kemudian, fungsi Reduce akan membaca pasangan Key/Value intermediate hasil fungsi Map, dan menggabungkan atau mengelompokkannya berdasarkan Key tersebut. Lain katanya, tiap Value yang memiliki Key yang sama akan digabungkan dalam satu kelompok. Fungsi Reduce juga menghasilkan output berupa pasangan Key/Value.
Untuk memperdalam pemahaman, mari kita simak satu contoh. Taruhlah kita akan membuat program MapReduce untuk menghitung jumlah tiap kata dalam beberapa file teks yang berukuran besar. Dalam program ini, fungsi Map dan fungsi Reduce dapat didefinisikan sebagai berikut:

      map(String key, String value):
            //key : nama file teks.
            //value: isi file teks tersebut.
            for each word W in value:
                  emitIntermediate(W,"1");
      reduce(String key, Iterator values):
            //key : sebuah kata.
            //values : daftar yang berisi hasil hitungan.
            int result = 0;
            for each v in values:
                  result+=ParseInt(v);
            emit(AsString(result));

Hasil akhir  dari program ini adalah jumlah dari tiap kata yang terdapat dalam file teks yang dimasukkan sebagai input program ini.



NoSQL

Apa Itu noSQL Databases?
Database noSQL adalah Database yang tidak memiliki perintah SQL dan konsep penyimpanannya semistuktural atau tidak struktural dan tidak harus memiliki relasi seperti layaknya tabel-tabel MySQL.
Tujuan dari penggunaan database noSQL adalah untuk model data spesifik dan memiliki skema fleksibel dalam membuat aplikasi modern. Kebanyakan dalam beberapa kasus penggunaan Database noSQl berfungsi dalam pengembangan real time application.
Cara kerja database noSQL yakni dengan menggunakan berbagai model database untuk mengelolah dan mengakses data, seperti document, key-value, grapik, in-memory dan search-engine.
Kita akan mengulas beberapa model database noSQL diatas.
Document, mendefenisikan database sebagai dokumen artinya penyimpanan data dan proses manipulasinya dalam bentuk objek dokument. Contoh objek dokument yang sering diterapkan dalam pemograman adalah format Json. Konsep dari Json merupakan konsep data yang efesien dalam pembangunan aplikasi karena Json memiliki sifat yang fleksible, semi struktur dan hirarki. Sehingga memungkinkan program akan lebih mudah dikembangkan karena document akan menyusaikan penyimpanan data berdasarkan kebutuhan dari aplikasi. Berikut ini adalah contoh document dengan konsep data Json.
Key-value, defenisi database dengan key-value adalah penyimpanan data dengan dengan metode key-value (nilai kunci) sebagai tempat akses data-data. Contoh database yang manganut konsep key-value adalah dyamondDB.
Grapik, database jenis grafik menggunakan node sebagai entitas data dan edge sebagai hubungan antar entitas. Setiap edge memiliki node awalan dan node akhiran. Edge juga menggambarkan hubungan antara oratua-anak, kepemilikan, tindakan dan lain sebagainya. Tidak ada batasan jumlah suatu node untuk terhubung dengan node lainnya. Tujuan dari database jenis grapik ini adalah jejaring media sosial, grafik pengetahuan dan mesin rekomendasi. Untuk lebih mudah memahi database grafik anda dapat melihat gambar dibawah ini tentang relasi pertemanan.
In-Memory, Database model ini bekerja dengan menyimpan data pada memori utama, yang familiar dengan perangkat keras pasti akan tau apa nama perangakat tersebut? yah… betul nama perangkatnya adalah RAM (Random Access Memory). Dengan penyimpanan data didalam RAM maka aksesnya akan sangat cepat sekali. Tidak ada perangkat disk manapun yang mampu menyaingi kecepatan dari akses langsung ke memori utama (RAM) sekali pun itu SSD (Solid State Disc). Jika demikian bagaimana jika perangkat (server) mati tentunya seluruh data akan hilang. Akan tetapi cara kerja database jenis ini tidak seperti itu sepenuhnya, karna database dala in-memory dapat disimpan dalam sebuah disc penyimpanan layaknya MySQL dan Postgres. Database in-memory cara kerja penyimpanan datanya kedalam sebuah disk yaitu dengan cara pengambilan log dan snapshot. Anda dapat perhatikan gambar dibawah ini untuk menjelaskan cara kerjanya.
Search-Engine, bagi anda yang senang berselancar didunia maya tentunya pernah memakai google untuk mencari suatu informasi yang berupa konten data baik itu berupa text, gambar, vidio dan lain-lain. Dalam hal ini search-engine database digunakan pada saat proses pencarian karena penciptaan dari konsep database search-engine didedikasikan untuk mesin pencari. Cara kerja dari search-engine database digunakan untuk mencari data yang sangat panjang, besar dan tidak terstruktur yakni dengan menggunakan index sebagai sumber informasi untuk pengoptimalan pencarian.


DAFTAR PUSTAKA

https://www.dewaweb.com/blog/cloud-computing/

http://id.m.wikipedia.org/wiki/Komputasi_grid

http://syahrulzzadie.blogspot.com/2014/10/pengertian-cloud-compunting-grid.html?m=1

http://speedradene.blogspot.com/2013/04/grid-pengertiankelebihandan-kekurangan.html?m=1

http://mersannurhakim.blogspot.com/2015/06/apa-itu-grid-computing.html

https://sis.binus.ac.id/2014/10/11/konsep-dasar-virtualisasi/

http://jaisicamm.blogspot.com/2015/02/distributed-parallel-computing.html

http://www.teknologi-bigdata.com/2013/02/mapreduce-besar-dan-powerful-tapi-tidak.html

https://muhammadiqbal.art.blog/2019/08/23/apa-itu-database-nosql-dan-jenis-jenis-database-nosql/