Tampilkan postingan dengan label TUGAS KULIAH. Tampilkan semua postingan
Tampilkan postingan dengan label TUGAS KULIAH. Tampilkan semua postingan

[SOFTSKILL] Parallel Computation


PENGERTIAN KOMPUTASI PARALEL               

       Secara umum Komputasi paralel adalah salah satu teknik melakukan komputasi secara bersamaan dengan memanfaatkan beberapa komputer independen secara bersamaan. Ini umumnya diperlukan saat kapasitas yang diperlukan sangat besar, baik karena harus mengolah data dalam jumlah besar (di industri keuangan, bioinformatika, dll) ataupun karena tuntutan proses komputasi yang banyak. Kasus kedua umum ditemui di kalkulasi numerik untuk menyelesaikan persamaan matematis di bidang fisika, kimia dan lain-lain.
          Untuk melakukan aneka jenis komputasi paralel ini diperlukan infrastruktur mesin paralel yang terdiri dari banyak komputer yang dihubungkan dengan jaringan dan mampu bekerja secara paralel untuk menyelesaikan satu masalah. Untuk itu diperlukan aneka perangkat lunak pendukung yang biasa disebut sebagai middleware yang berperan untuk mengatur distribusi pekerjaan antar node dalam satu mesin paralel. Selanjutnya pemakai harus membuat pemrograman paralel untuk merealisasikan komputasi. Tidak berarti dengan mesin paralel semua program yang dijalankan diatasnya otomatis akan diolah secara parallel.
           Di dalam komputasi parallel ada yang dinamakan dengan pemrograman parallel. Pemrograman paralel adalah teknik pemrograman komputer yang memungkinkan eksekusi perintah/operasi secara bersamaan (komputasi paralel), baik dalam komputer dengan satu (prosesor tunggal) ataupun banyak (prosesor ganda dengan mesin paralel) CPU. Bila komputer yang digunakan secara bersamaan tersebut dilakukan oleh komputer-komputer terpisah yang terhubung dalam suatu jaringan komputer lebih sering istilah yang digunakan adalah sistem terdistribusi.
              Parallel processing berbeda dengan multitasking, yaitu satu CPU mengeksekusi beberapa program sekaligus. Parallel processing disebut juga parallel computing. Pada system komputasi parallel terdiri dari beberapa unit prosesor dan beberapa unit memori. Ada dua teknik yang berbeda untuk mengakses data di unit memori, yaitu shared memory address dan message passing. Berdasarkan cara mengorganisasikan memori ini computer parallel dibedakan menjadi shared memory parallel machine dan distributed memory parallel machine.
       Prosesor dan memori ini didalam mesin paralel dapat dihubungkan (interkoneksi) secara statis maupun dinamis. Interkoneksi statis umumnya digunakan oleh distributed memory system (sistem memori terdistribusi). Sambungan langsung peer to peer digunakan untuk menghubungkan semua prosesor. Interkoneksi dinamis umumnya menggunakan switch untuk menghubungkan antar prosesor dan memori.

Terdapat dua hukum yang berlaku dalam komputasi parallel processing. yaitu:
  • Hukum Amdahl
Amdahl berpendapat, “Peningkatan kecepatan secara paralel akan menjadi linear, melipatgandakan kemampuan proses sebuah komputer dan mengurangi separuh dari waktu proses yang diperlukan untuk menyelesaikan sebuah masalah.”
  • Hukum Gustafson
Pendapat yang dikemukakan Gustafson hampir sama dengan Amdahl, tetapi dalam pemikiran Gustafson, sebuah komputasi paralel berjalan dengan menggunakan dua atau lebih mesin untuk mempercepat penyelesaian masalah dengan memperhatikan faktor eksternal, seperti kemampuan mesin dan kecepatan proses tiap-tiap mesin yang digunakan

A. Parallelism Concept 

Komputasi paralel merupakan salah satu teknik komputasi, dimana proses komputasinya dilakukan oleh beberapa resources ( komputer ) yang independen, secara bersamaan. Komputasi paralel biasanya diperlukan pada saat terjadinya pengolahan data dalam jumlah besar ( di industri keuangan, bioinformatika, dll ) atau dalam memenuhi proses komputasi yang sangat banyak. Selanjutnya, komputasi paralel ini juga dapat ditemui dalam kasus kalkulasi numerik dalam penyelesaian persamaan matematis di bidang fisika ( fisika komputasi ), kimia ( kimia komputasi ), dll. Dalam menyelesaikan suatu masalah, komputasi paralel memerlukan infrastruktur mesin paralel yang terdiri dari banyak komputer yang dihubungkan dengan jaringan dan mampu bekerja secara paralel.Untuk itu diperlukan aneka perangkat lunak pendukung yang biasa disebut sebagai middleware yang berperan untuk mengatur distribusi pekerjaan antar node dalam satu mesin paralel. Selanjutnya pemakai harus membuat pemrograman paralel untuk merealisasikan komputasi. Tidak berarti dengan mesin paralel semua program yang dijalankan diatasnya otomatis akan diolah secara paralel. Pemrograman paralel adalah teknik pemrograman komputer yang memungkinkan eksekusi perintah / operasi secara bersamaan ( komputasi paralel ), baik dalam komputer dengan satu ( prosesor tunggal ) ataupun banyak ( prosesor ganda dengan mesin paralel ) CPU. Bila komputer yang digunakan secara bersamaan tersebut dilakukan oleh komputer-komputer terpisah yang terhubung dalam suatu jaringan komputer lebih sering istilah yang digunakan adalah sistem terdistribusi ( distributed computing ). Tujuan utama dari pemrograman paralel adalah untuk meningkatkan performa komputasi. Semakin banyak hal yang bisa dilakukan secara bersamaan ( dalam waktu yang sama ), semakin banyak pekerjaan yang bisa diselesaikan.

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

B. Distributed Processing 

Pemrosesan paralel adalah pendekatan komputasi untuk meningkatkan tingkat di mana satu set data diolah dengan pengolahan bagian yang berbeda dari data pada waktu yang sama secara simultan atau bersamaan pada sebuah komputer dan berfungsi memecah beban besar menjadi beberapa beban kecil untuk mempercepat proses penyelesaian masalah.
Didistribusikan pengolahan paralel menggunakan pemrosesan paralel pada beberapa mesin. Salah satu contoh dari hal ini adalah bagaimana beberapa komunitas memungkinkan pengguna untuk mendaftar dan mendedikasikan komputer mereka sendiri untuk memproses beberapa data set yang diberikan kepada mereka oleh server. Ketika ribuan pengguna mendaftar untuk ini, banyak data dapat diproses dalam jumlah yang sangat singkat.
Tipe lain dari komputasi paralel yang kadang-kadang disebut “didistribusikan” adalah gagasan dari sebuah komputer paralel cluster. Sebuah cluster akan banyak CPU terhubung melalui kecepatan tinggi koneksi ethernet ke hub sentral (Server) yang memberi masing-masing beberapa pekerjaan yang harus dilakukan. Metode cluster mirip dengan metode yang dijelaskan dalam paragraf di atas, kecuali bahwa semua CPU secara langsung terhubung ke server, dan satu-satunya tujuan mereka adalah untuk melakukan perhitungan yang diberikan kepada mereka.
Parallel distributed computing dapat dibentuk dari :
–          Ada : digunakan konsep pertemuan yang menggabungkan fitur RPC dan  monitor.
–          PVM (Parallel Virtual Machine) untuk mendukung workstation clusters
–          MPI (Message-Passing Interface) programming GUI untuk parallel computers.


C. Architectural Parallel Computer 

  • SISD Yang merupakan singkatan dari Single Instruction, Single Data adalah satu-satunya yang menggunakan arsitektur Von Neumann. Ini dikarenakan pada model ini hanya digunakan 1 processor saja. Oleh karena itu model ini bisa dikatakan sebagai model untuk komputasi tunggal. Sedangkan ketiga model lainnya merupakan komputasi paralel yang menggunakan beberapa processor. Beberapa contoh komputer yang menggunakan model SISD adalah UNIVAC1, IBM 360, CDC 7600, Cray 1 dan PDP 1.
  • SIMD Yang merupakan singkatan dari Single Instruction, Multiple Data. SIMD menggunakan banyak processor dengan instruksi yang sama, namun setiap processor mengolah data yang berbeda. Sebagai contoh kita ingin mencari angka 27 pada deretan angka yang terdiri dari 100 angka, dan kita menggunakan 5 processor. Pada setiap processor kita menggunakan algoritma atau perintah yang sama, namun data yang diproses berbeda. Misalnya processor 1 mengolah data dari deretan / urutan pertama hingga urutan ke 20, processor 2 mengolah data dari urutan 21 sampai urutan 40, begitu pun untuk processor-processor yang lain. Beberapa contoh komputer yang menggunakan model SIMD adalah ILLIAC IV, MasPar, Cray X-MP, Cray Y-MP, Thingking Machine CM-2 dan Cell Processor (GPU).
  • MISD Yang merupakan singkatan dari Multiple Instruction, Single Data. MISD menggunakan banyak processor dengan setiap processor menggunakan instruksi yang berbeda namun mengolah data yang sama. Hal ini merupakan kebalikan dari model SIMD. Untuk contoh, kita bisa menggunakan kasus yang sama pada contoh model SIMD namun cara penyelesaian yang berbeda. Pada MISD jika pada komputer pertama, kedua, ketiga, keempat dan kelima sama-sama mengolah data dari urutan 1-100, namun algoritma yang digunakan untuk teknik pencariannya berbeda di setiap processor. Sampai saat ini belum ada komputer yang menggunakan model MISD.
  • MIMD Yang merupakan singkatan dari Multiple Instruction, Multiple Data. MIMD menggunakan banyak processor dengan setiap processor memiliki instruksi yang berbeda dan mengolah data yang berbeda. Namun banyak komputer yang menggunakan model MIMD juga memasukkan komponen untuk model SIMD. Beberapa komputer yang menggunakan model MIMD adalah IBM POWER5, HP/Compaq AlphaServer, Intel IA32, AMD Opteron, Cray XT3 dan IBM BG/L.
  • Singkatnya untuk perbedaan antara komputasi tunggal dengan komputasi paralel, bisa digambarkan pada gambar di bawah ini: 
Gambar 1 Penyelesaian Sebuah Masalah pada Komputasi Tunggal 
                   Gambar 2 Penyelesaian Sebuah Masalah pada Komputasi Paralel
