Wednesday, March 17, 2021

IMPLEMENTASI KOMPUTASI DI BIDANG FISIKA

 



Komputasi dalam bidang fisika bisa dinyatakan sebagai untuk menganalisis numerik untuk menyelesaikan masalah yang ada didalam teori kuantitatif. Fisika Komputasi atau Computational Physics digunakan sebagai aplikasi komputer modern dalam bidang sains namun kini telah menjadi bagian dari ilmu komputasi.

Pada dasarnya komputasi fisika ini adalah jembatan antara fisika experimantal dan fisika teoretis yang membantu melengkapi teori dan experimen. Dengan cara menggunakan komputer untuk memecahkan masalah fisika yang membuat komputasi fisikawan lebih mudah. Di bidang fisika teori didasarkan pada model matematika yang dapat memprediksi perilaku pada sistem. Tetapi memecahkan model matematika untuk memprediksi hasil yang berguna tidak selalu memungkinkan

Komputasi Fisika membantu dalam memperluas dan memperdalam pemahaman fisika dalam pikiran manusia dan juga meningkatkan rentang perhitungan yang secara matematis. Beberapa software yang digunakan dalam bidang ini adalah MAPLE, MATLAB, dll .

Contohnya fisika komputasi ini digunakan secara luas dalam bidang fisika seperti astrofisiika, mekanika fluida, fisika plasma, prediksi cuaca, dll . misalnya pada Komputasi Fisika Benda Padat (Computational Solid State Physics) menggunakan teori fungsional kerapatan untuk menghitung sifat zat padat dalam metode yang mirip yang digunakan pada ahli kimia untuk mempelajari molekul.


Sumber :

http://www.justscience.in/articles/what-is-computational-physics/2017/07/18


TEORI KOMPUTASI



Teori Komputasi atau Theory of Computation merupakan sebuah ilmu komputer dan matematika yang digabungkang berdasarkan beberaoa efisien masalah yang dapat diselesaikan pada model komputesi yang menggunakan algoritma

Pada sifat umumnya komputasi jelas membatu meningkat efisiensi pada komputer untuk memecahkan masalah .  ini dapat dilakukan ketika memperkirakan validaliti solusi yang diberikan oleh komputer melalui teori komputer dan mengganti algoritma nya. 

Teori Komputasi memiliki beberapa bidang yaitu:

  1. Teori Automata
  2. Teori Komputasi
  3. Teori Kompleksitas Komputasi

Teori Automata :

Tujuan pada Teori Automati adalah untuk menganalisis perilaku mesin dan bagaimana mereka memecahkan masalah model automata yang paling kuat pada pada mesin turing

Teori Komputasi :

Tujuan Teori komputasi bermula pada mesin turing dikarenakan masalah pada tidak pernah diselesaikan sekali pun. Pada saat itulah teori ini dapat mengatasi masalah tetapi tidak dapat m,enemukan solusinya.

Teori Kompleksitas Komputasi :

Tujuan Teori komplesitas ini untuk menambah efisiensi dimana suatu masalah dapat diselesaikan. Dengan cara mempertibangkan dua aspek utama pada kompleksitas waktu dan kompleksitas ruang, yang merupakan ukuran jumlah langkah yang diperlukan untuk menganalisis dan memecahkan masalah, sehingga menentuka ruang memori yang diperlukan untuk menyelesaikan masalah.


Terminologi dasar yang penting dan sering digunakan dalam Teori Komputasi :

Symbol : Simbol ( sering disebut karakter) adalah blok bangunan terkecil yang dapat berupa alfabet, huruf, atau gambar apa pun.
a,b,c,0,1 ………


Alphabet (Σ) : Alphabet atau abjad adalah kumpulan simbol, yang selalu terbatas.
Σ = {0,1} merupakan alpabet dari digit biner
Σ = {0,1, ….. , 9 } merupakan alpabet dari digit desimal
Σ = {a,b,c}
Σ = {A,B,C, ……, Z}

String : String adalah urutan simbol yang terbatas dari beberapa alfabet. String umumnya dilambangkan sebagai w dan panjanga string dilambangkan sebagai /w/.


Language : Language atau bahasa adalah sekumpulan string, dipilih dari beberapa Σ * atau bisa dikatakan ‘Bahasa adalah bagian dari Σ *’ yang dapat menjadi Finite atau Infinite.


Teori komputasi sudah berkembang pesat yang telah  membantu menyelesaikan masalah di banyak bidang selain ilmu komputer seperti Fisika, Biologi, Geografi dan banyak lainnya.


