Jumat, 03 Juli 2020

Artikel Parallel Computing


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

APA SIH PARALEL COMPUTING?
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 (fisika komputasi), kimia (kimia komputasi) dll.

KENAPA MEMAKAI PARALLEL COMPUTING?
Tujuan utama penggunaan komputasi paralel adalah untuk mempersingkat waktu eksekusi  program yang menggunakan komputasi serial.

KONSEP PARALEL COMPUTING
Paralel Processing adalah kemampuan menjalankan tugas atau aplikasi lebih dari satu aplikasi dan dijalankan secara simultan atau bersamaan pada sebuah komputer. Secara umum, Paralel Processingadalah sebuah teknik dimana sebuah masalah dibagi dalam beberapa masalah kecil untuk mempercepat proses penyelesaian masalah.
Bahasa pemrograman paralel dapat didasarkan pada satu atau kombinasi model pemrograman. Misalnya, High Performance Fortran didasarkan pada interaksi memori bersama dan dekomposisi masalah paralel data, dan Go menyediakan mekanisme untuk memori bersama dan interaksi pengiriman pesan.

TERMINOLOGI PARALEL COMPUTING
Model pemrograman paralel berkaitan erat dengan model komputasi. Model komputasi paralel adalah abstraksi yang digunakan untuk menganalisis biaya proses komputasi, tetapi tidak harus praktis, karena dapat diimplementasikan secara efisien dalam perangkat keras dan / atau perangkat lunak. Model pemrograman, sebaliknya, secara khusus menyiratkan pertimbangan praktis implementasi perangkat keras dan perangkat lunak.

Arsitektur Memori pada Komputasi Paralel
Pada umumnya, ada dua buah arsitektur memori pada komputer paralel, yaitu shared memory dan distributed memory.

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

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.
Distributed Processing atau Distributed Computing System adalah sekumpulan peralatan pemrosesan yang saling terhubung melalui jaringan komputer dan saling bekerjasama untuk mengerjakan tugas-tugas tertentu. Yang dimaksud dengan peralatan pemrosesan dataadalah peralatan komputasi yang dapat mengeksekusi sendiri sebuah program.
Sekumpulan peralatan yang saling terhubung akan mendistribusikan berbagai macam hal, dianataranya adalah:
Processing Logic / Pemrosesan secara logis
Fungsi. Beberapa fungsi sistem komputer dapat didelegasikan ke beberapa hardware atau software
Data
Kontrol

Kriteria Distributed Processing
Pemrosesan terdistribusi (Distributed Processing) dapat dikelompokkan berdasarkan beberapa kriteria, yaitu:
Degree of Computing / tingkat hubungan : Tinggi atau rendah ? Jumlah data yang saling digunakan dibandingkan dengan jumlah pemrosesan lokal
Struktur antar hubungan : kuat atau lemah ? Jika komponen di Share dikatakan kuat ?
Kesalingtergantungan komponen-komponen : Kuat atau lemah dalam mengekseskusi proses.
Keselarasan antar komponen : selaras atau tidak selaras ?

Thread Programming
Threading / Thread adalah sebuah alur kontrol dari sebuah proses. Konsep threading adalah menjalankan 2 proses ( proses yang sama atau proses yang berbeda ) dalam satu waktu.
Contoh:
Sebuah web browser mempunyai thread untuk menampilkan gambar atau tulisan sedangkan thread yang lain berfungsi sebagai penerima data dari network.
Threading dibagi menjadi 2, yaitu :
Static Threading. Teknik ini biasa digunakan untuk komputer dengan chip multi processors 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.


Dynamic Multithreading. 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).

MODEL PARALEL :
Klasifikasi model pemrograman paralel dapat dibagi secara luas menjadi dua area: interaksi proses dan penguraian masalah.

