Bukuku “Pemrograman Parallel Dengan MPI dan C”

by Agus Kurniawan 24. August 2010 09:31

gambar1-1

Buku ini termasuk buku ke-2 yang dimana buku yang ditulis dalam waktu yang lama (buku yg ke-1 yang lama adalah Supervised Neural Network) dan buku ini akan diterbitkan oleh Andi Offset. Secara keseluruhan buku ini adalah buku ke-11 yang kutulis. Khusus untuk buku Pemrograman Parallel dengan MPI dan C gw menghabiskan hampir 2 tahun untuk menulis buku ini. Hal ini karena kesibukanku di tempat kerja dan juga uji program parallel pada mesin Linux Cluster dan Windows HPC Server.

Buku ini ditulis untuk menambah referensi bagi mereka yang ingin belajar parallel programming secara praktis. Semua materi dan kode program ditulis dengan menggunakan bahasa C. Sedangkan compiler menggunakan GCC dan Visual C++. Seluruh uji kode program sudah dilakukan pada mesin Linux Ubuntu 10.4 Cluster dan Windows HPC Server 2008.

Mengapa Perlu Program Parallel?

Alangkah senangnya jika kita dapat melakukan dua pekerjaan atau lebih dalam waktu bersamaan. Apabila ini dapat dilakukan maka kita dapat menghemat waktu misalkan ada 3 pekerjaan yang masing-masing membutuhkan 1 jam maka total 3 pekerjaan adalah 3 jam jika kita mengerjakan secara berurutan. Kalau 3 pekerjaan ini dapat dilakukan secara bersaman maka kita tidak perlu membuang 3 jam untuk 3 pekerjaan ini.

Pertanyaan mendasar ketika penulis membuat buku adalah mengapa kita perlu membuat program parallel. Sebelum menjawab pertanyaan ini penulis akan mengajak pembaca beberapa peristiwa penting yang menyebabkan kita perlu bahkan mungkin harus membuat program parallel.

 

Perkembangan Processor

Perkembangan processor merupakan pemicu utama mendukungannya aplikasi berbasis parallel. Kalau kita ambil salah satu perusahan processor yaitu Intel maka kita dapat melihat bagaimana Intel mengembangkan processornya.

Processor saat ini dibuat dengan cepat yang terdiri dari IC (Integrated Circuit). Didalam IC, kita akan menjumpai banyak transistor. Menurut Gordon Moore, salah satu co-founder Intel, mengatakan bahwa perkembangan transistor pada satu chip akan dua kali setiap tahun. Prediksi ini cukup akurat, pembaca dapat melihatnya seperti gambar dibawah ini.

gambar1-1

Penulis tidak akan menyimpulkan secara statistik ataupun menggunakan metodologi penelitian tapi berdasarkan pengamatan penulis (subjektif) kebutuhan akan program parallel cukup tinggi. Hal ini dapat diindikasikan banyaknya perusahan besar seperti Microsoft, IBM, SUN, HP mencoba menerapkan program parallel pada setiap produk guna meningkatkan performance.

Gartner sebagai institusi yang salah satunya berfokus melakukan penelitian terhadap trend suatu teknologi mengungkapkan bahwa pemrograman parallel merupakan salah satu isu yang harus diselesaikan pada bidang IT. Hal ini dikarenakan orang-orang berharap permasalahan kompleksitas pada komputasi dapat diselesaikan dengan pemrograman parallel. Pembaca dapat membacanya laporan gatner ini pada alamat http://www.gartner.com/it/page.jsp?id=643117.

Penulis ingin mengingatkan bahwa solusi program parallel tidaklah menjadi solusi akhir karena semakin banyak processor belum tentu cepat menyelesaikan suatu masalah. Berdasarkan hukum Amdahl semakin banyak processor dapat meningkatkan kecepatan tetapi pada suatu titik jumlah processor kecepatan akan mencepai jenuh. Hukum Amdahl ini dapat dilihat grafiknya pada gambar dibawah ini.

gambar1-5

 

Sinopsis Buku

