StarPU Handbook - StarPU Applications
starpu_parallel_worker.h
Go to the documentation of this file.
1 /* StarPU --- Runtime system for heterogeneous multicore architectures.
2  *
3  * Copyright (C) 2015-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_PARALLEL_WORKERS_UTIL_H__
18 #define __STARPU_PARALLEL_WORKERS_UTIL_H__
19 
20 #include <starpu_config.h>
21 
22 #ifdef STARPU_PARALLEL_WORKER
23 #ifdef STARPU_HAVE_HWLOC
24 
25 #include <hwloc.h>
26 
27 #ifdef __cplusplus
28 extern "C" {
29 #endif
30 
39 #define STARPU_PARALLEL_WORKER_MIN_NB (1 << STARPU_MODE_SHIFT)
40 
44 #define STARPU_PARALLEL_WORKER_MAX_NB (2 << STARPU_MODE_SHIFT)
45 
49 #define STARPU_PARALLEL_WORKER_NB (3 << STARPU_MODE_SHIFT)
50 
54 #define STARPU_PARALLEL_WORKER_PREFERE_MIN (4 << STARPU_MODE_SHIFT)
55 
59 #define STARPU_PARALLEL_WORKER_KEEP_HOMOGENEOUS (5 << STARPU_MODE_SHIFT)
60 
64 #define STARPU_PARALLEL_WORKER_POLICY_NAME (6 << STARPU_MODE_SHIFT)
65 
69 #define STARPU_PARALLEL_WORKER_POLICY_STRUCT (7 << STARPU_MODE_SHIFT)
70 
74 #define STARPU_PARALLEL_WORKER_CREATE_FUNC (8 << STARPU_MODE_SHIFT)
75 
79 #define STARPU_PARALLEL_WORKER_CREATE_FUNC_ARG (9 << STARPU_MODE_SHIFT)
83 #define STARPU_PARALLEL_WORKER_TYPE (10 << STARPU_MODE_SHIFT)
84 
88 #define STARPU_PARALLEL_WORKER_AWAKE_WORKERS (11 << STARPU_MODE_SHIFT)
89 
93 #define STARPU_PARALLEL_WORKER_PARTITION_ONE (12 << STARPU_MODE_SHIFT)
94 
98 #define STARPU_PARALLEL_WORKER_NEW (13 << STARPU_MODE_SHIFT)
99 
103 #define STARPU_PARALLEL_WORKER_NCORES (14 << STARPU_MODE_SHIFT)
104 
110 {
113 #ifdef STARPU_MKL
115 #endif
116 };
117 
121 struct starpu_parallel_worker_config;
122 
127 struct starpu_parallel_worker_config *starpu_parallel_worker_init(hwloc_obj_type_t parallel_worker_level, ...);
128 
132 int starpu_parallel_worker_shutdown(struct starpu_parallel_worker_config *parallel_workers);
133 
138 int starpu_parallel_worker_print(struct starpu_parallel_worker_config *parallel_workers);
139 
142 #define starpu_intel_openmp_mkl_prologue starpu_openmp_prologue
143 #ifdef STARPU_MKL
144 void starpu_gnu_openmp_mkl_prologue(void *);
145 #endif /* STARPU_MKL */
146 
147 #define STARPU_CLUSTER_MIN_NB STARPU_PARALLEL_WORKER_MIN_NB
148 #define STARPU_CLUSTER_MAX_NB STARPU_PARALLEL_WORKER_MAX_NB
149 #define STARPU_CLUSTER_NB STARPU_PARALLEL_WORKER_NB
150 #define STARPU_CLUSTER_PREFERE_MIN STARPU_PARALLEL_WORKER_PREFERE_MIN
151 #define STARPU_CLUSTER_KEEP_HOMOGENEOUS STARPU_PARALLEL_WORKER_KEEP_HOMOGENEOUS
152 #define STARPU_CLUSTER_POLICY_NAME STARPU_PARALLEL_WORKER_POLICY_NAME
153 #define STARPU_CLUSTER_POLICY_STRUCT STARPU_PARALLEL_WORKER_POLICY_STRUCT
154 #define STARPU_CLUSTER_CREATE_FUNC STARPU_PARALLEL_WORKER_CREATE_FUNC
155 #define STARPU_CLUSTER_CREATE_FUNC_ARG STARPU_PARALLEL_WORKER_CREATE_FUNC_ARG
156 #define STARPU_CLUSTER_TYPE STARPU_PARALLEL_WORKER_TYPE
157 #define STARPU_CLUSTER_AWAKE_WORKERS STARPU_PARALLEL_WORKER_AWAKE_WORKERS
158 #define STARPU_CLUSTER_PARTITION_ONE STARPU_PARALLEL_WORKER_PARTITION_ONE
159 #define STARPU_CLUSTER_NEW STARPU_PARALLEL_WORKER_NEW
160 #define STARPU_CLUSTER_NCORES STARPU_PARALLEL_WORKER_NCORES
164 {
167 #ifdef STARPU_MKL
169 #endif
170 };
172 struct starpu_cluster_machine STARPU_DEPRECATED;
174 struct starpu_cluster_machine *starpu_cluster_machine(hwloc_obj_type_t cluster_level, ...) STARPU_DEPRECATED;
176 int starpu_uncluster_machine(struct starpu_cluster_machine *clusters) STARPU_DEPRECATED;
178 int starpu_cluster_print(struct starpu_cluster_machine *clusters) STARPU_DEPRECATED;
179 
182 #ifdef __cplusplus
183 }
184 #endif
185 #endif
186 #endif
187 
188 #endif /* __STARPU_PARALLEL_WORKERS_UTIL_H__ */
int starpu_parallel_worker_print(struct starpu_parallel_worker_config *parallel_workers)
struct starpu_cluster_machine * starpu_cluster_machine(hwloc_obj_type_t cluster_level,...)
int starpu_parallel_worker_shutdown(struct starpu_parallel_worker_config *parallel_workers)
int starpu_uncluster_machine(struct starpu_cluster_machine *clusters)
void starpu_openmp_prologue(void *)
starpu_cluster_types
Definition: starpu_parallel_worker.h:164
struct starpu_parallel_worker_config * starpu_parallel_worker_init(hwloc_obj_type_t parallel_worker_level,...)
starpu_parallel_worker_types
Definition: starpu_parallel_worker.h:110
int starpu_cluster_print(struct starpu_cluster_machine *clusters)
@ STARPU_CLUSTER_OPENMP
Definition: starpu_parallel_worker.h:165
@ STARPU_CLUSTER_INTEL_OPENMP_MKL
Definition: starpu_parallel_worker.h:166
@ STARPU_CLUSTER_GNU_OPENMP_MKL
Definition: starpu_parallel_worker.h:168
@ STARPU_PARALLEL_WORKER_GNU_OPENMP_MKL
Definition: starpu_parallel_worker.h:114
@ STARPU_PARALLEL_WORKER_OPENMP
Definition: starpu_parallel_worker.h:111
@ STARPU_PARALLEL_WORKER_INTEL_OPENMP_MKL
Definition: starpu_parallel_worker.h:112