Pemrograman Memori Shared: Thread dan OpenMP

dokumen-dokumen yang mirip
Model Pemrograman Paralel

Kuliah#7 TSK617 Pengolahan Paralel - TA 2011/2012. Eko Didik Widianto

Pemrosesan Paralel. Haddad Sammir, M.Kom. Arsitektur Memori Komputer Paralel. March 4, 2015

KONTRAK PEMBELAJARAN (KP) MATA KULIAH

Proses dan Threads Dalam SISTEM OPERAS

Operating System. Thread. Fak. Teknik Jurusan Teknik Informatika Universitas Pasundan. Dosen : Caca E. Supriana, S.Si

ARTIKEL PERBEDAAN PROSES DENGAN THREAD. Di susun Oleh: Nama : Sri Wahyuni Nim :

Segmentasi dan Paging Pada Intel Pentium. Heri Kurniawan OS-Genap 2007/2008

PERBEDAAN PROSES DAN THREAD PADA SISTEM INFORMASI

TUGAS SISTEM OPERASI THREAD

Kompleksitas Algoritma Rank Sort dan Implementasi pada Parallel Programming Dengan Menggunakan OpenMP

TUGAS SISTEM OPERASI

Perbedaan Kernell Linux dan Windows

MANAJEMEN MEMORI SISTEM OPERASI

Bab 8: Manajemen Memori. Latar Belakang

TUGAS Mata Kuliah : Sistem Terdistribusi

Thread. pada satu waktu. menjalankan banyak tugas/thread. yang sama

TUGAS SISTEM OPERASI

Sistem terdistribusi Processes, Threads and Virtualization pertemuan 3. Albertus Dwi Yoga Widiantoro, M.Kom.

Secara tidak langsung, proses merupakan program yang sedang dieksekusi.

THREAD Ulir utas thread

Tahun Akademik 2014/2015 Semester II. DIG1I3 - Instalasi dan Penggunaan Sistem Operasi. System Calls dan Thread

MAKALAH SISTEM OPERASI Perbedaan Proses dan Thread. Disusun Oleh : NOVITA ANGGRAINI PUTRI

1.1. Sejarah Bahasa C

Artikel Perbedaan Proses Dan Thread. Disusun Oleh : Nama : Rozy Putra Pratama NIM : Prodi : Sistem Informasi

Pendahuluan Pemrograman Mikrokontroler

Struktur Sistem Komputer

DASAR PEMROGRAMAN. PENGANTAR BAHASA C ( Sejarah, Struktur Pemrograman, Tipe Data, Operator ) Djoko Soerjanto, M.Kom

Perbedaan Anatara Thread dan Proses

MODUL 2 KOMPONEN, LAYANAN SISTEM OPERASI M. R A J A B F A C H R I Z A L - S I S T E M O P E R A S I - C H A P T E R 2

PROSES DAN THREAD. : Anggo Luthfi Yunanto. Nim : : sistem informasi

1. PENDAHULUAN 1.1. LATAR BELAKANG MASALAH

Tipe Sistem Operasi. Stand alone Network Embedded

Penggunakan lebih dari satu CPU untuk menjalankan sebuah program secara simultan. Tujuan Utama Untuk meningkatkan performa komputasi.

Definisi: unit dasar dari penggunaan CPU. Thread terdiri dari: thread ID, program counter, register, dan stack.

SISTEM OPERASI THREAD DAN MULTITHREADING

Sistem Operasi Pertemuan 4 Thread, SMP & Microkernel. H u s n i Lab. Sistem Komputer & Jaringan Teknik Informatika Univ.

Struktur Sistem Operasi

Thread Proses merupakan sebuah program yang mengeksekusi THREAD tunggal. Kendali thread tunggal ini hanya memungkinkan proses untuk menjalankan satu t

Critical Section Mutual Exclusion Semaphore Tugas. Sinkronisasi Thread. Praktikum Sistem Operasi. Ilmu Komputer IPB. Sinkronisasi Thread

Struktur Sistem Komputer

KONSEP PROSES (CONT.)

PROSES DAN THREADS DALAM SISTEM OPERASI

Pertemuan 2. Struktur Sistem Operasi

Thread juga sering disebut Lightweight process. Proses tradisional ( Heavyweight process ) mempunyai thread tunggal

Objek Data, Variabel, dan Konstanta. Konsep Bahasa Pemrograman Materi 4 Yudianto Sujana, M.Kom

DASKOM & PEMROGRAMAN. Dani Usman

RESUME SISTEM OPERASI MAIN MEMORI

Bab 2: Struktur Sistem Operasi. Komponen Sistem Secara Umum

Memory Management. Memory Ch. 8. Latar Belakang. Main-Memory Management

Bab 10. Konsep Proses

ARSITEKTUR DAN ORGANISASI KOMPUTER

Multithreading untuk Algoritma Divide and Conquer

Pertemuan #2: Proses dan Thread

SISTEM OPERASI TERDISTRIBUSI

Part 2 - Algoritma & Pemrograman Konsep dasar Pemrograman

Rahmady Liyantanto liyantanto.wordpress.com

P3 Pengantar Pemrograman C

Studi Kasus Kernel Linux

1. Address Binding. Sebuah program ditempatkan dalam disk dalam bentuk berkas biner Sebelum dieksekusi, sebuah program harus ditempatkan di memori.

Sistem operasi. Contoh sistem operasi modern adalah Linux, Android, ios, Mac OS X, dan Microsoft Windows

Definisi (1) ready, dll.) Sering disebut dengan lightweight process. register set, dan stack. sama.

ARTIKEL TENTANG THREAD Definisi Thread

Bab selanjutnya membahas tentang penggunaan thread pada java, thread bisa memiliki status new, runnable, block, dead.

MANAJEMEN MEMORI. Manajemen Memori 1

Sistem Operasi - PCB (process control block)

TPI4202 e-tp.ub.ac.id

dilakukan oleh bahasa mesin dapat dilakukan oleh C dengan penyusunan program yang lebih sederhana dan mudah. Bahasa C dalam pemakainnya memerlukan

Program pendek dan simple = mudah dihandle. Program besar, banyak dan kompleks = tidak

BAB III PERANCANGAN SISTEM

Sebagai Kordinator, yang memberikan fasilitas sehingga segala aktivitas yang kompleks dapat dikerjakan dalam urutan yang benar.

Pemrograman dan Bahasa Pemrograman

Sequential Process. Keterangan SISTEM OPERASI KOMUNIKASI ANTAR PROSES

1. Setelah kita merakit PC, maka agar hardware dapat berfungsi dan fungsi komputer dapat dijalankan, maka kita harus menginstal... a. BIOS d.

PERMINTAAN HALAMAN PEMBUATAN PROSES

Bab 1. Pengenalan Pemrograman C

LAPORAN TUGAS AKHIR APLIKASI KALKULATOR BERBASIS JAVA

Prio Handoko, S.Kom., M.T.I.

4. SISTEM OPERASI TERDISTRIBUSI

Pertemuan ke 6 Set Instruksi. Computer Organization Dosen : Eko Budi Setiawan

PENGANTAR KOMPUTASI MODERN

Diperkenalkan pertama oleh tim Sun System yang dipimpin Patrick Naughton dan James Gosling tahun 1991 dengan code

THREADS PADA WINDOWS Julius Bata /

SISTEM OPERASI. Belajar SO?

1/3/2013. Konsep Dasar memori

Sekilas Tentang C. Dasar Pemrograman & Algoritma

Sistem Operasi. Teknologi Informasi

Kelompok 55.1: Nilam Fitriah ( ) Nova Eka Diana ( ) Kritik :

MEMORI. Gambar 1. Hirarki Memori

10. PARALLEL PROCESSING

Sistem Operasi Pertemuan 2 Sistem Operasi. (Pengenalan) H u s n i Lab. Sistem Komputer & Jaringan Teknik Informatika Univ.

memuat banyak proses dalam suatu waktu Sebelum masuk ke memori, suatu proses harus menunggu dalam antrian

Pendahuluan. Komputasi Nuklir. 29 Oktober Komputasi Nuklir Pendahuluan 29 Oktober / 41

PROSES. Sistem Terdistribusi

Monitor. Process Synchronization. SISTIM OPERASI (IKI-20230) ProcessSynchronization Ch. 6. Johny Moningka

Process Synchronization (Background)

Bahasa C-M6 By Jamilah, Skom 1

Chapter 1 KONSEP DASAR C

RENCANA PROGRAM DAN KEGIATAN PEMBELAJARAN SEMESTER

Contoh (3) Solusinya adalah dengan membuat web server menjadi multi-threading. Dengan ini maka sebuah web server akan membuat thread yang akan mendeng

Transkripsi:

