#include "omp.h"
#include <stdio.h>
#include <stlib.h>

#define CHUNKSIZE   10

int sumVector(int n, int* v){
    int i, tid, chunk;
    int sum = 0;
	chunk = CHUNKSIZE/2;
    #pragma omp parallel
	{ 
	  tid = omp_get_thread_num();
	  #pragma omp for schedule(dynamic,chunk) reduction(+:sum)
      for ( i = 0 ; i < n ; i ++ ){ 
        sum += v [ i ];
      }
	}
    return sum;
}



int main(){
/*
    int x = 9;
    #ifdef _OPENMP
    #pragma omp parallel shared(x) num_threads (2)
    {
        x++;
        #pragma omp single
        printf("je suis le thread:%d x= %d\n",omp_get_thread_num(), x);
    }
    #endif
    printf(x vaut maintenant %d\n", x);
 */  
    
    // SumVecteur
    int n = 50;//1000;
	int i;
    int* v = (int *) malloc(n * sizeof(int));
    for (i = 0; i < n; ++i){
        v[i] = i;
    }

    printf("La somme du vecteur: %d\n",sumVector(n,v));
}

