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

Abstract class that handles how to distribute loop enumeration for parallel processings. "sequential_splitter", "dispersed_splitter" are provided as implementations. More...

#include <loop_splitter.h>

Inheritance diagram for loop_splitter:
recursive_configurable_module recursive_configurable module configurable credit messageable

Public Member Functions

virtual const void * new_context (size_t size, int num_threads) const =0
 Allocate a new context for a loop. More...
 
virtual std::function< size_t(const void *context, int thread_index)> get_start_func (const void *context) const =0
 Get a function that provides us the starting index of a loop for the specific thread. More...
 
virtual std::function< bool(const void *context, size_t &n, int thread_index)> get_advance_func (const void *context) const =0
 Get a function that advances an index of a loop. More...
 
virtual void delete_context (const void *context) const =0
 Deallocate the context generated by new_context. 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...
 

Additional Inherited Members

- Public Types inherited from configurable
using environment_map = std::map< std::string, const void * >
 Type for environment_map.
 
- 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...
 
- 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 how to distribute loop enumeration for parallel processings. "sequential_splitter", "dispersed_splitter" are provided as implementations.

Member Function Documentation

◆ delete_context()

virtual void loop_splitter::delete_context ( const void *  context) const
pure virtual

Deallocate the context generated by new_context.

Parameters
[in]contextContext generated by new_context.

◆ get_advance_func()

virtual std::function<bool(const void *context, size_t &n, int thread_index)> loop_splitter::get_advance_func ( const void *  context) const
pure virtual

Get a function that advances an index of a loop.

Parameters
[in]contextContext generated by new_context.
Returns
Function that advances an index.

◆ get_start_func()

virtual std::function<size_t(const void *context, int thread_index)> loop_splitter::get_start_func ( const void *  context) const
pure virtual

Get a function that provides us the starting index of a loop for the specific thread.

Parameters
[in]contextContext generated by new_context.
Returns
Function that provides us the starting index.

◆ new_context()

virtual const void* loop_splitter::new_context ( size_t  size,
int  num_threads 
) const
pure virtual

Allocate a new context for a loop.

Parameters
[in]sizeSize of the entire loop.
[in]num_threadsaNumber of threads.

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