Pemrograman Memori Shared: Thread dan OpenMP Eko Didik Widianto (didik@undip.ac.id) Lab Embedded, Siskom - Undip @2012 eko didik widianto (siskom undip) SK617 Pengolahan Paralel 1 / 30

Pengolahan Paralel Pokok Bahasan Konsep dan terminologi Arsitektur memori paralel Model pemrograman paralel Desain Program Memori Shared: Thread dan OpenMP Memprogram paralel Referensi: Introduction to Parallel Computing: https://computing.llnl.gov/tutorials/parallel_comp/ @2012 eko didik widianto (siskom undip) SK617 Pengolahan Paralel 2 / 30

Bahasan Proses dan Memori Memori Shared dan Pemrograman Pustaka Thread (Sistem) POSIX Threads Tentang OpenMP Model Eksekusi Sharing Data @2012 eko didik widianto (siskom undip) SK617 Pengolahan Paralel 3 / 30

Proses dan Memori Memori Shared dan Pemrograman Pemrograman Paralel di Arsitektur Memori Shared @2012 eko didik widianto (siskom undip) SK617 Pengolahan Paralel 4 / 30

Proses dan Memori Proses dan Memori Memori Shared dan Pemrograman Program dan Process Program: source code dengan bahasa pemrograman tertentu atau file executable Process/task: konsep OS tentang program yang sedang berjalan Program yang dijalankan di shell akan membuat satu proses baru (spawn, fork) Program berisi statemen executable dan deklarasi data Tiap data mempunyai properti storage class (durasi: permanen/statik, automatic/temporary) dan scope (global, lokal) Properti menentukan penempatannya di virtual memori Data yang dideklarasikan di luar fungsi: scope global, permanen Data yang dideklarasikan di dalam fungsi (termasuk main): scope lokal, temporary Data dapat dideklarasikan permanen dengan keyword static @2012 eko didik widianto (siskom undip) SK617 Pengolahan Paralel 5 / 30

Peta Memori: Text, Data, BSS Proses dan Memori Memori Shared dan Pemrograman Kompiler menerjemahkan statemen executable ke instruksi CPU, dan deklarasi data ke bentuk sesuai spesifikasi mesin Linker membuat file executable dan menghimpun instruksi dan data di segment yang berbeda Instruksi dimasukkan ke segmen text (RO) Data terinisialisasi, data statik, konstanta masuk ke segmen data (RW) Data tidak terinisialisasi masuk ke bss (block started from symbol) Contoh program @2012 eko didik widianto (siskom undip) SK617 Pengolahan Paralel 6 / 30

Peta Memori: Heap, Stack Proses dan Memori Memori Shared dan Pemrograman Alamat memori virtual mulai dari 0 sampai 512GB. Alamat di atas 512GB reserved untuk kernel Linux. Tiap arsitektur mungkin limitnya beda size dari process (text+data+bss) ditentukan saat kompilasi dan konstan selama eksekusi Segmen heap untuk alokasi memori dinamik (misalnya dengan fungsi malloc) Segmen stack untuk variabel lokal fungsi/sub-rutin Text, data, bss dipetakan ke memori fisik dengan page table Heap dan stack: memori secara dinamis dialokasikan dan dibebaskan (allocate, deallocate), sehingga page table juga diupdate secara dinamis Baca: http://www.ualberta.ca/cns/research/linuxclusters/mem.html @2012 eko didik widianto (siskom undip) SK617 Pengolahan Paralel 7 / 30