PROCESS INTERACTION
Interaksi proses berhubungan dengan mekanisme dimana proses paralel dapat berkomunikasi satu sama lain. Bentuk interaksi yang paling umum adalah memori bersama dan pesan yang lewat, tetapi interaksi juga bisa implisit (tidak terlihat oleh programmer).

SHARED MEMORY
Memori bersama adalah cara yang efisien untuk melewatkan data antar proses. Dalam model memori bersama, proses paralel berbagi ruang alamat global yang mereka baca dan tulis secara asinkron. Akses serentak yang tidak sinkron dapat menyebabkan kondisi balapan, dan mekanisme seperti kunci, semafor, dan monitor dapat digunakan untuk menghindarinya. Prosesor multi-core konvensional secara langsung mendukung memori bersama, yang banyak digunakan bahasa dan pustaka pemrograman paralel, seperti Cilk, OpenMP dan Blok Bangunan Threading, yang dirancang untuk dieksploitasi.

PASSING MESSAGE
Dalam model penyampaian pesan, proses paralel bertukar data melalui menyampaikan pesan satu sama lain. Komunikasi ini dapat tidak sinkron, di mana pesan dapat dikirim sebelum penerima siap, atau sinkron, di mana penerima harus siap. Formalisasi proses sekuensial (CSP) formalisasi penyampaian pesan menggunakan saluran komunikasi sinkron untuk menghubungkan proses, dan mengarah ke bahasa-bahasa penting seperti Occam, Limbo dan Go. Sebaliknya, model aktor menggunakan passing pesan tidak sinkron dan telah digunakan dalam desain bahasa seperti D, Scala dan SALSA.

IMPLICIT INTERACTION
Dalam model implisit, tidak ada interaksi proses yang terlihat oleh programmer dan sebaliknya kompiler dan / atau runtime bertanggung jawab untuk melakukan itu. Dua contoh paralelisme implisit adalah dengan bahasa khusus domain di mana konkurensi dalam operasi tingkat tinggi ditentukan, dan dengan bahasa pemrograman fungsional karena tidak adanya efek samping memungkinkan fungsi non-dependen dieksekusi secara paralel. Namun, paralelisme semacam ini sulit untuk dikelola  dan bahasa fungsional seperti Concurrent Haskell dan Concurrent ML menyediakan fitur untuk mengelola paralelisme secara eksplisit.

PARALEL PROGRAM :

Bahasa pemrograman paralel
Bahasa pemrograman serentak, perpustakaan, API, dan model pemrograman paralel (seperti kerangka algoritmik) telah dibuat untuk pemrograman komputer paralel. Ini umumnya dapat dibagi ke dalam kelas berdasarkan asumsi yang mereka buat tentang arsitektur memori yang mendasarinya — memori bersama, memori terdistribusi, atau memori terdistribusi bersama. Bahasa pemrograman memori bersama berkomunikasi dengan memanipulasi variabel memori bersama. Memori yang didistribusikan menggunakan passing pesan. POSIX Threads dan OpenMP adalah dua dari API memori bersama yang paling banyak digunakan, sedangkan Message Passing Interface (MPI) adalah API sistem passing pesan yang paling banyak digunakan. Satu konsep yang digunakan dalam pemrograman program paralel adalah konsep masa depan, di mana satu bagian dari suatu program berjanji untuk mengirimkan datum yang diperlukan ke bagian lain dari suatu program di masa mendatang.
Entrepreneur CAPS dan Pathscale juga mengoordinasikan upaya mereka untuk membuat arahan pemrograman paralel multi-inti hybrid (HMPP) menjadi standar terbuka yang disebut OpenHMPP. Model pemrograman berbasis direktif OpenHMPP menawarkan sintaks untuk secara efisien menurunkan komputasi pada akselerator perangkat keras dan untuk mengoptimalkan perpindahan data ke / dari memori perangkat keras. Arahan OpenHMPP menjelaskan panggilan prosedur jarak jauh (RPC) pada perangkat akselerator (mis. GPU) atau lebih umum seperangkat core. Arahan menjelaskan kode C atau Fortran untuk menggambarkan dua set fungsionalitas: pembongkaran prosedur (dilambangkan dengan kode) ke perangkat jarak jauh dan optimalisasi transfer data antara memori utama CPU dan memori akselerator.

Munculnya GPU konsumen telah menyebabkan dukungan untuk kernel komputasi, baik dalam grafik API (disebut compute shaders), di API khusus (seperti OpenCL), atau dalam ekstensi bahasa lainnya.

Automatic parallelization
Paralelisasi otomatis dari program sekuensial oleh kompiler adalah "cawan suci" dari komputasi paralel, terutama dengan batas frekuensi prosesor yang disebutkan di atas. Meskipun sudah puluhan tahun bekerja oleh para peneliti kompiler, paralelisasi otomatis hanya memiliki keberhasilan yang terbatas.

Mainstream bahasa pemrograman paralel tetap paralel secara eksplisit atau (paling tidak) sebagian implisit, di mana seorang programmer memberikan arahan kompiler untuk paralelisasi. Ada beberapa bahasa pemrograman paralel sepenuhnya implisit — SISAL, Haskell Paralel, SequenceL, System C (untuk FPGA), Mitrion-C, VHDL, dan Verilog.

Application checkpointing
Sebagai sistem komputer tumbuh dalam kompleksitas, waktu rata-rata antara kegagalan biasanya berkurang. Checkpointing aplikasi adalah teknik di mana sistem komputer mengambil "snapshot" dari aplikasi — catatan semua alokasi sumber daya saat ini dan status variabel, mirip dengan dump inti—; informasi ini dapat digunakan untuk memulihkan program jika komputer gagal. Checkpointing aplikasi berarti bahwa program harus memulai kembali dari hanya checkpoint terakhir bukan dari awal. Meskipun pos pemeriksaan memberikan manfaat dalam berbagai situasi, pos pemeriksaan sangat berguna dalam sistem yang sangat paralel dengan sejumlah besar prosesor yang digunakan dalam komputasi kinerja tinggi.

CONTOH PARALEL COMPUTING:
POV-Ray
POV-Ray (Persistence Of Vision Raytracer – www.povray.org) adalah rendering engine 3 dimensi . Program ini menterjemahkan informasi dari file teks eksternal, mensimulasikan suatu cahaya yang berinteraksi dengan obyek dalam suatu scene untuk menghasilkan obyek 3 dimensi yang nyata. Berawal dari file teks yang berisi deskripsi dari scene (objects, lights, point o f view), programini dapat merender citra yang diinginkan. Algoritmanya bekerja baris demi baris. Fasilitas yang menarik dari POV-Ray ini adalah antialiasing. Antialiasing adalah teknik yang membantu untuk membuang sampling error, yang dapat menghasilkan c itra lebih baik.
Dengan menggunakan antialiasing, POV-Ray memulai tracing a ray untuk setiap pixel. Jika warna dari pixel berbeda dengan warna pixel tetangganya (pixel yang ada di sebelah kiri dan di atas), kemudian dari jumlahnya lebih besar dari nilai th reshold, maka pixel tersebut adalah supersampled tracing a fixed number of additional rays. Teknik ini disebut supersampling dan dapat meningkatkan kualitas akhir dari sebuah citra namun itu juga meningkatkan waktu rendering menjadi lebih lama. Setelah men guraikan data input, POV-Ray menguraikan semua pixel dari citra untuk proses render, melalui horizontal scan dari setiap baris dari kiri ke kanan. Setelah selesai penguraian dari suatu baris maka akan ditulis dalam sebuah file atau ditampilkan pada layar lalu memperhitungkan baris berikutnya sampai pada yang terakhir.

Message Passing Interface (MPI).
MPI adalah sebuah standard pemrograman yang memungkinkan pemrogram untuk membuat sebuah aplikasi yang dapat dijalankan secara paralel. Proses yang dijalankan oleh sebuah aplikasi dapat dibagi untuk dikirimkan ke masing – masing compute node yang kemudian masing – masing compute node tersebut mengolah dan mengembalikan hasilnya ke komputer head node. Untuk merancang aplikasi paralel tentu membutuhkan banyak pertimbangan – pertimbangan diantaranya adalah latensi dari jaringan dan lama sebuah tugas dieksekusi oleh prosesor.
MPI ini merupakan standard yang dikembangkan untuk membuat aplikasi pengirim pesan secara portable. Sebuah komputasi paralel terdiri dari sejumlah proses, dimana masing-masing bekerja pada beberapa data lokal. Setiap proses mempunyai variabel lokal, dan tidak ada mekanisme suatu proses yang bisa mengakses secara langsung memori yang lain. Pembagian data antar proses dilakukan dengan message passing, yaitu dengan mengirim dan menerima pesan antar proses.

MPI menyediakan fungsi-fungsi untuk menukarkan antar pesan. Kegunaan MPI yang lain adalah:
menulis kode paralel secara portable,
mendapatkan performa yang tinggi dalam pemrograman paralel, dan
menghadapi permasalahan yang melibatkan hubungan data irregular atau dinamis yang tidak begitu cocok dengan model data paralel.
PVM (Parallel Virtual Machine)
Adalah paket software yang mendukung pengiriman pesan untuk komputasi parallel antar komputer. PVM dapat berjalan diberbagai macam variasi UNIX atau pun windows dan telah portable untuk banyak arsitektur seperti PC, workstation, multiprocessor dan superkomputer.
Sistem PVM terbagi menjadi dua. Pertama adalah daemon, pvmd, yang berjalan pada mesin virtual masing-masing komputer. Mesin virtual akan dibuat,  ketika User mengeksekusi aplikasi PVM. PVM dapat dieksekusi melalui prompt UNIX disemua host. Bagian kedua adalah library interface rutin yang mempunyai banyak fungsi untuk komunikasi antar task . Library ini berisikan rutin yang dapat dipanggil untuk pengiriman pesan, membuat proses baru, koordinasi task dan konfigurasi mesin virtual.
Salah aturan main yang penting dalam PVM adalah adanya mekanisme program master dan slave/worker. Programmer harus membuat Kode master yang menjadi koordinator proses dan Kode slave yang menerima, menjalankan, dan mengembalikan hasil proses ke komputer master. Kode master dieksekusi paling awal dan kemudian melahirkan proses lain dari kode master. Masing-masing program ditulis menggunakan C atau Fortran dan dikompilasi dimasing-masing komputer. Jika arsitektur komputer untuk komputasi paralel semua sama, (misalnya pentium 4  semua), maka program cukup dikompilasi pada satu komputer saja. Selanjutnya hasil kompilasi didistribusikan kekomputer lain yang akan menjadi node komputasi parallel. Program master hanya berada pada satu node sedangkan program slave berada pada semua node.

SUMBER:


Selasa, 17 Maret 2020

Bidang Pertahanan Indonesia dengan Swedia

