Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <omp.h>
- #include <sys/time.h>
- int main(int argc, char *argv[]){
- if(argc>1){
- if(atoi(argv[1])>1){
- int n, n2, i, somma=0;
- long elapsed;
- struct timeval t0, t1;
- n=atoi(argv[1]);
- int dati[n];
- srand(time(NULL));
- #pragma omp parallel for private(i) shared(dati)
- for(i=0; i<n; i++)
- #pragma omp critical
- {
- dati[i]=rand()%10;
- }
- gettimeofday(&t0, NULL);
- #pragma omp parallel for private(i) shared(somma) schedule(static)
- for(i=0; i<n; i++){
- #pragma omp critical
- {
- somma=somma+dati[i];
- }
- }
- gettimeofday(&t1, NULL);
- elapsed = (t1.tv_sec-t0.tv_sec)/1000 + t1.tv_usec-t0.tv_usec;
- printf("Somma totale con static: %d\nTempo totale con static: %ld\n", somma, elapsed);
- somma=0;
- gettimeofday(&t0, NULL);
- #pragma omp parallel for private(i) shared(somma) schedule(dynamic)
- for(i=0; i<n; i++){
- #pragma omp critical
- {
- somma=somma+dati[i];
- }
- }
- gettimeofday(&t1, NULL);
- elapsed = (t1.tv_sec-t0.tv_sec)/1000 + t1.tv_usec-t0.tv_usec;
- printf("Somma totale con dynamic: %d\nTempo totale con dynamic: %ld\n", somma, elapsed);
- somma=0;
- #pragma omp parallel for private(i) shared(somma) schedule(guided)
- for(i=0; i<n; i++){
- #pragma omp critical
- {
- somma=somma+dati[i];
- }
- }
- gettimeofday(&t1, NULL);
- elapsed = (t1.tv_sec-t0.tv_sec)/1000 + t1.tv_usec-t0.tv_usec;
- printf("Somma totale con guided: %d\nTempo totale con guided: %ld\n", somma, elapsed);
- }else
- puts("E' possibile fare la somma con almeno due numeri");
- }else
- puts("Non ci sono abbastanza argomenti");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement