Rabu, 10 Juli 2019

Parallel Computation


Pengertian Komputasi Paralel

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.
Di dalam komputasi parallel ada yang dinamakan dengan pemrograman parallel. Pemrograman paralel adalah teknik pemrograman komputer yang memungkinkan eksekusi perintah atau 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 digunakanadalah sistem terdistribusi (distributed computing).
Perlu diingat adalah komputasi paralel berbeda dengan multitasking. Pengertian multitasking adalah komputer dengan processor tunggal mengeksekusi beberapa tugas secara bersamaan. Walaupun beberapa orang yang bergelut di bidang sistem operasi beranggapan bahwa komputer tunggal tidak bisa melakukan beberapa pekerjaan sekaligus, melainkan proses penjadwalan yang berlakukan pada sistem operasi membuat komputer seperti mengerjakan tugas secara bersamaan. Sedangkan komputasi paralel sudah dijelaskan sebelumnya, bahwa komputasi paralel menggunakan beberapa processor atau komputer.Selain itu komputasi paralel tidak menggunakan arsitektur Von Neumann.

Tujuan Komputasi Paralel


Tujuan utama penggunaan komputasi paralel adalah untuk mempersingkat waktu eksekusi  program yang menggunakan komputasi serial. Beberapa alasan lain yang menjadikan suatu  program menggunakan komputasi paralel antara lain :
1.     Untuk permasalahan yang besar, terkadang sumber daya komputasi yang ada sekarang belum cukup mampu untuk mendukung penyelesaian terhadap permasalahan tersebut.
2.     Adanya sumber daya non-lokal yang dapat digunakan melalui jaringan atau internet.
3.     Penghematan biaya pengadaan perangkat keras, dengan menggunakan beberapa mesin yang murah sebagai alternatif penggunaan satu mesin yang bagus tapi mahal, walaupun menggunakan sebuah prosesor.
4.     Adanya keterbatasan kapasitas memori pada mesin untuk komputasi serial.

Hambatan Komputasi Paralel


Penggunaan komputasi paralel sebagai solusi untuk mempersingkat waktu yang dibutuhkan untuk eksekusi program mempunyai beberapa hambatan. Hambatan-hambatan tersebut antara lain adalah
1.     Hukum Amdahl
percepatan waktu eksekusi program dengan menggunakan komputasi paralel tidak akan pernah mencapai kesempurnaan karena selalu ada bagian program yang harus dieksekusi secara serial.

2.     Hambatan yang diakibatkan karena beban jaringan
dalam eksekusi program secara paralel, prosesor yang berada di mesin yang berbeda memerlukan pengiriman dan  penerimaan data (atau instruksi) melalui jaringan. Untuk program yang dibagi menjadi task-task yang sering membutuhkan sinkronisasi, network latency menjadi masalah utama. Permasalahan ini muncul karena ketika suatu task membutuhkan data dari task yang lain, state ini dikirimkan melalui jaringan di mana kecepatan transfer data kurang dari kecepatan prosesor yang mengeksekusi instruksi task  .
Hal ini menyebabkan task tersebut harus menunggu sampai data sampai terlebih dahulu, sebelum mengeksekusi instruksi selanjutnya. Jumlah waktu yang dibutuhkan untuk berkomunikasi melalui jaringan antar dua titik adalah jumlah dari startup time, per-hop time, dan per-word transfer time.

3.     Hambatan yang terkait dengan beban waktu untuk inisiasi task, terminasi task, dan sinkronisasi.

Distributed Processing
Konsep Distribusi Processing atau lebih dikenal dengan Distributed Processing yaitu 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.

Arsitektur Komputasi Paralel


Taksonomi Flynn membagi arsitektur komputer paralel dengan menggunakan sudut pandang instruksi dan data, sehingga terdapat empat jenis arsitektur komputer paralel :
1.   SISD (Single Instruction, Single Data) : arsitektur ini adalah arsitektur yang mewakili komputer serial, di mana hanya ada satu prosesor dan satu aliran masukan data (memori) sehingga hanya ada satu task yang dapat dieksekusi pada suatu waktu. Arsitektur von Neumann termasuk dalam jenis ini.

