Performance Evaluation Of Matrix Multiplication Using OpenMP For Single Dual and Multi-Core Machines
Yogesh Singh Rathore (1), Dharminder Kumar (2)
(1) Department of Computer Science &Engineering, Mewar University, Gangrar, Chittorgarh, Rajasthan, INDIA.
(2) Department of Computer Science &Engineering Guru Jambheshwar University of Science & Technology, Hisar, Haryana, INDIA
Abstrak
Matrix Multiplication is one of the most commonly used algorithm in many applications including operations on Relations in Relational Database System. In this paper we study and evaluate the execution time of matrix multiplication on a single, dual and multi-core processor with same set of processors having OpenMP(Open Multi-Processing) libraries for C-Language. OpenMP is a very well known standard that exploits parallelism in shared memory architecture. The evaluation is based on execution of the algorithm uses single thread for computation whereas the one with OpenMP uses multi-threads
Perkalian matriks adalah salah satu algoritma
yang sering dipakai di berbagai aplikasi termasuk di aplikasi sistem relasi
database. Dalam paper ini kita membahas tentang waktu eksekusi perkalian
matriks dalam single, dual, dan multi-core processor dengan prosessor yang sama
disertai OpenMP (Open Multi-Processing) libraries untuk pemrograman bahasa C.
OpenMP dikenal dengan standar paralelnya dalam arsitektur shared memory.
Evaluasi ini berdasarkan eksekusi algoritma dalam komputasi menggunakan single
thread dan OpenMP menggunakan multi-threads.
Metode
Mesin Core adalah unit yang membaca dan mengeksekusi
intruksi program dalam panjang tertentu yang disebut Word (kata). Biasanya
terdiri dari 8, 16, 32, 64, atau berbagai panjang bits. Intruksi dari program
memberitahu operasi untuk jalan, itu dapat membaca dari dari yang berasal dari
keyboard, menampilkannya pada display, mengambil data dari file atau menulis
outputnya dalam file. Satu mesin core dapat mengeksekusi satu instruksi tiap
saat, tetapi dengan OpenMP, multi-core mesin processor dari Multi-Core
Architectures, dapat melakukan proses parallel dengan bantuan konsep thread.
Tetapi OpenMP API (Application Programming Interface) tidak menjamin perbaikan performance.
OpenMP
OpenMP yang lahir di 1990an yang ingin membawa standar baru kepada beberapa directive language untuk komunitas di berbagai tempat. Itu menunjukkan berbagai karakteristik yang penting dalam parallel program. Anotasi OpenMP pragma yang menunjukkan loop “for” dalam perkalian matriks adalah : #pragma omp parallel for
OpenMP
OpenMP yang lahir di 1990an yang ingin membawa standar baru kepada beberapa directive language untuk komunitas di berbagai tempat. Itu menunjukkan berbagai karakteristik yang penting dalam parallel program. Anotasi OpenMP pragma yang menunjukkan loop “for” dalam perkalian matriks adalah : #pragma omp parallel for
Versi 3.0 OpenMP termasuk model fungsi yang berisi beberapa
eskpresi tambahan untuk algoritma parallel dalam study. Dengan bantuan ini, programmer
dapat meninggalkan pertimbangan dalam bagaimana dan kapan untuk mengeksekusi program
dalam run-time.
Komputasi Matriks Paralel
Paralel
dalam mesin satu core dapat dibantu dengan Forks dan Joins. Ini dapat membagi aplikasi
single thread menjadi beberapa bagian dengan berbagai kapasitas
Gambar 1. Forks dan Joins
Cara Kerja
Ketika 2 matriks dikalikan, hasilnya akan kembali menjadi
matriks. Jika produk seperti A * B =C, maka kolom A harus sama dengan baris B.
Gambar 2. Matriks A dan B
A adalah matriks n *m, A mempunyai baris n dan kolom m. B
adalah matriks m * r, B mempunyai baris m dan kolom r. Hasil nya akan menjadi
matriks C yang mempunyai n * r.
Gambar 3. Matriks A * B = C
Pengujian dan Analisis
Kesimpulan dan Saran
If your number of threads is equal no of cores it is the best
parallelism achieved. If you increase the number of threads more than the number of cores in a machine still the
performance of execution of algorithm shows better results, but the computation is done in the combination of
serial and parallel
Jika nomor thread sama dengan tanpa core, itu adalah kombinasi paralel terbaik. Jika angka thread ditambah lebih dari angka core dalam mesin, komputasi berubah menggunakan kombinasi paralel serta seri, tetapi hasil yang didapat masih baik.
Implementasi
Sederhana “Perkalian Matrik Menggunakan OPENMP”
Berikut
merupakan contoh implementasi pemrograman parallel sederhana pada studi kasus Perkalian
Matrik dengan OpenMp.
Hasil percobaan untuk
perkalian matriks dari ordo 16 hingga 1600 dengan menggunakan 4 thread :
Source Code
Gambar 7. Source Code program
Gambar 8. Source Code program
Gambar 9. Source Code program
Gambar 10. Source Code program
Gambar 11. Source Code program
Gambar 11. Source Code program
Hasil Eksekusi program
Gambar 12. Hasil Eksekusi program
Analisis dan Kesimpulan:
Tabel Hasil Eksperimen
untuk menghitung perkalian matriks dengan 4 thread yang
pertama
Gambar 13. Perkalian matriks dengan
4 thread yang pertama
Tabel Hasil Eksperimen
untuk menghitung perkalian matriks dengan 4 thread yang
kedua
Gambar 14. Perkalian matriks dengan 4 thread yang kedua
Dari hasil Percobaan yang didapat, dalam
proses perhitungan matriks pun banyak ordo yang dimiliki matriks, semakin besar
ordo matriks, semakin besar pula waktu yang dibutuhkan untuk menyelesaikan
perkalian matriks tersebut.
Disusun oleh :
1. Ellsa Wahyu Candra P. (16051204005)
2. Hanif Afnani Lutfiah (16051204019)
S-1 Teknik Informatika Universitas Negeri Surabaya
Tidak ada komentar:
Posting Komentar