00001
00002
00003
00004
00005 #ifndef LIB_XOMP_H
00006 #define LIB_XOMP_H
00007
00008
00009
00010 #define MAX_OUTLINED_FUNC_PARAMETER_COUNT 256
00011 #ifdef __cplusplus
00012 extern "C" {
00013 #endif
00014
00015 #include <stdbool.h>
00016 #include <stdlib.h>
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 extern void XOMP_init (int argc, char ** argv);
00028 extern void xomp_init (void);
00029
00030
00031 extern void XOMP_terminate (int exitcode);
00032
00033
00034
00035
00036
00037 extern void XOMP_parallel_start (void (*func) (void *), void *data, unsigned ifClauseValue, unsigned numThreadsSpecified);
00038 extern void XOMP_parallel_end (void);
00039
00040
00041 extern int XOMP_sections_init_next(int section_count);
00042
00043
00044 extern int XOMP_sections_next(void);
00045
00046
00047 extern void XOMP_sections_end(void);
00048
00049
00050 extern void XOMP_sections_end_nowait(void);
00051
00052 extern void XOMP_task (void (*) (void *), void *, void (*) (void *, void *),
00053 long, long, bool, unsigned);
00054 extern void XOMP_taskwait (void);
00055
00056
00057
00058
00059
00060
00061
00062 extern void XOMP_loop_default(int lower, int upper, int stride, long* n_lower, long* n_upper);
00063
00065
00066 extern void XOMP_loop_static_init(int lower, int upper, int stride, int chunk_size);
00067 extern void XOMP_loop_dynamic_init(int lower, int upper, int stride, int chunk_size);
00068 extern void XOMP_loop_guided_init(int lower, int upper, int stride, int chunk_size);
00069 extern void XOMP_loop_runtime_init(int lower, int upper, int stride);
00070
00071
00072 extern void XOMP_loop_ordered_static_init(int lower, int upper, int stride, int chunk_size);
00073 extern void XOMP_loop_ordered_dynamic_init(int lower, int upper, int stride, int chunk_size);
00074 extern void XOMP_loop_ordered_guided_init(int lower, int upper, int stride, int chunk_size);
00075 extern void XOMP_loop_ordered_runtime_init(int lower, int upper, int stride);
00076
00077
00078
00079
00080
00081
00082
00083 extern bool XOMP_loop_static_start (long, long, long, long, long *, long *);
00084 extern bool XOMP_loop_dynamic_start (long, long, long, long, long *, long *);
00085 extern bool XOMP_loop_guided_start (long, long, long, long, long *, long *);
00086 extern bool XOMP_loop_runtime_start (long, long, long, long *, long *);
00087
00088 extern bool XOMP_loop_ordered_static_start (long, long, long, long, long *, long *);
00089 extern bool XOMP_loop_ordered_dynamic_start (long, long, long, long, long *, long *);
00090 extern bool XOMP_loop_ordered_guided_start (long, long, long, long, long *, long *);
00091 extern bool XOMP_loop_ordered_runtime_start (long, long, long, long *, long *);
00092
00093
00094 extern bool XOMP_loop_static_next (long *, long *);
00095 extern bool XOMP_loop_dynamic_next (long *, long *);
00096 extern bool XOMP_loop_guided_next (long *, long *);
00097 extern bool XOMP_loop_runtime_next (long *, long *);
00098
00099 extern bool XOMP_loop_ordered_static_next (long *, long *);
00100 extern bool XOMP_loop_ordered_dynamic_next (long *, long *);
00101 extern bool XOMP_loop_ordered_guided_next (long *, long *);
00102 extern bool XOMP_loop_ordered_runtime_next (long *, long *);
00103
00104
00105
00106 extern void XOMP_barrier (void);
00107 extern void XOMP_critical_start (void** data);
00108 extern void XOMP_critical_end (void** data);
00109 extern bool XOMP_single(void);
00110 extern bool XOMP_master(void);
00111
00112 extern void XOMP_atomic_start (void);
00113 extern void XOMP_atomic_end (void);
00114
00115 extern void XOMP_loop_end (void);
00116 extern void XOMP_loop_end_nowait (void);
00117
00118
00119 extern void XOMP_flush_all (void);
00120
00121 extern void XOMP_flush_one (char * startAddress, int nbyte);
00122
00123
00124
00125 extern void XOMP_ordered_start (void);
00126 extern void XOMP_ordered_end (void);
00127
00128 #ifdef __cplusplus
00129 }
00130 #endif
00131
00132 #endif
00133
00134
00135
00136