2.   SIMD (Single Instruction, Multiple Data) : pada arsitektur ini, eksekusi sebuah instruksi akan dilakukan secara bersamaan oleh beberapa prosesor, di mana suatu prosesor dapat menggunakan data yang berbeda dengan prosesor lain. Karakteristik lain dari arsitektur ini adalah alur eksekusi instruksi yang deterministik (state dari instruksi dan data pada suatu waktu dapat dengan mudah diketahui). Arsitektur ini cocok untuk program yang dapat dibagi menjadi task-task yang mempunyai derajat keteraturan yang tinggi, misalnya sistem pengolah grafik.

3.     MISD (Multiple Instruction, Single Data) : pada arsitektur ini, berbagai instruksi akan dieksekusi secara bersamaan oleh beberapa prosesor dengan menggunakan data yang sama. Arsitektur ini kurang populer karena hanya sedikit permasalahan yang membutuhkan solusi dengan menggunakan karakteristik arsitektur ini. Contoh permasalahan yang mungkin membutuhkan arsitektur ini antara lain adalah multiple frequency filter dan program pemecah sandi yang menggunakan beberapa algoritma kriptografi sekaligus.

4.  MIMD (Multiple Instruction, Multiple Data) : pada arsitektur ini, berbagai instruksi dapat dieksekusi oleh beberapa prosesor di mana masing-masing prosesor dapat menggunakan data yang berbeda. Eksekusi instruksi pada arsitektur ini dapat dilakukan secara sinkron (pada suatu rentang waktu, jumlah instruksi yang dieksekusi oleh semua prosesor adalah sama) maupun asinkron, deterministik maupun non-deterministik. Selain itu, arsitektur ini dapat melakukan pekerjaan sesuai dengan karakteristik dari ketiga asitektur sebelumnya.

Arsitektur Memori pada Komputasi Paralel


Pada umumnya, ada dua buah arsitektur memori pada komputer paralel, yaitu shared memory dan distributed memory.
1.     Shared memory
arsitektur ini menyediakan global addressing sehingga berbagai prosesor mempunyai cara pengaksesan memori yang seragam. Setiap perubahan pada suatu lokasi memori oleh suatu prosesor akan selalu terlihat oleh prosesor lain. Kelebihan dari arsitektur ini antara lain adalah pengaksesan memori yang user friendly dan performansi yang baik dalam penggunaan data bersama antar task. Sedangkan kekurangannya antara lain adalah kurangnya skalabilitas ketika terjadi penambahan prosesor, di mana akan terjadi peningkatan traffic antara prosesor ke shared memory dan antara cache coherent system dengan memori sebenarnya.

§  Berdasarkan frekuensi akses, ada dua jenis shared memory :Uniform Memory Access (UMA) : setiap prosesor memiliki hak pengaksesan yang seragam dengan prosesor lain
§  Non Uniform Memory Access (NUMA) : tidak semua prosesor memiliki hak yang sama dalam mengakses memori

2.     Distributed memory 
arsitektur ini mempunyai karakteristik di mana setiap prosesor memiliki memorinya masing-masing, sehingga eksekusi instruksi dapat berjalan secara independen antara satu prosesor dengan yang lain. Prosesor akan menggunakan jaringan ketika membutuhkan akses ke memori non lokal. Akses ini sepenuhnya menjadi tanggung jawab  penulis program. Kelebihan dari arsitektur ini adalah terjaganya skalabilitas ketika terjadi  penambahan prosesor. Sedangkan kekurangannya adalah penulis program harus berurusan dengan detail komunikasi data antara prosesor dan memori non lokal.

Pengantar Thread Programming
Dalam pemrograman komputer, sebuah thread adalah informasi terkait dengan penggunaan sebuah program tunggal yang dapat menangani beberapa pengguna secara bersamaan. Dari program point-of-view, sebuah thread adalah informasi yang dibutuhkan untuk melayani satu pengguna individu atau permintaan layanan tertentu. Jika beberapa pengguna menggunakan program atau permintaan bersamaan dari program lain yang sedang terjadi, thread yang dibuat dan dipelihara untuk masing-masing proses. Thread memungkinkan program untuk mengetahui user sedang masuk didalam program secara bergantian dan akan kembali masuk atas nama pengguna yang berbeda. Salah satu informasi thread disimpan dengan cara menyimpannya di daerah data khusus dan menempatkan alamat dari daerah data dalam register. Sistem operasi selalu menyimpan isi register saat program interrupted dan restores ketika memberikan program kontrol lagi.

