StarPU Handbook - StarPU FAQs
Loading...
Searching...
No Matches
starpu_openmp.h
Go to the documentation of this file.
1/* StarPU --- Runtime system for heterogeneous multicore architectures.
2 *
3 * Copyright (C) 2014-2023 Université de Bordeaux, CNRS (LaBRI UMR 5800), Inria
4 *
5 * StarPU is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU Lesser General Public License as published by
7 * the Free Software Foundation; either version 2.1 of the License, or (at
8 * your option) any later version.
9 *
10 * StarPU is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13 *
14 * See the GNU Lesser General Public License in COPYING.LGPL for more details.
15 */
16
17#ifndef __STARPU_OPENMP_H__
18#define __STARPU_OPENMP_H__
19
20#include <starpu_config.h>
21
28#if defined STARPU_OPENMP
38typedef struct
39{
40 void *internal;
42
52typedef struct
53{
54 void *internal;
56
76
91
141
147{
164 void *cl_arg;
174 unsigned cl_arg_free;
175 int priority;
176
187
198
203 int nogroup_clause;
204
205 int collapse;
206 int num_tasks;
207 unsigned long long nb_iterations;
208 unsigned long long grainsize;
209 unsigned long long begin_i;
210 unsigned long long end_i;
211 unsigned long long chunk;
212};
213
214#ifdef __cplusplus
215extern "C" {
216#define __STARPU_OMP_NOTHROW throw()
217#else
218#define __STARPU_OMP_NOTHROW __attribute__((__nothrow__))
219#endif
220
229extern int starpu_omp_init(void) __STARPU_OMP_NOTHROW;
233extern void starpu_omp_shutdown(void) __STARPU_OMP_NOTHROW;
234
252extern void starpu_omp_parallel_region(const struct starpu_omp_parallel_region_attr *attr) __STARPU_OMP_NOTHROW;
253
263extern void starpu_omp_master(void (*f)(void *arg), void *arg) __STARPU_OMP_NOTHROW;
264
275extern int starpu_omp_master_inline(void) __STARPU_OMP_NOTHROW;
276
293extern void starpu_omp_barrier(void) __STARPU_OMP_NOTHROW;
294
308extern void starpu_omp_critical(void (*f)(void *arg), void *arg, const char *name) __STARPU_OMP_NOTHROW;
309
321extern void starpu_omp_critical_inline_begin(const char *name) __STARPU_OMP_NOTHROW;
322
334extern void starpu_omp_critical_inline_end(const char *name) __STARPU_OMP_NOTHROW;
335
354extern void starpu_omp_single(void (*f)(void *arg), void *arg, int nowait) __STARPU_OMP_NOTHROW;
355
367extern int starpu_omp_single_inline(void) __STARPU_OMP_NOTHROW;
368
383extern void starpu_omp_single_copyprivate(void (*f)(void *arg, void *data, unsigned long long data_size), void *arg, void *data, unsigned long long data_size) __STARPU_OMP_NOTHROW;
384
397extern void *starpu_omp_single_copyprivate_inline_begin(void *data) __STARPU_OMP_NOTHROW;
398
413extern void starpu_omp_single_copyprivate_inline_end(void) __STARPU_OMP_NOTHROW;
414
436extern void starpu_omp_for(void (*f)(unsigned long long _first_i, unsigned long long _nb_i, void *arg), void *arg, unsigned long long nb_iterations, unsigned long long chunk, int schedule, int ordered, int nowait) __STARPU_OMP_NOTHROW;
437
458extern int starpu_omp_for_inline_first(unsigned long long nb_iterations, unsigned long long chunk, int schedule, int ordered, unsigned long long *_first_i, unsigned long long *_nb_i) __STARPU_OMP_NOTHROW;
459
480extern int starpu_omp_for_inline_next(unsigned long long nb_iterations, unsigned long long chunk, int schedule, int ordered, unsigned long long *_first_i, unsigned long long *_nb_i) __STARPU_OMP_NOTHROW;
481
496extern void starpu_omp_for_alt(void (*f)(unsigned long long _begin_i, unsigned long long _end_i, void *arg), void *arg, unsigned long long nb_iterations, unsigned long long chunk, int schedule, int ordered, int nowait) __STARPU_OMP_NOTHROW;
497
510extern int starpu_omp_for_inline_first_alt(unsigned long long nb_iterations, unsigned long long chunk, int schedule, int ordered, unsigned long long *_begin_i, unsigned long long *_end_i) __STARPU_OMP_NOTHROW;
511
524extern int starpu_omp_for_inline_next_alt(unsigned long long nb_iterations, unsigned long long chunk, int schedule, int ordered, unsigned long long *_begin_i, unsigned long long *_end_i) __STARPU_OMP_NOTHROW;
525
536extern void starpu_omp_ordered(void (*f)(void *arg), void *arg) __STARPU_OMP_NOTHROW;
537
547extern void starpu_omp_ordered_inline_begin(void) __STARPU_OMP_NOTHROW;
548
557extern void starpu_omp_ordered_inline_end(void) __STARPU_OMP_NOTHROW;
558
571extern void starpu_omp_sections(unsigned long long nb_sections, void (**section_f)(void *arg), void **section_arg, int nowait) __STARPU_OMP_NOTHROW;
572
589extern void starpu_omp_sections_combined(unsigned long long nb_sections, void (*section_f)(unsigned long long section_num, void *arg), void *section_arg, int nowait) __STARPU_OMP_NOTHROW;
590
608extern void starpu_omp_task_region(const struct starpu_omp_task_region_attr *attr) __STARPU_OMP_NOTHROW;
609
619extern void starpu_omp_taskwait(void) __STARPU_OMP_NOTHROW;
620
632extern void starpu_omp_taskgroup(void (*f)(void *arg), void *arg) __STARPU_OMP_NOTHROW;
633
645extern void starpu_omp_taskgroup_inline_begin(void) __STARPU_OMP_NOTHROW;
646
658extern void starpu_omp_taskgroup_inline_end(void) __STARPU_OMP_NOTHROW;
659
660extern void starpu_omp_taskloop_inline_begin(struct starpu_omp_task_region_attr *attr) __STARPU_OMP_NOTHROW;
661
662extern void starpu_omp_taskloop_inline_end(const struct starpu_omp_task_region_attr *attr) __STARPU_OMP_NOTHROW;
663
686extern void starpu_omp_set_num_threads(int threads) __STARPU_OMP_NOTHROW;
687
700extern int starpu_omp_get_num_threads(void) __STARPU_OMP_NOTHROW;
701
715extern int starpu_omp_get_thread_num(void) __STARPU_OMP_NOTHROW;
716
730extern int starpu_omp_get_max_threads(void) __STARPU_OMP_NOTHROW;
731
744extern int starpu_omp_get_num_procs(void) __STARPU_OMP_NOTHROW;
745
754extern int starpu_omp_in_parallel(void) __STARPU_OMP_NOTHROW;
755
765extern void starpu_omp_set_dynamic(int dynamic_threads) __STARPU_OMP_NOTHROW;
766
777extern int starpu_omp_get_dynamic(void) __STARPU_OMP_NOTHROW;
778
792extern void starpu_omp_set_nested(int nested) __STARPU_OMP_NOTHROW;
793
808extern int starpu_omp_get_nested(void) __STARPU_OMP_NOTHROW;
809
815extern int starpu_omp_get_cancellation(void) __STARPU_OMP_NOTHROW;
816
827extern void starpu_omp_set_schedule(enum starpu_omp_sched_value kind, int modifier) __STARPU_OMP_NOTHROW;
828
836extern void starpu_omp_get_schedule(enum starpu_omp_sched_value *kind, int *modifier) __STARPU_OMP_NOTHROW;
837
845extern int starpu_omp_get_thread_limit(void) __STARPU_OMP_NOTHROW;
846
860extern void starpu_omp_set_max_active_levels(int max_levels) __STARPU_OMP_NOTHROW;
861
875extern int starpu_omp_get_max_active_levels(void) __STARPU_OMP_NOTHROW;
876
890extern int starpu_omp_get_level(void) __STARPU_OMP_NOTHROW;
891
899extern int starpu_omp_get_ancestor_thread_num(int level) __STARPU_OMP_NOTHROW;
900
908extern int starpu_omp_get_team_size(int level) __STARPU_OMP_NOTHROW;
909
923extern int starpu_omp_get_active_level(void) __STARPU_OMP_NOTHROW;
924
933extern int starpu_omp_in_final(void) __STARPU_OMP_NOTHROW;
934
942extern enum starpu_omp_proc_bind_value starpu_omp_get_proc_bind(void) __STARPU_OMP_NOTHROW;
943
951extern int starpu_omp_get_num_places(void) __STARPU_OMP_NOTHROW;
952
960extern int starpu_omp_get_place_num_procs(int place_num) __STARPU_OMP_NOTHROW;
961
967extern void starpu_omp_get_place_proc_ids(int place_num, int *ids) __STARPU_OMP_NOTHROW;
968
976extern int starpu_omp_get_place_num(void) __STARPU_OMP_NOTHROW;
977
985extern int starpu_omp_get_partition_num_places(void) __STARPU_OMP_NOTHROW;
986
992extern void starpu_omp_get_partition_place_nums(int *place_nums) __STARPU_OMP_NOTHROW;
993
1004extern void starpu_omp_set_default_device(int device_num) __STARPU_OMP_NOTHROW;
1005
1016extern int starpu_omp_get_default_device(void) __STARPU_OMP_NOTHROW;
1017
1025extern int starpu_omp_get_num_devices(void) __STARPU_OMP_NOTHROW;
1026
1036extern int starpu_omp_get_num_teams(void) __STARPU_OMP_NOTHROW;
1037
1047extern int starpu_omp_get_team_num(void) __STARPU_OMP_NOTHROW;
1048
1054extern int starpu_omp_is_initial_device(void) __STARPU_OMP_NOTHROW;
1055
1063extern int starpu_omp_get_initial_device(void) __STARPU_OMP_NOTHROW;
1064
1077extern int starpu_omp_get_max_task_priority(void) __STARPU_OMP_NOTHROW;
1078
1089extern void starpu_omp_init_lock(starpu_omp_lock_t *lock) __STARPU_OMP_NOTHROW;
1090
1101extern void starpu_omp_destroy_lock(starpu_omp_lock_t *lock) __STARPU_OMP_NOTHROW;
1102
1114extern void starpu_omp_set_lock(starpu_omp_lock_t *lock) __STARPU_OMP_NOTHROW;
1115
1127extern void starpu_omp_unset_lock(starpu_omp_lock_t *lock) __STARPU_OMP_NOTHROW;
1128
1143extern int starpu_omp_test_lock(starpu_omp_lock_t *lock) __STARPU_OMP_NOTHROW;
1144
1155extern void starpu_omp_init_nest_lock(starpu_omp_nest_lock_t *lock) __STARPU_OMP_NOTHROW;
1156
1167extern void starpu_omp_destroy_nest_lock(starpu_omp_nest_lock_t *lock) __STARPU_OMP_NOTHROW;
1168
1183extern void starpu_omp_set_nest_lock(starpu_omp_nest_lock_t *lock) __STARPU_OMP_NOTHROW;
1184
1201extern void starpu_omp_unset_nest_lock(starpu_omp_nest_lock_t *lock) __STARPU_OMP_NOTHROW;
1202
1220extern int starpu_omp_test_nest_lock(starpu_omp_nest_lock_t *lock) __STARPU_OMP_NOTHROW;
1221
1229extern void starpu_omp_atomic_fallback_inline_begin(void) __STARPU_OMP_NOTHROW;
1230
1237extern void starpu_omp_atomic_fallback_inline_end(void) __STARPU_OMP_NOTHROW;
1238
1248extern double starpu_omp_get_wtime(void) __STARPU_OMP_NOTHROW;
1249
1259extern double starpu_omp_get_wtick(void) __STARPU_OMP_NOTHROW;
1260
1269extern void starpu_omp_vector_annotate(starpu_data_handle_t handle, uint32_t slice_base) __STARPU_OMP_NOTHROW;
1270
1274extern struct starpu_arbiter *starpu_omp_get_default_arbiter(void) __STARPU_OMP_NOTHROW;
1275
1284extern void starpu_omp_handle_register(starpu_data_handle_t handle) __STARPU_OMP_NOTHROW;
1285
1294extern void starpu_omp_handle_unregister(starpu_data_handle_t handle) __STARPU_OMP_NOTHROW;
1295
1303extern starpu_data_handle_t starpu_omp_data_lookup(const void *ptr) __STARPU_OMP_NOTHROW;
1304
1307#ifdef __cplusplus
1308}
1309#endif
1310
1311#endif /* STARPU_USE_OPENMP && !STARPU_DONT_INCLUDE_OPENMP_HEADERS */
1312
1315#endif /* __STARPU_OPENMP_H__ */
const char * name
Definition starpu_task.h:626
Definition starpu_task.h:338
struct _starpu_data_state * starpu_data_handle_t
Definition starpu_data.h:45
int num_threads
Definition starpu_openmp.h:139
struct starpu_codelet cl
Definition starpu_openmp.h:154
size_t cl_arg_size
Definition starpu_openmp.h:169
int mergeable_clause
Definition starpu_openmp.h:197
int is_loop
Definition starpu_openmp.h:202
struct starpu_codelet cl
Definition starpu_openmp.h:103
starpu_data_handle_t * handles
Definition starpu_openmp.h:159
void * internal
Definition starpu_openmp.h:54
size_t cl_arg_size
Definition starpu_openmp.h:118
int untied_clause
Definition starpu_openmp.h:192
void * cl_arg
Definition starpu_openmp.h:113
starpu_data_handle_t * handles
Definition starpu_openmp.h:108
void * internal
Definition starpu_openmp.h:40
unsigned cl_arg_free
Definition starpu_openmp.h:174
void * cl_arg
Definition starpu_openmp.h:164
int final_clause
Definition starpu_openmp.h:186
unsigned cl_arg_free
Definition starpu_openmp.h:123
int if_clause
Definition starpu_openmp.h:129
int if_clause
Definition starpu_openmp.h:181
int starpu_omp_get_thread_limit(void) __STARPU_OMP_NOTHROW
int starpu_omp_for_inline_next_alt(unsigned long long nb_iterations, unsigned long long chunk, int schedule, int ordered, unsigned long long *_begin_i, unsigned long long *_end_i) __STARPU_OMP_NOTHROW
int starpu_omp_get_num_threads(void) __STARPU_OMP_NOTHROW
void starpu_omp_destroy_nest_lock(starpu_omp_nest_lock_t *lock) __STARPU_OMP_NOTHROW
void starpu_omp_ordered_inline_end(void) __STARPU_OMP_NOTHROW
int starpu_omp_get_nested(void) __STARPU_OMP_NOTHROW
int starpu_omp_get_thread_num(void) __STARPU_OMP_NOTHROW
int starpu_omp_get_team_size(int level) __STARPU_OMP_NOTHROW
int starpu_omp_get_num_teams(void) __STARPU_OMP_NOTHROW
int starpu_omp_get_ancestor_thread_num(int level) __STARPU_OMP_NOTHROW
void starpu_omp_for_alt(void(*f)(unsigned long long _begin_i, unsigned long long _end_i, void *arg), void *arg, unsigned long long nb_iterations, unsigned long long chunk, int schedule, int ordered, int nowait) __STARPU_OMP_NOTHROW
void starpu_omp_set_num_threads(int threads) __STARPU_OMP_NOTHROW
int starpu_omp_get_active_level(void) __STARPU_OMP_NOTHROW
void starpu_omp_critical_inline_end(const char *name) __STARPU_OMP_NOTHROW
starpu_omp_sched_value
Definition starpu_openmp.h:68
void starpu_omp_for(void(*f)(unsigned long long _first_i, unsigned long long _nb_i, void *arg), void *arg, unsigned long long nb_iterations, unsigned long long chunk, int schedule, int ordered, int nowait) __STARPU_OMP_NOTHROW
void starpu_omp_master(void(*f)(void *arg), void *arg) __STARPU_OMP_NOTHROW
void starpu_omp_set_dynamic(int dynamic_threads) __STARPU_OMP_NOTHROW
struct starpu_arbiter * starpu_omp_get_default_arbiter(void) __STARPU_OMP_NOTHROW
void starpu_omp_set_default_device(int device_num) __STARPU_OMP_NOTHROW
void starpu_omp_parallel_region(const struct starpu_omp_parallel_region_attr *attr) __STARPU_OMP_NOTHROW
int starpu_omp_get_max_threads(void) __STARPU_OMP_NOTHROW
void starpu_omp_init_nest_lock(starpu_omp_nest_lock_t *lock) __STARPU_OMP_NOTHROW
enum starpu_omp_proc_bind_value starpu_omp_get_proc_bind(void) __STARPU_OMP_NOTHROW
int starpu_omp_get_level(void) __STARPU_OMP_NOTHROW
void starpu_omp_taskgroup_inline_end(void) __STARPU_OMP_NOTHROW
void starpu_omp_sections(unsigned long long nb_sections, void(**section_f)(void *arg), void **section_arg, int nowait) __STARPU_OMP_NOTHROW
void starpu_omp_single_copyprivate(void(*f)(void *arg, void *data, unsigned long long data_size), void *arg, void *data, unsigned long long data_size) __STARPU_OMP_NOTHROW
void starpu_omp_destroy_lock(starpu_omp_lock_t *lock) __STARPU_OMP_NOTHROW
int starpu_omp_get_default_device(void) __STARPU_OMP_NOTHROW
int starpu_omp_get_num_devices(void) __STARPU_OMP_NOTHROW
void starpu_omp_sections_combined(unsigned long long nb_sections, void(*section_f)(unsigned long long section_num, void *arg), void *section_arg, int nowait) __STARPU_OMP_NOTHROW
int starpu_omp_for_inline_next(unsigned long long nb_iterations, unsigned long long chunk, int schedule, int ordered, unsigned long long *_first_i, unsigned long long *_nb_i) __STARPU_OMP_NOTHROW
void starpu_omp_taskgroup(void(*f)(void *arg), void *arg) __STARPU_OMP_NOTHROW
int starpu_omp_for_inline_first_alt(unsigned long long nb_iterations, unsigned long long chunk, int schedule, int ordered, unsigned long long *_begin_i, unsigned long long *_end_i) __STARPU_OMP_NOTHROW
void starpu_omp_get_place_proc_ids(int place_num, int *ids) __STARPU_OMP_NOTHROW
double starpu_omp_get_wtick(void) __STARPU_OMP_NOTHROW
void starpu_omp_single_copyprivate_inline_end(void) __STARPU_OMP_NOTHROW
void starpu_omp_set_nested(int nested) __STARPU_OMP_NOTHROW
void starpu_omp_get_partition_place_nums(int *place_nums) __STARPU_OMP_NOTHROW
int starpu_omp_get_initial_device(void) __STARPU_OMP_NOTHROW
void starpu_omp_taskwait(void) __STARPU_OMP_NOTHROW
void starpu_omp_ordered_inline_begin(void) __STARPU_OMP_NOTHROW
void starpu_omp_set_max_active_levels(int max_levels) __STARPU_OMP_NOTHROW
void starpu_omp_atomic_fallback_inline_begin(void) __STARPU_OMP_NOTHROW
int starpu_omp_get_partition_num_places(void) __STARPU_OMP_NOTHROW
void starpu_omp_init_lock(starpu_omp_lock_t *lock) __STARPU_OMP_NOTHROW
int starpu_omp_for_inline_first(unsigned long long nb_iterations, unsigned long long chunk, int schedule, int ordered, unsigned long long *_first_i, unsigned long long *_nb_i) __STARPU_OMP_NOTHROW
void starpu_omp_vector_annotate(starpu_data_handle_t handle, uint32_t slice_base) __STARPU_OMP_NOTHROW
void starpu_omp_set_nest_lock(starpu_omp_nest_lock_t *lock) __STARPU_OMP_NOTHROW
void starpu_omp_get_schedule(enum starpu_omp_sched_value *kind, int *modifier) __STARPU_OMP_NOTHROW
void starpu_omp_set_schedule(enum starpu_omp_sched_value kind, int modifier) __STARPU_OMP_NOTHROW
void starpu_omp_single(void(*f)(void *arg), void *arg, int nowait) __STARPU_OMP_NOTHROW
void starpu_omp_critical(void(*f)(void *arg), void *arg, const char *name) __STARPU_OMP_NOTHROW
int starpu_omp_get_dynamic(void) __STARPU_OMP_NOTHROW
int starpu_omp_single_inline(void) __STARPU_OMP_NOTHROW
void starpu_omp_shutdown(void) __STARPU_OMP_NOTHROW
int starpu_omp_init(void) __STARPU_OMP_NOTHROW
void starpu_omp_taskgroup_inline_begin(void) __STARPU_OMP_NOTHROW
void starpu_omp_handle_unregister(starpu_data_handle_t handle) __STARPU_OMP_NOTHROW
int starpu_omp_in_final(void) __STARPU_OMP_NOTHROW
void starpu_omp_critical_inline_begin(const char *name) __STARPU_OMP_NOTHROW
int starpu_omp_test_nest_lock(starpu_omp_nest_lock_t *lock) __STARPU_OMP_NOTHROW
int starpu_omp_get_max_task_priority(void) __STARPU_OMP_NOTHROW
int starpu_omp_test_lock(starpu_omp_lock_t *lock) __STARPU_OMP_NOTHROW
int starpu_omp_get_cancellation(void) __STARPU_OMP_NOTHROW
void * starpu_omp_single_copyprivate_inline_begin(void *data) __STARPU_OMP_NOTHROW
void starpu_omp_barrier(void) __STARPU_OMP_NOTHROW
int starpu_omp_master_inline(void) __STARPU_OMP_NOTHROW
starpu_omp_proc_bind_value
Definition starpu_openmp.h:83
int starpu_omp_get_num_procs(void) __STARPU_OMP_NOTHROW
void starpu_omp_handle_register(starpu_data_handle_t handle) __STARPU_OMP_NOTHROW
int starpu_omp_get_num_places(void) __STARPU_OMP_NOTHROW
void starpu_omp_atomic_fallback_inline_end(void) __STARPU_OMP_NOTHROW
void starpu_omp_ordered(void(*f)(void *arg), void *arg) __STARPU_OMP_NOTHROW
void starpu_omp_task_region(const struct starpu_omp_task_region_attr *attr) __STARPU_OMP_NOTHROW
void starpu_omp_set_lock(starpu_omp_lock_t *lock) __STARPU_OMP_NOTHROW
int starpu_omp_in_parallel(void) __STARPU_OMP_NOTHROW
int starpu_omp_get_place_num_procs(int place_num) __STARPU_OMP_NOTHROW
int starpu_omp_is_initial_device(void) __STARPU_OMP_NOTHROW
double starpu_omp_get_wtime(void) __STARPU_OMP_NOTHROW
starpu_data_handle_t starpu_omp_data_lookup(const void *ptr) __STARPU_OMP_NOTHROW
void starpu_omp_unset_nest_lock(starpu_omp_nest_lock_t *lock) __STARPU_OMP_NOTHROW
void starpu_omp_unset_lock(starpu_omp_lock_t *lock) __STARPU_OMP_NOTHROW
int starpu_omp_get_place_num(void) __STARPU_OMP_NOTHROW
int starpu_omp_get_max_active_levels(void) __STARPU_OMP_NOTHROW
int starpu_omp_get_team_num(void) __STARPU_OMP_NOTHROW
@ starpu_omp_sched_static
Definition starpu_openmp.h:70
@ starpu_omp_sched_undefined
Definition starpu_openmp.h:69
@ starpu_omp_sched_auto
Definition starpu_openmp.h:73
@ starpu_omp_sched_guided
Definition starpu_openmp.h:72
@ starpu_omp_sched_runtime
Definition starpu_openmp.h:74
@ starpu_omp_sched_dynamic
Definition starpu_openmp.h:71
@ starpu_omp_proc_bind_false
Definition starpu_openmp.h:85
@ starpu_omp_proc_bind_spread
Definition starpu_openmp.h:89
@ starpu_omp_proc_bind_true
Definition starpu_openmp.h:86
@ starpu_omp_proc_bind_master
Definition starpu_openmp.h:87
@ starpu_omp_proc_bind_close
Definition starpu_openmp.h:88
@ starpu_omp_proc_bind_undefined
Definition starpu_openmp.h:84
Definition starpu_openmp.h:39
Definition starpu_openmp.h:53
Definition starpu_openmp.h:97
Definition starpu_openmp.h:147