Apa yang akan Anda cari?

Rabu, 17 April 2019

Pengantar Komputasi Modern : Parallel Computing (Komputasi Paralel)

Parallel Computing (Komputasi Paralel)

Komputasi paralel merupakan teknik melakukan komputasi secara bersamaan dengan memanfaatkan beberapa komputer yang berdiri sendiri dalam satu waktu. Fungsi ini diperlukan jika kapasitas yang diperlukan sangat besar, untuk mengolah data dalam jumlah besar seperti pada industri keuangan, bioinformatika atau proses komputasi yang besar.

Di dalam komputasi paralel memiliki istilah pemrograman paralel yaitu teknik pemrograman komputer yang memungkinkan eksekusi perintah atau operasi secara bersama-sama dalam waktu yang sama (komputasi paralel). Hal tersebut dapat dilakukan baik menggunakan komputer dengan satu atau banyak processor. 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).

Beberapa orang yang dibidang 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 menggunakan beberapa processor atau komputer. Komputasi paralel tidak menggunakan arsitektur Von Neumann.

Tujuan Komputasi Paralel

Mempersingkat waktu eksekusi program yang menggunakan komputasi serial adalah tujuan utama komputasi paralel. Alasan lain yang membuat 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 sebanyak n buah processor
  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:

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.

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.

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

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): 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): 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 untuk program yang dapat dibagi menjadi task-task yang mempunyai derajat keteraturan yang tinggi, misalnya sistem pengolah grafik

3. MISD (Multiple Instruction, Single Data): berbagai instruksi akan dieksekusi secara bersamaan oleh beberapa prosesor dengan data yang sama. Arsitektur ini kurang populer karena hanya sedikit permasalahan yang membutuhkan solusi dengan menggunakan karakteristik arsitektur ini.

4. MIMD (Multiple Instruction, Multiple Data): 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.

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

Referensi: 

Pengantar Komputasi Modern : Cloud Computing (Komputasi Awan)

Cloud Computing (Komputasi Awan)

Komputasi Awan atau yang dikenal dengan Cloud Computing merupakan teknologi komputer dalam memberikan layanan komputasi dengan konsep layanan yang diberikan melalui internet dan plikasi yang dijalankan dalam komputasi awan tidak berada di komputer, melainkan berada di komputer lain yang dihubungkan melalui sambungan internet. Contoh aplikasi yang menggunakan cloud computing diantaranya seperti Email Service, Google drive, OneDrive, Dropbox.

Infrastruktur pada komputasi awan menggunakan teknologi virtualisasi yang dibangun berdasarkan server cluster dan memiliki relasi dengan grid computing dan utility computing yang digunakan dalam rivalitas dengan dedicated server dan collocation.

Server Clustering adalah proses penggunaan lebih dari satu server yang menyediakan redundant interconnections dan user hanya mengetahui ada satu sistem server yang tersedia. Grid Computing merupakan suatu kumpulan sumber daya komputer dari berbagai tempat lokasi untuk mencapai suatu tujuan bersama. Utility Computing adalah konsep komputasi dimana pengguna cukup membayar apa yang dipakai.

5 Karakteristik Sehingga Sebuah Sistem dapat Disebut Cloud Computing, yaitu:

1. Resource Pooling
Sumber daya komputasi seperti storage, CPU, memory, network bandwidth, dan sebagainya yang dikumpulkan oleh penyedia layanan (service provider) untuk memenuhi kebutuhan banyak pelanggan (service consumers) dengan model multi-tenant.

2. Broad Network Access
Tingkat kemampuan layanan dari suatu cloud provider yang tersedia lewat jaringan dan bisa diakses oleh beragam jenis perangkat, seperti smartphone, tablet, laptop, workstation, dan sebagainya.

3. Measured Service
Tersedianya layanan yang mengoptimasi dan memantau layanan yang dipakai secara otomatis. Dengan sistem monitoring ini, pengguna bisa melihat berapa sumber daya komputasi yang telah dipakai, seperti: bandwidth, storage, processing, jumlah pengguna aktif, dan sebagainya sehingga tersedianya layanan monitoring yang dibuat sebagai suatu bentuk transparansi antara cloud provider dan cloud consumer.

4. Rapid Elasticity
Tingkat kemampuan dari layanan cloud provider bisa dipakai oleh cloud consumer secara dynamic berdasarkan kebutuhan pengguna. Cloud consumer dapat menaikkan atau menurunkan kapasitas layanan. Kapasitas layanan yang disediakan ini biasanya bersifat unlimited, dan service consumer bisa dengan leluasa dan mudah memilih kapasitas yang diinginkan setiap waktu.

5. Self Service
Cloud Consumer bisa menyetting secara layanan dengan sendirinya yang ingin dipakai melalui sebuah sistem, tanpa perlu interaksi user atau pengguna dengan pihak cloud provider secara otomatis.

Layanan Cloud Computing

NIST sendiri membagi jenis layanan Cloud Computing menjadi tiga sebagai berikut:

1. Software as a Service (SaaS)
SaaS merupakan suatu jenis layanan dari komputasi awan dimana pelanggan dapat menggunakan software (perangkat lunak) yang telah disediakan oleh cloud provider dan user cukup mengetahui bahwa perangkat lunak dapat berjalan dan digunakan dengan baik.

Contoh dari layanan SaaS ini antara lain adalah:
  • Layanan produktivitas: Office365, GoogleDocs, Adobe Creative Cloud, dan sebagainya.
  • Layanan email: Gmail, YahooMail, LiveMail, dan sebagainya.
  • Layanan social network: Facebook, Twitter, Tagged, dan sebagainya.
  • Layanan instant messaging: YahooMessenger, Skype, GTalk, dan sebagainya.

Kelebihan dari SaaS ini adalah pengguan atau user tidak perlu membeli lisensi software kembali, hanya perlu berlangganan ke cloud provider dan membayar berdasarkan pemakaian.

2. Platform as a Service (PaaS)
PaaS adalah layanan dari Cloud Computing pengguna dapat menyewa “rumah” beserta lingkungannya untuk menjalankan aplikasi yang telah dibuat dan user tidak perlu pusing untuk menyiapkan “rumah” dan memelihara “rumah” tersebut. User hanya perlu memastikan aplikasi yang dibuat dapat berjalan dengan baik, sehingga pemeliharaan “rumah” ini (sistem operasi, network, database engine, framework aplikasi, dll) menjadi tanggungjawab dari penyedia layanan.

Kelebihan dari PaaS bagi pengembang dapat fokus pada aplikasi yang sedang dikembangkan tanpa harus memikirkan “rumah” untuk aplikasi, dikarenakan ahl tersebut sudah menjadi tanggung jawab cloud provider.

3. Infrastructure as a Service (IaaS)
IaaS adalah layanan dari Cloud Computing sewaktu kita bisa “menyewa” infrastruktur IT (unit komputasi, storage, memory, network, dsb). Dapat didefinisikan berapa besar unit komputasi (CPU), penyimpanan data (storage), memory (RAM), bandwidth, dan konfigurasi lainnya yang akan disewa. Untuk lebih mudahnya, layanan IaaS ini adalah seperti menyewa komputer yang masih kosong. Kita sendiri yang mengkonfigurasi komputer ini untuk digunakan sesuai dengan kebutuhan kita dan bisa kita install sistem operasi dan aplikasi apapun diatasnya.


Contoh penyedia layanan IaaS: Amazon EC2, Rackspace Cloud, Windows Azure, dsb. Keuntungan dari IaaS ini adalah kita tidak perlu membeli komputer fisik, dan konfigurasi komputer virtual tersebut dapat diubah (scale up/scale down) dengan mudah. Sebagai contoh, saat komputer virtual tersebut sudah kelebihan beban, kita bisa tambahkan CPU, RAM, Storage, dan sebagainya dengan segera.

Referensi:

Selasa, 19 Maret 2019

Pengantar Komputasi Modern : Big Data

Algoritma Big Data

Salah satu algoritma yang digunakan pada Big Data yaitu algoritma K-Means. Algoritma K-Means memiliki cara bekerja dengan cara clustering. Clustering adalah mengelompokkan data menjadi beberapa kelompok dan membentuk cluster. Clustering atau unsupervised learning artinya pengelompokan data tanpa campur tangan user atau programmer. Setiap data yang masuk akan dikelompokkan sesuai dengan kecocokan dengan data-data yang telah masuk sebelumnya. Tanpa campur tangan berarti dilakukannya proses pendefinisian oleh programmer, lalu dijalankan tanpa pengawasan penuh programmer. Algoritma K-Means mendefinisikan fitur yang nantinya dijadikan pedoman untuk mengelompokan data. Algoritma ini mengelompokan data secara otomatis, tidak seperti classification yang masih manual. Algoritma K-Means akan mengelompokkan data berdasarkan kemiripan dari fitur-nya. Ciri khas dari algoritma K-Means yaitu mendefinisikan diawal berapa jumlah cluster yang akan didapatkan, berapa jumlah iterasi untuk algoritma ini dan pendefinisikan fitur-fiturnya.

Prinsip Umum Dari Algoritma K-Means Clustering
  1. Memilih data secara random dengan jumlah sama dengan jumlah cluster yang diinginkan.
  2. Mengelompokan sisa data (dataset dikurangi dari data yang sebelumnya diambil secara random) berdasarkan kedekatannya dengan data yang telah dipilih secara random sebelumnya. Tujuan langkah ini yaitu semua data terbagi menjadi kelompok atau cluster sesuai dengan jumlah cluster yang diinginkan.
  3. Mencari rata-rata dari seluruh data anggota cluster tersebut disetiap cluster. Hasil rata-rata ini selanjutnya akan menjadi pusat cluster berikutnya menggantikan sebelumnya. Hasilnya nanti, ada cluster yang pusatnya berubah dan ada pula yang tidak. Biasanya pada saat iterasi awal, cluster akan berubah pusatnya.
  4. Muncul pusat cluster yang baru, kemudian kelompokkan lagi semua data yang dimiliki berdasarkan pusat cluster yang baru. Sama seperti pada langkah kedua.
  5. Mengulangi langkah 3 dan langkah 4 sampai sejumlah iterasi yang sebelumnya telah didefinisikan.
  6. Setelah iterasi berakhir, nantinya akan didapatkan cluster yang mewakili kelompok dari semua data yang dimiliki.