Sebagian besar komputer hanya dapat mengeksekusi satu instruksi program pada satu waktu, tetapi karena mereka beroperasi begitu cepat, mereka muncul untuk menjalankan berbagai program dan melayani banyak pengguna secara bersamaan. Sistem operasi komputer memberikan setiap program “giliran” pada prosesnya, maka itu memerlukan untuk menunggu sementara program lain mendapat giliran. Masing-masing program dipandang oleh sistem operasi sebagai suatu tugas dimana sumber daya tertentu diidentifikasi dan terus berlangsung. Sistem operasi mengelola setiap program aplikasi dalam sistem PC (spreadsheet, pengolah kata, browser Web) sebagai tugas terpisah dan memungkinkan melihat dan mengontrol item pada daftar tugas. Jika program memulai permintaan I / O, seperti membaca file atau menulis ke printer, itu menciptakan thread. Data disimpan sebagai bagian dari thread yang memungkinkan program yang akan masuk kembali di tempat yang tepat pada saat operasi I / O selesai. Sementara itu, penggunaan bersamaan dari program diselenggarakan pada thread lainnya. Sebagian besar sistem operasi saat ini menyediakan dukungan untuk kedua multitasking dan multithreading. Mereka juga memungkinkan multithreading dalam proses program agar sistem tersebut disimpan dan  menciptakan proses baru untuk setiap thread.

Static Threading

Teknik ini biasa digunakan untuk komputer dengan chip multiprocessors dan jenis komputer shared-memory lainnya. Teknik ini memungkinkan thread berbagi memori yang tersedia, menggunakan program counter dan mengeksekusi program secara independen. Sistem operasi menempatkan satu thread pada prosesor dan menukarnya dengan thread lain yang hendak menggunakan prosesor itu.

Mekanisme ini terhitung lambat, karenanya disebut dengan static. Selain itu teknik ini tidak mudah diterapkan dan rentan kesalahan. Alasannya, pembagian pekerjaan yang dinamis di antara thread-thread menyebabkan load balancing-nya cukup rumit. Untuk memudahkannya programmer harus menggunakan protocol komunikasi yang kompleks untuk menerapkan scheduler load balancing. Kondisi ini mendorong pemunculan concurrency platforms yang menyediakan layer untuk mengkoordinasi, menjadwalkan, dan mengelola sumberdaya komputasi paralel.
Sebagian platform dibangun sebagai runtime libraries atau sebuah bahasa pemrograman paralel lengkap dengan compiler dan pendukung runtime-nya.

Dynamic Multithreading

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

Sebagaimana telah kita ketahui bahwa Cuda adalah platform komputasi paralel dan model pemrograman yang diciptakan oleh perusahaan perangkat keras dunia yaitu NVIDIA. hal ini memungkinkan peningkatan dramatis dalam kinerja komputasi dengan memanfaatkan kekuatan dari Graphics Processing Unit(GPU).

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

Paralelisme

Paralelisme (parallelism) lahir dari pendekatan yang biasa dipergunakan oleh para perancang sistem untuk menerapkan konsep pemrosesan konkuren. Teknik ini meningkatkan kecepatan proses dengan cara memperbanyak jumlah modul perangkat keras yang dapat beroperasi secara simultan disertai dengan membentuk beberapa proses yang bekerja secara simultan pada modul-modul perangkat keras tersebut. Secara formal, pemrosesan parallel adalah sebuah bentuk efisien pemrosesan informasi yang menekankan pada eksploitasi dari konkurensi kejadian-kejadian dalam proses komputasi.Pemrosesan paralel dapat terjadi pada beberapa tingkatan (level) proses. Tingkatan tertinggi pemrosesan paralel terjadi pada proses di antara banyak job (pekerjaan) atau pada program yang menggunakan multiprogramming, time sharing, dan multiprocessing.    

 Multiprogramming kemampuan eksekusi terhadap beberapa proses perangkat lunak dalam sebuah system secara serentak, jika dibandingkan dengan sebuah proses dalam satu waktu, dan timesharing berarti menyediakan pembagian selang waktu yang tetap atau berubah-ubah untuk banyak program. Multiprocessing adalah dukungan sebuah sistem untuk mendukung lebih dari satu prosesor dan mengalokasikan tugas kepada prosesor-prosesor tersebut. Multiprocessing sering diimplementasikan dalam perangkat keras (dengan menggunakan beberapa CPU sekaligus), sementara multiprogramming sering digunakan dalam perangkat lunak. Sebuah sistem mungkin dapat memiliki dua kemampuan tersebut, salah satu di antaranya, atau tidak sama sekali. Pemrosesan paralel dapat juga terjadi pada proses di antara prosedurprosedur atau perintah perintah (segmen program) pada sebuah program.Untuk meningkatkan kecepatan proses komputasi, dapat ditempuh dua cara :

