StarPU Handbook
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
28extern "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{
114};
115
119struct starpu_parallel_worker_config;
120
125struct starpu_parallel_worker_config *starpu_parallel_worker_init(hwloc_obj_type_t parallel_worker_level, ...);
126
130int starpu_parallel_worker_shutdown(struct starpu_parallel_worker_config *parallel_workers);
131
136int starpu_parallel_worker_print(struct starpu_parallel_worker_config *parallel_workers);
137
140#define starpu_parallel_worker_intel_openmp_mkl_prologue starpu_parallel_worker_openmp_prologue
141#ifdef STARPU_MKL
142void starpu_parallel_worker_gnu_openmp_mkl_prologue(void *);
143#endif /* STARPU_MKL */
144
145#define STARPU_CLUSTER_MIN_NB STARPU_PARALLEL_WORKER_MIN_NB
146#define STARPU_CLUSTER_MAX_NB STARPU_PARALLEL_WORKER_MAX_NB
147#define STARPU_CLUSTER_NB STARPU_PARALLEL_WORKER_NB
148#define STARPU_CLUSTER_PREFERE_MIN STARPU_PARALLEL_WORKER_PREFERE_MIN
149#define STARPU_CLUSTER_KEEP_HOMOGENEOUS STARPU_PARALLEL_WORKER_KEEP_HOMOGENEOUS
150#define STARPU_CLUSTER_POLICY_NAME STARPU_PARALLEL_WORKER_POLICY_NAME
151#define STARPU_CLUSTER_POLICY_STRUCT STARPU_PARALLEL_WORKER_POLICY_STRUCT
152#define STARPU_CLUSTER_CREATE_FUNC STARPU_PARALLEL_WORKER_CREATE_FUNC
153#define STARPU_CLUSTER_CREATE_FUNC_ARG STARPU_PARALLEL_WORKER_CREATE_FUNC_ARG
154#define STARPU_CLUSTER_TYPE STARPU_PARALLEL_WORKER_TYPE
155#define STARPU_CLUSTER_AWAKE_WORKERS STARPU_PARALLEL_WORKER_AWAKE_WORKERS
156#define STARPU_CLUSTER_PARTITION_ONE STARPU_PARALLEL_WORKER_PARTITION_ONE
157#define STARPU_CLUSTER_NEW STARPU_PARALLEL_WORKER_NEW
158#define STARPU_CLUSTER_NCORES STARPU_PARALLEL_WORKER_NCORES
162{
165#ifdef STARPU_MKL
167#endif
168};
172struct starpu_cluster_machine *starpu_cluster_machine(hwloc_obj_type_t cluster_level, ...) STARPU_DEPRECATED;
174int starpu_uncluster_machine(struct starpu_cluster_machine *clusters) STARPU_DEPRECATED;
176int starpu_cluster_print(struct starpu_cluster_machine *clusters) STARPU_DEPRECATED;
177
180#ifdef __cplusplus
181}
182#endif
183#endif
184#endif
185
186#endif /* __STARPU_PARALLEL_WORKERS_UTIL_H__ */
int starpu_parallel_worker_print(struct starpu_parallel_worker_config *parallel_workers)
int starpu_parallel_worker_shutdown(struct starpu_parallel_worker_config *parallel_workers)
int starpu_uncluster_machine(struct starpu_cluster_machine *clusters)
starpu_cluster_types
Definition: starpu_parallel_worker.h:162
struct starpu_cluster_machine * starpu_cluster_machine(hwloc_obj_type_t cluster_level,...)
void starpu_parallel_worker_openmp_prologue(void *)
starpu_parallel_worker_types
Definition: starpu_parallel_worker.h:110
int starpu_cluster_print(struct starpu_cluster_machine *clusters)
struct starpu_parallel_worker_config * starpu_parallel_worker_init(hwloc_obj_type_t parallel_worker_level,...)
@ STARPU_CLUSTER_OPENMP
Definition: starpu_parallel_worker.h:163
@ STARPU_CLUSTER_INTEL_OPENMP_MKL
Definition: starpu_parallel_worker.h:164
@ STARPU_CLUSTER_GNU_OPENMP_MKL
Definition: starpu_parallel_worker.h:166
@ STARPU_PARALLEL_WORKER_GNU_OPENMP_MKL
Definition: starpu_parallel_worker.h:113
@ STARPU_PARALLEL_WORKER_OPENMP
Definition: starpu_parallel_worker.h:111
@ STARPU_PARALLEL_WORKER_INTEL_OPENMP_MKL
Definition: starpu_parallel_worker.h:112