Sumber :

http://www.contrib.andrew.cmu.edu/~hebah/Theory%20of%20computation.html

https://www.geeksforgeeks.org/introduction-of-theory-of-computation/

Tuesday, March 16, 2021

Parallel Computing



Parallel Computing

        Parallel computing adalah penggunakan lebih dari satu CPU untuk menjalankan sebuah program secara simultan. Idealnya, parallel processing membuat program berjalan lebih cepat karena semakin banyak CPU yang digunakan. Tetapi dalam praktek, seringkali sulit membagi program sehingga dapat dieksekusi oleh CPU yang berbeda-beda tanpa berkaitan. Maksudnya program dijalankan dengan banyak CPU secara bersamaan dengan tujuan untuk membuat program yang lebih baik dan dapat diproses dengan cepat. Dapat diambil kesimpulan bahwa pada parallel processing berbeda dengan istilah multitasking, yaitu satu CPU mengangani atau mengeksekusi beberapa program sekaligus, parallel processing dapat disebut juga dengan istilah parallel computing.

Secara tradisional, perangkat lunak telah ditulis untuk komputasi serial:

Masalah dipecah menjadi serangkaian instruksi terpisah
Instruksi dijalankan secara berurutan satu demi satu
Dieksekusi pada satu prosesor
Hanya satu instruksi yang dapat dijalankan setiap saat

Dalam arti yang paling sederhana, komputasi paralel adalah penggunaan beberapa sumber daya komputasi secara bersamaan untuk memecahkan masalah komputasi:

• Masalah dipecah menjadi beberapa bagian yang dapat diselesaikan secara bersamaan
• Setiap bagian selanjutnya dipecah menjadi serangkaian instruksi
• Instruksi dari setiap bagian dijalankan secara bersamaan pada prosesor yang berbeda
• Mekanisme kontrol / koordinasi keseluruhan digunakan
• Masalah komputasi harus mampu:

  1. Dipecah menjadi beberapa bagian pekerjaan yang dapat diselesaikan secara bersamaan;
  2. Jalankan beberapa instruksi program kapan saja;
  3. Dipecahkan dalam waktu yang lebih singkat dengan beberapa sumber daya komputasi dibandingkan dengan satu sumber daya komputasi.

• Sumber daya komputasi biasanya:

  1. Satu komputer dengan banyak prosesor / inti
  2. Sejumlah sembarang komputer yang terhubung oleh jaringan

• Hampir semua komputer yang berdiri sendiri saat ini paralel dari perspektif perangkat keras:

  1. Beberapa unit fungsional (cache L1, cache L2, cabang, prefetch, decode, floating-point, pemrosesan grafis (GPU), integer, dll.)
  2. Beberapa unit / inti eksekusi
  3. Beberapa utas perangkat keras



Konsep dan Terminologi

        Kosep paralel adalah suatu konsep yang melalui peroses secara paralel yang terjadi dalam sebuah komputer  melaui kejadian intruksi – intruksi secara bersamaan pada waktunya. Pada perkembangan – perkembangan yang terjadi pada zaman ini dalam arsitektur komputer teknologi prosesor berkembang sangat pesat, komputer mengalami banyak perubahan, dahulu komputer sekuensial mengalam keterbatasan dalam hal kecepatan pada kecepatan pemrosesannya yang terjadi pada prosesor. Disinilah konsep paralel terlahir akan mengurus masalah tersebut dengan mempergunakan cara dengan membutuhkan kecepetan pemrosesan yang sangat tinggi untuk suatu aplikasi berjalan.

Menurut klasifikasi Michael J. Flynn sistem untuk komputer dan program paralel yang dikenal dengan taksonomi Flyn, didasarkan akan pengelompokkan komputer dan program dari banyaknya inttruksi yang di eksekusi dan banyaknya data yang akan digunakan oleh intruksi tersebut. Berikut adalah arsitektur paralel menurut Michael J. Flynn :

1.) SISD (Single Intruction – Single Data)
        Aristektur yang mempunyai satu prosesor yang mampu mengeksekusi instruksi tunggal, yang beroperasi pada aliran data tunggal.  Dalam SISD, intruksi pada mesin ini diproses secara berurutan, maka komputer yang mempunyai model itu disebut komputer sekuensial. Sebagian  komputer konvensional  dibuat dengan menggunakan model SISD. Semua in intrusi dan data yang akan diproses dan disimpan di memori primer. Kecepatan pada  pemrosesan model SISD dibatasi oleh kecepatan komputer yang dapat mentrasfer informasi secara internal. Arsitektur SISD kebanyakan terdapat pada IBM PC, Machintosh, dan workstation.  