Peningkatan kecepatan perangkat keras.

Komponen utama perangkat keras komputer adalah processor. Meskipun kecepatan processor dapat ditingkatkan terus, namun karena keterbatasan materi pembuatnya, tentu ada suatu batas kecepatan yang tak mungkin lagi dapat dilewati. Karena itu timbul ide pembuatan komputer multiprocessor. Dengan adanya banyak processor dalam satu komputer, pekerjaan bisa dibagi-bagi kepada masing-masing processor. Dengan demikian lebih banyak proses dapat dikerjakan dalam satu saat. Peningkatan kecepatan setiap proses bisa dicapai melalui peningkatan kecepatan perangkat lunak. Kecepatan perangkat lunak sangat ditentukan oleh algoritmanya.

Peningkatan kecepatan perangkat lunak.

Program komputer untuk komputer sekuensial harus menyediakan sederetan operasi untuk dikerjakan oleh prosesor tunggal. Program komputer untuk komputer paralel harus menyediakan sederetan operasi untuk beberapa prosesor untuk dikerjakan secara paralel, termasuk operasi untuk mengatur dan mengitegrasikan prosesor-prosesor yang terpisah tersebut mengerjakan suatu komputasi yang koheren. Kebutuhan akan pembuatan dan pengaturan berbagai aktivitas komputasi paralel menambah dimensi baru proses dari pemrograman komputer. Algoritma untuk problem yang spesifik harus diformulasikan sedemikian rupa, agar menghasilkan aliran operasi paralel yang kemudian akan dieksekusi di prosesor yang berbeda. Karena itu, meskipun arsitektur multiprosesor dan multikomputer mempunyai pontensi yang tinggi untuk meningkatkan kemampuan komputasi, potensi ini akan tercapai melalui pengertian yang baik mengenai bahasa pemrograman paralel dan perancangan algoritma paralel.

Tingkat Paralelisme

Berdasarkan tingkat paralelismenya prosesor paralel dapat dibagi menjadi beberapa tingkat sebagai berikut :
1. Komputer Array :
a. Prosesor array : beberapa prosesor yang bekerja sama untuk mengolah set instruksi yang sama dan data yang berbeda – beda atau biasa disebut SIMD (Single Instruction-stream Multiple Data)
b. Prosesor vektor : beberapa prosesor yang disusun seperti pipeline.
2. Multiprosesor, yaitu sebuah sistem yang memiliki 2 prosesor atau lebih yang saling berbagi memori.
3. Multikomputer, yaitu sebuah sistem yang memiliki 2 prosesor atau lebih yang masing-masing prosesor memiliki memori sendiri.

Referensi :

#DianPramesti
#4IA19
#ParallelComputation
#PengantarKomputasiModern

Jumat, 24 Mei 2019

Pengantar Quantum Computation


#DIANPRAMESTI
#4IA19
#PENGANTARQUANTUMCOMPUTATION
#PENGANTARCOMPUTASIMODERN

Pengertian Quantum Computation

Komputer kuantum adalah alat hitung yang menggunakan sebuah fenomena mekanika kuantum, misalnya superposition dan entanglement, untuk melakukan operasi data. Dalam komputasi klasik, jumlah data dihitung dengan bit; dalam komputer kuantum, hal ini 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.

