Advertisement
Guest User

exampleLM1GPU

a guest
Oct 17th, 2018
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.67 KB | None | 0 0
  1. //vedere funzionamento dei makefile (flags= -g -Wall -std=c99)
  2. //vedere valgrind aiuta a capire se stai scrivendo fuori dalle aree di memoria o non stai deallocando variabili alla fine del programma
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <time.h> //clock
  6.  
  7. void error (const char *msg){
  8.   fprintf(stderr, "%s\n",msg);
  9.   exit(1);
  10. }
  11.  
  12. void init(int *v1, int *v2, int numels){
  13.   for(int i=0; i<numels; ++i){
  14.     v1[i]=i;
  15.     v2[i]= ìnumels-i;
  16.   }
  17. }
  18.  
  19. void sum ( const int *v1, const int *v2, int *vsum, int numels ) {
  20.   for( int i=0; i<numels; ++i ){
  21.     vsum[i] = v1[i]+v2[i];
  22.   }
  23. }
  24.  
  25. void verify(const int *vsum, int numels){
  26.   for( int i=0; i<numels; ++i ){
  27.     if(vsum[i]!=numels){
  28.       fprintf(stderr,"mismatch @ %d: %d != %d\n")
  29.     }
  30.   }
  31. }
  32.  
  33. int main(int argc, char *argv[]){
  34.   if( argc != 2 )
  35.     error("sintassi: vecsum numels");
  36.   int numels = atoi(argv[1]);
  37.   if( numels <= 0 )
  38.     error("numels deve essere positivo");
  39.   int *v1,*v2, *vsum;
  40.   v1 = malloc( numels*sizeof(*v1) ); //malloc prende il numero di byte, per ottenerlo bisogna moltiplicare per il numero di byte di tutti gli argomenti
  41.   v2 = malloc( numels*sizeof(*v2) );
  42.   vsum = malloc( numels*sizeof(*vsum) );
  43.   if( !v1 || !v2 || !vsum ){
  44.     free(v1);
  45.     free(v2);
  46.     free(vsum);
  47.     error("impossibile allocare tutti i vettori");
  48.   }
  49.  
  50.   clock_t inizio,fine;
  51.   double runtime=(fine-inizio)*1000.0/CLOCKS_PER_SEC;
  52.   double bandwidth=(2*memsize)/1.0e6/tuntime;
  53.  
  54.   inzio=clock();
  55.  
  56.   init(v1,v2,numels);
  57.  
  58.   fine=clock();
  59.  
  60.   printf("init: %gms\n",runtime);
  61.  
  62.   sum(v1,v2,vsum,numels);
  63.   verify(vsum,numels);
  64.  
  65.   free(v1);
  66.   free(v2);
  67.   free(vsum);
  68.  
  69.   return 0;
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement