SEP Solver Library  1.0
 All Classes Namespaces Files Functions Variables Typedefs Macros
DataInCoreFloat.cpp
Go to the documentation of this file.
1 #include "DataInCoreFloat.h"
2 
3 #define BLOCK_SIZE 16
5 
6 
7  int nomp=omp_get_num_threads();
8 
9  if(nomp==0) nth=1;
10 
11  nth=nomp;
12 
13  b_omp.push_back(0);
14  long long i=0;
15  i=(long long) vals-((unsigned long) vals/BLOCK_SIZE)*BLOCK_SIZE;
16  if(i!=0) b_omp[0]=BLOCK_SIZE-i;
17  long long nblocks=(n123-b_omp[0])/BLOCK_SIZE;
18  for(int ii=0; ii < nomp; ii++){
19  long block=nblocks/(nomp-ii);
20  n_omp.push_back(block);
21  nblocks-=block;
22  b_omp.push_back(b_omp[ii]+block*BLOCK_SIZE);
23  }
24 
25 
26 }
27 
28 void SEP::data1DFloat::clean_1d(){
29 
30  delete array;
31  array = NULL;
32 };
33 void SEP::dataInCoreFloat::cleanInCoreFloat(){
34 
35 }
36 
37 void SEP::data1DFloat::base_1d(long long n){
38  array= new float_1d(boost::extents[n]);
39  set_n123((long long)n);
40  vals=(float*)array->data();
41  setup_omp();
42 
43 }
44 void SEP::data2DFloat::base_2d(long long n1,long long n2){
45  array= new float_2d(boost::extents[n1][n2]);
46  long long n=n1;
47  n*=(long long) n2;
48  set_n123(n);
49  vals=(float*)array->data();
50  setup_omp();
51 }
52 
53 void SEP::data3DFloat::base_3d(long long n1,long long n2, long long n3){
54  array= new float_3d(boost::extents[n1][n2][n3]);
55  long long n=n1;
56  n*=(long long) n2;
57  n*=(long long) n3;
58  set_n123(n);
59  vals=(float*)array->data();
60  setup_omp();
61 
62 }
63 void SEP::data4DFloat::base_4d(long long n1,long long n2, long long n3, long long n4){
64  array= new float_4d(boost::extents[n1][n2][n3][n4]);
65  long long n=n1;
66  n*=(long long) n2;
67  n*=(long long) n3;
68  n*=(long long) n4;
69  set_n123(n);
70  vals=(float*)array->data();
71  setup_omp();
72 
73 }
74 
75 void SEP::data5DFloat::base_5d(long long n1,long long n2, long long n3, long long n4, long long n5){
76  array= new float_5d(boost::extents[n1][n2][n3][n4][n5]);
77  long long n=n1;
78  n*=(long long) n2;
79  n*=(long long) n3;
80  n*=(long long) n4;
81  n*=(long long) n5;
82  set_n123(n);
83  vals=(float*)array->data();
84  setup_omp();
85 
86 }
87 void SEP::data6DFloat::base_6d(long long n1,long long n2, long long n3, long long n4, long long n5, long long n6){
88  array= new float_6d(boost::extents[n1][n2][n3][n4][n5][n6]);
89  long long n=n1;
90  n*=(long long) n2;
91  n*=(long long) n3;
92  n*=(long long) n4;
93  n*=(long long) n5;
94  n*=(long long) n6;
95  set_n123(n);
96  vals=(float*)array->data();
97  setup_omp();
98 
99 }
100 void SEP::data7DFloat::base_7d(long long n1,long long n2, long long n3, long long n4, long long n5, long long n6, long long n7){
101  array= new float_7d(boost::extents[n1][n2][n3][n4][n5][n6][n7]);
102  long long n=n1;
103  n*=(long long) n2;
104  n*=(long long) n3;
105  n*=(long long) n4;
106  n*=(long long) n5;
107  n*=(long long) n6;
108  n*=(long long) n7;
109  set_n123(n);
110  vals=(float*)array->data();
111  setup_omp();
112 
113 }