Implementasi Quantum Computation

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.

Algoritma pada Quantum Computation
Para ilmuwan mulai melakukan riset mengenai sistem kuantum tersebut, mereka juga berusaha untuk menemukan logika yang sesuai dengan sistem tersebut. Sampai saat ini telah dikemukaan dua algoritma baru yang bisa digunakan dalam sistem kuantum yaitu algoritma shor dan algoritma grover.
·        Algoritma Shor
Algoritma yang ditemukan oleh Peter Shor pada tahun 1995. Dengan menggunakan algoritma ini, sebuah komputer kuantum dapat memecahkan sebuah kode rahasia yang saat ini secara umum digunakan untuk mengamankan pengiriman data. Kode yang disebut kode RSA ini, jika disandikan melalui kode RSA, data yang dikirimkan akan aman karena kode RSA tidak dapat dipecahkan dalam waktu yang singkat. Selain itu, pemecahan kode RSA membutuhkan kerja ribuan komputer secara paralel sehingga kerja pemecahan ini tidaklah efektif.
·        Algoritma Grover
Algoritma Grover adalah sebuah algoritma kuantum yang menawarkan percepatan kuadrat dibandingkan pencarian linear klasik untuk list tak terurut. Algoritma Grover menggambarkan bahwa dengan menggunakan pencarian model kuantum, pencarian dapat dilakukan lebih cepat dari model komputasi klasik. Dari banyaknya algoritma kuantum, algoritma grover akan memberikan jawaban yang benar dengan probabilitas yang tinggi. Kemungkinan kegagalan dapat dikurangi dengan mengulangi algoritma. Algoritma Grover juga dapat digunakan untuk memperkirakan rata-rata dan mencari median dari serangkaian angka, dan untuk memecahkan masalah Collision.
Bila kita menggunakan komputer konvensional untuk melakukan pemfaktoran bilangan-bilangan besar, setiap penambahan digit akan melipatduakan waktu yang dibutuhkan untuk menemukan faktor-faktornya. Sebaliknya, waktu untuk melakukan pemfaktoran dengan menggunakan komputer kuantum hanya akan bertambah panjang secara konstan bila sebuah digit ditambahkan ke bilangan yang akan difaktorkan tersebut.
Dan dengan komputer ini, hanya butuh beberapa menit saja! Inilah Komputer Kuantum, Quantum Computer
Kegunaan quantum komputation

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.
Kelebihan dan Kekurangan Quantum Computation
Jika komputer kuantum dapat dibangun, sangat berguna untuk decoding dan encoding informasi rahasia. Komputer kuantum juga bisa digunakan untuk mencari database besar di sebagian kecil dari waktu yang jika menggunakan komputer konvensional akan memerlukan waktu yang sangat lama, komputer kuantum juga untuk mempelajari mekanika kuantum, atau bahkan merancang komputer kuantum lainnya. Komputer kuantum dalam satu langkah komputasi dapat melakukan operasi matematis pada 2N input berlainan yang tersimpan dalam superposisi koheren N qubit. Untuk melakukan hal yang sama, suatu komputer konvensional harus mengulang operasi sejumlah 2N kali atau harus digunakan 2N prosesor konvensional yang bekerja bersamaan. komputer kuantum melakukan semua perhitungan secara bersamaan (karena ada multiple states semuaperhitungan dapat berlangsung secara simultan di semua state). Komputer kuantum dengan jumlah transistor yang sama dengan komputer sekarang bisa lebih cepat jutaan kali. 30 qubit komputer kuantum bisa menghasilkan 10 terflops atau 10 bilyun operasi poin-mengambang per detik.
Tapi komputasi kuantum masih dalam tahap awal pengembangan, pun begitu telah banyak ilmuwan komputer meyakini teknologi masa depan ini sangat dibutuhkan untuk membuat sebuah komputer kuantum praktis, yang mana harus memiliki setidaknya beberapa lusin qubit, sehingga dapat memecahkan berbagai masalah dunia maya dan dunia nyata. ).komputer kuantum Belum merupakan sebuah perangkat yang bisa digunakan, namun untuk komputasi kuantum (sebuah sistem perangkat keras dan lunak yang akan membuat perangkat komputer kuantum) sudah ada perusahaan yang telah didirikan termasuk D-wave System.

