#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 */
srand ( time ( NULL ) ) ;
for ( i= 0 ; i< N; i++ ) {
for ( j= 0 ; j< N; j++ ) {
A[ i] [ j] = ( rand ( ) % 10 ) ;
B[ i] [ j] = ( rand ( ) % 10 ) ;
}
}
/* 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 ;
}
CiNpbmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8c3RkbGliLmg+CiNpbmNsdWRlIDx0aW1lLmg+CiNkZWZpbmUgTiAxMDAwCmZsb2F0IEFbTl1bTl0sIEJbTl1bTl0sIENbTl1bTl07IC8vIGRlY2xhcmluZyBtYXRyaWNlcyBvZiBOeE4gc2l6ZQppbnQgbWFpbiAoKQp7Ci8qIERFQ0xBUklORyBWQVJJQUJMRVMgKi8KaW50IGksIGosIG07IC8vIGluZGljZXMgZm9yIG1hdHJpeCBtdWx0aXBsaWNhdGlvbgpmbG9hdCB0XzE7IC8vIEV4ZWN1dGlvbiB0aW1lIG1lYXN1cmVzCmNsb2NrX3QgY18xLCBjXzI7Ci8qIEZJTExJTkcgTUFUUklDRVMgV0lUSCBSQU5ET00gTlVNQkVSUyAqLwpzcmFuZCAoIHRpbWUoTlVMTCkgKTsKZm9yKGk9MDtpPE47aSsrKSB7CmZvcihqPTA7ajxOO2orKykgewpBW2ldW2pdPSAocmFuZCgpJTEwKTsKQltpXVtqXT0gKHJhbmQoKSUxMCk7Cn0KfQovKiBNQVRSSVggTVVMVElQTElDQVRJT04gKi8KcHJpbnRmKCJNYXggbnVtYmVyIG9mIHRocmVhZHM6ICVpIFxuIixvbXBfZ2V0X21heF90aHJlYWRzKCkpOwojcHJhZ21hIG9tcCBwYXJhbGxlbApwcmludGYoIk51bWJlciBvZiB0aHJlYWRzOiAlaSBcbiIsb21wX2dldF9udW1fdGhyZWFkcygpKTsKY18xPXRpbWUoTlVMTCk7ICAvLyB0aW1lIG1lYXN1cmU6IHN0YXJ0IG1tCiNwcmFnbWEgb21wIHBhcmFsbGVsIGZvciBwcml2YXRlKG0saikKLy8gI3ByYWdtYSBvbXBfc2V0X251bV90aHJlYWRzKDgpCmZvcihpPTA7aTxOO2krKykgewpmb3Ioaj0wO2o8TjtqKyspIHsKQ1tpXVtqXT0wLjsgLy8gc2V0IGluaXRpYWwgdmFsdWUgb2YgcmVzdWx0aW5nIG1hdHJpeCBDID0gMApmb3IobT0wO208TjttKyspIHsKQ1tpXVtqXT1BW2ldW21dKkJbbV1bal0rQ1tpXVtqXTsKfQovLyAgICAgICAgIHByaW50ZigiQzogJWYgXG4iLENbaV1bal0pOwp9Cn0KLyogVElNRSBNRUFTVVJFICsgT1VUUFVUICovCmNfMj10aW1lKE5VTEwpOyAgLy8gdGltZSBtZWFzdXJlOiBlbmQgbW0KdF8xID0gKGZsb2F0KShjXzItY18xKTsgLy8gdGltZSBlbGFwc2VkIGZvciBqb2Igcm93LXdpc2UKcHJpbnRmKCJFeGVjdXRpb24gdGltZTogJWYgXG4iLHRfMSk7Ci8qIFRFUk1JTkFURSBQUk9HUkFNICovCnJldHVybiAwOwp9
compilation info
prog.cpp: In function 'int main()':
prog.cpp:22:59: error: 'omp_get_max_threads' was not declared in this scope
printf("Max number of threads: %i \n",omp_get_max_threads());
^
prog.cpp:24:55: error: 'omp_get_num_threads' was not declared in this scope
printf("Number of threads: %i \n",omp_get_num_threads());
^
stdout