#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 1000
float A[ N] [ N] , B[ N] [ N] , C[ N] [ N] ; // declaring matrices of NxN size
int main ( )
{
/* DECLARING VARIABLES */
int i, j, m; // indices for matrix multiplication
float t_1; // Execution time measures
clock_t c_1, c_2;
/* FILLING MATRICES WITH RANDOM NUMBERS */
for ( i= 0 ; i< N; i++ ) {
for ( j= 0 ; j< N; j++ ) {
}
}
/* MATRIX MULTIPLICATION */
printf ( "Max number of threads: %i \n " , omp_get_max_threads
( ) ) ; #pragma omp parallel
printf ( "Number of threads: %i \n " , omp_get_num_threads
( ) ) ; c_1
= time ( NULL
) ; // time measure: start mm #pragma omp parallel for private(m,j)
// #pragma omp_set_num_threads(8)
for ( i= 0 ; i< N; i++ ) {
for ( j= 0 ; j< N; j++ ) {
C[ i] [ j] = 0 .; // set initial value of resulting matrix C = 0
for ( m= 0 ; m< N; m++ ) {
C[ i] [ j] = A[ i] [ m] * B[ m] [ j] + C[ i] [ j] ;
}
// printf("C: %f \n",C[i][j]);
}
}
/* TIME MEASURE + OUTPUT */
c_2
= time ( NULL
) ; // time measure: end mm t_1 = ( float ) ( c_2- c_1) ; // time elapsed for job row-wise
printf ( "Execution time: %f \n " , t_1
) ; /* TERMINATE PROGRAM */
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHRpbWUuaD4KI2RlZmluZSBOIDEwMDAKZmxvYXQgQVtOXVtOXSwgQltOXVtOXSwgQ1tOXVtOXTsgLy8gZGVjbGFyaW5nIG1hdHJpY2VzIG9mIE54TiBzaXplCmludCBtYWluICgpCnsKLyogREVDTEFSSU5HIFZBUklBQkxFUyAqLwppbnQgaSwgaiwgbTsgLy8gaW5kaWNlcyBmb3IgbWF0cml4IG11bHRpcGxpY2F0aW9uCmZsb2F0IHRfMTsgLy8gRXhlY3V0aW9uIHRpbWUgbWVhc3VyZXMKY2xvY2tfdCBjXzEsIGNfMjsKLyogRklMTElORyBNQVRSSUNFUyBXSVRIIFJBTkRPTSBOVU1CRVJTICovCnNyYW5kICggdGltZShOVUxMKSApOwpmb3IoaT0wO2k8TjtpKyspIHsKZm9yKGo9MDtqPE47aisrKSB7CkFbaV1bal09IChyYW5kKCklMTApOwpCW2ldW2pdPSAocmFuZCgpJTEwKTsKfQp9Ci8qIE1BVFJJWCBNVUxUSVBMSUNBVElPTiAqLwpwcmludGYoIk1heCBudW1iZXIgb2YgdGhyZWFkczogJWkgXG4iLG9tcF9nZXRfbWF4X3RocmVhZHMoKSk7CiNwcmFnbWEgb21wIHBhcmFsbGVsCnByaW50ZigiTnVtYmVyIG9mIHRocmVhZHM6ICVpIFxuIixvbXBfZ2V0X251bV90aHJlYWRzKCkpOwpjXzE9dGltZShOVUxMKTsgIC8vIHRpbWUgbWVhc3VyZTogc3RhcnQgbW0KI3ByYWdtYSBvbXAgcGFyYWxsZWwgZm9yIHByaXZhdGUobSxqKQovLyAjcHJhZ21hIG9tcF9zZXRfbnVtX3RocmVhZHMoOCkKZm9yKGk9MDtpPE47aSsrKSB7CmZvcihqPTA7ajxOO2orKykgewpDW2ldW2pdPTAuOyAvLyBzZXQgaW5pdGlhbCB2YWx1ZSBvZiByZXN1bHRpbmcgbWF0cml4IEMgPSAwCmZvcihtPTA7bTxOO20rKykgewpDW2ldW2pdPUFbaV1bbV0qQlttXVtqXStDW2ldW2pdOwp9Ci8vICAgICAgICAgcHJpbnRmKCJDOiAlZiBcbiIsQ1tpXVtqXSk7Cn0KfQovKiBUSU1FIE1FQVNVUkUgKyBPVVRQVVQgKi8KY18yPXRpbWUoTlVMTCk7ICAvLyB0aW1lIG1lYXN1cmU6IGVuZCBtbQp0XzEgPSAoZmxvYXQpKGNfMi1jXzEpOyAvLyB0aW1lIGVsYXBzZWQgZm9yIGpvYiByb3ctd2lzZQpwcmludGYoIkV4ZWN1dGlvbiB0aW1lOiAlZiBcbiIsdF8xKTsKLyogVEVSTUlOQVRFIFBST0dSQU0gKi8KcmV0dXJuIDA7Cn0=
compilation info
prog.c: In function 'main':
prog.c:21:39: warning: implicit declaration of function 'omp_get_max_threads' [-Wimplicit-function-declaration]
printf("Max number of threads: %i \n",omp_get_max_threads());
^
prog.c:22:0: warning: ignoring #pragma omp parallel [-Wunknown-pragmas]
#pragma omp parallel
^
prog.c:23:35: warning: implicit declaration of function 'omp_get_num_threads' [-Wimplicit-function-declaration]
printf("Number of threads: %i \n",omp_get_num_threads());
^
prog.c:25:0: warning: ignoring #pragma omp parallel [-Wunknown-pragmas]
#pragma omp parallel for private(m,j)
^
/home/fsIf4M/ccE326GI.o: In function `main':
prog.c:(.text.startup+0x98): undefined reference to `omp_get_max_threads'
prog.c:(.text.startup+0xb0): undefined reference to `omp_get_num_threads'
collect2: error: ld returned 1 exit status
stdout