Daftar Pustaka :

Jumat, 12 April 2019

TUTORIAL STREAMING MENGGUNAKAN VLC



VLC Media Player memiliki banyak pengguna, dengan kelebihannya sebagai salah satu media player yang mendukung hampir semua format video, termasuk juga audio. Program media player ini bekerja stabil, dapat digunakan pada berbagai platform, dan memberikan layanan fitur-fitur yang menarik. Apabila digunakan sebagai default media player, Anda akan jarang menemui saat dimana VLC tidak support pada suatu format video.

Selain itu, VLC juga dapat memainkan film DVD. Anda akan menemukan kontrol yang mudah serta efek di dalam VLC, seperti brightness, contrast, saturation, equalizer, blur, motion blur, color removal, dan masih banyak lainnya. Satu fitur yang menarik adalah kemampuan VLC Media Player dalam memaksimalkan volume 200% lebih besar dari volume normal.

Banyak sekali hal yang dapat dilakukan oleh aplikasi ini. Mungkin fitur-fitur yang disebutkan di atas sering atau terkadang biasa Anda gunakan. Namun, di samping fitur-fitur tersebut, VLC memiliki kemampuan yang di luar dugaan, dan mungkin jarang atau tidak pernah Anda gunakan, atau bisa juga Anda tidak mengetahuinya. Sebagai media player populer dengan banyak pengguna, tentu saja VLC memiliki kelebihan-kelebihan tersendiri. Paseban akan menampilkan hal-hal yang dapat dilakukan VLC, yang mungkin tidak Anda ketahui dan belum pernah menggunakannya.

Rip DVD

VLC memiliki dasar untuk dapat menjadi DVD ripper. Anda mungkin tidak pernah menggunakannya karena ada program DVD ripper yang lebih baik tersedia dalam komputer. Tetapi, Anda akan menemukan fakta bahwa Anda dapat menentukan kualitas video yang disesuaikan dengan VLC, agar maksimal saat dimainkan menggunakan VLC. Untuk melakukan rip video, pergilah ke menu Media dan pilih Convert, Save, kemudian pilih tab Disc. Di sini Anda dapat memulai proses rip, kemudian jika pengaturan telah selesai, klik Save.

Merekam video

Dengan VLC, Anda dapat merekam video pada saat playback. Tombol merekam disembunyikan secara default. Untuk memunculkannya, klik pada View dan kemudian Advance Control. Tombol merekam sekarang telah muncul. Klik pada tombol tersebut ketika memainkan video dan VLC akan mulai merekamnya. Klik kembali untuk menghentikan proses perekaman video.

Memainkan file RAR

Apakah Anda mengetahui jika VLC dapat memainkan video yang terkompresi dalam file RAR? VLC dapat memainkan video tersebut sama baiknya seperti memainkan video biasa. Jika file RAR terbagi dalam beberapa file, hal tersebut tidak menjadi masalah. Cukup load part pertama dan VLC akan otomatis mengambil part-part untuk memainkan file.

Memainkan video dalam mode ASCII

VLC memiliki kemampuan yang unik, untuk memainkan video dalam mode ASCII. Untuk mengaktifkan mode ASCII, buka VLC media player dan klik pada Tools kemudian Preferences. Buka area video dan di bawah Output pilih Color ASCII art video output dari menu. Sekarang, Anda dapat menikmati video dalam mode ASCII.

Mendengarkan radio online

VLC memiliki layanan yang terhubung dengan banyak stasiun radio online. Anda cukup mengaktifkannya melalui Media, lalu menuju ke Services Discovery dan kemudian Shoutcast radio listings. Sekarang, buka Playlist dan pilih stasiun radio yang Anda inginkan.

Convert video dan audio

Di dalam VLC, Anda dapat melakukan convert file video dan audio dari satu format ke format lainnya, dengan format yang berbeda-beda seperti MP4, WMV, OGG, MP3, dan sebagainya. Untuk mengakses fitur converter, kunjungi Media, kemudian Convert/Save. Pilih file yang Anda inginkan untuk di-convert, lalu klik Convert. Sekarang pilih format output dan pilih lokasi file.