Dari perbedaan kedua gambar di atas, kita dapat menyimpulkan bahwa kinerja komputasi paralel lebih efektif dan dapat menghemat waktu untuk pemrosesan data yang banyak daripada komputasi tunggal.
Dari penjelasan-penjelasan di atas, kita bisa mendapatkan jawaban mengapa dan kapan kita perlu menggunakan komputasi paralel. Jawabannya adalah karena komputasi paralel jauh lebih menghemat waktu dan sangat efektif ketika kita harus mengolah data dalam jumlah yang besar. Namun keefektifan akan hilang ketika kita hanya mengolah data dalam jumlah yang kecil, karena data dengan jumlah kecil atau sedikit lebih efektif jika kita menggunakan komputasi tunggal.

D. Pengantar Thread Programming 

Dalam pemrograman komputer, sebuah thread adalah informasi terkait dengan penggunaan sebuah program tunggal yang dapat menangani beberapa pengguna secara bersamaan. Dari program point-of-view, sebuah thread adalah informasi yang dibutuhkan untuk melayani satu pengguna individu atau permintaan layanan tertentu. Jika beberapa pengguna menggunakan program atau permintaan bersamaan dari program lain yang sedang terjadi, thread yang dibuat dan dipelihara untuk masing-masing proses. Thread memungkinkan program untuk mengetahui user sedang masuk didalam program secara bergantian dan akan kembali masuk atas nama pengguna yang berbeda. Salah satu informasi thread disimpan dengan cara menyimpannya di daerah data khusus dan menempatkan alamat dari daerah data dalam register. Sistem operasi selalu menyimpan isi register saat program interrupted dan restores ketika memberikan program kontrol lagi.
Sebagian besar komputer hanya dapat mengeksekusi satu instruksi program pada satu waktu, tetapi karena mereka beroperasi begitu cepat, mereka muncul untuk menjalankan berbagai program dan melayani banyak pengguna secara bersamaan. Sistem operasi komputer memberikan setiap program “giliran” pada prosesnya, maka itu memerlukan untuk menunggu sementara program lain mendapat giliran. Masing-masing program dipandang oleh sistem operasi sebagai suatu tugas dimana sumber daya tertentu diidentifikasi dan terus berlangsung. Sistem operasi mengelola setiap program aplikasi dalam sistem PC (spreadsheet, pengolah kata, browser Web) sebagai tugas terpisah dan memungkinkan melihat dan mengontrol item pada daftar tugas. Jika program memulai permintaan I / O, seperti membaca file atau menulis ke printer, itu menciptakan thread. Data disimpan sebagai bagian dari thread yang memungkinkan program yang akan masuk kembali di tempat yang tepat pada saat operasi I / O selesai. Sementara itu, penggunaan bersamaan dari program diselenggarakan pada thread lainnya. Sebagian besar sistem operasi saat ini menyediakan dukungan untuk kedua multitasking dan multithreading. Mereka juga memungkinkan multithreading dalam proses program agar sistem tersebut disimpan dan  menciptakan proses baru untuk setiap thread.

E. Static Threading

Teknik ini biasa digunakan untuk komputer dengan chip multiprocessors dan jenis komputer shared-memory lainnya. Teknik ini memungkinkan thread berbagi memori yang tersedia, menggunakan program counter dan mengeksekusi program secara independen. Sistem operasi menempatkan satu thread pada prosesor dan menukarnya dengan thread lain yang hendak menggunakan prosesor itu.
Mekanisme ini terhitung lambat, karenanya disebut dengan static. Selain itu teknik ini tidak mudah diterapkan dan rentan kesalahan. Alasannya, pembagian pekerjaan yang dinamis di antara thread-thread menyebabkan load balancing-nya cukup rumit. Untuk memudahkannya programmer harus menggunakan protocol komunikasi yang kompleks untuk menerapkan scheduler load balancing. Kondisi ini mendorong pemunculan concurrency platforms yang menyediakan layer untuk mengkoordinasi, menjadwalkan, dan mengelola sumberdaya komputasi paralel.
Sebagian platform dibangun sebagai runtime libraries atau sebuah bahasa pemrograman paralel lengkap dengan compiler dan pendukung runtime-nya.

F. Dynamic Multithreading

Teknik ini merupakan pengembangan dari teknik sebelumnya yang bertujuan untuk kemudahan karena dengannya programmer tidak harus pusing dengan protokol komunikasi, load balancing, dan kerumitan lain yang ada pada static threading. Concurrency platform ini menyediakan scheduler yang melakukan load balacing secara otomatis. Walaupun platformnya masih dalam pengembangan namun secara umum mendukung dua fitur : nested parallelism dan parallel loops. Nested parallelism memungkinkan sebuah subroutine di-spawned (ditelurkan dalam jumlah banyak seperti telur katak) sehingga program utama tetap berjalan sementara subroutine menghitung hasilnya. Sedangkan parallel loops seperti halnya fungsi for namun memungkinkan iterasi loop dilakukan secara bersamaan.

G. Pengantar 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.
Sejarah OpenMP dimulai dari diterbitkannya API pertama untuk Fotran 1.0 pada Oktober 1997 oleh OpenMP Architecture Review Board (ARB). Oktober tahun berikutnya OpenMP Architecture Review Board (ARB) merilis standart C / C++. Pada tahun 2000 mengeluarkan versi 2.0 untuk fotran dan poda tahun 2002 dirilis versi 2.0 untuk C / C++. Pada tahun 2005 dirilis versi 2.5 yang merupakan pengabungan fotran, C, dan C++/ pada mei 2008 versi 3.0 yang terdapat didalmnya konsept tasks dan task construct.
OpenMP mengimplementasi multithreading. Bagian kode yang akan dijalankan secara parallel ditandai sesuai dengan Preprocessor directif sehingga akan membuat thread-thread sebelum dijalnkan. Setiap thread memiliki id yang di buat menggunakan fungsi (omp_get_thread_num() pada C/C++ dan OMP_GET_THREAD_NUM() pada Fortran). Secara default, setiap thread mengeksekusi kode secara parallel dan independent. “Work-sharing constructs” dapat dapat digunakan untuk membagi tugas antar thread sehingga setiap thread menjalankan sesuai bagian alokasi kodenya. Fungsi OpenMP berada pada file header yang berlabel “omp.h” di C / C++.