Perkembangan komputer yang semakin cepat terutama processor. Hampir komputer kelas PC sudah memiliki processor (CPU) lebih dari satu. Seiring dengan cepatnya perkembangan komputer kebutuhan akan komputasi juga semakin komplek. Beberapa kasus bahkan tidak dapat diselesaikan dengan pemrograman konvensioanl yaitu pemrograman berparadigma sequential. Oleh karena itu, pemrograman berbasis parallel dengan melibatkan semua kemampuan processor yang lebih dari satu diharapkan dapat menyelesaikan permasalahan tersebut.

Buku ini disusun dengan harapan para akademisi, programmer dan IT professional dapat membuat aplikasi parallel dengan memanfaatkan  Message-Passing Interface (MPI) dan bahasa pemrograman C. Buku ini disusun secara komprehensi dan dilengkapi dengan banyak ilustrasi dalam kode program. Materi buku ini meliputi

  • Mengapa Perlu Program Parallel?
  • Message-Passing Interface (MPI)
  • Persiapan Memrograman Parallel
  • Instalasi dan Konfigurasi MPI
  • Hello World MPI
  • Tipe Data
  • Komunikasi Point-to-Point
  • Komunikasi Kolektif
  • Manajemen Communicator dan Group
  • Topologi Virtual
  • MPI I/O
  • Komunikasi Satu Sisi
  • Memory dan Timer
  • Penanganan Error
  • MPI Client-Server

Semua ilustrasi kode program dalam buku ini diimplementasi dengan kompilator GCC pada lingkungan Linux dan Visual C++ 2010 pada lingkungan Windows.

 

Daftar Isi

Berikut ini daftar isi buku:

Kata Pengantar
Daftar Isi
Bab 1. Mengapa Perlu Program Parallel?
    1.1 Perkembangan Processor
    1.2 Kompleksitas Permasalahan
    1.3 Kesimpulan
Bab 2. Message-Passing Interface (MPI)
    2.1 Apa Itu MPI?
    2.2 Implementasi MPI
        2.2.1 MPI Untuk C/C++
        2.2.2 MPI Untuk Fortran
        2.2.3 MPI Untuk Java
        2.2.4 MPI Untuk C#
Bab 3. Persiapan Memrograman Parallel
    3.1 Ketrampilan Pemrograman
    3.2 Peralatan Sistem
        3.2.1 Persiapan Perangkat Lunak
        3.2.2 Persiapan Perangkat Keras
    3.3 Mesin Testing
Bab 4. Instalasi dan Konfigurasi MPI
    4.1 MPICH 2
        4.1.1 Prasyarat Instalasi
        4.1.2 Instalasi MPICH2 Pada Windows
            4.1.2.1 Konfigurasi SMPD
        4.1.3 Instalasi MPICH2 Pada Linux
    4.2 LAM/MPI dan Open MPI
        4.2.1 Prasyarat Instalasi
        4.2.2 Instalasi
    4.3 Microsoft MPI
        4.3.1 Prasyarat Instalasi
        4.3.2 Instalasi
Bab 5. Hello World MPI
    5.1 Persiapan
        5.1.1 Program Editor
        5.1.1 Kompilator
    5.2 Membuat Program Hello World MPI
        5.2.1 Menulis Kode Program
        5.2.2 Kompilasi
            5.2.2.1 Linux
            5.2.2.2 Windows dan Microsoft MPI
            5.2.2.3 Windows dan MPICH2
    5.3 Menjalankan Aplikasi MPI
Bab 6. Tipe Data
    6.1 Mengenal Tipe Data MPI
        6.1.1 Tipe Data Dasar
        6.1.2 Tipe Data Turunan
            6.1.2.1 Kontinu
            6.1.2.2 Vector
            6.1.2.3 Struct
            6.1.2.4 Index
    6.2 Duplikasi Tipe Data
    6.3 Informasi Objek
        6.3.1 Membuat Objek MPI_Info
        6.3.2 Mengisi dan Mengedit Nilai
        6.3.3 Menghapus Nilai
        6.3.4 Demo
    6.4 MPI Proses