Studi Kasus Big Data
  1. Perusahaan keuangan dapat menggunakan big data untuk menganalisa dan mengidentifikasi untuk mencegah terjadinya fraud pada untuk mengurangi resiko kerugian.
  2. Pemerintah dapat menggunakan big data untuk menangkal dan mencegah serangan cyber dunia maya.
  3. Industri kesehatan dapat memanfaatkan analisis big data untuk pengelolaan sumber daya rumah sakit untuk pelayanan kepada pasien yang lebih baik.
  4. Perusahaan telekomunikasi dapat memanfaatkan analisis big data untuk mendapatkan jaringan komunikasi yang lebih optimal dan mencegah terjadinya kecurangan pada pelanggan.
  5. Marketing dapat menggunakan big data untuk menganalisa tingkat kepuasan konsumen terhadap produk yang dijualnya.
  6. Perusahaan asuransi dapat memanfaatkan analisis big data untuk memilah kategori pengajuan asuransi dan memvalidasi klaim asuransi untuk menghindari penipuan.
  7. Perusahaan ritel dapat memanfaatkan media sosial yang telah terintegrasi dengan big data dan nantinya diproses lagi menjadi data untuk mengetahui persepsi pelanggan, perilaku pelanggan dan tingkat kepuasan pelanggan.


Referensi:
http://ilhammaulanasuryani.blogspot.com/2016/11/implementasi-big-data.html

Pengantar Komputasi Modern : Komputasi Modern

Perkembangan Komputasi Modern

Komputasi Modern diprakarsai oleh John Von Neumann, seorang ilmuwan yang menemukan konsep automata dan komputasi modern yang pada akhirnya menjadi sebuah komputer. Von Neumann mendapatkan gelar diploma di bidang teknik kimia pada tahun 1926 sekaligus mendapatkan gelar doktor di bidang matematika dari Universitas Budapest. Von Neumann sangat tertarik pada bidang matematika, sejak kecil ia mampu melakukan pembagian bilangan delapan digit angka dalam pikirannya. Kemudian Von Neumann bekerja di Universitas Princeton pada tahun 1930, serta menjadi salah satu pendiri Institute for Advanced Studies. Pada akhirnya ia tertarik pada hidrodinamika dan sulitnya menyelesaikan persamaan diferensial parsial nonlinier yang digunakan, pada akhirnya Von Neumann pindah ke dalam bidang komputasi. Berperan sebagai konsultan pengembangan ENIAC, merancang konsep arsitektur komputer yang masih dipakai sampai sekarang. Arsitektur Von Nuemann yaitu konsep sebuah komputer dengan program yang tersimpan, dengan kontrol pusat, I/O, dan adanya memori. Komputasi modern dapat dikatakan sebagai suatu pemecahan masalah berdasarkan nilai input yang diproses menggunakan algoritma dan pada penerapannya menggunakan berbagai teknologi yang telah berkembang seperti komputer.

Implementasi Komputasi Modern

Pada bidang Matematika
Adanya Numerical Analysis, algoritma yang digunakan untuk menyelesaikan permasalahan matematika. Implementasi teknik-teknik komputasi matematika seperti metode numerik, scientific computing.

Pada bidang Fisika
Adanya Computational Physics yang digunakan untuk mempelajari algoritma numerik dan memecahkan teori kuantitatif fisika. Seperti permasalahan medan magnet dengan menggunakan komputasi fisika.

Pada bidang Kimia
Computational Chemistry untuk mneyelesaikan permasalahan bidang kimia. Seperti yang digunakan untuk menghitung struktur dan sifat molekul menggunakan super komputer.

Pada bidang Geografi
Diterapkannya GIS (Geographic Information System) yang berfungsi untuk menyimpan, memanipulasi dan menganalisa informasi geografi.

Pada bidang Geologi
Pada pekerjaan pertambangan, komputasi modern digunakan untuk menganalisa bahan-bahan mineral dan barang tambang yang terdapat di dalam tanah.

Pada bidang Ekonomi
Adanya Computational Economics yang menjadi jembatan antara bidang komputer dan bidang ekonomi untuk melakukan komputasi keuangan, statistika, pemrograman yang di desain khusus untuk komputasi keuangan.

Pada bidang Sosiologi
Adanya Computational Sociology untuk menganalisa permasalahan sosial di masyarakat.

Pada bidang Biologi
Adanya Bioinformatics untuk penelitian bidang biologi molekuler. Dan adanya peralatan medis yang menggunakan komputasi modern untuk membantu para dokter dalam menangani pasien.

Pada bidang Industri

Komputer digunakan mengontrol mesin-mesin produksi dengan ketepatan tinggi, seperti CNC (Computer Numerical Control) pengawasan numerik atau perhitungan, CAM (Computer Aided Manufacture), CAD (Computer Aided Design), yaitu untuk membuat desain produk manufaktur.

Referensi: