StarPU Handbook
starpu_stdlib.h
Go to the documentation of this file.
1/* StarPU --- Runtime system for heterogeneous multicore architectures.
2 *
3 * Copyright (C) 2009-2025 University of Bordeaux, CNRS (LaBRI UMR 5800), Inria
4 * Copyright (C) 2022-2022 Federal University of Rio Grande do Sul (UFRGS)
5 *
6 * StarPU is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU Lesser General Public License as published by
8 * the Free Software Foundation; either version 2.1 of the License, or (at
9 * your option) any later version.
10 *
11 * StarPU is distributed in the hope that it will be useful, but
12 * WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14 *
15 * See the GNU Lesser General Public License in COPYING.LGPL for more details.
16 */
17
18#ifndef __STARPU_STDLIB_H__
19#define __STARPU_STDLIB_H__
20
21#include <starpu.h>
22
23#ifdef __cplusplus
24extern "C" {
25#endif
26
36#define STARPU_MALLOC_PINNED ((1ULL) << 1)
37
49#define STARPU_MALLOC_COUNT ((1ULL) << 2)
50
65#define STARPU_MALLOC_NORECLAIM ((1ULL) << 3)
66
72#define STARPU_MEMORY_WAIT ((1ULL) << 4)
73
79#define STARPU_MEMORY_OVERFLOW ((1ULL) << 5)
80
90#define STARPU_MALLOC_SIMULATION_FOLDED ((1ULL) << 6)
91
98#define STARPU_MALLOC_SIMULATION_UNIQUE ((1ULL)<<7)
99
105#define starpu_data_malloc_pinned_if_possible starpu_malloc
106
112#define starpu_data_free_pinned_if_possible starpu_free
113
121void starpu_malloc_set_align(size_t align);
122
132int starpu_malloc(void **A, size_t dim);
133
142int starpu_free(void *A) STARPU_DEPRECATED;
143
149int starpu_malloc_flags(void **A, size_t dim, int flags);
150
158int starpu_free_flags(void *A, size_t dim, int flags);
159
166int starpu_free_noflag(void *A, size_t dim);
167
168typedef int (*starpu_malloc_hook)(unsigned dst_node, void **A, size_t dim, int flags);
169typedef int (*starpu_free_hook)(unsigned dst_node, void *A, size_t dim, int flags);
170
187void starpu_malloc_set_hooks(starpu_malloc_hook malloc_hook, starpu_free_hook free_hook);
188
196int starpu_memory_pin(void *addr, size_t size);
197
203int starpu_memory_unpin(void *addr, size_t size);
204
211starpu_ssize_t starpu_memory_get_total(unsigned node);
212
219starpu_ssize_t starpu_memory_get_available(unsigned node);
220
225size_t starpu_memory_get_used(unsigned node);
226
232
239
245
258int starpu_memory_allocate(unsigned node, size_t size, int flags);
259
272void starpu_memory_deallocate(unsigned node, size_t size);
273
285void starpu_memory_wait_available(unsigned node, size_t size);
286
295void starpu_sleep(float nb_sec);
296
302void starpu_usleep(float nb_micro_sec);
303
310void starpu_energy_use(float joules);
311
319
322#ifdef __cplusplus
323}
324#endif
325
326#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)