source: SymbolTable/arrays/driver.cxx @ 1173

Last change on this file since 1173 was 1173, checked in by ksherdy, 8 years ago

Initial check in of SIMD amenable dynamic array classes.

File size: 4.1 KB
Line 
1#include "StackArray2D.h"
2#include "HeapArray2D.h"
3#include "HeapArray.h"
4#include <cstdlib>
5#include <vector>
6#include <stdio.h>
7#include <emmintrin.h>
8using namespace std;
9
10#define REPEAT 1000000
11
12void heap_ary_1D();
13void heap_ary_2D();
14
15int main() {
16
17        heap_ary_1D();
18        heap_ary_2D();
19       
20        return EXIT_SUCCESS;   
21}
22
23// HEAP BASED ARRAY
24void heap_ary_1D() {
25
26  cout << "----- HEAPARRAY1D -----" << endl;
27 
28  for(int i = 0; i<REPEAT; i++) 
29  { 
30   
31    // Allocate 1D arrays
32    HeapArray<unsigned char>  heap_ary0(1,sizeof(__m128i),sizeof(__m128i));             // allocates 1 16 byte chunks of memory to hold at least 1 unsigned char
33    HeapArray<unsigned char> heap_ary1(2,sizeof(__m128i),sizeof(__m128i));              // allocates 1 16 byte chunks of memory to hold at least 1 unsigned char
34    HeapArray<unsigned char> heap_ary2(15,sizeof(__m128i),sizeof(__m128i));             // allocates 1 16 byte chunks of memory to hold at least 1 unsigned char
35    HeapArray<unsigned char> heap_ary3(16,sizeof(__m128i),sizeof(__m128i));             // allocates 1 16 byte chunks of memory to hold at least 1 unsigned char
36    HeapArray<unsigned char> heap_ary4(17,sizeof(__m128i),sizeof(__m128i));             // allocates 2 16 byte chunks of memory to hold at least 17 unsigned char
37    HeapArray<unsigned char> heap_ary5(16,sizeof(__m128i)*4,sizeof(__m128i));           // allocates 1 64 byte chunk of memory to hold at least 16 unsigned char
38    HeapArray<size_t> heap_ary6(1,sizeof(__m128i),sizeof(__m128i));                     // allocates 1 16*sizeof(size_t) byte chunks of memory to hold at least 1 size_t
39    HeapArray<size_t> heap_ary7(5,sizeof(__m128i),sizeof(__m128i));                     // allocates 2 16*sizeof(size_t) byte chunks of memory to hold at least 5 size_t
40
41    // Push 33 unsigned char values into the first array
42    unsigned char c = 40;
43    for(size_t i = 0; i<33; i++) 
44    {
45        cout << "heap_ary0.push_back(" << c << ")" << endl;
46        heap_ary0.push_back(c);
47        c++;
48    }
49
50    // Show array contents
51    cout << "heap_ary0.size() = " << heap_ary0.size()  << endl;
52    for(size_t i = 0; i<heap_ary0.size(); i++) 
53    {
54        cout << "heap_ary0.get(" << i << ") = " << heap_ary0.get(i) << endl;
55    }
56
57    // Push 17 size_t values into the first array
58    for(size_t i = 0; i<18; i++) 
59    {
60        cout << "heap_ary6.push_back(" << i << ")" << endl;
61        heap_ary6.push_back(i);
62        c++;
63    }
64
65    // Show array contents
66    cout << "heap_ary6.size() = " << heap_ary6.size()  << endl;
67    for(size_t i = 0; i<heap_ary6.size(); i++) 
68    {
69        cout << "heap_ary6.get(" << i << ") = " << heap_ary6.get(i) << endl;
70    }
71  }
72}
73
74void heap_ary_2D() {
75
76      cout << "----- HEAPARRAY2D -----" << endl;
77
78      for(int i = 0; i<REPEAT; i++) 
79      {
80              HeapArray2D<unsigned char> h2(0,0,17,sizeof(__m128i));
81
82              unsigned char c = 40;
83              int row = 0;
84              // push colums values in row 0
85              for(size_t i = 0; i<17; i++) 
86              {
87                      cout << "h2.push_back(" << row << "," << c << ")" << endl;               
88                      h2.push_back(row,c);
89                      c++;
90              }
91
92              c = 40;
93              row = 3;
94              // push colums values in row 0
95              for(size_t i = 0; i<19; i++) 
96              {
97                      cout << "h2.push_back(" << row << "," << c << ")" << endl;     
98                      h2.push_back(3,c);
99                      c++;
100              }
101
102              cout << "h2.rows() = " << h2.rows() << endl;
103
104              for(size_t i = 0; i<h2.rows(); i++) 
105              {
106                      cout << "h2.size(" << i << ") = " << h2.size(i) << endl;
107                      for(size_t j = 0; j < h2.size(i); j++) 
108                      {
109                              cout << "h2.get(" << i << "," << j << ") = " << h2.get(i,j) << endl;     
110                      }
111                      cout << endl;
112              }
113      } 
114       
115}
116
117
118/*
119
120cout << "----- STACK BASED ARRAYS -----" << endl;
121
122size_t rows = 32;
123size_t cols = 16;
124
125StackArray2D<unsigned int> array(STACK_ARRAY_2D(unsigned int, rows, cols));
126
127for(size_t i=0; i<rows; i++) {
128        for(size_t j=0; j<cols;j++) {
129                array.Push_back(i,i);   
130        }
131}
132
133for(size_t i=0; i<rows; i++) {
134        size_t cols = array.RowSize(i);
135        for(size_t j=0; j<cols;j++) {
136                cout << array.Get(i,j);
137        }
138        cout << endl;
139}
140*/
141
142/*
143
144cout << "----- STL VECTOR -----" << endl;
145
146for(int i = 0; i<REPEAT; i++) {
147
148        {
149                vector< vector<size_t> > v(1);
150
151                for(size_t i = 0; i<1000; i++) {
152                        v[0].push_back(i);     
153                }
154               
155                for(size_t i = 0; i<v[0].size(); i++) {
156                        cout << v[0][i];       
157                }
158                cout << endl;
159        }
160       
161}
162*/
Note: See TracBrowser for help on using the repository browser.