Bab 7. Komunikasi Point-to-Point
    7.1 Mengenal Komunikasi Point-to-Point MPI
    7.2 Model Komunikasi
        7.2.1 Model Standard
        7.2.2 Model Sinkronus
        7.2.3 Model Bufer
    7.3 Operasi Blocking MPI
        7.3.1 MPI_Send()
        7.3.2 MPI_Recv()
        7.3.3 Message Data
        7.3.4 MPI_Status
        7.3.5 Penggunaan MPI_Buffer
        7.3.6 Demo Operasi Blocking MPI
            7.4.6.1 MPI_Wait()
            7.4.6.2 MPI_Test()
            7.4.6.3 MPI_Request_free()
            7.4.6.4 MPI_Waitany()
            7.4.6.5 MPI_Waitall()
            7.4.6.6 MPI_Testany()
            7.4.6.7 MPI_Testall()
        7.4.7 Demo
    7.5 MPI_Sendrecv()
    7.6 Pengecekan MPI
        7.6.1 MPI_Iprobe() dan MPI_Probe()
        7.6.2 MPI_Cancel()
        7.6.3 MPI_Test_cancelled()
    7.7 Komunikasi Persisten
        7.7.1 Membuat Komunikasi Persisten
        7.7.2 Memulai Komunikasi Transmisi
        7.7.3 Menunggu Komunikasi Selesai
        7.7.4 Menghapus Semua Objek Persisten Yang Digunakan
        7.7.5 Demo
    7.8 Deadlock
Bab 8. Komunikasi Kolektif
    8.1 Mengenal Komunikasi Kolektif
    8.2 Sinkronisasi Barrier
    8.3 Broadcast
    8.4 Gather dan Scatter
    8.5 GatherV dan ScatterV
        8.5.1 Demo MPI GatherV
        8.5.2 Demo MPI ScatterV
    8.6 Gather-to-All
    8.7 All-to-All Scatter dan Gather
        8.7.1 Operasi All-to-Allv
    8.8 Operasi Reduksi
        8.8.1 Operasi All-Reduction
        8.8.2 Kustomisasi Operasi Reduksi
    8.9 Reduce-Scatter
    8.10 Scan
        8.10.1 Ekslusif MPI Scan
Bab 9. Manajemen Communicator dan Group
    9.1 Manajemen Communicator
        9.1.1 Operasi Pada Communicator
        9.1.2 Demo
        9.1.3 Split Communicator
    9.2 Manajemen Group
        9.2.1 Informasi Group
        9.2.2 Operasi Group
    9.3 Inter-Communication
        9.3.1 Membuat Proses Inter-Communication
    9.4 Caching
    9.5 Penamaan Objek
Bab 10. Topologi Virtual
    10.1 Apakah Itu Topologi Virtual?
    10.2 Topologi Kartesian
        10.2.1 Membuat Topologi Kartesian
        10.2.2 Mapping Koordinasi Topologi Kartesian Terhadap Rank
        10.2.3 Operasi Shift
        10.2.4 Partisi
    10.3 Topologi Graph
        10.3.1 Membuat Topologi Graph
    10.4 Topologi Distribusi
    10.5 Pengujian dan Testing
        10.5.1 Pengujian Distribusi Kartesian
        10.5.2 Pengujian Distribusi Graph
    10.6 Fungsi Low-Level Pada Topologi
        10.6.1 Demo Topologi Kartesian
        10.6.2 Demo Topologi Graph