H. Pengantar Pemograman CUDA GPV 

Sebuah GPU (Graphical Processing Unit) pada awalnya adalah sebuah prosesor yang berfungsi khusus untuk melakukan rendering pada kartu grafik saja, tetapi seiring dengan semakin meningkatnya kebutuhan rendering, terutama untuk mendekati waktu proses yang realtime /sebagaimana kenyataan sesungguhnya, maka meningkat pula kemampuan prosesor grafik tersebut. akselerasi peningkatan teknologi GPU ini lebih cepat daripada peningkatan teknologi prosesor sesungguhnya (CPU), dan pada akhirnya GPU menjadi General Purpose, yang artinya tidak lagi hanya untuk melakukan rendering saja melainkan bisa untuk proses komputasi secara umum.
penggunaan Multi GPU dapat mempercepat waktu proses dalam mengeksekusi program karena arsitekturnya yang natively parallel. Selain itu Peningkatan performa yang terjadi tidak hanya berdasarkan kecepatan hardware GPU saja, tetapi faktor yang lebih penting adalah cara membuat kode program yang benarbenar bisa efektif berjalan pada Multi GPU.
CUDA merupakan teknologi anyar dari produsen kartu grafis Nvidia, dan mungkin belum banyak digunakan orang secara umum. Kartu grafis lebih banyak digunakan untuk menjalankan aplikasi game, namun dengan teknologi CUDA ini kartu grafis dapat digunakan lebih optimal ketika menjalankan sebuah software aplikasi. Fungsi kartu grafis Nvidia digunakan untuk membantu Processor (CPU) dalam melakukan kalkulasi dalam proses data.
CUDA merupakan singkatan dari Compute Unified Device Architecture,didefinisikan sebagai sebuah arsitektur komputer parallel, dikembangkan oleh Nvidia. Teknologi ini dapat digunakan untuk menjalankan proses pengolahan gambar, video, rendering 3D, dan lain sebagainya. 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.
Keuntungan dengan CUDA sebenarnya tidak luput dari teknologi aplikasi yang ada. CUDA akan mempercepat proses aplikasi tertentu, tetapi tidak semua aplikasi yang ada akan lebih cepat walaupun sudah mengunakan fitur CUDA. Hal ini tergantung seberapa cepat procesor yang digunakan, dan seberapa kuat sebuah GPU yang dipakai. Dan bagian terpenting adalah aplikasi apa yang memang memanfaatkan penuh kemampuan GPU dengan teknologi CUDA. Kedepan seperti pengembang software Adobe akan ikut memanfaatkan fitur CUDA pada aplikasi mereka. Jawaban akhir adalah, untuk memanfaatkan CUDA kembali melihat aplikasi software yang ada. Apakah software yang ada memang mampu memanfaatkan CUDA dengan proses melalui GPU secara penuh. Hal tersebut akan berguna untuk mempercepat selesainya proses pada sebuah aplikasi. Dengan kecepatan proses GPU, aplikasi akan jauh lebih cepat. Khususnya teknologi ilmu pengetahuan dengan ramalan cuaca, simulator pertambangan atau perhitungan yang rumit dibidang keuangan. Sedangkan aplikasi umum sepertinya masih harus menunggu.
Sumber :
  1. http://revaayusentika.blogspot.com/2017/05/parallel-computation.html
  2. https://myoanita.wordpress.com/2016/05/02/pengantar-thread-programming/
  3. http://irfanprijanto.blogspot.com/2016/06/message-passing-dan-openmp.html
  4. http://repository.uksw.edu/handle/123456789/3854
Pengantar Quantum Computation

Pengantar Quantum Computation

PENDAHULUAN

Pengertian Quantum Computing

    Merupakan alat hitung yang menggunakan mekanika kuantum seperti superposisi dan keterkaitan, yang digunakan untuk peng-operasi-an data. Perhitungan jumlah data pada komputasi klasik dihitung dengan bit, sedangkan perhitungan jumlah data pada komputer kuantum dilakukan dengan qubit. Prinsip dasar komputer kuantum adalah bahwa sifat kuantum dari partikel dapat digunakan untuk mewakili data dan struktur data, dan bahwa mekanika kuantum dapat digunakan untuk melakukan operasi dengan data ini. Dalam hal ini untuk mengembangkan komputer dengan sistem kuantum diperlukan suatu logika baru yang sesuai dengan prinsip kuantum.

