MulticoreBSP for C  Version 2.0.4
mcbsp-affinity.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2013
3  *
4  * File written by A. N. Yzelman, 2013.
5  *
6  * This file is part of MulticoreBSP in C --
7  * a port of the original Java-based MulticoreBSP.
8  *
9  * MulticoreBSP for C is distributed as part of the original
10  * MulticoreBSP and is free software: you can redistribute
11  * it and/or modify it under the terms of the GNU Lesser
12  * General Public License as published by the Free Software
13  * Foundation, either version 3 of the License, or
14  * (at your option) any later version.
15  * MulticoreBSP is distributed in the hope that it will be
16  * useful, but WITHOUT ANY WARRANTY; without even the
17  * implied warranty of MERCHANTABILITY or FITNESS FOR A
18  * PARTICULAR PURPOSE. See the GNU Lesser General Public
19  * License for more details.
20  *
21  * You should have received a copy of the GNU Lesser General
22  * Public License along with MulticoreBSP. If not, see
23  * <http://www.gnu.org/licenses/>.
24  */
25 
57 #ifndef _H_MCBSP_AFFINITY
58 #define _H_MCBSP_AFFINITY
59 
197 #include <stdlib.h>
198 
205 
213  SCATTER = 0,
214 
220 
227 };
228 
235 
243 
251 };
252 
263 void mcbsp_set_maximum_threads( const size_t max );
264 
283 void mcbsp_set_affinity_mode( const enum mcbsp_affinity_mode mode );
284 
305 void mcbsp_set_available_cores( const size_t num_cores );
306 
325 void mcbsp_set_threads_per_core( const size_t threads_per_core );
326 
336 void mcbsp_set_unused_threads_per_core( const size_t unused_threads_per_core );
337 
353 void mcbsp_set_thread_numbering( const enum mcbsp_thread_numbering numbering );
354 
383 void mcbsp_set_pinning( const size_t * const pinning, const size_t length );
384 
411 void mcbsp_set_reserved_cores( const size_t * const reserved, const size_t length );
412 
420 size_t mcbsp_get_maximum_threads( void );
421 
430 
438 size_t mcbsp_get_available_cores( void );
439 
448 size_t mcbsp_get_threads_per_core( void );
449 
457 size_t mcbsp_get_unused_threads_per_core( void );
458 
467 
478 size_t * mcbsp_get_pinning( void );
479 
487 size_t mcbsp_get_reserved_cores_number( void );
488 
498 size_t * mcbsp_get_reserved_cores( void );
499 
500 //Default values
501 
508 
514 extern size_t MCBSP_DEFAULT_THREADS_PER_CORE;
515 
522 
523 #endif
524 
enum mcbsp_thread_numbering MCBSP_DEFAULT_THREAD_NUMBERING
Default thread numbering (CONSECUTIVE).
void mcbsp_set_reserved_cores(const size_t *const reserved, const size_t length)
Supplies a list of core IDs that are NOT to be used by MulticoreBSP SPMD runs.
size_t * mcbsp_get_reserved_cores(void)
void mcbsp_set_thread_numbering(const enum mcbsp_thread_numbering numbering)
Changes the thread numbering strategy this machines adheres to.
void mcbsp_set_pinning(const size_t *const pinning, const size_t length)
Supplies a manually defined pinning strategy for MulticoreBSP to use.
void mcbsp_set_maximum_threads(const size_t max)
Changes the maxmimum amount of threads MulticoreBSP can allocate.
size_t mcbsp_get_unused_threads_per_core(void)
A manual affinity performs pinning as per user- supplied definitions.
Definition: mcbsp-affinity.h:226
mcbsp_affinity_mode
Pre-defined strategies for pinning threads.
Definition: mcbsp-affinity.h:204
void mcbsp_set_affinity_mode(const enum mcbsp_affinity_mode mode)
Changes the currently active affinity strategy.
enum mcbsp_thread_numbering mcbsp_get_thread_numbering(void)
If each core supports s threads, and t cores are available (for a total of p=s*t hardware threads)...
Definition: mcbsp-affinity.h:250
size_t mcbsp_get_available_cores(void)
mcbsp_thread_numbering
Enumerates ways of hardware thread numbering.
Definition: mcbsp-affinity.h:234
enum mcbsp_affinity_mode MCBSP_DEFAULT_AFFINITY
Default affinity strategy (SCATTER).
If each core supports s threads, and t cores are available (for a total of p=s*t hardware threads)...
Definition: mcbsp-affinity.h:242
void mcbsp_set_unused_threads_per_core(const size_t unused_threads_per_core)
Prevents the use of a given number of threads at the same core.
enum mcbsp_affinity_mode mcbsp_get_affinity_mode(void)
size_t mcbsp_get_maximum_threads(void)
A compact affinity will pin P consecutive threads to the first P available cores. ...
Definition: mcbsp-affinity.h:219
size_t MCBSP_DEFAULT_THREADS_PER_CORE
Default number of threads per core (1).
A scattered affinity will pin P consecutive threads so that the full range of cores is utilised...
Definition: mcbsp-affinity.h:213
void mcbsp_set_available_cores(const size_t num_cores)
Changes the number of available cores.
size_t * mcbsp_get_pinning(void)
void mcbsp_set_threads_per_core(const size_t threads_per_core)
Changes the number of threads per core.
size_t mcbsp_get_reserved_cores_number(void)
size_t mcbsp_get_threads_per_core(void)