Arax -8d09c51940345c86062e8ef2427c705ae66e5926
A Runtime Framework for Decoupling Applications from Heterogeneous Accelerators
Loading...
Searching...
No Matches
arax_vaccel.h
Go to the documentation of this file.
1#ifndef ARAX_VACCEL_HEADER
2#define ARAX_VACCEL_HEADER
3#include "core/arax_object.h"
4#include "utils/queue.h"
5
7
8#include "core/arax_accel.h"
9#include "utils/queue.h"
10#include "async.h"
11
12#ifdef __cplusplus
13extern "C" {
14#endif /* ifdef __cplusplus */
15
17{
18 SEQUENTIAL, // < Tasks in VAQ will run one after the other(no overlap)
19 PARALLEL // < Tasks in VAQ can run in parallel(can overlap).
21
30{
35 utils_list_node_s vaccels; // Used in pipe->orphan_vacs or phys->vaccels
36 uint64_t cid;
37 uint64_t priority;
39 void * meta; // Metadata pointer available to controller.
41};
42
51arax_vaccel_s* arax_vaccel_init(arax_pipe_s *pipe, const char *name,
52 arax_accel_type_e type, arax_accel_s *accel);
53
55
62
69
73uint64_t arax_vaccel_set_cid(arax_vaccel_s *vaccel, uint64_t cid);
74
78uint64_t arax_vaccel_get_cid(arax_vaccel_s *vaccel);
79
83uint64_t arax_vaccel_set_job_priority(arax_vaccel_s *vaccel, uint64_t priority);
84
89
93void arax_vaccel_set_meta(arax_vaccel_s *vaccel, void *meta);
94
99
107
114unsigned int arax_vaccel_queue_size(arax_vaccel_s *vaccel);
115
117
118#ifdef __cplusplus
119}
120#endif /* ifdef __cplusplus */
121
122#endif /* ifndef ARAX_VACCEL_HEADER */
struct arax_pipe arax_pipe_s
void arax_task
Definition arax_types.h:51
enum arax_accel_state arax_accel_state_e
enum arax_accel_type arax_accel_type_e
struct arax_accel_stats arax_accel_stats_s
struct utils_list_node utils_list_node_s
struct queue utils_queue_s
Definition queue.h:30
volatile uint32_t utils_spinlock
Definition spinlock.h:10
arax_accel_state_e arax_vaccel_get_stat(arax_vaccel_s *accel, arax_accel_stats_s *stat)
arax_accel_ordering_e
Definition arax_vaccel.h:17
@ SEQUENTIAL
Definition arax_vaccel.h:18
@ PARALLEL
Definition arax_vaccel.h:19
uint64_t arax_vaccel_get_job_priority(arax_vaccel_s *vaccel)
Definition arax_vaccel.c:77
arax_vaccel_s * arax_vaccel_init(arax_pipe_s *pipe, const char *name, arax_accel_type_e type, arax_accel_s *accel)
Definition arax_vaccel.c:3
void arax_vaccel_add_task(arax_vaccel_s *accel, arax_task *task)
Definition arax_vaccel.c:32
uint64_t arax_vaccel_set_cid(arax_vaccel_s *vaccel, uint64_t cid)
Definition arax_vaccel.c:57
unsigned int arax_vaccel_queue_size(arax_vaccel_s *vaccel)
void arax_vaccel_set_meta(arax_vaccel_s *vaccel, void *meta)
Definition arax_vaccel.c:83
void * arax_vaccel_get_meta(arax_vaccel_s *vaccel)
Definition arax_vaccel.c:89
arax_accel_ordering_e arax_vaccel_get_ordering(arax_accel_s *accel)
Definition arax_vaccel.c:49
uint64_t arax_vaccel_get_cid(arax_vaccel_s *vaccel)
Definition arax_vaccel.c:64
void arax_vaccel_set_ordering(arax_accel_s *accel, arax_accel_ordering_e ordering)
Definition arax_vaccel.c:41
uint64_t arax_vaccel_set_job_priority(arax_vaccel_s *vaccel, uint64_t priority)
Definition arax_vaccel.c:70
utils_queue_s * arax_vaccel_queue(arax_vaccel_s *vaccel)
Definition arax_vaccel.c:95
arax_accel_ordering_e ordering
Definition arax_vaccel.h:33
utils_spinlock lock
Definition arax_vaccel.h:34
arax_object_s obj
Definition arax_vaccel.h:31
uint64_t cid
Definition arax_vaccel.h:36
arax_accel_s * phys
Definition arax_vaccel.h:38
arax_accel_type_e type
Definition arax_vaccel.h:32
utils_list_node_s vaccels
Definition arax_vaccel.h:35
utils_queue_s queue
Definition arax_vaccel.h:40
uint64_t priority
Definition arax_vaccel.h:37