StarPU Handbook
starpu_clusters.h
Go to the documentation of this file.
1 /* StarPU --- Runtime system for heterogeneous multicore architectures.
2  *
3  * Copyright (C) 2015-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_CLUSTERS_UTIL_H__
18 #define __STARPU_CLUSTERS_UTIL_H__
19 
20 #include <starpu_config.h>
21 
22 #ifdef STARPU_CLUSTER
23 #ifdef STARPU_HAVE_HWLOC
24 
25 #include <hwloc.h>
26 
27 #ifdef __cplusplus
28 extern "C"
29 {
30 #endif
31 
40 #define STARPU_CLUSTER_MIN_NB (1<<STARPU_MODE_SHIFT)
41 
45 #define STARPU_CLUSTER_MAX_NB (2<<STARPU_MODE_SHIFT)
46 
50 #define STARPU_CLUSTER_NB (3<<STARPU_MODE_SHIFT)
51 
55 #define STARPU_CLUSTER_PREFERE_MIN (4<<STARPU_MODE_SHIFT)
56 
60 #define STARPU_CLUSTER_KEEP_HOMOGENEOUS (5<<STARPU_MODE_SHIFT)
61 
65 #define STARPU_CLUSTER_POLICY_NAME (6<<STARPU_MODE_SHIFT)
66 
70 #define STARPU_CLUSTER_POLICY_STRUCT (7<<STARPU_MODE_SHIFT)
71 
75 #define STARPU_CLUSTER_CREATE_FUNC (8<<STARPU_MODE_SHIFT)
76 
80 #define STARPU_CLUSTER_CREATE_FUNC_ARG (9<<STARPU_MODE_SHIFT)
84 #define STARPU_CLUSTER_TYPE (10<<STARPU_MODE_SHIFT)
85 
89 #define STARPU_CLUSTER_AWAKE_WORKERS (11<<STARPU_MODE_SHIFT)
90 
94 #define STARPU_CLUSTER_PARTITION_ONE (12<<STARPU_MODE_SHIFT)
95 
99 #define STARPU_CLUSTER_NEW (13<<STARPU_MODE_SHIFT)
100 
104 #define STARPU_CLUSTER_NCORES (14<<STARPU_MODE_SHIFT)
105 
111 {
114 #ifdef STARPU_MKL
116 #endif
117 };
118 
119 struct starpu_cluster_machine;
120 
121 struct starpu_cluster_machine* starpu_cluster_machine(hwloc_obj_type_t cluster_level, ...);
122 int starpu_uncluster_machine(struct starpu_cluster_machine* clusters);
123 int starpu_cluster_print(struct starpu_cluster_machine* clusters);
124 
127 #define starpu_intel_openmp_mkl_prologue starpu_openmp_prologue
128 #ifdef STARPU_MKL
129 void starpu_gnu_openmp_mkl_prologue(void*);
130 #endif /* STARPU_MKL */
131 
134 #ifdef __cplusplus
135 }
136 #endif
137 #endif
138 #endif
139 
140 #endif /* __STARPU_CLUSTERS_UTIL_H__ */
void starpu_openmp_prologue(void *)
starpu_cluster_types
Definition: starpu_clusters.h:111
@ STARPU_CLUSTER_OPENMP
Definition: starpu_clusters.h:112
@ STARPU_CLUSTER_INTEL_OPENMP_MKL
Definition: starpu_clusters.h:113
@ STARPU_CLUSTER_GNU_OPENMP_MKL
Definition: starpu_clusters.h:115