Bab 11. MPI I/O
    11.1 Manipulasi File
        11.1.1 Membuka dan Menutup File
        11.1.2 Menghapus File
    11.2 Informasi File
    11.3 File View
    11.4 Akses Data File
        11.4.1 Metode Eksplisit Offset
            11.4.1.1 Blocking  Dengan Kondisi Non Collective
            11.4.1.2 Blocking Dengan Kondisi Collective
            11.4.1.3 Non Blocking & Split Collective  Dengan Kondisi Non Collective
            11.4.1.4 Non Blocking & Split Collective Dengan Kondisi Collective
        11.4.2 Metode Individu Pointer File
            11.4.2.1 Blocking  Dengan Kondisi Non Collective
            11.4.2.2 Blocking Dengan Kondisi Collective
            11.4.2.3 Non Blocking & Split Collective  Dengan Kondisi Non Collective
            11.4.2.4 Non Blocking & Split Collective Dengan Kondisi Collective
        11.4.3 Metode Sharing Pointer File
            11.4.3.1 Blocking  Dengan Kondisi Non Collective
            11.4.3.2 Blocking Dengan Kondisi Collective
            11.4.3.3 Non Blocking & Split Collective  Dengan Kondisi Non Collective
            11.4.3.4 Non Blocking & Split Collective Dengan Kondisi Collective
Bab 12. Komunikasi Satu Sisi
    12.1 Mengenal Komunikasi Satu Sisi
    12.2 Membangun Komunikasi
    12.3 Operasi Pada Komunikasi Satu Sisi
    12.4 Sinkronisasi
        12.4.1 Sinkronisasi Target Aktif
        12.4.2 Lock
    12.5 Demo
        12.5.1 Demo 1
        12.5.2 Demo 2
Bab 13. Memory dan Timer
    13.1 Bekerja dengan Memory
    13.2 Bekerja dengan Timer
Bab 14. Penanganan Error
    14.1 Penanganan Error
    14.2 Menangani Error Pada Communicator
    14.3 Menangani Error Pada Window
    14.4 Menangani Error Pada File
    14.5 Memperoleh Informasi Error
Bab 15. MPI Client-Server
    15.1 Konsep Client-Server
    15.2 MPI Server
    15.3 MPI Client
    15.4 Proses Kirim Dan Terima Data
    15.5 Demo Client-Server
    15.6 Publikasi
Daftar Pustaka
Lampiran
Tentang Penulis

Semoga buku ini bermanfaat

 

Cek juga info bagaimana membelinya disini

Tags:

Books | C/C++ | Grid Computing | Linux | Windows

blog comments powered by Disqus

About Agus Kurniawan

Agus Kurniawan

For more detail about me click here [V]

Please entry your name into my guestbook [V]

If you want to contact me, please go here [V]

Go here for my professional services [V]

My Books

ASP.NET SignalR Programming By Example

Getting Started with Java ME Embedded 8 and Raspberry Pi XBee IEEE 802.15.4 Programming

Raspberry Pi System Programming for Beginner Backbone.js Programming By Example

PHP and SQL Server Programming By Example AngularJS Programming by Example

jQuery Programming by Example Getting Started with Arduino and Ruby

Raspberry Pi Command Line for Beginner Getting Started with Arduino and Python

MSP430 LaunchPad Programming TypeScript Programming by Example

Getting Started with Matlab Simulink and Arduino SQL Server for Node.js

Pocket Reference: Netduino for Beginner Database Programming using Matlab

Pocket Reference: Basic Sensors in Windows 8 Getting Started with Matlab Simulink and Raspberry Pi

Getting Started with Arduino and Java  Pocket Reference: Raspberry Pi Programming

Getting Started with Arduino and Matlab Getting Started with Arduino and .NET

Pocket Reference: Raspberry Pi Getting Started with Arduino and Node.js

MongoDB for VB.NET Panduan Praktis Windows Azure

Network Forensics: Panduan Analisis Dan Investigasi Paket Data Jaringan Menggunakan Wireshark Object-Relational Mapping (ORM): MongoDB, Mongoosejs and Node.js By Example

Nodejs Programming by Example MongoDB for by Example

Pemrograman Parallel Dengan MPI dan C Panduan Lengkap iPad 2 Untuk Pemula

Pemrograman Jaringan Dengan Java Aplikasi Pilihan iPad Untuk Anak-Anak

Buku lainnya [V]

Agus Kurniawan is Microsoft MVP (Most Valuable Professional)

Agus Kurniawan- Github Profile

Agus Kurniawan- Codeplex Profile

Follow Me

Follow agusk2010 on Twitter

Month List