Download YouTube dan situs video online lainnya

Untuk melakukan download pada YouTube, dapatkan URL pada laman YouTube. Sekarang, klik pada Media lalu ke Open Network stream. Setelah itu, paste URL dan klik Play. Saat VLC Media Player memulai streaming video, klik Tools kemudian Codec Information. Di bagian bawah, Anda akan melihat Location, copy URL dan paste ke address bar pada browser. Browser akan dapat melakukan download file yang nantinya dapat Anda simpan. Alternatif, Anda dapat merekam video dari Youtube tersebut.


Bahan yang digunakan :
1. VLC Media Player
Jika kalian belum mempunyai softwarenya makan kalian dapat download disini
 : https://www.videolan.org/vlc/
2.VLC Android
VLC android dapat kalian download pada playstore



3. Sebelum kita melakukan streaming kita harus menyambungkan perangkat mobile dan laptop ke jaringan yang sama , selanjutnya cari software yang sudah kalian download lalu klik kanan dan pilih run as administrator


setelah program terbuka maka windows wizard akan terlihat seperti ini


pilih bahasa indonesia atau bahasa yang kalian bisa




Setelah memilih bahasa kemudian akan tampil seperti gambar di atas.. setelah itu next saja..



Selanjutnya pada langkah ini kita melakukan persetujuan lisensi yang diajukan vlc lalu klik next


selanjutnya muncul pilihan custom program apa saja yang kalian butuhkan pada vlc dan mau di simpan di mana aplikasi tersebut lalu kita klik next saja


tahapan berikut merupakan tahapan dimana software VLC akan di simpan.. saya sendiri di LocalDisk C:/ setelah mengatur tempat penyimpanan kemudian klik install



tunggu higga proses installasi selesai...







Installasi Selesaii... Sekarang VLC sudah ada di Komputer kalian..kemudian bisa langsung jalankan dengan Ceklis Run/Jalankan kemudian finsh..


setelah instalasi VLC telah selesai kemudian koneksikan perangkat ke wifi/jaringan terlebih dahulu seperti gambar berikut ini



setelah menghubungkan ke jaringan buka software/aplikasi VLC nya.. kemudian ikuti langkah seperti gambar di bawah ini.. klik media -> kemudian Stream

setelah klik stream maka akan muncul gambar seperti di bawah ini


Klik add pada tampilan Open Media pada VLC seperti gambar panah di atas


maka akan diminta untuk memilih file/video yang akan di streaming kan.. pilih salah satu dan kemudian open


video yang telah di pilih tadi akan masuk ke dalam list streaming.. kemudian klik next seperti pada gambar panah di atas


pada gambar di atas untuk memastikan bahwa lokasi file yang di upload benar . .. next saja..


pada tampilan berikt ini merupakan pemilihan media berbagi streaming melalui HTTP .. dengan klik dropdown atau arah panah pada keyboard kemudian klik add


gambar di atas menunjukkan untuk port yang nantinya untuk HTTP .. pada kali ini port yang digunakan adalah 8080 setelah itu next


langkah berikutnya pemilihan format untuk streaming yg akan dibuat.. secara default akan menampilkan format MP4 ... next aja


setelah ini maka tahapan stream telah selesai ceklis pada stream all kemudian klik stream di bawah pojok kanan..


kemudian setelah berhasil melakukan konfigurasi stream.. cek ip terlebih dahulu pada komputer/perangkat yang menyediakan layanan stream.. 




dengan masuk ke command prompt(CMD) kemudian ketik ipconfig pada windows dengan maksud ip ini akan digunakan sebagai penghubung HTTP dengan port yang telah di konfigurasi kemudian dibuka pada halaman browser



Pada pilihan stream vlc ketik alamat ip laptop dengan http 192.168.48.21:8080 adalah port yang digunakan pada pc sebagai penghubung jaringan




buka aplikasi VLC yang telah di download dari playstore kemudian klik pada sidebar menu pada aplikasi VLC lalu pilih stream sidebar seperti yang ada pada gambar berikut ini



setelah memilih menu pada sidebar stream maka akan muncul seperti tampilan berikut ini



masukkan IP pada kolom input sesuai IP dan konfigurasi Port pada perangkat PC kemudian klik icon next yang ada pada sebelah kanan