Sejarah Quantum Computing

    Ide mengenai computer kuantum pertama kali muncul pada tahun 1970-an olehpara fisikawan dan ilmuwan komputer, seperti Charles H. Bennett dari IBM, Paul A. Benioffdari Argonne National Laboratory, Illinois, David Deutsch dari University of Oxford, dan Richard P. Feynman dari California Institute of Technology (Caltech).

  Di antara para ilmuwan tersebut, Feynman lah yang pertama kali mengajukan model yang menunjukkan bahwa sebuah system kuantum dapat digunakan untuk melakukan komputasi. Lebihjauh, Feynman juga menunjukkan bagaimana system tersebut dapat menjadi simulator bagi fisika kuantum. Dengan kata lain, fisikawan dapat melakukan eksperimen fisika kuantum melalui computer kuantum.

  Pada tahun 1985, Deutsch menyadari esensi dari komputasi oleh sebuah computer kuantum dan menunjukkan bahwa semua proses fisika, secara prinsipil, dapat dimodelkan melalui computer kuantum. Dengan demikian, computer kuantum memiliki kemampuan yang melebihi computer klasik. Setelah Deutsch mengeluarkan tulisannya mengenai computer kuantum, para ilmuwan mulai melakukan riset dibidang ini. Mereka mulai mencari kemungkinan penggunaan dari sebuah computer kuantum. Pada tahun 1995, Peter Shor merumuskan sebuah algoritma yang memungkinkan penggunaan computer kuantum untuk memecahkan masalah faktorisasi dalam teori bilangan.

 Hingga saat ini, riset di bidang komputer kuantum terus dijalankan di seluruh dunia.Beberapa kendala terus dicari pernyelesaiannya. Berbagai metode dikembangkan untuk memungkinkan terwujudnya sebuah komputer yang memilki kemampuan yang luar biasa ini. Sejauh ini, sebuah computer kuantum yang telah dibangun hanya dapat mencapai kemampuan untuk memfaktorkan dua digit bilangan. Komputer kuantum ini dibangun pada tahun 1998 di Los Alamos, Amerika Serikat, menggunakan NMR (Nuclear Magnetic Resonance).

Keunggulan Quantum Computing

  Komputer kuantum memanfaatkan sebuah fenomena yang dinamakan super posisi yaitu dalam mekanika kuantum, suatu partikel bias berada dalam dua keadaan sekaligus. Komputer kuantum juga menggunakan Qubits yaitu kemampuan untuk berada di berbagai macam keadaan. Komputer kuantum memiliki potensi untuk melaksanakan berbagai perhitungan secara simultan atau lebih rinci sehingga jauh lebih cepat dari komputer digital. Jadi intinya komputer kuantum lebihbaik kemampuannya dan lebih cepat dibandingkan dengan komputer digital.

Implementasi Quantum Computing

    Pada 19 Nov 2013 Lockheed Martin, NASA dan Google semua memiliki satu misi yang sama yaitu mereka semua membuat komputer kuantum sendiri. Komputer kuantum ini adalah superkonduktor chip yang dirancang oleh sistem D – gelombang dan yang dibuat di NASA Jet Propulsion Laboratories.

   NASA dan Google berbagi sebuah komputer kuantum untuk digunakan di Quantum Artificial Intelligence Lab menggunakan 512 qubit D -Wave Two yang akan digunakan untuk penelitian pembelajaran mesin yang membantu dalam menggunakan jaringan syaraf tiruan untuk mencari set data astronomi planet ekstrasurya dan untuk meningkatkan efisiensi searchs internet dengan menggunakan AI metaheuristik di search engine heuristical.

   A.I. seperti metaheuristik dapat menyerupai masalah optimisasi global mirip dengan masalah klasik seperti pedagang keliling, koloni semut atau optimasi swarm, yang dapat menavigasi melalui database seperti labirin. Menggunakan partikel terjerat sebagai qubit, algoritma ini bisa dinavigasi jauh lebih cepat daripada komputer konvensional dan dengan lebih banyak variabel.

  Penggunaan metaheuristik canggih pada fungsi heuristical lebih rendah dapat melihat simulasi komputer yang dapat memilih sub rutinitas tertentu pada komputer sendiri untuk memecahkan masalah dengan cara yang benar-benar cerdas . Dengan cara ini mesin akan jauh lebih mudah beradaptasi terhadap perubahan data indrawi dan akan mampu berfungsi dengan jauh lebih otomatisasi daripada yang mungkin dengan komputer normal.

Perbandingan Dengan Komputer Konvensional

  Quantum Computer dapat memproses jauh lebih cepat daripada komputer konvensional. Pada dasarnya, quantum computer dapat memproses secara paralel, sehingga berkomputasi jauh lebih cepat. Quantum Computer dapat jauh lebih cepat dari komputer konvensional pada banyak masalah, salah satunya yaitu masalah yang memiliki sifat berikut: 

  • Satu-satunya cara adalah menebak dan mengecek jawabannya berkali-kali
  • Terdapat n jumlah jawaban yang mungkin
  • Setiap kemungkinan jawaban membutuhkan waktu yang sama untuk mengeceknya
  • Tidak ada petunjuk jawaban mana yang kemungkinan benarnya lebih besar: memberi jawaban dengan asal tidak berbeda dengan mengeceknya dengan urutan tertentu.  
Sumber :

Tutorial Stream Menggunakan VLC di PC & Android




Apa itu  VLC Media Player...?
VLC Media Player adalah aplikasi pemutar multimedia segala platform yang bisa kamu dapatkan secara gratis dan bersifat open source. Aplikasi yang satu ini sangat portable dan mendukung berbeagai ekstensi audio dan video, seperti MPEG-1, MPEG-2, MPEG-4, DivX, mp3, ogg, dll. Aplikasi ini juga bisa digunakan untuk server streaming dalam unicast atau multicast ang bekerja dengan IPv4 atau IPv6 pada jaringan dengan bandwirh yang tinggi.

