PIPS
vecacc.c
Go to the documentation of this file.
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <unistd.h>
4 #include <sys/time.h>
5 #include "tools.h"
6 
7 void vecacc(int n, float src1[n], float src2[n], float result[n])
8 {
9  int i;
10  for(i=0;i<n;i++)
11  result[i]+=src1[i]*src2[i];
12 }
13 
14 int main(int argc, char **argv)
15 {
16  int n;
17  float *src1, *src2, *result;
18  n = atoi(argv[1]);
19 
20 #define xmalloc(p) \
21  do { \
22  if (posix_memalign((void **) &p, 32, n * sizeof(float))) \
23  return 3; \
24  } while(0);
25 
26 #define vmalloc(p)\
27  do { \
28  p=(float*)malloc(n*sizeof(float));\
29  } while(0);
30 
31  vmalloc(src1);
32  vmalloc(src2);
33  vmalloc(result);
34 
35  init_data_file(argv[2]);
36  init_data_float(src1, n);
37  init_data_float(src2, n);
39 
40  vecacc(n, src1, src2, result);
41 
42  free(src1);
43  free(src2);
44  free(result);
45 
46  return 0;
47 }
48 
49 
void free(void *)
void close_data_file()
Definition: tools.c:48
int init_data_float(float *ptr, const unsigned int n)
Definition: tools.c:125
void init_data_file(const char *data_file)
Definition: tools.c:36
void vecacc(int n, float src1[n], float src2[n], float result[n])
Definition: vecacc.c:7
int main(int argc, char **argv)
Definition: vecacc.c:14
#define vmalloc(p)