StarPU Handbook
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-2021 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 { void *internal; } starpu_omp_lock_t;
39
49typedef struct { void *internal; } starpu_omp_nest_lock_t;
50
70
85
135
141{
158 void *cl_arg;
168 unsigned cl_arg_free;
169 int priority;
170
181
192
197 int nogroup_clause;
198
199 int collapse;
200 int num_tasks;
201 unsigned long long nb_iterations;
202 unsigned long long grainsize;
203 unsigned long long begin_i;
204 unsigned long long end_i;
205 unsigned long long chunk;
206};
207
208#ifdef __cplusplus
209extern "C"
210{
211#define __STARPU_OMP_NOTHROW throw ()
212#else
213#define __STARPU_OMP_NOTHROW __attribute__((__nothrow__))
214#endif
215
224extern int starpu_omp_init(void) __STARPU_OMP_NOTHROW;
228extern void starpu_omp_shutdown(void) __STARPU_OMP_NOTHROW;
229
246extern void starpu_omp_parallel_region(const struct starpu_omp_parallel_region_attr *attr) __STARPU_OMP_NOTHROW;
247
256extern void starpu_omp_master(void (*f)(void *arg), void *arg) __STARPU_OMP_NOTHROW;
257
267extern int starpu_omp_master_inline(void) __STARPU_OMP_NOTHROW;
268
284extern void starpu_omp_barrier(void) __STARPU_OMP_NOTHROW;
285
297extern void starpu_omp_critical(void (*f)(void *arg), void *arg, const char *name) __STARPU_OMP_NOTHROW;
298
308extern void starpu_omp_critical_inline_begin(const char *name) __STARPU_OMP_NOTHROW;
309
319extern void starpu_omp_critical_inline_end(const char *name) __STARPU_OMP_NOTHROW;
320
338extern void starpu_omp_single(void (*f)(void *arg), void *arg, int nowait) __STARPU_OMP_NOTHROW;
339
350extern int starpu_omp_single_inline(void) __STARPU_OMP_NOTHROW;
351
364extern 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;
365
376extern void *starpu_omp_single_copyprivate_inline_begin(void *data) __STARPU_OMP_NOTHROW;
377
390extern void starpu_omp_single_copyprivate_inline_end(void) __STARPU_OMP_NOTHROW;
391
412extern 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;
413
432extern 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;
433
452extern 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;
453
466extern 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;
467
478extern 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;
479
490extern 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;
491
500extern void starpu_omp_ordered(void (*f)(void *arg), void *arg) __STARPU_OMP_NOTHROW;
501
509extern void starpu_omp_ordered_inline_begin(void) __STARPU_OMP_NOTHROW;
510
517extern void starpu_omp_ordered_inline_end(void) __STARPU_OMP_NOTHROW;
518
529extern void starpu_omp_sections(unsigned long long nb_sections, void (**section_f)(void *arg), void **section_arg, int nowait) __STARPU_OMP_NOTHROW;
530
545extern 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;
546
562extern void starpu_omp_task_region(const struct starpu_omp_task_region_attr *attr) __STARPU_OMP_NOTHROW;
563
571extern void starpu_omp_taskwait(void) __STARPU_OMP_NOTHROW;
572
582extern void starpu_omp_taskgroup(void (*f)(void *arg), void *arg) __STARPU_OMP_NOTHROW;
583
593extern void starpu_omp_taskgroup_inline_begin(void) __STARPU_OMP_NOTHROW;
594
604extern void starpu_omp_taskgroup_inline_end(void) __STARPU_OMP_NOTHROW;
605
606extern void starpu_omp_taskloop_inline_begin(struct starpu_omp_task_region_attr *attr) __STARPU_OMP_NOTHROW;
607
608extern void starpu_omp_taskloop_inline_end(const struct starpu_omp_task_region_attr *attr) __STARPU_OMP_NOTHROW;
609
630extern void starpu_omp_set_num_threads(int threads) __STARPU_OMP_NOTHROW;
631
642extern int starpu_omp_get_num_threads() __STARPU_OMP_NOTHROW;
643
655extern int starpu_omp_get_thread_num() __STARPU_OMP_NOTHROW;
656
668extern int starpu_omp_get_max_threads() __STARPU_OMP_NOTHROW;
669
680extern int starpu_omp_get_num_procs(void) __STARPU_OMP_NOTHROW;
681
688extern int starpu_omp_in_parallel(void) __STARPU_OMP_NOTHROW;
689
697extern void starpu_omp_set_dynamic(int dynamic_threads) __STARPU_OMP_NOTHROW;
698
707extern int starpu_omp_get_dynamic(void) __STARPU_OMP_NOTHROW;
708
720extern void starpu_omp_set_nested(int nested) __STARPU_OMP_NOTHROW;
721
734extern int starpu_omp_get_nested(void) __STARPU_OMP_NOTHROW;
735
739extern int starpu_omp_get_cancellation(void) __STARPU_OMP_NOTHROW;
740
749extern void starpu_omp_set_schedule(enum starpu_omp_sched_value kind, int modifier) __STARPU_OMP_NOTHROW;
750
758extern void starpu_omp_get_schedule(enum starpu_omp_sched_value *kind, int *modifier) __STARPU_OMP_NOTHROW;
759
765extern int starpu_omp_get_thread_limit(void) __STARPU_OMP_NOTHROW;
766
778extern void starpu_omp_set_max_active_levels(int max_levels) __STARPU_OMP_NOTHROW;
779
791extern int starpu_omp_get_max_active_levels(void) __STARPU_OMP_NOTHROW;
792
804extern int starpu_omp_get_level(void) __STARPU_OMP_NOTHROW;
805
811extern int starpu_omp_get_ancestor_thread_num(int level) __STARPU_OMP_NOTHROW;
812
818extern int starpu_omp_get_team_size(int level) __STARPU_OMP_NOTHROW;
819
831extern int starpu_omp_get_active_level(void) __STARPU_OMP_NOTHROW;
832
839extern int starpu_omp_in_final(void) __STARPU_OMP_NOTHROW;
840
846extern enum starpu_omp_proc_bind_value starpu_omp_get_proc_bind(void) __STARPU_OMP_NOTHROW;
847
848extern int starpu_omp_get_num_places(void) __STARPU_OMP_NOTHROW;
849
850extern int starpu_omp_get_place_num_procs(int place_num) __STARPU_OMP_NOTHROW;
851
852extern void starpu_omp_get_place_proc_ids(int place_num, int *ids) __STARPU_OMP_NOTHROW;
853
854extern int starpu_omp_get_place_num(void) __STARPU_OMP_NOTHROW;
855
856extern int starpu_omp_get_partition_num_places(void) __STARPU_OMP_NOTHROW;
857
858extern void starpu_omp_get_partition_place_nums(int *place_nums) __STARPU_OMP_NOTHROW;
859
868extern void starpu_omp_set_default_device(int device_num) __STARPU_OMP_NOTHROW;
869
878extern int starpu_omp_get_default_device(void) __STARPU_OMP_NOTHROW;
879
885extern int starpu_omp_get_num_devices(void) __STARPU_OMP_NOTHROW;
886
894extern int starpu_omp_get_num_teams(void) __STARPU_OMP_NOTHROW;
895
903extern int starpu_omp_get_team_num(void) __STARPU_OMP_NOTHROW;
904
908extern int starpu_omp_is_initial_device(void) __STARPU_OMP_NOTHROW;
909
912extern int starpu_omp_get_initial_device(void) __STARPU_OMP_NOTHROW;
913
924extern int starpu_omp_get_max_task_priority(void) __STARPU_OMP_NOTHROW;
925
934extern void starpu_omp_init_lock(starpu_omp_lock_t *lock) __STARPU_OMP_NOTHROW;
935
944extern void starpu_omp_destroy_lock(starpu_omp_lock_t *lock) __STARPU_OMP_NOTHROW;
945
955extern void starpu_omp_set_lock(starpu_omp_lock_t *lock) __STARPU_OMP_NOTHROW;
956
966extern void starpu_omp_unset_lock(starpu_omp_lock_t *lock) __STARPU_OMP_NOTHROW;
967
980extern int starpu_omp_test_lock(starpu_omp_lock_t *lock) __STARPU_OMP_NOTHROW;
981
990extern void starpu_omp_init_nest_lock(starpu_omp_nest_lock_t *lock) __STARPU_OMP_NOTHROW;
991
1000extern void starpu_omp_destroy_nest_lock(starpu_omp_nest_lock_t *lock) __STARPU_OMP_NOTHROW;
1001
1014extern void starpu_omp_set_nest_lock(starpu_omp_nest_lock_t *lock) __STARPU_OMP_NOTHROW;
1015
1030extern void starpu_omp_unset_nest_lock(starpu_omp_nest_lock_t *lock) __STARPU_OMP_NOTHROW;
1031
1047extern int starpu_omp_test_nest_lock(starpu_omp_nest_lock_t *lock) __STARPU_OMP_NOTHROW;
1048
1056extern void starpu_omp_atomic_fallback_inline_begin(void) __STARPU_OMP_NOTHROW;
1057
1064extern void starpu_omp_atomic_fallback_inline_end(void) __STARPU_OMP_NOTHROW;
1065
1073extern double starpu_omp_get_wtime(void) __STARPU_OMP_NOTHROW;
1074
1082extern double starpu_omp_get_wtick(void) __STARPU_OMP_NOTHROW;
1083
1092extern void starpu_omp_vector_annotate(starpu_data_handle_t handle, uint32_t slice_base) __STARPU_OMP_NOTHROW;
1093
1096extern struct starpu_arbiter *starpu_omp_get_default_arbiter(void) __STARPU_OMP_NOTHROW;
1097
1100#ifdef __cplusplus
1101}
1102#endif
1103
1104#endif /* STARPU_USE_OPENMP && !STARPU_DONT_INCLUDE_OPENMP_HEADERS */
1105
1108#endif /* __STARPU_OPENMP_H__ */
const char * name
Definition starpu_task.h:515
Definition starpu_task.h:250
struct _starpu_data_state * starpu_data_handle_t
Definition starpu_data.h:44
int num_threads
Definition starpu_openmp.h:133
struct starpu_codelet cl
Definition starpu_openmp.h:148
size_t cl_arg_size
Definition starpu_openmp.h:163
int mergeable_clause
Definition starpu_openmp.h:191
int is_loop
Definition starpu_openmp.h:196
struct starpu_codelet cl
Definition starpu_openmp.h:97
starpu_data_handle_t * handles
Definition starpu_openmp.h:153
void * internal
Definition starpu_openmp.h:49
size_t cl_arg_size
Definition starpu_openmp.h:112
int untied_clause
Definition starpu_openmp.h:186
void * cl_arg
Definition starpu_openmp.h:107
starpu_data_handle_t * handles
Definition starpu_openmp.h:102
void * internal
Definition starpu_openmp.h:38
unsigned cl_arg_free
Definition starpu_openmp.h:168
void * cl_arg
Definition starpu_openmp.h:158
int final_clause
Definition starpu_openmp.h:180
unsigned cl_arg_free
Definition starpu_openmp.h:117
int if_clause
Definition starpu_openmp.h:123
int if_clause
Definition starpu_openmp.h:175
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
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_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:62
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
int starpu_omp_get_num_threads() __STARPU_OMP_NOTHROW
void starpu_omp_set_default_device(int device_num) __STARPU_OMP_NOTHROW
int starpu_omp_get_max_threads() __STARPU_OMP_NOTHROW
void starpu_omp_parallel_region(const struct starpu_omp_parallel_region_attr *attr) __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
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_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
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
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
int starpu_omp_get_thread_num() __STARPU_OMP_NOTHROW
starpu_omp_proc_bind_value
Definition starpu_openmp.h:77
int starpu_omp_get_num_procs(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_is_initial_device(void) __STARPU_OMP_NOTHROW
double starpu_omp_get_wtime(void) __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_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:64
@ starpu_omp_sched_undefined
Definition starpu_openmp.h:63
@ starpu_omp_sched_auto
Definition starpu_openmp.h:67
@ starpu_omp_sched_guided
Definition starpu_openmp.h:66
@ starpu_omp_sched_runtime
Definition starpu_openmp.h:68
@ starpu_omp_sched_dynamic
Definition starpu_openmp.h:65
@ starpu_omp_proc_bind_false
Definition starpu_openmp.h:79
@ starpu_omp_proc_bind_spread
Definition starpu_openmp.h:83
@ starpu_omp_proc_bind_true
Definition starpu_openmp.h:80
@ starpu_omp_proc_bind_master
Definition starpu_openmp.h:81
@ starpu_omp_proc_bind_close
Definition starpu_openmp.h:82
@ starpu_omp_proc_bind_undefined
Definition starpu_openmp.h:78
Definition starpu_openmp.h:38
Definition starpu_openmp.h:49
Definition starpu_openmp.h:91
Definition starpu_openmp.h:141