Streaming video sukses

Rabu, 10 April 2019

Pengantar Komputasi Cloud dan Virtualisasi


#DIANPRAMESTI
#4IA19
#PENGANTARKOMPUTASICLOUD
#PENGANTARKOMPUTASIMODERN

KOMPUTASI CLOUD
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
Dengan peningkatan jumlah pemakaian komputer dan para pengguna seluler, penyimpanan data/data storage telah menjadi prioritas di hampir segala bidang bisnis. Bisnis skala besar ataupun skala kecil saat ini sangat berkembang dengan data sebagai pusatnya. Mereka biasanya menghabiskan sejumlah besar uang demi mempertahankan data yang berharga tersebut.
Itulah mengapa sangat diperlukan dukungan IT yang kuat dengan pusat penyimpanan yang berperfoma tinggi. Tidak semua bisnis mampu membayar biaya tinggi infrastruktur IT berjenis in-house. Jadi bagi mereka, Cloud Computing ini menjadi solusi yang bagus karena lebih murah. Mungkin juga ada pertimbangan lain dari perusahaan semacam efisiensi dalam menyimpan data, perhitungan, dan biaya pemeliharaan yang lebih sedikit (hal ini akan kami bahas di bagian penjelasan berikutnya).
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.
Kelebihan Cloud Computing
Sebenarnya, kelebihan utama dari teknologi satu ini adalah potensi penghematan biaya. Maka dari itu ada banyak sekali perusahaan-perusahaan baik dari yang skala bisnisnya kecil hingga besar memakai jasa cloud ini. Komputasi awan ini juga mampu memberi kebebasan bagi penggunanya untuk dapat memakai layanan sesuai kebutuhan masing-masing dan membayar sesuai pemakaian yang ada, jadinya lebih fleksibel. Tanpa menghabiskan banyak sumber daya internal, Anda bisa menjalankan operasi IT dengan baik.
Untuk mengetahui kelebihan teknologi cloud ini, silakan baca poin-poin berikut:
  1. Menurunkan biaya infrastruktur IT (komputer,dll) bagi penggunanya
  2. Meningkatkan kinerja atau performa kerja
  3. Menurunkan resiko perawatan yang sering dan mahal karena jarang ada masalah
  4. Mendapatkan pembaruan instan terhadap software yang ada
  5. Meningkatkan kompatibilitas antar sistem operasi yang dipakai
  6. Menyediakan cadangan/backup dan juga pemulihannya
  7. Meningkatkan skalabilitas
  8. Meningkatkan kapasitas penyimpanan/storage
  9. Meningkatkan keamanan data
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.
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 :

  1. Memungkinkan semua device yang terhubung dengan jaringan untuk mengakses aplikasi melalui jaringan, bahkan jika aplikasi tidak pernah dirancangan untuk dapat bekerja di device tersebut.
  2.  Isolasi beban perkerjaan atau aplikasi yang satu dengan yang lainnya untuk meningkatkan keamanan dan kemudahan pengelolaan lingkungan.
  3.  Isolasi aplikasi dari sistem operasi, memungkinkan aplikas untuk tetap berfungsi meskipun dirancang untuk sistem operasi dengan tipe yang berbeda
  4.  Isolasi aplikasi dari sistem operasi, memungkinkan sebuah aplikasi untuk bekerja di sistem operasi yang asing 
  5. Meningkatkan jumlah orang yang dapat didukung oleh aplikasi, dengan mengijinkan untuk menjalan aplikasi dari mesin-mesin yang berbeda secara bersamaan 
  6. Mengurangi waktu yang diperkukan untuk menjalankan apliksi, dengan memisahkan data atau aplikasi itu sendiri dan menyebar pekerjaan di beberapa sistem 
  7. Mengoptimalkan penggunaan sistem tunggal
  8. Meningkatkan keandalan atau ketersediaan dari aplikasi atau beban kerja dengan pengulangan


Beberapa peralatan komputer dapat divirtualisasikan. Contoh peralatan komputer yang dapat divirtualisasikan adalah

  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 (VM)
  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 lain.
  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 fisik.
  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 sesuai.
  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.


Sumber :