StarPU Handbook - StarPU FAQs
starpu_stdlib.h
Go to the documentation of this file.
1 /* StarPU --- Runtime system for heterogeneous multicore architectures.
2  *
3  * Copyright (C) 2010-2022 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_STDLIB_H__
18 #define __STARPU_STDLIB_H__
19 
20 #include <starpu.h>
21 
22 #ifdef __cplusplus
23 extern "C" {
24 #endif
25 
35 #define STARPU_MALLOC_PINNED ((1ULL) << 1)
36 
48 #define STARPU_MALLOC_COUNT ((1ULL) << 2)
49 
64 #define STARPU_MALLOC_NORECLAIM ((1ULL) << 3)
65 
71 #define STARPU_MEMORY_WAIT ((1ULL) << 4)
72 
78 #define STARPU_MEMORY_OVERFLOW ((1ULL) << 5)
79 
89 #define STARPU_MALLOC_SIMULATION_FOLDED ((1ULL) << 6)
90 
97 #define STARPU_MALLOC_SIMULATION_UNIQUE ((1ULL)<<7)
98 
104 #define starpu_data_malloc_pinned_if_possible starpu_malloc
105 
111 #define starpu_data_free_pinned_if_possible starpu_free
112 
119 void starpu_malloc_set_align(size_t align);
120 
130 int starpu_malloc(void **A, size_t dim);
131 
138 int starpu_free(void *A) STARPU_DEPRECATED;
139 
145 int starpu_malloc_flags(void **A, size_t dim, int flags);
146 
152 int starpu_free_flags(void *A, size_t dim, int flags);
153 
158 int starpu_free_noflag(void *A, size_t dim);
159 
160 typedef int (*starpu_malloc_hook)(unsigned dst_node, void **A, size_t dim, int flags);
161 typedef int (*starpu_free_hook)(unsigned dst_node, void *A, size_t dim, int flags);
162 
179 void starpu_malloc_set_hooks(starpu_malloc_hook malloc_hook, starpu_free_hook free_hook);
180 
188 int starpu_memory_pin(void *addr, size_t size);
189 
194 int starpu_memory_unpin(void *addr, size_t size);
195 
202 starpu_ssize_t starpu_memory_get_total(unsigned node);
203 
210 starpu_ssize_t starpu_memory_get_available(unsigned node);
211 
215 size_t starpu_memory_get_used(unsigned node);
216 
222 
229 
234 
247 int starpu_memory_allocate(unsigned node, size_t size, int flags);
248 
261 void starpu_memory_deallocate(unsigned node, size_t size);
262 
274 void starpu_memory_wait_available(unsigned node, size_t size);
275 
283 void starpu_sleep(float nb_sec);
284 
289 void starpu_usleep(float nb_micro_sec);
290 
296 void starpu_energy_use(float joules);
297 
303 double starpu_energy_used(void);
304 
307 #ifdef __cplusplus
308 }
309 #endif
310 
311 #endif /* __STARPU_STDLIB_H__ */
starpu_ssize_t starpu_memory_get_available(unsigned node)
starpu_ssize_t starpu_memory_get_available_all_nodes(void)
size_t starpu_memory_get_used(unsigned node)
int starpu_memory_unpin(void *addr, size_t size)
int starpu_malloc(void **A, size_t dim)
void starpu_sleep(float nb_sec)
void starpu_malloc_set_hooks(starpu_malloc_hook malloc_hook, starpu_free_hook free_hook)
void starpu_malloc_set_align(size_t align)
starpu_ssize_t starpu_memory_get_total(unsigned node)
int starpu_memory_pin(void *addr, size_t size)
void starpu_energy_use(float joules)
void starpu_memory_wait_available(unsigned node, size_t size)
int starpu_memory_allocate(unsigned node, size_t size, int flags)
void starpu_usleep(float nb_micro_sec)
int starpu_free(void *A)
void starpu_memory_deallocate(unsigned node, size_t size)
size_t starpu_memory_get_used_all_nodes(void)
starpu_ssize_t starpu_memory_get_total_all_nodes(void)
int starpu_free_noflag(void *A, size_t dim)
int starpu_free_flags(void *A, size_t dim, int flags)
double starpu_energy_used(void)
int starpu_malloc_flags(void **A, size_t dim, int flags)