
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.

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.

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