Duta Besar Luar Biasa dan Berkuasa Penuh (LBBP) RI Bagas Hapsoro mengutarakan hal tersebut pada wartawan di Media Indonesia Golda Eksa, setelah pertemuan dengan bilateral disertai Menteri Pertahanan Ryamizard Ryacudu dan juga Menteri Pertahanan Swedia Carl Anders Peter Hultqvist di Stockholm, Swedia, Selasa (9/5) .
Menurut nya, sejak era 1980-an Kementerian Pertahanan RI pada masa itu telah membeli persenjataan dari Swedia, seperti artillery dan radar buatan Bofors .
Beberapa pengusaha pabrikan senjata asal Swedia pun juga masih saja mengutarakan keinginan untuk menambahkan pasokan perlengkapan militer dari Swedia ke Indonesia.
"Swedia siap memenuhi keinginan Indonesia dengan syarat yang ditentukan Indonesia, yakni adanya alih teknologi, kesediaan untuk memberikan produksi offset, dan penggunaan produksi lokal," ujar Bagas.
Indonesia dan Swedia pada masa ini dan masa lampau sejatinya tidak memiliki ikatan pakta yang sama dengan militer atau aliansi keamanan negara lain.
Meski begitu, kedua ini juga  aktif dalam menyelesaikan beberapa masalah seperti regional dan multilateral yang cenderung menjuru kearah mengancam stabilitas dan keamanan internasional.
Seperti, lokasi Swedia berdekatan dengan salah satu kekuatan adidaya.
Di sana banyak sekali provokasi yang sengaja dibuat kekuatan adidaya untuk menantang integritas teritorial dan kedaulatan Swedia adapun negara-negara Baltik.
Sementara itu, Indonesia memiliki lokasi yang sangat strategis di Asia Tenggara dan selama ini aktif dalam berbagai macam  isu di internasional dengan itu menghindari ancaman dan tantangan dengan menjaga stabilitas wilayah.
Bagas menjelaskan Indonesia berkomitmen untuk mulai memperbaiki dalam hal pengelolaan dan pembangunan di perbatasan di Indonesia.
Apalagi,  pada masa ini Indonesia yang memiliki 17 ribu pulau disertai garis pantai terpanjang kedua di dunia, yakni 91 ribu kilometer, tentu membutuhkan sistem pengawasan early warning yang andal.
Menhan Ryamizard Ryacudu dalam suatu lawatannya menegas niat dari pemerintah Indonesia untuk mengembangkan dan memajukan industri nasional, membangun suatu terobosan di bidang kedirgantaraan, disertai keamanan laut untuk memperkuat pertahanan maritim melalui beberapa kerja sama internasional.
"Apa yang dibicarakan dalam pertemuan bilateral ini adalah hal-hal yang akan dilakukan ke depannya bagi kedua negara. Semoga apa yang kita bahas bersama ini bisa segera terlaksana," terangnya.
Sebagai bentuk bukti keseriusan kerja sama itu, tambah Ryamizard, Kementerian Pertahanan pun membawa pimpinan perusahaan industri pertahanan lokal guna untuk delegasi ke Swedia, contohnya PT Pindad, PT PAL, PT Dirgantara Indonesia, PT LEN, dan PT Napindo.
Ryamizard menilai suatu hubungan kerja sama di bidang pertahanan antara Indonesia dan Swedia amat terasa semakin erat dan kokoh dikarenakan penandatanganan memorandum of understanding (MoU) di Kantor Kementerian Pertahanan, Jakarta, pada 20 Desember 2016.
Selain itu, Peter Hultqvist pun sempat mendeklarasi kerja sama yang disepakati yang perlu ditindaklanjuti oleh berbagai kegiatan bersama dan diskusi di tingkat teknis.
Beberapa poin kerja sama yang dibahas dalam MoU bidang pertahanan, seperti suatu pertukaran informasi dan best practice serta memajukan kerja sama antarlembaga disertai kerangka penelitian dengan pengembangan; pengembangan kerja sama di bidang industri pertahanan, included alih teknologi, penelitian bersama-sama, dan produksi pemasaran bersama; pengembangan dan juga peningkatan pelatihan dengan pendidikan pertahanan dan militer; pengembangan kerja sama dalam suatu bidang kesehatan militer dan pengembangan kerja sama antara bidang pasukan penjaga perdamaian di bawah bendera Perserikatan Bangsa-Bangsa.
"Selain membicarakan alih teknologi untuk Indonesia, pertemuan bilateral kali ini membahas isu lain yang menjadi concern bersama, yakni terorisme. Diharapkan, kedua pihak saling membagikan pengalaman dalam mengatasi terorisme serta perdamaian internasional." (Gol/P-3)