2.) SIMD (Single Instruction – Multiple Data)
        Arsitektur yang mempunyai komponen hardware yang lebih dari satu prosesor, melakukan operasi yang sama pada beberapa operan data secara bersamaan. Biasanya mesin SIMD menerima sebagai input dua vektor  yang melakukan operasi sama pada kedua set operand dan mengeluarkan vektor dengan hasilnya. Sistem SIMD terdapat pada kompuuter ILLIAC IV , dan Thinking Machines CM-2 .  

3.) MISD (Multiple Instruction – Single Data)
       Aristektur ini memiliki satu prosesor dan menjalankan intruksi yang berbeda pada satu aliran data. Jenis paralel ini tidak begitu umum tetapi dapat ditemukan dalam arsitektur pipeline seperti systolic array.

4.) MIMD (Multiple Instruction – Multiple Data)
 Arsitektur ini memiliki banyak prosesor dengan local memory, dan dapat mengurangi waktu komputasi dengan menditrubisikan tugas di antara prosesor. Namun, sistem ini membutuhkan algoritma khusus untuk komputasi paralel untuk menyelesaikan masalah dengan kinerja tinggi menggunakan komputer semacam ini. Beberapa komputer yang menggunakan arsitektur MIMD yaitu IBM POWER5, AMD Opetron dan Intel IA32.



Parallel Computer Memory Architectures

Shared Memory

Karakteristik umum :
    Memori bersama komputer paralel sangat bervariasi, tetapi umumnya memiliki kesamaan kemampuan untuk semua prosesor untuk mengakses semua memori sebagai ruang alamat global.
    Beberapa prosesor dapat beroperasi secara independen tetapi berbagi sumber daya memori yang sama.
    Perubahan lokasi memori yang dilakukan oleh satu prosesor dapat dilihat oleh semua prosesor lainnya.
    Secara historis, mesin memori bersama telah diklasifikasikan sebagai UMA dan NUMA, berdasarkan waktu akses memori.

Keuntungan
    Ruang alamat global memberikan perspektif pemrograman yang ramah pengguna ke memori
    Berbagi data antar tugas cepat dan seragam karena kedekatan memori dengan CPU

Kekurangan
    Kerugian utama adalah kurangnya skalabilitas antara memori dan CPU. Menambahkan lebih banyak CPU dapat secara geometris meningkatkan lalu lintas di jalur memori-CPU bersama, dan untuk sistem yang koheren cache, secara geometris meningkatkan lalu lintas yang terkait dengan cache / manajemen memori.
    Tanggung jawab programmer untuk konstruksi sinkronisasi yang memastikan akses "benar" dari memori global.

Distributed Memory

Karakteristik umum
    Seperti sistem memori bersama, sistem memori terdistribusi sangat bervariasi tetapi memiliki karakteristik yang sama. Sistem memori terdistribusi memerlukan jaringan komunikasi untuk menghubungkan memori antar prosesor.
    Prosesor memiliki memori lokalnya sendiri. Alamat memori dalam satu prosesor tidak dipetakan ke prosesor lain, jadi tidak ada konsep ruang alamat global di semua prosesor.
    Karena setiap prosesor memiliki memori lokalnya sendiri, ia beroperasi secara independen. Perubahan yang dibuat pada memori lokalnya tidak berpengaruh pada memori prosesor lain. Karenanya, konsep koherensi cache tidak berlaku.
    Ketika prosesor membutuhkan akses ke data di prosesor lain, biasanya tugas programmer untuk secara eksplisit menentukan bagaimana dan kapan data dikomunikasikan. Sinkronisasi antar tugas juga menjadi tanggung jawab programmer.
    "Fabric" jaringan yang digunakan untuk transfer data sangat bervariasi, meskipun dapat sesederhana Ethernet.
Keuntungan
    Memori dapat diskalakan dengan jumlah prosesor. Tingkatkan jumlah prosesor dan ukuran memori meningkat secara proporsional.
    Setiap prosesor dapat dengan cepat mengakses memorinya sendiri tanpa gangguan dan tanpa biaya tambahan yang timbul saat mencoba mempertahankan koherensi cache global.
    Efektivitas biaya: dapat menggunakan komoditas, prosesor siap pakai, dan jaringan.
