#define _BSD_SOURCE #include <omp.h> #include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <sys/time.h> #define LENGHT 144 //omp_set_num_threads(64); void numero1(int* arr, int n); void numero2(int* arr, int n); void printArray(int* arr); void main(int argc, char *argv[]) { if(argc == 4) { // read p, v, n int i; int arr[LENGHT]; struct timeval begin, end; for(i = 0; i < LENGHT; i++) { arr[i] = v; if(p == 2) { omp_init_lock(&(arr[i])); } } gettimeofday(&begin, NULL); if(p == 1) { numero1(arr, n); } else if(p == 2) { numero2(arr, n); } gettimeofday(&end, NULL); double elapsed = (end.tv_sec - begin.tv_sec) + ((end.tv_usec - begin.tv_usec)/1000000.0); } } void numero1(int* arr, int n) { int i, k; #pragma omp parallel num_threads(48) { k = omp_get_thread_num(); #pragma omp for for (i = 1; i < n; i++){ arr[k] = arr[k] + (k / 8) + (k % 8); k = k + 48; arr[k] = arr[k] + (k / 8) + (k % 8); k = k + 48; arr[k] = arr[k] + (k / 8) + (k % 8); usleep(50000); } } } void numero2(int* arr, int n) { int i, j, k; #pragma omp parallel num_threads(48) { k = omp_get_thread_num(); #pragma omp for for (i = 1; i < n; i++) { j = k % 12; k += 96; omp_set_lock(&(arr[k])); usleep(25000); if(j < 11) { omp_set_lock(&(arr[k + 1])); // Lock jusqua temps j == 1 execute arr[k] = arr[k] + arr[k + 1]; omp_unset_lock(&(arr[k + 1])); k = k - 48; omp_set_lock(&(arr[k+ 1])); // Lock jusqua temps j == 1 execute arr[k] = arr[k] + arr[k + 1]; omp_unset_lock(&(arr[k + 1])); k = k - 48; omp_set_lock(&(arr[k + 1])); // Lock jusqua temps j == 1 execute arr[k] = arr[k] + arr[k + 1]; omp_unset_lock(&(arr[k + 1])); } else { arr[k] = arr[k] + (k / 8); } omp_unset_lock(&(arr[k])); usleep(25000); } } } void printArray(int* arr) { int i; for (i = 0; i < LENGHT; i++) { int val = arr[i]; if(((i + 1) % 12) == 0) { } } }
Standard input is empty
In file included from /usr/include/stdio.h:27:0,
from prog.c:4:
/usr/include/features.h:148:3: warning: #warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE" [-Wcpp]
# warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE"
^~~~~~~
prog.c:16:6: warning: return type of ‘main’ is not ‘int’ [-Wmain]
void main(int argc, char *argv[])
^~~~
prog.c: In function ‘main’:
prog.c:29:23: warning: passing argument 1 of ‘omp_init_lock’ from incompatible pointer type [-Wincompatible-pointer-types]
omp_init_lock(&(arr[i]));
^
In file included from prog.c:3:0:
/usr/lib/gcc/x86_64-linux-gnu/6/include/omp.h:100:13: note: expected ‘omp_lock_t * {aka struct <anonymous> *}’ but argument is of type ‘int *’
extern void omp_init_lock (omp_lock_t *) __GOMP_NOTHROW;
^~~~~~~~~~~~~
prog.c: In function ‘numero1’:
prog.c:46:0: warning: ignoring #pragma omp parallel [-Wunknown-pragmas]
#pragma omp parallel num_threads(48)
prog.c:49:0: warning: ignoring #pragma omp for [-Wunknown-pragmas]
#pragma omp for
prog.c: In function ‘numero2’:
prog.c:64:0: warning: ignoring #pragma omp parallel [-Wunknown-pragmas]
#pragma omp parallel num_threads(48)
prog.c:67:0: warning: ignoring #pragma omp for [-Wunknown-pragmas]
#pragma omp for
prog.c:71:20: warning: passing argument 1 of ‘omp_set_lock’ from incompatible pointer type [-Wincompatible-pointer-types]
omp_set_lock(&(arr[k]));
^
In file included from prog.c:3:0:
/usr/lib/gcc/x86_64-linux-gnu/6/include/omp.h:104:13: note: expected ‘omp_lock_t * {aka struct <anonymous> *}’ but argument is of type ‘int *’
extern void omp_set_lock (omp_lock_t *) __GOMP_NOTHROW;
^~~~~~~~~~~~
prog.c:74:22: warning: passing argument 1 of ‘omp_set_lock’ from incompatible pointer type [-Wincompatible-pointer-types]
omp_set_lock(&(arr[k + 1]));
^
In file included from prog.c:3:0:
/usr/lib/gcc/x86_64-linux-gnu/6/include/omp.h:104:13: note: expected ‘omp_lock_t * {aka struct <anonymous> *}’ but argument is of type ‘int *’
extern void omp_set_lock (omp_lock_t *) __GOMP_NOTHROW;
^~~~~~~~~~~~
prog.c:77:24: warning: passing argument 1 of ‘omp_unset_lock’ from incompatible pointer type [-Wincompatible-pointer-types]
omp_unset_lock(&(arr[k + 1]));
^
In file included from prog.c:3:0:
/usr/lib/gcc/x86_64-linux-gnu/6/include/omp.h:105:13: note: expected ‘omp_lock_t * {aka struct <anonymous> *}’ but argument is of type ‘int *’
extern void omp_unset_lock (omp_lock_t *) __GOMP_NOTHROW;
^~~~~~~~~~~~~~
prog.c:79:22: warning: passing argument 1 of ‘omp_set_lock’ from incompatible pointer type [-Wincompatible-pointer-types]
omp_set_lock(&(arr[k+ 1]));
^
In file included from prog.c:3:0:
/usr/lib/gcc/x86_64-linux-gnu/6/include/omp.h:104:13: note: expected ‘omp_lock_t * {aka struct <anonymous> *}’ but argument is of type ‘int *’
extern void omp_set_lock (omp_lock_t *) __GOMP_NOTHROW;
^~~~~~~~~~~~
prog.c:82:24: warning: passing argument 1 of ‘omp_unset_lock’ from incompatible pointer type [-Wincompatible-pointer-types]
omp_unset_lock(&(arr[k + 1]));
^
In file included from prog.c:3:0:
/usr/lib/gcc/x86_64-linux-gnu/6/include/omp.h:105:13: note: expected ‘omp_lock_t * {aka struct <anonymous> *}’ but argument is of type ‘int *’
extern void omp_unset_lock (omp_lock_t *) __GOMP_NOTHROW;
^~~~~~~~~~~~~~
prog.c:84:22: warning: passing argument 1 of ‘omp_set_lock’ from incompatible pointer type [-Wincompatible-pointer-types]
omp_set_lock(&(arr[k + 1]));
^
In file included from prog.c:3:0:
/usr/lib/gcc/x86_64-linux-gnu/6/include/omp.h:104:13: note: expected ‘omp_lock_t * {aka struct <anonymous> *}’ but argument is of type ‘int *’
extern void omp_set_lock (omp_lock_t *) __GOMP_NOTHROW;
^~~~~~~~~~~~
prog.c:87:24: warning: passing argument 1 of ‘omp_unset_lock’ from incompatible pointer type [-Wincompatible-pointer-types]
omp_unset_lock(&(arr[k + 1]));
^
In file included from prog.c:3:0:
/usr/lib/gcc/x86_64-linux-gnu/6/include/omp.h:105:13: note: expected ‘omp_lock_t * {aka struct <anonymous> *}’ but argument is of type ‘int *’
extern void omp_unset_lock (omp_lock_t *) __GOMP_NOTHROW;
^~~~~~~~~~~~~~
prog.c:91:22: warning: passing argument 1 of ‘omp_unset_lock’ from incompatible pointer type [-Wincompatible-pointer-types]
omp_unset_lock(&(arr[k]));
^
In file included from prog.c:3:0:
/usr/lib/gcc/x86_64-linux-gnu/6/include/omp.h:105:13: note: expected ‘omp_lock_t * {aka struct <anonymous> *}’ but argument is of type ‘int *’
extern void omp_unset_lock (omp_lock_t *) __GOMP_NOTHROW;
^~~~~~~~~~~~~~
/home/utUZEO/cc4MJ4Fs.o: In function `numero1':
prog.c:(.text+0x10): undefined reference to `omp_get_thread_num'
/home/utUZEO/cc4MJ4Fs.o: In function `numero2':
prog.c:(.text+0xf9): undefined reference to `omp_get_thread_num'
prog.c:(.text+0x133): undefined reference to `omp_unset_lock'
prog.c:(.text+0x160): undefined reference to `omp_set_lock'
prog.c:(.text+0x196): undefined reference to `omp_set_lock'
prog.c:(.text+0x1b4): undefined reference to `omp_unset_lock'
prog.c:(.text+0x1bc): undefined reference to `omp_set_lock'
prog.c:(.text+0x1d7): undefined reference to `omp_unset_lock'
prog.c:(.text+0x1df): undefined reference to `omp_set_lock'
prog.c:(.text+0x1ed): undefined reference to `omp_unset_lock'
/home/utUZEO/cc4MJ4Fs.o: In function `main':
prog.c:(.text.startup+0x89): undefined reference to `omp_init_lock'
collect2: error: ld returned 1 exit status
Standard output is empty