13const char *
arax_version =
"VT_VERSION " ARAX_GIT_REV
" - " ARAX_GIT_BRANCH;
27{ (
void *) CONF_ARAX_MMAP_BASE, {
'\0' }, 0, 0, 0, 0, 0, NULL, 0 };
29#define arax_pipe_get() arax_state.vpipe
31#define GO_FAIL(MSG) ({ err = __LINE__; err_msg = MSG; goto FAIL; })
41 int enforce_version = 0;
42 const char *err_msg =
"No Error Set";
44 if (__sync_fetch_and_add(&(
arax_state.threads), 1) != 0) {
55 GO_FAIL(
"No shm_file set in config");
63 GO_FAIL(
"shm_size exceeds system memory");
80 GO_FAIL(
"Could not open shm_file");
82 GO_FAIL(
"Could not first mmap shm_file");
95 GO_FAIL(
"Could not mmap shm_file in proper address");
104 GO_FAIL(
"Could not initialize arax_pipe");
111 printf(
"ShmSize:%zu\n",
arax_state.vpipe->shm_size);
113 printf(
"InstanceUID:%zu\n",
arax_state.instance_uid);
116 if (wait_controller) {
125 printf(
"%c[31mprepare_arax Failed on line %d (conf:%s,file:%s,shm:%p)\n\
126 Why:%s%c[0m\n", 27, err, ARAX_CONFIG_FILE,
arax_state.shm_file,
161 if (__sync_fetch_and_add(&(
arax_state.threads), -1) == 1) {
168 if (available !=
arax_state.initialy_available) {
169 printf(
"\033[1;31mERROR : shm LEAK !!\n\033[0m");
175 arax_state.vpipe = (
void *) CONF_ARAX_MMAP_BASE;
178 printf(
"arax_pipe_exit() = %d\n", last);
183 printf(
"Could not delete \"%s\"\n",
arax_state.shm_file);
188 "WARNING:arax_exit() called with no matching\
189 call to arax_init()!\n");
253 if (!type || accel->
type == type) {
266 if (!type || accel->
type == type) {
339 int return_value = 0;
380 arax_assert(!
"Non accelerator type passed in arax_accel_release");
408 fprintf(stderr,
"Proc %s not found!\n", func_name);
427 size_t all_io = out_count + in_count;
431 for (io_cnt = 0; io_cnt < all_io; io_cnt++) {
433 if (io_cnt < in_count)
434 temp_data_1 = input[io_cnt];
436 temp_data_1 = output[io_cnt - in_count];
439 fprintf(stderr,
"NULL input #%lu\n", io_cnt);
443 fprintf(stderr,
"Input #%lu not valid data\n", io_cnt);
447 for (dup_cnt = 0; dup_cnt < all_io; dup_cnt++) {
449 if (dup_cnt < in_count)
450 temp_data_2 = input[dup_cnt];
452 temp_data_2 = output[dup_cnt - in_count];
455 fprintf(stderr,
"NULL input #%lu\n", dup_cnt);
459 fprintf(stderr,
"Input #%lu not valid data\n", dup_cnt);
468 size_t in_count,
arax_data **dev_in,
size_t out_count,
482 if (host_size && host_init)
491 size_t host_size,
size_t in_count,
arax_data **dev_in,
size_t out_count,
510 memcpy(stats, &(_task->
stats),
sizeof(*stats));
struct arax_pipe arax_pipe_s
enum arax_accel_state arax_accel_state_e
enum arax_accel_type arax_accel_type_e
struct arax_task_stats arax_task_stats_s
struct arax_accel_stats arax_accel_stats_s
#define arax_assert(EXPR)
struct utils_list_node utils_list_node_s
#define utils_list_for_each(list, itr)
enum arax_object_type arax_object_type_e
struct arax_task_msg arax_task_msg_s
void async_condition_wait(async_condition_s *cond)
void async_condition_unlock(async_condition_s *cond)
void async_condition_notify(async_condition_s *cond)
void async_meta_init_always(async_meta_s *meta)
void async_condition_lock(async_condition_s *cond)
arax_pipe_s * _arax_init(int wait_controller)
volatile uint64_t initialized
int check_semantics(size_t in_count, arax_data **input, size_t out_count, arax_data **output)
uint64_t arax_instance_uid()
void arax_accel_list_free_pre_locked(arax_accel **accels)
void arax_controller_init_done()
struct @173207265353054203374042000231016266064377276100 arax_state
arax_pipe_s * arax_controller_init_start()
size_t initialy_available
const char * arax_version
arax_accel_state_e arax_accel_get_stat(arax_accel_s *accel, arax_accel_stats_s *stat)
void arax_accel_add_vaccel(arax_accel_s *accel, arax_vaccel_s *vaccel)
arax_data_s * arax_data_init(arax_pipe_s *vpipe, size_t size)
int arax_object_ref_dec_pre_locked(arax_object_s *obj)
void arax_object_ref_inc(arax_object_s *obj)
utils_list_s * arax_object_list_lock(arax_object_repo_s *repo, arax_object_type_e type)
void arax_object_list_unlock(arax_object_repo_s *repo, arax_object_type_e type)
int arax_object_ref_dec(arax_object_s *obj)
arax_proc_s * arax_pipe_find_proc(arax_pipe_s *pipe, const char *name)
int arax_pipe_have_to_mmap(arax_pipe_s *pipe, int pid)
int arax_pipe_exit(arax_pipe_s *pipe)
void arax_pipe_mark_unmap(arax_pipe_s *pipe, int pid)
void * arax_pipe_mmap_address(arax_pipe_s *pipe)
size_t arax_pipe_get_available_size(arax_pipe_s *pipe)
arax_pipe_s * arax_pipe_init(void *mem, size_t size, int enforce_version)
arax_proc_s * arax_proc_init(arax_object_repo_s *repo, const char *name)
void arax_task_wait_done(arax_task_msg_s *msg)
arax_task_msg_s * arax_task_alloc(arax_pipe_s *vpipe, arax_accel *accel, arax_proc *proc, size_t host_size, int ins, arax_data **dev_in, int outs, arax_data **dev_out)
void * arax_task_host_data(arax_task_msg_s *task, size_t size)
void arax_task_submit(arax_task_msg_s *task)
arax_accel_state_e arax_vaccel_get_stat(arax_vaccel_s *accel, arax_accel_stats_s *stat)
arax_vaccel_s * arax_vaccel_init(arax_pipe_s *pipe, const char *name, arax_accel_type_e type, arax_accel_s *accel)
enum utils_config_source utils_config_get_source()
int utils_config_get_str(char *path, const char *key, char *value, size_t value_size, const char *def_val)
int utils_config_get_size(char *path, const char *key, size_t *value, size_t def_val)
void utils_config_free_path(char *path)
int utils_config_get_bool(char *path, const char *key, int *value, int def_val)
char * utils_config_alloc_path(const char *path)
size_t system_total_memory()
int system_mmap(void **base, int *fd, const char *file, size_t shm_size, size_t shm_off, int truncate)
arax_pipe_s * arax_init()
arax_accel * arax_accel_acquire_type(arax_accel_type_e type)
void arax_accel_set_physical(arax_accel *vaccel, arax_accel *phys)
void arax_accel_list_free(arax_accel **accels)
void arax_accel_release(arax_accel **accel)
int arax_accel_list(arax_accel_type_e type, int physical, arax_accel ***accels)
arax_accel_state_e arax_accel_stat(arax_accel *accel, arax_accel_stats_s *stat)
int arax_accel_acquire_phys(arax_accel **accel)
int arax_proc_put(arax_proc *func)
arax_proc * arax_proc_get(const char *func_name)
arax_proc * arax_proc_register(const char *func_name)
arax_task_state_e arax_task_issue_sync(arax_accel *accel, arax_proc *proc, void *host_init, size_t host_size, size_t in_count, arax_data **dev_in, size_t out_count, arax_data **dev_out)
void arax_task_free(arax_task *task)
arax_task * arax_task_issue(arax_accel *accel, arax_proc *proc, const void *host_init, size_t host_size, size_t in_count, arax_data **dev_in, size_t out_count, arax_data **dev_out)
arax_task_state_e arax_task_wait(arax_task *task)
arax_task_state_e arax_task_stat(arax_task *task, arax_task_stats_s *stats)
arax_buffer_s ARAX_BUFFER(size_t size)