Kekurangan
    Pemrogram bertanggung jawab atas banyak detail yang terkait dengan komunikasi data antar prosesor.
    Mungkin sulit untuk memetakan struktur data yang ada, berdasarkan memori global, ke organisasi memori ini.
    Waktu akses memori yang tidak seragam - data yang berada di node jauh membutuhkan waktu lebih lama untuk diakses daripada data lokal node.

Hybrid Distributed-Shared Memory

Karakteristik umum
    Komputer terbesar dan tercepat di dunia saat ini menggunakan arsitektur memori bersama dan terdistribusi.
    Komponen memori bersama dapat berupa mesin memori bersama dan / atau unit pemrosesan grafis (GPU).
    Komponen memori terdistribusi adalah jaringan dari beberapa mesin memori / GPU bersama, yang hanya mengetahui memori mereka sendiri - bukan memori di komputer lain. Oleh karena itu, komunikasi jaringan diperlukan untuk memindahkan data dari satu mesin ke mesin lainnya.
    Tren saat ini tampaknya menunjukkan bahwa jenis arsitektur memori ini akan terus berlaku dan meningkat pada komputasi kelas atas di masa mendatang.

Keuntungan dan Kerugian 
    Apa pun yang umum untuk arsitektur memori bersama dan terdistribusi.
    Peningkatan skalabilitas merupakan keuntungan penting
    Kompleksitas programmer yang meningkat merupakan kerugian penting

 

Sumber :

 


Friday, July 24, 2020

CARA INSTALL RUBY


Ruby adalah Bahasa pemrograman open source dinamis, mudah dimengerti dan produktif. Sintaks Ruby elegan, natural, mudah dibaca dan ditulis.

 

Installasi Ruby mempunyai banyak metode pilihannya

Ada banyak jalan untuk memasang Ruby seperti berikut ini:

  • Saat Anda menggunakan sistem operasi UNIX-like, menggunakan package manager sistem adalah jalan paling mudah untuk memulai. Namun, versi Ruby yang akan dipasang biasanya bukan yang terbaru.

  • Installers dapat digunakan untuk memasang versi Ruby tertentu atau banyak versi Ruby. Ada juga sebuah installer untuk Windows.

  • Managers membantu Anda untuk berpindah antar instalasi Ruby yang berbeda pada sistem Anda.

  • Dan terakhir, Anda juga dapat membangun Ruby dari kode sumbernya.

Disini akan menggunakan cara yang lebih mudah dengan menggunakan pihak ketiga Ruby Installer

1. Kunjungi website tersebut https://rubyinstaller.org/downloads  . untuk mendowload filenya


2. Setelah selesai di download. Jalankan installer Ruby .
3. Ikuti aturan installer nya seperti accepert perjanjin lisensi

4. Setelah itu pilih tempat installasi ruby


5. Pastikan untuk menceklis bagian MYSS2 development toolchain


6. Tunggu proses installasi berjalan hingga selesai
7. Setelah proses isntallasi selesai, akan muncul tampilan disini ada satu pilihan, ceklis pilihan tersebut, dan proses instalasi akan berubah menjadi bentuk CLI.


8. Sekarang akan memasuki proses Instalasi dalam mode command prompt. Tekan enter

9. Tunggu proses instalasi hingga selesai jika terdapat pilihan lagi, silahkan langsung tekan enter. Jendela cmd untuk ruby installer akan keluar dengan sendiri


Untuk Implementasi , disini akan menggunakan fitur Gosu dari RubyGems
Install dengan menggunakan cmd
Masukkan command line berikut

gem install gosu


Gosu mempunyai Example box yang bisa di gunakan untuk percobaan. Gosu example box tedapat game yang sudah di implementasikan
Masukan command line berikut untuk men install nya

gem install gosu-examples


Ini adalah contoh pada saat installasi Gosu

Untuk masuk pada tampilan gosu example click command line berikut

gosu-examples # ...to show the example box


Click tutorial untuk memasuki game pesawat tersebut
Di game ini kita mengontrol pesawat dan mengcollect bintang 
Dibagian atas sebelah kiri terlihat score seberapa banyak pemain mengcollect bintang tersebut.
Control digunakan tanda panah pada keyboard

Pada bagian ini menampilkan informasi tentang Gosu example

Pada bagian ini ada contoh game yang disediakan pada gosu example box . Disini kita mencontrol captain ruby untuk mengcollect cristal

Untuk mengexit Gosu Example box . click Esc pada keyboard