Membuat Matriks nxn Menggunakan Pthread

Kali ini kita akan membahas materi Komputasi Kinerja Tinggi  “matriks nxn” yaitu aplikasi perkalian dua buah matriks nxn dengan asumsi n bernilai banyak misal 256×256, bila menggunakan bahasa pemograman biasa yang pasti terjadi adalah “computer not responding” alias failed, dengan memanfaatkan library pthread kita bisa mengatasinya

langsung aja cek codingannya, saya menggunakan Codeblocks sebagai compilernya.

#include <stdio.h>
#include <stdlib.h>
#define SIZE 256  // kalo di Ubuntu, SIZE 512 masih bisa dirun tapi kalo 1024 jadinya Segmentation Fault
#define UPPER_RAND 100

// HEADER PROSEDUR DAN FUNGSI

void nilaiRandom(int mat[][SIZE]);
void cetakMatriks(int mat[][SIZE]);
void tambahMatriks(int matC[][SIZE], int matA[][SIZE], int matB[][SIZE]);
void kaliMatriks(int matC[][SIZE], int matA[][SIZE], int matB[][SIZE]);

int main(){
printf(“TUGAS PERKALIAN MATRIKS – KULIAH KOMPUTASI KINERJA TINGGI\n”);
int matriksA[SIZE][SIZE];
int matriksB[SIZE][SIZE];
int matriksC[SIZE][SIZE];
int matriksD[SIZE][SIZE];

nilaiRandom(matriksA);
cetakMatriks(matriksA);

nilaiRandom(matriksB);
cetakMatriks(matriksB);

tambahMatriks(matriksC,matriksA,matriksB);
cetakMatriks(matriksC);

kaliMatriks(matriksD,matriksA,matriksB);
cetakMatriks(matriksD);

return 0;
}

// BODY PROSEDUR DAN FUNGSI

void nilaiRandom(int mat[][SIZE]){
printf(“Mengisi nilai matriks menggunakan integer random generator (stdlib.h)…\n”);
int i,j;
for (i=0;i<SIZE;i++){
for (j=0;j<SIZE;j++){
mat[i][j] = (rand() % UPPER_RAND); // cara ini sebetulnya kurang tepat, baca referensi lebih jauh
}
}
}

void cetakMatriks(int mat[][SIZE]){
printf(“Mencetak nilai matriks…\n”);
int i,j;
printf(“[“);
for (i=0;i<SIZE;i++){
printf(” “);
for (j=0;j<SIZE;j++){
printf(“%i “,mat[i][j]);
}
printf(“\n”);
}
printf(“]\n”);
}

void tambahMatriks(int matC[][SIZE], int matA[][SIZE], int matB[][SIZE]){
printf(“Operasi penambahan nilai dua buah matriks…\n”);
int i,j;
for (i=0;i<SIZE;i++){
for (j=0;j<SIZE;j++){
matC[i][j] = matA[i][j] + matB[i][j];
}
}
}

void kaliMatriks(int matC[][SIZE], int matA[][SIZE], int matB[][SIZE]){
printf(“Operasi perkalian antara dua buah matriks…\n”);
int i,j,k;
for (i=0;i<SIZE;i++){
for (j=0;j<SIZE;j++){
int hasil = 0;
for(k=0;k<SIZE;k++){
hasil = hasil + (matA[i][k]*matB[k][j]);
}
matC[i][j] = hasil;
}
}
}

One thought on “Membuat Matriks nxn Menggunakan Pthread

  1. Bang Djo mengatakan:

    maaf mana ya pthreadnya?????
    jangan membodohi diri sendiri lah

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s