Memori Shared dan Model Pemrograman Proses dan Memori Memori Shared dan Pemrograman Recall Thread: (source: http://www.javamex.com/tutorials/threads/how_threads_work.shtml) @2012 eko didik widianto (siskom undip) SK617 Pengolahan Paralel 8 / 30

Memori Shared dan Model Pemrograman Proses dan Memori Memori Shared dan Pemrograman Process merupakan kumpulan dari thread Dapat dibuat secara dinamik, di tengah eksekusi Tiap thread mempunyai variabel private (local stack) Juga mempunyai variabel shared (variabel statik atau heap global), misalnya s Antar thread berkomunikasi secara implisit dengan menulis/membaca variabel shared Antar thread berkoordinasi dengan sinkronisasi variabel shared @2012 eko didik widianto (siskom undip) SK617 Pengolahan Paralel 9 / 30

Contoh Problem Proses dan Memori Memori Shared dan Pemrograman Misalnya: buat program untuk n 1 i = 0 f (A[i]) Dimana akan menempatkan A? semuanya di memori? atau dipecah? Operasi mana yang akan dilakukan oleh tiap prosesor? Bagaimana mengkoordinasi tiap hasil pecahan operasi? A = array dari semua data fa =f(a) s = sum(fa) @2012 eko didik widianto (siskom undip) SK617 Pengolahan Paralel 10 / 30

Strategi Memori Shared Proses dan Memori Memori Shared dan Pemrograman Strategi: jumlah prosesor p << n, menggunakan memori tunggal Dekomposisi paralel: tiap evaluasi dan tiap penjumlahan parsial adalah sebuah task Berikan tugas sejumlah n p bilangan ke tiap prosesor Tiap prosesor menghitung secara independen hasil (privat) dan jumlah parsialnya Mengumpulkan p jumlah parsial dan menghitung jumlah global Kelas data: Shared: jumlah global, nomor n Private: evaluasi fungsi, bagimana dengan jumlah parsial? @2012 eko didik widianto (siskom undip) SK617 Pengolahan Paralel 11 / 30

Kondisi Race Proses dan Memori Memori Shared dan Pemrograman Apa masalah di program berikut? Kondisi race atau data race dapat terjadi Saat dua prosesor (dua thread) mengakses variabel yang sama dan setidaknya satu thread melakukan operasi penulisan Saat akses-akses tersebut terjadi bersamaan (tidak disinkronkan) @2012 eko didik widianto (siskom undip) SK617 Pengolahan Paralel 12 / 30

Kondisi Race: Hasil Tidak Seperti Yang Diinginkan Proses dan Memori Memori Shared dan Pemrograman Misalnya A=[3,5],f(x) = x 2, dan s=0 (init) Di akhir eksekusi, nilai s seharusnya 3 2 +5 2 = 34 Tapi nilainya bisa 34, 9 atau 25 Operasi atomik adalah pembacaan dan penulisan Tidak ada 1/2 dari satu bilangan, operasi += adalah atomik Semua komputasi terjadi di register private @2012 eko didik widianto (siskom undip) SK617 Pengolahan Paralel 13 / 30

Perbaikan Kode Proses dan Memori Memori Shared dan Pemrograman Karena penjumlahan bersifat asosiatif, maka urutan penjumlahan tidak jadi masalah Sebagian komputasi menggunakan variabel private Frekuensi sharing berkurang, sehingga mungkin meningkatkan kecepatan Masih terdapat peluang kondisi race saat update s shared. Race dapat diatasi dengan menambahkan lock (mutex) Hanya satu thread yang bisa memegang lock, lainnya menunggu @2012 eko didik widianto (siskom undip) SK617 Pengolahan Paralel 14 / 30

Model Thread di Shared Proses dan Memori Memori Shared dan Pemrograman @2012 eko didik widianto (siskom undip) SK617 Pengolahan Paralel 15 / 30

Pustaka Thread (Sistem) POSIX Threads Pemrograman Paralel dengan Thread @2012 eko didik widianto (siskom undip) SK617 Pengolahan Paralel 16 / 30

Pustaka Thread (Sistem) 1. Pthreads: POSIX Standar Pustaka Thread (Sistem) POSIX Threads Lebih low level Portabel tapi mungkin lebih lambat 2. OpenMP: standar untuk programming level aplikasi Mendukung pemrograman saintifik di memori shared http://www.openmp.org 3. Java Threads Dibangun di atas thread POSIX Object di bahasa Java @2012 eko didik widianto (siskom undip) SK617 Pengolahan Paralel 17 / 30

Implementasi Model Thread Pustaka Thread (Sistem) POSIX Threads Dari perspektif programmer, implementasi thread dapat dilakukan dari: 1. Pustaka dari subrutin yang dipanggil dari dalam source code paralel 2. Set compiler directive yang di-embed-kan di source code (serial atau paralel) Implementasi thread: POSIX Threads dan OpenMP Posix (pthread) menggunakan pustaka, memerlukan pengkodean paralel Paralelisme eksplisit, memerlukan programmer yang mahir di paralel OpenMP, menggunakan compiler directive; dapat menggunakan kode serial @2012 eko didik widianto (siskom undip) SK617 Pengolahan Paralel 18 / 30

POSIX Threads POSIX: Portable Operating System Interface for UNIX Pustaka Thread (Sistem) POSIX Threads IEEE Std 1003.1c-1995 mendefinisikan API untuk membuat dan memanipulasi thread System call untuk membuat dan mensinkronkan thread Implementasi API: FreeBSD, NetBSD, GNU/Linux, Mac OS X dan Solaris Windows? pthreads-w32 (third party) Support PThread Membuat program paralel Sinkronisasi Memori shared implisit, pointer ke data shared diberikan ke suatu thread @2012 eko didik widianto (siskom undip) SK617 Pengolahan Paralel 19 / 30

Fungsi Threads: Creating Thread Pustaka Thread (Sistem) POSIX Threads int pthread_create(pthread_t * thread, const pthread_attr_t * attr, void * (*start_routine)(void *), void *arg); Contoh: err = pthread_create(&thread_id, &thread_attr, PrintHello, &thread_arg); Lihat program sample! @2012 eko didik widianto (siskom undip) SK617 Pengolahan Paralel 20 / 30

Manajemen Thread Pustaka Thread (Sistem) POSIX Threads Joining and Detaching Threads pthread_join (threadid,status) pthread_detach (threadid) pthread_attr_setdetachstate (attr,detachstate) pthread_attr_getdetachstate (attr,detachstate) Joining adalah salah satu cara untuk sinkronisasi antar thread Metode lainnya: mutex @2012 eko didik widianto (siskom undip) SK617 Pengolahan Paralel 21 / 30

Manajemen Thread: Mutex Code! Pustaka Thread (Sistem) POSIX Threads @2012 eko didik widianto (siskom undip) SK617 Pengolahan Paralel 22 / 30

Tentang OpenMP Model Eksekusi Sharing Data Pemrograman Paralel dengan OpenMP @2012 eko didik widianto (siskom undip) SK617 Pengolahan Paralel 23 / 30

Tentang OpenMP OpenMP Tentang OpenMP Model Eksekusi Sharing Data Spesifikasi open untuk Multi-Processing API standard untuk mendefinisikan program multi-threaded shared-memory Resources: http://openmp.org/wp/resources/ - talks, examples, forum Baca: Ruud van des Pas: An Overview of OpenMP materi selanjutnya diambil dari slide Pas Tugas #1 diambil dari program example di openmp.org High-level API Preprocessor (compiler) directive (~80%) Library calls (~19%) Variabel environment (~1%) @2012 eko didik widianto (siskom undip) SK617 Pengolahan Paralel 24 / 30

Model Eksekusi OpenMP Tentang OpenMP Model Eksekusi Sharing Data @2012 eko didik widianto (siskom undip) SK617 Pengolahan Paralel 25 / 30

Model Sharing Data OpenMP Tentang OpenMP Model Eksekusi Sharing Data Program paralel seringkali mempunyai 2 tipe data: 1. Data shared, dapat diakses oleh semua thread, mempunyai nama yang sama 2. Private data, hanya dapat diakses oleh satu thread (biasanya dialokasikan di stack) Pthreads: Variabel dengan scope global adalah shared (data, bss, global heap) Variabel dengan alokasi stack adalah private OpenMP: Variabel shared adalah shared. Dinyatakan dengan shared(list) Variabel private adalah private. Dinyatakan dengan private(list) @2012 eko didik widianto (siskom undip) SK617 Pengolahan Paralel 26 / 30

Model Sharing Data OpenMP Tentang OpenMP Model Eksekusi Sharing Data Pthreads: // shared, globals int bigdata[1024]; void* foo(void* bar) { // private, stack int tid; /* Calculation goes here */ } OpenMP: int bigdata[1024]; void* foo(void* bar) { int tid; #pragma omp parallel shared (bigdata) private (tid) { /* Calc. here */ } } @2012 eko didik widianto (siskom undip) SK617 Pengolahan Paralel 27 / 30

Contoh OpenMP Tentang OpenMP Model Eksekusi Sharing Data @2012 eko didik widianto (siskom undip) SK617 Pengolahan Paralel 28 / 30

Contoh Perkalian Matriks dan Vektor Tentang OpenMP Model Eksekusi Sharing Data @2012 eko didik widianto (siskom undip) SK617 Pengolahan Paralel 29 / 30

Baca Hands-on Introduction to OpenMP Tentang OpenMP Model Eksekusi Sharing Data Tim Mattson dan Larry Meadows, Intel Corporation Tutorial dan Example @2012 eko didik widianto (siskom undip) SK617 Pengolahan Paralel 30 / 30