libflame  revision_anchor
FLASH_Queue_main_prototypes.h
Go to the documentation of this file.
1 /*
2 
3  Copyright (C) 2014, The University of Texas at Austin
4 
5  This file is part of libflame and is available under the 3-Clause
6  BSD license, which can be found in the LICENSE file at the top-level
7  directory, or at http://opensource.org/licenses/BSD-3-Clause
8 
9 */
10 
11 #ifndef FLASH_QUEUE_MAIN_PROTOTYPES_H
12 #define FLASH_QUEUE_MAIN_PROTOTYPES_H
13 
14 
15 void FLASH_Queue_begin( void );
16 void FLASH_Queue_end( void );
17 unsigned int FLASH_Queue_stack_depth( void );
18 
22 
23 void FLASH_Queue_set_num_threads( unsigned int n_threads );
24 unsigned int FLASH_Queue_get_num_threads( void );
25 
26 
27 #ifdef FLA_ENABLE_SUPERMATRIX
28 
29 
30 void FLASH_Queue_init( void );
31 void FLASH_Queue_finalize( void );
32 
33 unsigned int FLASH_Queue_get_num_tasks( void );
34 
37 void FLASH_Queue_set_sorting( FLA_Bool sorting );
39 void FLASH_Queue_set_caching( FLA_Bool caching );
41 void FLASH_Queue_set_work_stealing( FLA_Bool work_stealing );
43 void FLASH_Queue_set_data_affinity( FLASH_Data_aff data_affinity );
45 double FLASH_Queue_get_total_time( void );
46 double FLASH_Queue_get_parallel_time( void );
47 
48 void FLASH_Queue_exec( void );
49 
50 
51 // --- helper functions -------------------------------------------------------
52 
53 void FLASH_Queue_set_parallel_time( double dtime );
60 void FLASH_Queue_set_cores_per_cache( int cores );
62 void FLASH_Queue_set_cores_per_queue( int cores );
64 void FLASH_Queue_reset( void );
67 void FLASH_Queue_push( void *func, void *cntl, char *name,
68  FLA_Bool enabled_gpu,
69  int n_int_args, int n_fla_args,
70  int n_input_args, int n_output_args, ... );
73 FLASH_Task* FLASH_Task_alloc( void *func, void *cntl, char *name,
74  FLA_Bool enabled_gpu,
75  int n_int_args, int n_fla_args,
76  int n_input_args, int n_output_args );
77 void FLASH_Task_free( FLASH_Task *t );
79 void FLASH_Queue_verbose_output( void );
80 
81 void FLASH_Queue_init_tasks( void *arg );
82 void FLASH_Queue_wait_enqueue( FLASH_Task *t, void *arg );
83 FLASH_Task* FLASH_Queue_wait_dequeue( int queue, int cache, void *arg );
84 FLASH_Task* FLASH_Queue_wait_dequeue_block( int queue, int cache, void *arg );
85 void FLASH_Queue_update_cache( FLASH_Task *t, void *arg );
86 void FLASH_Queue_update_cache_block( FLA_Obj obj, int cache, FLA_Bool output, void *arg );
87 void FLASH_Queue_prefetch( int cache, void *arg );
89 FLASH_Task* FLASH_Queue_work_stealing( int queue, void *arg );
90 #ifdef FLA_ENABLE_GPU
91 void FLASH_Queue_create_gpu( int thread, void *arg );
92 void FLASH_Queue_destroy_gpu( int thread, void *arg );
95 FLA_Bool FLASH_Queue_check_block_gpu( FLA_Obj obj, int thread, void *arg );
96 void FLASH_Queue_update_gpu( FLASH_Task *t, void **input_arg, void **output_arg, void *arg );
97 void FLASH_Queue_update_block_gpu( FLA_Obj obj, void **buffer_gpu, int thread, void *arg );
98 void FLASH_Queue_mark_gpu( FLASH_Task *t, void *arg );
99 void FLASH_Queue_invalidate_block_gpu( FLA_Obj obj, int thread, void *arg );
100 void FLASH_Queue_flush_block_gpu( FLA_Obj obj, int thread, void *arg );
101 void FLASH_Queue_flush_gpu( int thread, void *arg );
102 #endif
103 void FLASH_Queue_exec_parallel( void *arg );
104 void* FLASH_Queue_exec_parallel_function( void *arg );
107 void FLASH_Task_free_parallel( FLASH_Task *t, void *arg );
108 
109 void FLASH_Queue_exec_simulation( void *arg );
110 
111 
112 #endif // FLA_ENABLE_SUPERMATRIX
113 
114 
115 #endif // FLASH_QUEUE_MAIN_PROTOTYPES_H
void FLASH_Queue_set_sorting(FLA_Bool sorting)
Definition: FLASH_Queue.c:319
void FLASH_Queue_flush_block_gpu(FLA_Obj obj, int thread, void *arg)
Definition: FLASH_Queue_exec.c:1893
void FLASH_Queue_set_cache_line_size(dim_t size)
Definition: FLASH_Queue.c:511
FLA_Bool FLASH_Queue_get_enabled(void)
Definition: FLASH_Queue.c:171
double FLASH_Queue_get_parallel_time(void)
Definition: FLASH_Queue.c:430
void FLASH_Queue_exec_task(FLASH_Task *t)
Definition: FLASH_Queue.c:1141
void FLASH_Queue_push_output(FLA_Obj obj, FLASH_Task *t)
Definition: FLASH_Queue.c:842
void FLASH_Queue_exec_parallel(void *arg)
Definition: FLASH_Queue_exec.c:2043
void FLASH_Queue_set_num_threads(unsigned int n_threads)
Definition: FLASH_Queue.c:187
FLA_Bool FLASH_Queue_get_sorting(void)
Definition: FLASH_Queue.c:332
FLA_Bool FLASH_Queue_check_block_gpu(FLA_Obj obj, int thread, void *arg)
Definition: FLASH_Queue_exec.c:1546
void FLASH_Task_free_parallel(FLASH_Task *t, void *arg)
Definition: FLASH_Queue_exec.c:2446
void FLASH_Queue_update_gpu(FLASH_Task *t, void **input_arg, void **output_arg, void *arg)
Definition: FLASH_Queue_exec.c:1590
void FLASH_Queue_create_gpu(int thread, void *arg)
Definition: FLASH_Queue_exec.c:1227
void FLASH_Queue_update_block_gpu(FLA_Obj obj, void **buffer_gpu, int thread, void *arg)
Definition: FLASH_Queue_exec.c:1695
void FLASH_Queue_set_data_affinity(FLASH_Data_aff data_affinity)
Definition: FLASH_Queue.c:391
FLASH_Verbose FLASH_Queue_get_verbose_output(void)
Definition: FLASH_Queue.c:308
FLA_Bool FLASH_Queue_get_work_stealing(void)
Definition: FLASH_Queue.c:380
FLA_Bool FLASH_Queue_exec_gpu(FLASH_Task *t, void *arg)
Definition: FLASH_Queue_exec.c:1288
void FLASH_Queue_prefetch(int cache, void *arg)
Definition: FLASH_Queue_exec.c:1024
void FLASH_Queue_prefetch_block(FLA_Obj obj)
Definition: FLASH_Queue_exec.c:1056
void FLASH_Queue_begin(void)
Definition: FLASH_Queue.c:59
FLA_Error FLASH_Queue_enable(void)
Definition: FLASH_Queue.c:117
void FLASH_Queue_invalidate_block_gpu(FLA_Obj obj, int thread, void *arg)
Definition: FLASH_Queue_exec.c:1844
void FLASH_Queue_set_caching(FLA_Bool caching)
Definition: FLASH_Queue.c:343
double FLASH_Queue_get_total_time(void)
Definition: FLASH_Queue.c:415
FLA_Bool FLASH_Queue_check_gpu(FLASH_Task *t, void *arg)
Definition: FLASH_Queue_exec.c:1447
dim_t FLASH_Queue_get_cache_line_size(void)
Definition: FLASH_Queue.c:524
void FLASH_Queue_set_block_size(dim_t size)
Definition: FLASH_Queue.c:461
FLASH_Task * FLASH_Task_update_binding(FLASH_Task *t, FLASH_Task *r, void *arg)
Definition: FLASH_Queue_exec.c:2394
void FLASH_Queue_set_verbose_output(FLASH_Verbose verbose)
Definition: FLASH_Queue.c:295
void FLASH_Queue_push(void *func, void *cntl, char *name, FLA_Bool enabled_gpu, int n_int_args, int n_fla_args, int n_input_args, int n_output_args,...)
Definition: FLASH_Queue.c:625
FLA_Bool FLASH_Queue_get_caching(void)
Definition: FLASH_Queue.c:356
void FLASH_Queue_set_parallel_time(double dtime)
Definition: FLASH_Queue.c:448
void FLASH_Queue_verbose_output(void)
Definition: FLASH_Queue.c:1782
void FLASH_Queue_update_cache_block(FLA_Obj obj, int cache, FLA_Bool output, void *arg)
Definition: FLASH_Queue_exec.c:949
void FLASH_Queue_exec_simulation(void *arg)
Definition: FLASH_Queue_exec.c:2589
dim_t FLASH_Queue_get_cache_size(void)
Definition: FLASH_Queue.c:500
void FLASH_Queue_wait_enqueue(FLASH_Task *t, void *arg)
Definition: FLASH_Queue_exec.c:2924
unsigned int FLASH_Queue_stack_depth(void)
Definition: FLASH_Queue.c:106
FLASH_Task * FLASH_Queue_get_head_task(void)
Definition: FLASH_Queue.c:603
void * FLASH_Queue_exec_parallel_function(void *arg)
Definition: FLASH_Queue_exec.c:2982
FLASH_Task * FLASH_Task_update_dependencies(FLASH_Task *t, void *arg)
Definition: FLASH_Queue_exec.c:3044
void FLASH_Queue_flush_gpu(int thread, void *arg)
Definition: FLASH_Queue_exec.c:1961
void FLASH_Queue_set_work_stealing(FLA_Bool work_stealing)
Definition: FLASH_Queue.c:367
FLASH_Task * FLASH_Queue_wait_dequeue(int queue, int cache, void *arg)
Definition: FLASH_Queue_exec.c:2956
void FLASH_Queue_set_cache_size(dim_t size)
Definition: FLASH_Queue.c:487
int FLASH_Queue_get_cores_per_cache(void)
Definition: FLASH_Queue.c:548
void FLASH_Queue_finalize(void)
Definition: FLASH_Queue.c:262
void FLASH_Queue_init(void)
Definition: FLASH_Queue.c:237
FLASH_Task * FLASH_Queue_get_tail_task(void)
Definition: FLASH_Queue.c:614
void FLASH_Queue_destroy_gpu(int thread, void *arg)
Definition: FLASH_Queue_exec.c:1255
void FLASH_Queue_update_cache(FLASH_Task *t, void *arg)
Definition: FLASH_Queue_exec.c:847
FLASH_Task * FLASH_Queue_wait_dequeue_block(int queue, int cache, void *arg)
Definition: FLASH_Queue_exec.c:779
void FLASH_Queue_end(void)
Definition: FLASH_Queue.c:81
void FLASH_Task_free(FLASH_Task *t)
Definition: FLASH_Queue.c:1020
FLASH_Data_aff FLASH_Queue_get_data_affinity(void)
Definition: FLASH_Queue.c:404
void FLASH_Queue_mark_gpu(FLASH_Task *t, void *arg)
Definition: FLASH_Queue_exec.c:1787
void FLASH_Queue_set_cores_per_queue(int cores)
Definition: FLASH_Queue.c:559
int FLASH_Queue_get_cores_per_queue(void)
Definition: FLASH_Queue.c:572
void FLASH_Queue_push_input(FLA_Obj obj, FLASH_Task *t)
Definition: FLASH_Queue.c:767
unsigned int FLASH_Queue_get_num_threads(void)
Definition: FLASH_Queue.c:223
void FLASH_Queue_reset(void)
Definition: FLASH_Queue.c:583
FLASH_Task * FLASH_Task_alloc(void *func, void *cntl, char *name, FLA_Bool enabled_gpu, int n_int_args, int n_fla_args, int n_input_args, int n_output_args)
Definition: FLASH_Queue.c:956
unsigned int FLASH_Queue_get_num_tasks(void)
Definition: FLASH_Queue.c:284
void FLASH_Queue_set_cores_per_cache(int cores)
Definition: FLASH_Queue.c:535
void FLASH_Queue_init_tasks(void *arg)
Definition: FLASH_Queue_exec.c:2830
void FLASH_Queue_exec(void)
Definition: FLASH_Queue_exec.c:2756
FLASH_Task * FLASH_Queue_work_stealing(int queue, void *arg)
Definition: FLASH_Queue_exec.c:1155
FLA_Error FLASH_Queue_disable(void)
Definition: FLASH_Queue.c:144
dim_t FLASH_Queue_get_block_size(void)
Definition: FLASH_Queue.c:476
int FLA_Error
Definition: FLA_type_defs.h:47
int FLASH_Verbose
Definition: FLA_type_defs.h:113
int FLASH_Data_aff
Definition: FLA_type_defs.h:114
unsigned long dim_t
Definition: FLA_type_defs.h:71
int FLA_Bool
Definition: FLA_type_defs.h:46
Definition: FLA_type_defs.h:184
Definition: FLA_type_defs.h:159