Apa itu Stream...?
Streaming adalah sebuah teknologi untuk memainkan file video atau audio secara langsung ataupun dengan pre-recorder dari sebuah mesin server (web server) . Dengan kata lain, file video ataupun audio yang terletak dalam sebuah server dapat secara langsung pada browser saat proses buffering mulai berjalan. File video atau audio di stream, akan berbentuk sebuah buffer di komputer client, dan data video – audio tersebut akan mulai di download ke dalam buffer yang telah terbentuk pada mesin client. Dalam waktu sepersekian detik, buffer telah terisi penuh dan secara otomatis file videoaudio langsung dijalankan oleh sistem. Sistem akan membaca informasi dari buffer dan tetap melakukan proses download file, sehingga proses streaming tetap berlangsung ke computer client.

Bagaimana itu bisa bekerja

  1. Server and ClientVideo streaming terbentuk hanya karena terdapat server (memiliki jaringan serta ruang penyimpanan yang besar) dan klien (PC pribadi) yang dapat berkomunikasi dalam bentuk bit. Video Streaming bukanlah tentang bagaimana Anda dapat membaca file video yang sebenarnya, namun lebih merupakan metode pengiriman media antara dua computer.
  2. Mentransfer Bit dan BytesServer menyimpan file video yang berisi beberapa bit dan byte – byte kode. Kode – kode ini berisi petunjuk agar pada saat yg sama computer
  3. Membaca dan Menerima FilmSetelah server melakukan koneksi dengan remote client (komputer pribadi), ia mulai  mentransfer instruksi untuk memutar video di computer dalam bentuk kode stream yang berukuran kecil. Kode-kode tersebut ditransfer dalam suatu paket melalui jaringan dan di load dalam memory computer. Komputer memproses kode-kode video da kemudian menampilkannya pada layar.
  4. Memerlukan BufferComputer menyimpan dan mengolah kode-kode video dalam file buffer, sehingga tidak harus terus menerus harus tersambung ke server. Jika koneksi terputus untuk sementara, maka server akan mengetahui sampai sejuh mana file berhasil di buffer, untuk kemudian server amakn mengirimkan kode-kode selanjutnya untuk memutar video. Komputer mendownload dan menyimpan kode-kode video dalam buffer dengan baik secara terus menerus hingga video siap dimainkan di layar.
  5. Format dan Media PlayerUntuk membaca kode-kode file yang diterima dari server tersebut, diperlukan suatu cara.  Jika kita langsung membukanya pada computer, Anda tidak akan tahu bahwa file tersebut adalah file video. Jadi computer menggunakan suatu perangkat lunak yang disebut media player untuk menampilkan kode-kode tersebut pada layar.Ada banyak aplikasi player yang ada, dan sebelumnya kedua server dan PC client harus mempunyai persetujuan mengenai perungkat lunak yang dapat digunakan untuk menampilkan video.
Cara Install VLC di PC







Cara Streaming VLC di PC


  • Langkah pertama adalah mengkoneksikan internet, internet yang digunakan tidak perlu adanya data kuota hanya cukup koneksi saja sebagai media transmisinya.


  • Langkah kedua buka VLC klik media > pilih Stream. Atau tekan Ctrl+S


  • Langkah Selanjutnya Klik "Add"


  • Pilih Video yang ingin diputar.


  • Setelah memilih video maka akan muncul link di tabel file selection, kemudian klik "Stream"



  • Pada tab sebelah kanan pilih "HTTP"


  • Biarkan port 8080 tidak perlu diubah, kemudian klik next.


  • Pilih format videonya, pilih yang sesuai dengan gambar diatas.


  • Kemudian centang "Stream all elemntary streams" klik stream.


  • langkah Selanjutnya cek IP address di cmd, dengan perinth "ipconfg". Kemudian cari IP komputer anda.



  • Langkah Selanjutnya masukan IP address anda. Jika berhasil Video akan mucul pilihan ingin di download atau di putar.


Cara Streaming VLC di Android



  • langkah pertama download VLC di Play Store.


  • langah selanjutnya buka VLC dan pilih Stream.


  • masukan IP address dan portnya.


  • maka video akan menstream video yang dipilih di pc sebelumnya.
Demikian Penjelasan tentang VLC dan Streaming semoga tutorial diatas dapat berguna untuk semuanya...

Pengantar Komputasi Cloud

A. Pendahuluan

Perkembangan teknologi di era ini menggunakan konsep – konsep seperti social networking, open, share, colaborations, mobile, easy maintenance, one click, terdistribusi, scalability, concurency, dan transparan. Sampai saat ini trend teknologi Cloud Computing masih terus diteliti dalam penelitian – penelitian para pakar IT dunia. Dengan berbagai kelebihan dan kekurangan, Cloud Computing hadir dengan memudahkan akses data dari mana saja dan kapan saja, karena dengan memanfaatkan internet dan menggunakan perangkat fixed atau mobile device menggunakan internet cloud sebagai tempat penyimpanan data, aplikasi dan lainya. Teknologi ini akan memberikan banyak keuntungan baik dari sisi pemberi layanan (provider) atau dari sisi user. Penerapan teknologi ini memberikan dampak yang sangat signifikan bagi pengembangan teknologi itu sendiri, baik dari sisi pengguna maupun dari sisi industri.

