Computational Science Computational Engineering Dr. rer. nat. I Made Wiryana, SSi, SKom Msc International Relation Office Gunadarma University http://www.gunadarma.ac.id
Siapakah saya ●
●
Dosen Universitas Gunadarma and peneliti RVS Arbeitsgruppe – Bielefeld University) Konsultan teknis situs PresidenSBY, Wapres dan Kemenpora serta NusantaraOnline
●
Penulis : buku dan artikel majalah
●
Pengembang :
●
●
WinBI distro Indonesia pertama
●
Migrasi Open Source di 2 propinsi (bersama Air Putih)
Wakil Indonesia untuk standardisasi profesi bidang TI untuk Asia Pacific (SEARCC)
Apa perlunya komputasi?
Perlukah teori ????? ●
●
Mahasiswa ingin jadi programmer saja, perlukah ? ●
Aljabar diskrit ?
●
Sistem operasi ?
Kenyataan pekerjaan tingkat programming yang dilakukan ●
Level perangkat lunak aplikasi saja
●
Tak membutuhkan pengetahuan ditail
●
Mau tetap seperti ini atau berubah ?
Tingkat kompleksitas dan teori kompleksitas Pindah produk teknologi baru
“Dummy” books
Buku Manual
Teori dibutuhkan
waktu
Mengapa perlu komputasi ●
Game
●
Pengolahan suara (musik digital)
●
Database dan datamining
●
Perhitungan jadwal
Computer graphics ●
●
Representasi obyek 3D (struktur data, tree, dsb) Transformasi (matrix, aljabar linear, calculus, geometri) A= T*B
●
Shading atau windowing ●
●
Radiosity prinsip “heat transfer” (fisika) Menggunakan penyelesaian persamaan differential
Rendering ●
●
POV Ray [http://www.povray.org, radiosity, etc Clustered
Mekanika ●
●
Ketika benda bergerak (misal peluru ditembak) maka harus mengikuti kaidah fisika, kecepatan, percepatan, momentum dsb Memprediksi posisi berikut ---> VEKTOR
Pertemuan 2 obyek ●
●
Ketika 2 atau lebih obyek bersentuhan atau bertabrakan, maka juga harus mengikuti kaidah fisika. Di sini pentingnya pengetahuan ANALISIS NUMERIK
Kendala mengajarkan teori ●
●
●
●
●
Mahasiswa tak tertarik karena merasa tak ada manfaatnya Materi teori di kelas terlalu jauh dengan kondisi praktis (tanpa contoh yang erat relasinya) Kurikulum tanpa jalinan teori dan praktek Pengajar kurang memahami keterkaitan teori dan praktek Perangkat bantu yang digunakan !!!! tak memungkinkan mahasiswa menyadari kebutuhan teori
Konsep → Operasi
●
Konsep dan teori hanya dihafalkan
●
Trampil mengoperasikan menu-menu
●
Kaitan apa yang terjadi di permukaan tidak diketahui → PROBLEM !!!
Solusi Open Source
Penggunaan Open Source ●
●
●
●
Perangkat bantu Open Source sebagai alat bantu pengajaran Melihat source code untuk memahami implementasi teori Mengembangkan program open source yang mendemonstrasikan suatu teori Bergabung atau mengamati proyek open source.
Virtualization & Simulation
Analisis numerik → Rekayasa Komputasi
Analisis Numerik ●
●
Algoritma untuk memecahkan masalahmasalah numerik ●
Mencari nilai integral
●
Persamaan differential
Permasalahan utama dalam algoritma ●
Error pada tiap metoda
●
Jumlah iterasi pada tiap metoda
●
Implementasi tidak dipertimbangkan
Computational Science ●
●
●
Metoda komputasi untuk memecahkan masalah science Contoh : ●
Weather modelling
●
Genetic modelling
●
N-Body simulation
Pada pendekatan ini yang terpenting adalah bagaimana model komputasi yang tepat untuk memecahkan masalah sains
Domain permasalahan ●
Bioinformatics and life science
●
Computational Chemistry
●
Computational electrodymanics and electromagnetics
●
Finance
●
Fluid dynamics
●
Data mining, analytics and database
●
Imaging and computer vision
●
Medical imaging
●
Molecular imaging
●
Weather modeling
Masalah di comp. science
Computational Engineering ●
●
●
Beragam teknik komputasi digunakan pada kehidupan sehari-hari dari problem rumit hingga simple Implementasi dari masalah itu beragam dengan contraint terbatas Permasalahan utama : algoritma apa yang tepat untuk masalah tersebut dengan constraint implementasi yang ada.
Masalah di Comp. Eng. FPGA
Embedded
Algoritma dan Implementasi Yang tepat
Cluster
Permasalahan ●
●
●
Perubahan batasan dan model implementasi sering membutuhkan algoritma yang tepat Pada Rekayasa Komputasi titik utama adalah proses-proses rekayasa dalam memecahkan masalah komputasi Pengetahuan hardware, software dan struktur sistem juga penting
Time ↔ Frequency ●
Fourier Tr.
●
DFT
●
FFT
Komputasi utk hiburan
Komputasi untuk robot
Perangkat pemrograman
Mengapa Python ●
Relatif mudah dipelajari
●
Memiliki banyak pustaka (library)
●
●
●
Numerik
●
Graphics
●
GUI dll
Kecepatan tinggi (interpreter tetapi memiliki model kompilasi sementara) Tersedia IDE
Pustaka untuk komputasi ●
NumPy [http://numpy.scipy.org]
●
SciPy [http://www.scipy.org]
●
PyCUDA []
●
PyOpenCL
●
PyACTS [http://www.pyacts.org]
●
ScientificPhython
LUA sebagai pilihan lain ●
●
●
●
Interpreter seperti Python Berorientasi pada data dan tabel (cocok untuk pengolahan numeris Dikembangkan dari awal untuk mengolah data Banyak digunakan sebagai “embedded language” di program lain
Scilab ●
●
●
●
Dikembangkan lembaga riset INRIA Sudah cukup untuk kebutuhan mahasiswa Tersedia source code dan koneksi ke Tcl/Tk, Java dsb Code generator, dan modelling
Bagian Scilab ●
Development Environment
●
Scilab Mathematical Function Library
●
Scilab language
●
Graphics tools
●
Scilab Application Programming Interface
R stat ●
●
●
Menggunakan bahasa S Bisa seperti pemrograman (baik untuk belajar) Tersedia GUI dan tool tambahan
SAGE ●
●
●
●
Perangkat lunak OSS untuk matematika Mendukung penelitian dan pendidikan di bidang aljabar, geometri, teori bilangan, kriptografi, numerik Menggunakan Python dan Cython (compiler C, memudahkan memanggil fungsi yang dibuat dari C) http://www.sagemath.org
Kelebihan SAGE ●
Menggunakan bahasa pemrograman yang umum (bandingkan dengan Maple, Mathematica dll)
●
Lebih fungsional
●
Sering lebih cepat memecahkan masalah
●
Free !!!
Kemampuan grafis
Contoh operasi matriks
Processing ●
●
●
●
Open Source programming language berbasiskan Java Processing Development Environment (PDE), untuk memproses image, animas dan interaksi atau fungsi komputasi. Dari MIT Media Lab tersedia di http://www.processing.org Bekerja dengan model sketchbook dengan menggunakan fungsi dan tool yang tersedia
Contoh Simulasi
OpenCL ●
●
●
●
Open Computing Language Pustaka yang memungkinkan menulis program untuk beragam device (CPU, GPU, dan lainnya) mendukung CUDA. Mendukung parallel dengan task based dan databased http://www.kronos.org/opencl
Perkembangan Hardware
GPU makin populer ●
●
●
Arsitektur GPU yang makin meningkat dan terus berubah : ●
Jumlah core
●
Banyaknya thread
●
Shared memory
Pemrograman GPU sebelumnya tidak diperuntukkan untuk komputasi umum Bagi pembuat card graphic (Nvidia) merupakan bisnis baru
Bukan hanya utk gamer ●
Graphical Processor Unit (GPU), misal NVIDIA Card memiliki kecepatan tinggi
Cluster dari PS3
Latice-Boltzmann Supercomputer Vs Mainan
●
1000 iterasi pada domain 256x128x128
●
Cluster with 8 GPUs: 7.5 sec
●
Blue Gene/L 256 Nodes (512 cores) : 21 sec
CUDA ●
●
●
●
Computer Unified Device Architecture Engine komputasi pada GPU Nvidia Sudah lama digunakan pada game Kini banyak digunakan untuk masalah komputasi lainnya
Mengapa CUDA ●
Device dengan banyak core-chip dan menggunakan multithreading
●
Ratusan cores, ribuan concurrent threads
●
Development yang lebih ekonomis
●
Masih dalam perkembangan yang cepat
Komputer parallel
Komputasi paralel ●
●
●
Teknik melakukan komputasi secara bersamaan dengan memanfaatkan beberapa komputer independen secara bersamaan Diperlukan saat kapasitas yang diperlukan sangat besar, baik karena harus mengolah data dalam jumlah besar Juga karena kebutuhan proses komputasi yang besar
Model mesin sekuential A central processing unit (CPU) executes a program that performs a sequence of read and write operations on an attached memory The von Neumann computer SISD – Single Instruction Stream – Single Data Stream
A Parallel Machine Model Interconnect … The cluster A node can communicate with The other nodes by sending and receiving messages over an von Neumann interconnection network computer MIMD – Multiple Instruction Stream – Multiple Data Stream
A Parallel Programming Model input
output Sequential (serial) algorithm
input
output Parallel algorithm
Example: scalar product of vectors a, b
a, b
input input
do i=1,N S=s+aibi enddo
do i=1,N/2 s1=s1+aibi enddo
output
print S
S=s1+s2 Sequential (serial) algorithm
print S
do i=N/2+1,N s2=s2+aibi enddo
output
Parallel algorithm
A Parallel Programming Model • Message Passing 4 1
5
3 2
0
Many small tasks solve one large problem Instantaneous state of computation
detailed picture of a single task
Message Passing Paradigm ●
Each processor in a message passing program runs a separate process (subprogram, task) − written in a conventional sequential language − all variables are private − communicate via special subroutine calls
Messages ●
●
Messages are packets of data moving between processes The message passing system has to be told the following information: Sending process Source location Data type Data length Receiving process(es) Destination location Destination size
Message Passing SPMD Single Program Multiple Data
Same program runs everywhere Each process only knows and operates on a small part of data
MPMD Multiple Program Multiple Data
Each process perform a different function (input, problem setup, solution, output, display)
PVM and MPI Background
MPI
PVM The development of PVM started in summer 1989 at Oak Ridge National Laboratory (ORNL). PVM was effort of a single research group, allowing it great flexibility in design of this system MPI-1
PVM-1 1989
90
PVM-2 94
The development of MPI started in April 1992. MPI was designed by the MPI Forum (a diverse collection of implementors, library writers, and end users) quite independently of any specific implementation MPI-2
PVM-3 96
PVM-3.4 97
99
2000
PVM and MPI PVM
Goals
MPI
A library for writing application program, not a distributed operating system portability High Performance Heterogeneity Well-defined behavior Note: implementation ≠ specification! MPI implementations: LAM, MPICH,…
A distributed operating system Portability Heterogeneity Handling communication failures
What is MPI ? MPI - Message Passing Interface A fixed set of processes is created at program initialization, one process is created per processor mpirun –np 5 program Each process knows its personal number (rank) Each process knows number of all processes Each process can communicate with other processes Process can’t create new processes (in MPI-1)
What is PVM ? PVM - Parallel Virtual Machine Is a software package that allows a heterogeneous collection of workstations (host pool) to function as a single high performance parallel machine (virtual) PVM, through its virtual machine provides a simple yet useful distributed operating system It has daemon running on all computers making up the virtual machine
OpenMosix ●
●
●
●
Algoritma-algoritma penggunaan sumber daya bersama yang adaptif. Memperbolehkan multiple Uniprocessor (UP) dan Simetric Multiprocessor (SMC) menjalankan kernel yang sama untuk bekerja dalam pekerjaan yang mirip. Dirancang untuk merespon langsung bermacam-macam pemakaian sumber daya pada setiap node. Dicapai dengan memindahkan proses dari satu node ke node yang lain, secara preemsi dan transparan, untuk load-balancing dan untuk mencegah terjadi tumbukan yang berhubungan dengan pertukaran memori.
Tanpa kontrol pusat ●
●
OpenMosix tidak memiliki control pusat atau hubungan master/slave diantara node-node ; tiap node bisa berjalan sebagai system yang berjalan secara otomatis, dan membuat semua keputusan control secara independen. Konfigurasi dinamis dimana node-node bisa bergabung atau meninggalkan jaringan dengan gangguan yang rendah.
Bootable Cluster CD ●
MPICH, PVM, LAM, OpenMOSIX
●
http://bccd.net
Terima kasih