Shiokaze Framework
A research-oriented fluid solver for computer graphics
parallel_core Class Referenceabstract

Abstract class that handles parallel operations. Used with loop_splitter. "stdthread" and "tbbthread" are provided as implementations. More...

#include <parallel_core.h>

Inheritance diagram for parallel_core:
recursive_configurable_module recursive_configurable module configurable credit messageable

Public Member Functions

virtual void for_each (std::function< void(size_t n, int thread_index)> func, std::function< size_t(int thread_index)> iterator_start, std::function< bool(size_t &n, int thread_index)> iterator_advance, int num_threads) const =0
 Perform a parallel loop operation. More...
 
virtual void run (const std::vector< std::function< void()> > &functions) const =0
 Run operations in parallel. More...
 
- Public Member Functions inherited from recursive_configurable_module
virtual void recursive_load (configuration &config) override
 Start recursively load configurables. More...
 
virtual void recursive_configure (configuration &config) override
 Recursively call configure. More...
 
- Public Member Functions inherited from recursive_configurable
 recursive_configurable ()=default
 Default constructor.
 
virtual void recursive_initialize (const configurable::environment_map &environment=configurable::environment_map())
 Initialize the program itself and relay the same to its children. Used to get things ready for actual use. More...
 
virtual bool is_ready () const
 Get if the instance is initialized. More...
 
virtual void add_child (configurable *child)
 Add a child instance. More...
 
virtual void add_child (recursive_configurable *child)
 Add a child instance. More...
 
virtual void remove_child (configurable *child)
 Remove a child instance. More...
 
virtual void remove_child (recursive_configurable *child)
 Remove a child instance. More...
 
virtual void setup_now (configuration &config=get_global_configuration()) override
 Run recursive_load - recursive_configure - recursive_initialize processes.
 
virtual bool not_recursive () override
 Check if this instance is not derived from recursive_configurable. More...
 
void set_environment (std::string name, const void *value)
 Set the pointer to an environmental value associated with an input name. More...
 
- Public Member Functions inherited from configurable
virtual void load (configuration &config)
 Load the program. Used to load files and libraries into memory. More...
 
virtual void configure (configuration &config)
 Configure the program. Used to load and set parameters. More...
 
- Public Member Functions inherited from module
 module ()
 Default constructor for module.
 
virtual ~module ()
 Default destructor for module.
 
virtual std::string get_module_name () const
 Get the module name. More...
 
- Public Member Functions inherited from credit
 credit ()=default
 Default constructor.
 
 credit (std::string name, std::string argument_name)
 Constructor for credit. More...
 
virtual void set_name (std::string name, std::string argument_name="")
 Set name (and perhaps, argument name together) More...
 
virtual std::string get_name () const
 Get the name.
 
virtual void set_argument_name (std::string argument_name)
 Set an argument name. More...
 
virtual std::string get_argument_name () const
 Get an argument name. More...
 
virtual double get_version () const
 Get version. More...
 
virtual std::string get_author () const
 Get author's name. More...
 
virtual std::tuple< int, int, int > get_date () const
 Get currently set date. More...
 
virtual std::string get_email_address () const
 Get email address. More...
 
- Public Member Functions inherited from messageable
virtual bool send_message (std::string message, void *ptr=nullptr)
 Send a message. More...
 
virtual bool const_send_message (std::string message, void *ptr=nullptr) const
 Send a message. More...
 

Static Public Member Functions

static void force_single_thread (bool value)
 Set if force single thread. More...
 
- Static Public Member Functions inherited from configurable
static configurationset_global_configuration (const configuration &config)
 Assign the global settings of the program. More...
 
static configurationget_global_configuration ()
 Get the global settings of the program. More...
 
template<class T >
static const T & get_env (const environment_map &environment, std::string key)
 Extract an specified type of pointer from the input environment. More...
 
- Static Public Member Functions inherited from module
static std::string module_libpath (std::string module_name)
 Get the path to the dynamic library. e.g., "mylib" -> "symlink-public/lib/libshiokaze_mylib.dylib". More...
 
static modulealloc_module (configuration &config, std::string arg_name, std::string default_module_name, std::string description)
 Automatically reads the parameter "arg_name" to fetch the name for the library, and allocate the library. More...
 
static modulealloc_module (std::string path)
 Reads the dynamic library of a class module, allocate, and return the pointer to it. More...
 
static unsigned close_all_handles ()
 Close all the handles that are still unloaded. More...
 
template<class T >
static std::unique_ptr< T > unique_alloc_module (configuration &config, std::string arg_name, std::string default_module_name, std::string description)
 Allocate the module and cast to the a specified class T. More...
 
static unsigned count_open_modules ()
 Count all the open modules. More...
 

Additional Inherited Members

- Public Types inherited from configurable
using environment_map = std::map< std::string, const void * >
 Type for environment_map.
 
- Protected Member Functions inherited from configurable
bool check_set (const environment_map &environment, std::vector< std::string > names)
 Check if the values for a variable keys exist. More...
 
- Protected Attributes inherited from credit
std::string m_name
 Name of credit.
 
std::string m_argument_name
 Argument name.
 

Detailed Description

Abstract class that handles parallel operations. Used with loop_splitter. "stdthread" and "tbbthread" are provided as implementations.

Member Function Documentation

◆ for_each()

virtual void parallel_core::for_each ( std::function< void(size_t n, int thread_index)>  func,
std::function< size_t(int thread_index)>  iterator_start,
std::function< bool(size_t &n, int thread_index)>  iterator_advance,
int  num_threads 
) const
pure virtual

Perform a parallel loop operation.

Parameters
[in]funcFunction that processes the actual loop.
[in]iterator_startFunction that provides how to start the loop.
[in]iterator_advanceFunction that provides how to advance the loop.

◆ force_single_thread()

static void parallel_core::force_single_thread ( bool  value)
inlinestatic

Set if force single thread.

Parameters
[in]valueBoolean value to set force single thread.

◆ run()

virtual void parallel_core::run ( const std::vector< std::function< void()> > &  functions) const
pure virtual

Run operations in parallel.

Parameters
[in]functionsList of operation functions that are ran in parallel.

The documentation for this class was generated from the following file: