Jumat, 29 Juni 2018

Ringkasan Materi Paralell Computation (English Version)




Parallel Computation
(Preliminary Modern Computation)
Introduction
Parallel computing is a type of computation in which many calculations or the execution of processes are carried out concurrently. Large problems can often be divided into smaller ones, which can then be solved at the same time. There are several different forms of parallel computing: bit-level, instruction-level, data, and task parallelism.
Requirement of Parallel Computation :
- Algorithm
- Programming Language
- Compiler
Problem of computation must be able :
Broken into discrete pieces of work that can be solved simultaneously
- Run some program instructions at any time
- Solved in a shorter time with some computing resources compared to a single computing source
Why use parallel computation :
- Save time
- Solve Larger
- Provide Concurrency
Programming language used in parallel programming :
MPI (Message Passing Interface)
- PVM (Parallel Virtual Machine)
Computation parallel divided into 6 part :
- Parallelism Concept
- Parallelism Concept
- Distributed Processing
- Architectural Parallel Computer
- Introduction of  Thread Programming
- Introduction of Massage Passing, OpenMP
- Introduction of CUDA GPU Programming
Parallelism Concept
The concept of Computational Parallel is a form of calculation using a computer that can perform many tasks and simultaneously at the same time.
Distributed Processing
Distribution Processing is working on all the data processing together between the central computer with several smaller computers and interconnected through communication channels.
Architectural Parallel Computer
Parallel computing is one technique of doing computing simultaneously by utilizing multiple computers simultaneously. Usually required when the required capacity is very large, either because it must process large amounts of data or because of the demands of many computing processes.
Parallel computer architecture by Flynn’s classification :
- SISD
- SIMD
- MISD
- MIMD
SISD
An abbreviation of Single Instruction, Single Data is the only one that uses the Von Neumann architecture. This is because in this model only used 1 processor only.
SIMD
It stands for Single Instruction, Multiple Data. SIMD uses multiple processors with the same instructions, but each processor processes different data. For example we want to find the number 27 on a row of numbers consisting of 100 numbers, and we use 5 processors.
MISD
It stands for Multiple Instruction, Single Data. MISD uses many processors with each processor using different instructions but processing the same data. This is the opposite of the SIMD model.
MIMD
It stands for Multiple Instruction, Multiple Data. MIMD uses many processors with each processor having different instructions and processing different data. However many computers that use the MIMD model also include components for the SIMD model.
Introduction of Thread Programming
Threading / Thread is a control flow of an information service process requested by the user. The concept of threading is to run 2 different processes or different processes at a time.
Usability Multithreading in singleprocessor is :
Work foreground and background at once in one app
- Asynchronous processing is improved
- Accelerate program execution
- Organizing the program for the better
Multicore Programming
Multicore systems urge programmers to overcome challenges that include:
- Division of activity
- Balance / Scales
- Data that has been destroyed
- Data Dependency
- Testing and Debugging
Usability Thread
Multithreading is useful for multiprocessor and singleprocessor. The uses for multiprocessor systems are :
- As a parallel unit or level of parrarelism granularity
- Improved performance compared to process-based
The main benefit of many threads in one process is to maximize the degree of kongkurensi between closely related operations. Applications are much more efficiently done as a set of threads than a bunch of processes. Threading is divided into 2 of them :
- Static Threading
- Dynamic Multithreading
Static Threading
This technique is commonly used for computers with multiprocessors chips. This technique allows the shared memory thread to be available, using the program counter and execute the program independently. The operating system places one thread on the processor and exchanges it with another thread that wants to use the processor.
Dynamic Multithreading
This concurrency platform provides scheduler that load balacing automatically. The platform is still in development but already supports two features, namely nested parallelism and parallel loops.
Introduction of Massage Passing, OpenMP
OpenMP (Open Multi-Processing) is an application programming interface (API) that supports multi-processing shared memory programming in C, C ++ and Fortran on a variety of architectures, including UNIX and Microsoft Windows platforms. OpenMP Consists of a set of compiler commands, library routines, and environment variables that affect run-time.
Usability in Message Passing is :
Provides functions to exchange messages
- Write parallel code portable
- Gain high performance in parallel programming
- Faced with problems involving irregular or dynamic data relationships that do not quite match the parallel data model
Introduction of CUDA programming GPU
CUDA (Compute Unified Device Architecture) is a parallel computing platform and programming model that makes the use of GPUs for general purpose computing simple and elegant.
GPU (Graphical Processing Unit) initially is a processor that works specifically for rendering on graphics cards only, but along with the increasing need for rendering, especially for near realtime processing time.

Minggu, 20 Mei 2018

Pembahasan Materi Pemrograman Jaringan

Program Get IP



Logika Program


Pada statement diatas fungsi import.net merupakan kelas-kelas yang memperbolehkan program berkomunikasi melewati jaringan, Pada class getIp ini mendeklarasikan variabel dari host yaitu InetAddress. Selanjutnya adalah user akan mendapatkan ip dari nama host yang telah disimpan pada variabel getAddress(), Lalu akan ditampilkan ip dari komputer tersebut. Variabel byte ip array ini akan menyimpan alamat ip berdasaarkan nama host yang tersedia. Kemudian perulangan untuk menampilkan Ip dari setiap indeks nilai yang ada di variabel ip. Selanjutnya merupakan percabangan setiap nilai i > 0 maka akan mencetak elemen yang ada dalam variabel ip.

Output dari Program diatas :
Program get Name

Logika Program
Pada program get Name diatas adalah untuk mendapatkan atau menampilkan nama komputer. Statement import.net merupakan kelas-kelas yang berada pada library java.net, yang memperbolehkan program berkomunikasi melewati jaringan, Kemudian pendeklarasian variabel host adalah InetAddress. Lalu akan mengambil alamat dari host, selanjutnya akan alamat dari host tersebut akan dimasukkan ke dalam variabel host, kemudian host akan mengirimkan nama host dari Ip yang sudah didapatkan pada program getIp.
Output dari Program diatas :
Program Ip to Name

Logika Program
Pada statement di atas program akan menginport fungsi java.net, kemudian percabangan dimana program akan mengecek apakah panjang variabel sama dengan 0. Selanjutnya jika sama, program tersebut akan menampilkan inputan untuk ip address belum di masukkan. Lalu jika kondisi pada percabangan tersebut tidak terpenuhi, maka program akan melakukan pendeklarasikan variabel host serta variabel address. setelah itu program akan mengambil nilai yang ada pada variabel nama host kemudian akan memasukkan nilai tersebut  ke dalam variabel address. Setelah itu fungsi dari getBYName() adalah untuk menerima hasil dari pemanggilan fungsi tersebut yang akan mencetak nama host berdasarkan nilai ip yang sudah disimpan pada variabel address.
Output dari Program diatas :
Program NsLookUp

Logika Program
Program diatas adalah program untuk mengambil nilai ip berdasarkan nama host yang diberikan sebagai argumen pada program. kemudian percabangan dimana program akan mengecek apakah panjang variabel args sama dengan 0. Jiak benar maka akan mencetak “ Pemakaian: java IPtoName ” dan program akan berhenti. apabila kondisi dari percabangan tersebut tidak terpenuhi maka program akan melakuakan pendeklaraskan variabel host yang bertipe data String dan akan memberikan nilai yakni argumen pertama yang diterima program, dan juga program akan mendeklarasikann variabel address, dimana variabel tersebut akan digunakan untuk memperoleh nama host. 
           Selanjutnya adalah mengambil nilai ip dari String host yang hasilnya akan disimpan ke dalam variabel address, apabila nilai dari String host tidak memberikan hasil bagi variabel address, maka program akan mencetak “Unknown Host” dan kemudian program akan berhenti. Agar dapat memunculkan alamat ip dengan benar maka perlu loop. Setiap looping akan mencetak 1 element dari variable ip berdasarkan indeks yang diberikan.
Output dari Program diatas :



Program Client-Server Sederhana
Program ChatClient


Logika Program
Pada perintah di atas fungsi import.net merupakan kelas-kelas  yang memperbolehkan program berkomunikasi melewati jaringan, dan perintah import.io untuk input dan output. Pada class chatclient ini, perintah selanjutnya Membuat objek socket. Obyek ini digunakan untuk menghubungkan ke dalam alamat ip yang akan dituju. Kemudian Membuat input stream untuk membaca respon dari client. Lalu pendeklarasian variabel s utnuk tipe string.
Selanjutnya statement diatas adalah merupakan perulangan while, pada while ini akan mencetak chat dari Client dan Server. Kemudian membuat input stream untuk membaca respon dari Client, Lalu pendeklarasian variabel s untuk tipe data string.
Output dari Program diatas :



Program ChatServer


Logika Program
Pada perintah di atas fungsi import.net merupakan kelas-kelas  yang memperbolehkan program berkomunikasi melewati jaringan, dan perintah import.io untuk input dan output. Membuat objek server socket. Obyek ini digunakan untuk menghubungkan ke dalam alamat socket yang akan dituju. Selanjutnya pendeklarasian variable sk sebagai objek baru dari objek Socket dengan nilai untuk mengaccept ServerSocket. Kemudian membuat input stream untuk membaca respon dari client. Lalu pendeklarasian variabel s utnuk tipe string.
Selanjutnya statement diatas adalah merupakan perulangan while, pada while ini akan mencetak chat dari Client dan Server. Kemudian membuat input stream untuk membaca respon dari Client, Lalu pendeklarasian variabel s untuk tipe data string.
 Output dari Program diatas :