Arax -8d09c51940345c86062e8ef2427c705ae66e5926
A Runtime Framework for Decoupling Applications from Heterogeneous Accelerators
Loading...
Searching...
No Matches
arax_data.h
Go to the documentation of this file.
1#ifndef ARAX_DATA_HEADER
2#define ARAX_DATA_HEADER
3#include <arax.h>
4#include "core/arax_object.h"
5#include "async.h"
6#include <conf.h>
7#include "core/arax_accel.h"
8
9#ifdef __cplusplus
10extern "C" {
11#endif /* ifdef __cplusplus */
12
16#define ARAX_BUFF_ALLOC_SIZE(SIZE, ALIGN) ( (SIZE) + (ALIGN) + sizeof(size_t *) )
17
21#define ARAX_DATA_ALLOC_SIZE(DATA) \
22 ARAX_BUFF_ALLOC_SIZE( \
23 ( arax_data_size(DATA) ), \
24 (((arax_data_s *) (DATA))->align) \
25 )
26
31
32typedef struct arax_data_s arax_data_s;
33
35
37{
38 arax_object_s obj; /* Might make this optional (for perf
39 * reasons) */
40 void * remote;
41 void * accel_meta;
43 size_t size;
44 size_t align;
45 size_t flags;
46 void * buffer;
48 #ifdef ARAX_DATA_TRACK
49 char * alloc_track;
50 #endif
51};
52
54
56{
57 void * remote;
58 size_t size;
59 void * phys;
60};
61
68
75arax_data_s* arax_data_init_aligned(arax_pipe_s *vpipe, size_t size, size_t align);
76
85void arax_data_get(arax_data *data, void *user);
86
94void arax_data_set_remote(arax_data_s *data, arax_accel *accel, void *remt);
95
101void arax_data_set_accel(arax_data_s *data, arax_accel *accel);
102
112void arax_data_set(arax_data *data, arax_accel *accel, const void *user);
113
125void arax_data_memcpy(arax_accel *accel, arax_data_s *dst, arax_data_s *src, int block);
126
127#ifndef DOXYGEN_SHOULD_SKIP_THIS
128void arax_data_arg_init(arax_data_s *data, arax_accel *accel);
129
131
133#endif
134
140size_t arax_data_size(arax_data *data);
141
145void arax_data_free(arax_data *data);
146
150void arax_data_stat(arax_data *data, const char *file, size_t line);
151
152#define arax_data_stat(DATA) arax_data_stat(DATA, __FILE__, __LINE__);
153
154#ifdef ARAX_DATA_ANNOTATE
155#define arax_data_annotate(DATA, ...) \
156 arax_object_rename((arax_object_s *) DATA, __VA_ARGS__)
157#else
158#define arax_data_annotate(DATA, ...)
159#endif
160
161#ifdef __cplusplus
162}
163#endif /* ifdef __cplusplus */
164
165#endif /* ifndef ARAX_DATA_HEADER */
struct arax_pipe arax_pipe_s
void arax_accel
Definition arax_types.h:9
void arax_data
Definition arax_types.h:56
arax_data_flags
Definition arax_data.h:28
@ OTHR_REMT
Definition arax_data.h:29
void arax_data_arg_init(arax_data_s *data, arax_accel *accel)
Definition arax_data.c:220
void arax_data_output_init(arax_data_s *data, arax_accel *accel)
Definition arax_data.c:240
void arax_data_input_init(arax_data_s *data, arax_accel *accel)
Definition arax_data.c:229
size_t arax_data_size(arax_data *data)
Definition arax_data.c:251
#define arax_data_stat(DATA)
Definition arax_data.h:152
arax_data_s * arax_data_init_aligned(arax_pipe_s *vpipe, size_t size, size_t align)
Definition arax_data.c:21
void arax_data_get(arax_data *data, void *user)
Definition arax_data.c:52
void arax_data_memcpy(arax_accel *accel, arax_data_s *dst, arax_data_s *src, int block)
Definition arax_data.c:95
void arax_data_set(arax_data *data, arax_accel *accel, const void *user)
Definition arax_data.c:75
int arax_data_sync_fn(arax_data_s *)
Definition arax_data.h:34
void arax_data_free(arax_data *data)
Definition arax_data.c:325
void arax_data_set_remote(arax_data_s *data, arax_accel *accel, void *remt)
Definition arax_data.c:206
void arax_data_set_accel(arax_data_s *data, arax_accel *accel)
Definition arax_data.c:195
enum arax_data_flags arax_data_flags_e
arax_data_s * arax_data_init(arax_pipe_s *vpipe, size_t size)
Definition arax_data.c:16
arax_pipe_s * vpipe
Definition impl.c:17
void * accel_meta
Definition arax_data.h:41
void * buffer
Definition arax_data.h:46
arax_object_s obj
Definition arax_data.h:38
size_t size
Definition arax_data.h:43
void * remote
Definition arax_data.h:40
arax_accel * accel
Definition arax_data.h:42
arax_accel_s * phys
Definition arax_data.h:47
size_t align
Definition arax_data.h:44
size_t flags
Definition arax_data.h:45
void * phys
Definition arax_data.h:59
size_t size
Definition arax_data.h:58
void * remote
Definition arax_data.h:57