Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //vedere funzionamento dei makefile (flags= -g -Wall -std=c99)
- //vedere valgrind aiuta a capire se stai scrivendo fuori dalle aree di memoria o non stai deallocando variabili alla fine del programma
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h> //clock
- void error (const char *msg){
- fprintf(stderr, "%s\n",msg);
- exit(1);
- }
- void init(int *v1, int *v2, int numels){
- for(int i=0; i<numels; ++i){
- v1[i]=i;
- v2[i]= ìnumels-i;
- }
- }
- void sum ( const int *v1, const int *v2, int *vsum, int numels ) {
- for( int i=0; i<numels; ++i ){
- vsum[i] = v1[i]+v2[i];
- }
- }
- void verify(const int *vsum, int numels){
- for( int i=0; i<numels; ++i ){
- if(vsum[i]!=numels){
- fprintf(stderr,"mismatch @ %d: %d != %d\n")
- }
- }
- }
- int main(int argc, char *argv[]){
- if( argc != 2 )
- error("sintassi: vecsum numels");
- int numels = atoi(argv[1]);
- if( numels <= 0 )
- error("numels deve essere positivo");
- int *v1,*v2, *vsum;
- v1 = malloc( numels*sizeof(*v1) ); //malloc prende il numero di byte, per ottenerlo bisogna moltiplicare per il numero di byte di tutti gli argomenti
- v2 = malloc( numels*sizeof(*v2) );
- vsum = malloc( numels*sizeof(*vsum) );
- if( !v1 || !v2 || !vsum ){
- free(v1);
- free(v2);
- free(vsum);
- error("impossibile allocare tutti i vettori");
- }
- clock_t inizio,fine;
- double runtime=(fine-inizio)*1000.0/CLOCKS_PER_SEC;
- double bandwidth=(2*memsize)/1.0e6/tuntime;
- inzio=clock();
- init(v1,v2,numels);
- fine=clock();
- printf("init: %gms\n",runtime);
- sum(v1,v2,vsum,numels);
- verify(vsum,numels);
- free(v1);
- free(v2);
- free(vsum);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement