RaftLib  0.3a
C++ Stream Processing Template Library
allocate.hpp
1 
25 #ifndef _ALLOCATE_HPP_
26 #define _ALLOCATE_HPP_ 1
27 
28 #include "kernelkeeper.tcc"
29 #include "kernel.hpp"
30 #include "port_info.hpp"
31 #include "fifo.hpp"
32 #include <set>
33 
43 #if defined __AVX__ || __AVX2__
44 #define ALLOC_ALIGN_WIDTH 32
45 #else
46 #define ALLOC_ALIGN_WIDTH 16
47 #endif
48 
49 #define INITIAL_ALLOC_SIZE 64
50 
51 class Map;
52 class basic_parallel;
53 
54 class Allocate
55 {
56 public:
66  Allocate( Map &map, volatile bool &exit_alloc );
67 
71  virtual ~Allocate();
72 
78  virtual void run() = 0;
79 
84  void waitTillReady() ;
85 
86 
87 protected:
99  void initialize( PortInfo * const src,
100  PortInfo * const dst,
101  FIFO * const fifo );
102 
103 
104  virtual void allocate( PortInfo &a, PortInfo &b, void *data );
105 
110  void setReady() ;
111 
113  kernelkeeper &source_kernels;
114  kernelkeeper &all_kernels;
115 
120  std::set< FIFO* > allocated_fifo;
121 
127  volatile bool &exit_alloc;
128 private:
129  volatile bool ready = false;
130  friend class basic_parallel;
131 };
132 #endif /* END _ALLOCATE_HPP_ */
volatile bool & exit_alloc
Definition: allocate.hpp:127
Definition: basicparallel.hpp:48
void setReady()
Definition: allocate.cpp:52
void waitTillReady()
Definition: allocate.cpp:46
virtual ~Allocate()
Definition: allocate.cpp:37
std::set< FIFO * > allocated_fifo
Definition: allocate.hpp:120
virtual void run()=0
Definition: map.hpp:47
Definition: allocate.hpp:54
Allocate(Map &map, volatile bool &exit_alloc)
Definition: allocate.cpp:30
Definition: port_info.hpp:39
void initialize(PortInfo *const src, PortInfo *const dst, FIFO *const fifo)
Definition: allocate.cpp:58
kernelkeeper & source_kernels
Definition: allocate.hpp:113
Definition: fifo.hpp:48