Pengguna diuntungkan dengan semakin mudahnya memperoleh atau mengunduh data secara cepat dan mudah karena banyak layanan yang dibuka oleh pihak industri. Keuntungan bagi pihak industri pun tidak kalah besar dengan kemudahan yang didapat oleh pengguna, karena dengan semakin majunya teknologi cloud computing akan semakin memudahkan industri untuk memasarkan produk dan menyebarkan informasi secara meluas keseluruh penjuru dunia. Secara umum, definisi cloud computing (komputasi awan) merupakan gabungan pemanfaatan teknologi komputer (komputasi) dalam suatu jaringan dengan pengembangan berbasis internet (awan) yang mempunyai fungsi untuk menjalankan program atau aplikasi melalui komputer – komputer yang terkoneksi pada waktu yang sama, tetapi tak semua yang terkonekasi melalui internet menggunakan cloud computing.

Teknologi komputer berbasis sistem Cloud ini merupakan sebuah teknologi yang menjadikan internet sebagai pusat server untuk mengelola data dan juga aplikasi pengguna. Teknologi ini mengizinkan para pengguna untuk menjalankan program tanpa instalasi dan mengizinkan pengguna untuk mengakses data pribadi mereka melalui komputer dengan akses internet.

<Manfaat Cloud Computing Serta Penerapan Dalam Kehidupan Sehari – hari

Setelah penjabaran definisi singkat diatas tentu penggunaan teknologi dengan sistem cloud cukup memudahkan pengguna selain dalam hal efisiensi data, juga penghematan biaya. Berikut manfaat manfaat yang dapat dipetik lewat teknologi berbasis sistem cloud.

  • Semua Data Tersimpan di Server Secara Terpusat

Salah satu keunggulan teknologi cloud adalah memungkinkan pengguna untuk menyimpan data secara terpusat di satu server berdasarkan layanan yang disediakan oleh penyedia layanan Cloud Computing itu sendiri. Selain itu, pengguna juga tak perlu repot repot lagi menyediakan infrastruktur seperti data center, media penyimpanan/storage dll karena semua telah tersedia secara virtual.

  • Keamanan Data

Keamanan data pengguna dapat disimpan dengan aman lewat server yang disediakan oleh penyedia layanan Cloud Computing seperti jaminan platform teknologi, jaminan ISO, data pribadi, dll.

  •  Fleksibilitas dan Skalabilitas yang Tinggi

Teknologi Cloud menawarkan fleksibilitas dengan kemudahan data akses, kapan dan dimanapun kita berada dengan catatan bahwa pengguna (user) terkoneksi dengan internet. Selain itu, pengguna dapat dengan mudah meningkatkan atau mengurangi kapasitas penyimpanan data tanpa perlu membeli peralatan tambahan seperti hardisk. Bahkan salah satu praktisi IT kenamaan dunia, mendiang Steve Jobs mengatakan bahwa membeli memori fisik untuk menyimpan data seperti hardisk merupakan hal yang percuma jika kita dapat menyimpan nya secara virtual/melalui internet.

  • Investasi Jangka Panjang

Penghematan biaya akan pembelian inventaris seperti infrastruktur, hardisk, dll akan berkurang dikarenakan pengguna akan dikenakan biaya kompensasi rutin per bulan sesuai dengan paket layanan yang telah disepakati dengan penyedia layanan Cloud Computing. Biaya royalti atas lisensi software juga bisa dikurangi karena semua telah dijalankan lewat komputasi berbasis Cloud.

Penerapan Cloud Computing telah dilakukan oleh beberapa perusahaan IT ternama dunia seperti Google lewat aplikasi Google Drive, IBM lewat Blue Cord Initiative, Microsoft melalui sistem operasi nya yang berbasis Cloud Computing, Windows Azure dsb. Di kancah nasional sendiri penerapan teknologi Cloud juga dapat dilihat melalui penggunaan Point of Sale/program kasir.

Salah satu perusahaan yang mengembangkan produknya berbasis dengan sistem Cloud adalah DealPOS. Metode kerja Point of Sale (POS) ini adalah dengan mendistribusikan data penjualan toko retail yang telah diinput oleh kasir ke pemilik toko retail melalui internet dimanapun pemilik toko berada.  Selain itu, perusahaan telekomunikasi ternama nasional, Telkom juga turut mengembangkan sistem komputasi berbasis Cloud ini melalui Telkom Cloud dengan program Telkom VPS dan Telkom Collaboration yang diarahkan untuk pelanggan UKM (Usaha Kecil-Menengah).

Cara Kerja Sistem Cloud Computing

Sistem Cloud bekerja menggunakan internet sebagai server dalam mengolah data. Sistem ini memungkinkan pengguna untuk login ke internet yang tersambung ke program untuk menjalankan aplikasi yang dibutuhkan tanpa melakukan instalasi. Infrastruktur seperti media penyimpanan data dan juga instruksi/perintah dari pengguna disimpan secara virtual melalui jaringan internet kemudian perintah – perintah tersebut dilanjutkan ke server aplikasi. Setelah perintah diterima di server aplikasi kemudian data diproses dan pada proses final pengguna akan disajikan dengan halaman yang telah diperbaharui sesuai dengan instruksi yang diterima sebelumnya sehingga konsumen dapat merasakan manfaatnya.

Contohnya lewat penggunaan email seperti Yahoo ataupun Gmail. Data di beberapa server diintegrasikan secara global tanpa harus mendownload software untuk menggunakannya. Pengguna hanya memerlukan koneksi internet dan semua data dikelola langsung oleh Yahoo dan juga Google. Software dan juga memori atas data pengguna tidak berada di komputer tetapi terintegrasi secara langsung melalui sistem Cloud menggunakan komputer yang terhubung ke internet.

