Minggu, 10 Maret 2019

Review Jurnal : Performance Evaluation Of Matrix Multiplication Using OpenMP For Single Dual and Multi-Core Machines

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
     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
     
Gambar 4. Hasil dengan OpenMP


Gambar 5. Hasil tanpa OpenMP

Gambar 6. Hasil keduanya



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