Kekurangan Cloud Computing:

Hal yang paling wajib dalam cloud computing adalah koneksi internet, internet bisa dibilang jalan satu – satunya untuk menuju ke cloud computing, ketika tidak ada koneksi internet ditempat kita berada, maka jangan harap bisa menggunakan sistem cloud computing. Hal ini masih menjadi hambatan khususnya bagi Indonesia, karena belum semua wilayah di tanah air terjangkau oleh akses internet, ditambah lagi sekalipun ada koneksi internet, koneksinya belum stabil dan kurang memadai. Kerahasiaan dan keamanan adalah salah satu hal yang paling diragukan pada komputasi awan. Karena dengan menggunakan sistem cloud computing ini berarti kita mempercayakan sepenuhnya atas keamanan dan kerahasiaan data – data kepada perusahaan penyedia server komputasi awan (cloud computing). Contoh yang paling sederhana adalah ketika anda menyimpan foto – foto anda di facebook dengan beberapa konfigurasi privasi yang diberikan kepada kita, maka selebihya kita mempercayakan keamanan file – file tersebut kepada facebook. Andaikata foto – foto tersebut hilang kita tidak bisa menuntut karena kita memanfaatkan jasa tersebut secara cuma – cuma alias gratis.
Gambar Komputasi cloud

B. Virtualisasi 

Ada dua istilah yang populer saat ini dalam hal teknologi komputasi, yaitu Virtualisasi dan Cloud computing, namun saat ini sepertinya banyak yang menganggap bahwa virtualisasi dan cloud computing adalah hal yang sama, padahal sebenarnya cloud computing itu lebih dari sekedar virtualisasi.

Virtualisasi adalah sebuah teknologi yang memungkinkan untuk membuat versi virtual dari sesuatu yang bersifat fisik, misalnya sistem operasi, storage data atau sumber daya jaringan. Proses tersebut dilakukan oleh sebuah software atau firmware bernama Hypervisor atau Virtual Machine Monitor (VMM). Hypervisor inilah yang menjadi nyawanya virtualisasi, karena dialah layer yang “berpura – pura” menjadi sebuah infrastruktur untuk menjalankan beberapa virtual machine. Dengan virtualisasi, beberapa sistem operasi dapat berjalan secara bersamaan pada satu buah komputer. Hal ini tentunya dapat mengurangi biaya yang harus dikeluarkan oleh sebuah perusahaan. Di masa akan datang, teknologi virtualisasi akan banyak digunakan baik oleh perusahaan yang bergerak dibidang teknologi informasi maupun yang tidak murni bergerak di bidang teknologi informasi namun menggunakan teknologi informasi sebagai sarana untuk memajukan usahanya.

Menurut Robert P. Goldberg dalam tesisnya yang berjudul Architectural Principles For Virtual Computer Systems menyebutkan bahwa tipe-tipe dari Hypervisor ada 2 yaitu:


  1. Type 1 berjalan pada fisik komputer yang ada secara langsung. Pada jenis ini hypervisor/VMM benar-benar mengontrol perangkat keras dari komputer host-nya. Termasuk mengontrol sistem operasi-sistem operasi guest-nya. Contoh implementasi yang ada adalah KVM dan OpenVZ. Adapun contoh yang lain seperti VMWare ESXi, Microsoft Hyper-V.



        2. Type 2 berjalan pada sistem operasi diatasnya. Pada tipe ini sistem operasi guest berada                        diatas sistem operasi host. Contoh tipe ini adalah VirtualBox.


Tujuan dari virtualisasi :
  • 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 pekerjaan atau aplikasi yang satu dengan yang lainnya untuk meningkatkan keamanan dan kemudahan pengelolaan 
  • Isolasi aplikasi dari sistem operasi, memungkinkan aplikasi untuk tetap berfungsi meskipun dirancang untuk sistem operasi dengan tipe yang 
  • Meningkatkan jumlah orang yang dapat didukung oleh aplikasi, dengan mengijinkan untuk menjalan aplikasi dari mesin-mesin yang berbeda secara 
  • Mengurangi waktu yang diperkukan untuk menjalankan aplikasi, dengan memisahkan data atau aplikasi itu sendiri dan menyebar pekerjaan di beberapa 
  • Mengoptimalkan penggunaan sistem tunggal


Adapun beberapa peralatan yang digunakan untuk virualisasi, yaitu :
  1. Server. Mulai dari perspektif akses dan manajemen, sebuah server fisik tunggal dapat menjadi beberapa server yang biasa disebut dengan virtual server atau virtual machine (
  2. 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 
  3. 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 
  4. 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 
  5. 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.
#YudhaSG
#4IA19
#PengantarKomputasiCloud
#PengantarKomputasiModern

Referensi:
  1. Rahmahto, A. P,Cloud Computing, Teknologi Komputasi Masa Depan,(Jakarta:PT Gramedia, 2011)
  2. Purbo W Onno, Membuat sendiri Cloud Computing Server menggunakan Open Source,(Jakarta: Andi Publisher,2012)
  3. https://id.wikipedia.org/wiki/Komputasi (Diakses Pada Tanggal 3 April 2019)
  4. http://pusatteknologi.com/pengertian-manfaat-cara-kerja-dan-contoh-cloud-computing.html (Diakses Pada Tanggal 3 April 2019)
  5. http://kitatkj2.blogspot.com/2014/05/pengertian-virtualisasi.html (Diakses Pada Tanggal 3 April 2019)