|
TECA
The Toolkit for Extreme Climate Analysis
|
Callbacks implement a user defined reduction over time steps. More...
#include <teca_programmable_reduce.h>
Public Member Functions | |
| std::shared_ptr< teca_programmable_reduce > | shared_from_this () |
| std::shared_ptr< teca_programmable_reduce const > | shared_from_this () const |
| teca_programmable_reduce (const teca_programmable_reduce &src)=delete | |
| teca_programmable_reduce (teca_programmable_reduce &&src)=delete | |
| teca_programmable_reduce & | operator= (const teca_programmable_reduce &src)=delete |
| teca_programmable_reduce & | operator= (teca_programmable_reduce &&src)=delete |
| int | set_name (const std::string &name) |
| const char * | get_class_name () const override |
| return the name of the class. More... | |
| void | set_report_callback (const report_callback_t &v) |
| const report_callback_t & | get_report_callback () const |
| report_callback_t & | get_report_callback () |
| void | set_request_callback (const request_callback_t &v) |
| const request_callback_t & | get_request_callback () const |
| request_callback_t & | get_request_callback () |
| void | set_reduce_callback (const reduce_callback_t &v) |
| const reduce_callback_t & | get_reduce_callback () const |
| reduce_callback_t & | get_reduce_callback () |
| void | set_finalize_callback (const finalize_callback_t &v) |
| const finalize_callback_t & | get_finalize_callback () const |
| finalize_callback_t & | get_finalize_callback () |
Public Member Functions inherited from teca_index_reduce | |
| teca_index_reduce (const teca_index_reduce &src)=delete | |
| teca_index_reduce (teca_index_reduce &&src)=delete | |
| teca_index_reduce & | operator= (const teca_index_reduce &src)=delete |
| teca_index_reduce & | operator= (teca_index_reduce &&src)=delete |
| void | set_extent (const extent_type &v) |
| const extent_type & | get_extent () const |
| void | set_bounds (const bounds_type &v) |
| const bounds_type & | get_bounds () const |
| size_t | get_number_of_arrays () |
| void | append_array (const std::string &v) |
| void | set_array (const std::string &v) |
| void | set_array (size_t i, const std::string &v) |
| void | set_arrays (const std::vector< std::string > &v) |
| void | set_arrays (const std::initializer_list< std::string > &&l) |
| const std::string & | get_array (size_t i) const |
| const std::vector< std::string > & | get_arrays () const |
| void | clear_arrays () |
| void | set_start_index (const long &v) |
| const long & | get_start_index () const |
| void | set_end_index (const long &v) |
| const long & | get_end_index () const |
Public Member Functions inherited from teca_threaded_algorithm | |
| std::shared_ptr< teca_threaded_algorithm > | shared_from_this () |
| std::shared_ptr< teca_threaded_algorithm const > | shared_from_this () const |
| teca_threaded_algorithm (const teca_threaded_algorithm &src)=delete | |
| teca_threaded_algorithm (teca_threaded_algorithm &&src)=delete | |
| teca_threaded_algorithm & | operator= (const teca_threaded_algorithm &src)=delete |
| teca_threaded_algorithm & | operator= (teca_threaded_algorithm &&src)=delete |
| const char * | get_class_name () const override |
| void | set_thread_pool_size (int n_threads) |
| unsigned int | get_thread_pool_size () const noexcept |
| Get the number of threads in the pool. More... | |
| void | set_data_request_queue (const p_teca_data_request_queue &queue) |
| explicitly set the thread pool to submit requests to More... | |
| void | set_bind_threads (const int &v) |
| const int & | get_bind_threads () const |
| void | set_stream_size (const int &v) |
| const int & | get_stream_size () const |
| void | set_poll_interval (const long long &v) |
| const long long & | get_poll_interval () const |
| void | set_threads_per_device (const int &v) |
| const int & | get_threads_per_device () const |
| void | set_ranks_per_device (const int &v) |
| const int & | get_ranks_per_device () const |
| void | set_propagate_device_assignment (const int &v) |
| const int & | get_propagate_device_assignment () const |
Public Member Functions inherited from teca_algorithm | |
| teca_algorithm (const teca_algorithm &src)=delete | |
| teca_algorithm (teca_algorithm &&src)=delete | |
| teca_algorithm & | operator= (const teca_algorithm &src)=delete |
| teca_algorithm & | operator= (teca_algorithm &&src)=delete |
| void | set_communicator (MPI_Comm comm) |
| MPI_Comm | get_communicator () |
| get the active communicator More... | |
| virtual teca_algorithm_output_port | get_output_port (unsigned int port=0) |
| void | set_input_connection (const teca_algorithm_output_port &port) |
| set an input to this algorithm More... | |
| virtual void | set_input_connection (unsigned int id, const teca_algorithm_output_port &port) |
| set an input to this algorithm More... | |
| virtual void | remove_input_connection (unsigned int id) |
| remove input connections More... | |
| void | clear_input_connections () |
| remove all input connections More... | |
| const_p_teca_dataset | get_output_data (unsigned int port=0) |
| void | pop_cache (unsigned int port=0, int top=0) |
| void | set_cache_size (unsigned int n) |
| set the cache size. the default is 1. (threadsafe) More... | |
| virtual int | update () |
| execute the pipeline from this instance up. More... | |
| virtual int | update (unsigned int port) |
| execute the pipeline from this instance up. More... | |
| virtual teca_metadata | update_metadata (unsigned int port=0) |
| get meta data considering this instance up. More... | |
| void | set_executive (p_teca_algorithm_executive exe) |
| set the executive More... | |
| p_teca_algorithm_executive | get_executive () |
| get the executive More... | |
| virtual void | to_stream (std::ostream &s) const |
| virtual void | from_stream (std::istream &s) |
| deserialize from the stream. More... | |
| void | set_verbose (const int &v) |
| const int & | get_verbose () const |
Static Public Member Functions | |
| static p_teca_programmable_reduce | New () |
Static Public Member Functions inherited from teca_threaded_algorithm | |
| static p_teca_threaded_algorithm | New () |
Protected Member Functions | |
| p_teca_dataset | reduce (int device_id, const const_p_teca_dataset &left, const const_p_teca_dataset &right) override |
| p_teca_dataset | finalize (int device_id, const const_p_teca_dataset &input) override |
| std::vector< teca_metadata > | initialize_upstream_request (unsigned int port, const std::vector< teca_metadata > &input_md, const teca_metadata &request) override |
| teca_metadata | initialize_output_metadata (unsigned int port, const std::vector< teca_metadata > &input_md) override |
Protected Member Functions inherited from teca_index_reduce | |
| std::vector< teca_metadata > | get_upstream_request (unsigned int port, const std::vector< teca_metadata > &input_md, const teca_metadata &request) override |
| const_p_teca_dataset | execute (unsigned int port, const std::vector< const_p_teca_dataset > &input_data, const teca_metadata &request, int streaming) override |
| teca_metadata | get_output_metadata (unsigned int port, const std::vector< teca_metadata > &input_md) override |
| consumes index metadata, and partitions indices across MPI ranks. More... | |
| virtual const_p_teca_dataset | execute (unsigned int port, const std::vector< const_p_teca_dataset > &input_data, const teca_metadata &request, int streaming) |
| const_p_teca_dataset | execute (unsigned int port, const std::vector< const_p_teca_dataset > &input_data, const teca_metadata &request) override |
Protected Member Functions inherited from teca_threaded_algorithm | |
| const_p_teca_dataset | execute (unsigned int port, const std::vector< const_p_teca_dataset > &input_data, const teca_metadata &request) override |
| const_p_teca_dataset | request_data (teca_algorithm_output_port &port, const teca_metadata &request) override |
Protected Member Functions inherited from teca_algorithm | |
| void | set_number_of_input_connections (unsigned int n) |
| void | set_number_of_output_ports (unsigned int n) |
| virtual void | set_modified () |
| void | set_modified (unsigned int port) |
| an overload to set_modified by port More... | |
| virtual teca_metadata | get_cache_key (unsigned int port, const teca_metadata &request) const |
| virtual teca_metadata | get_output_metadata (teca_algorithm_output_port ¤t) |
| virtual int | validate_cache (teca_algorithm_output_port ¤t) |
| virtual void | clear_modified (teca_algorithm_output_port current) |
| const_p_teca_dataset | get_output_data (unsigned int port, const teca_metadata &request) |
| int | cache_output_data (unsigned int port, const teca_metadata &request, const_p_teca_dataset &data) |
| void | clear_cache (unsigned int port) |
| clear the cache on the given output port More... | |
| unsigned int | get_number_of_input_connections () |
| get the number of input connections More... | |
| teca_algorithm_output_port & | get_input_connection (unsigned int i) |
| void | clear_modified (unsigned int port) |
| clear the modified flag on the i'th output More... | |
| int | get_modified (unsigned int port) const |
| return the output port's modified flag value More... | |
Additional Inherited Members | |
Public Types inherited from teca_index_reduce | |
| using | extent_type = std::vector< long > |
| using | bounds_type = std::vector< double > |
Protected Attributes inherited from teca_algorithm | |
| int | verbose |
Callbacks implement a user defined reduction over time steps.
Callbacks implement a reduction on teca_datasets over time steps. User provides reduce callable that takes 2 datasets and produces a third reduced dataset. Callbacks should be threadsafe as this is a parallel operation. See teca_index_reduce for details of parallelization.
|
overrideprotectedvirtual |
An override that is called when the reduction is complete. The default implementation passes data through. This might be used for instance to complete an averaging operation where the ::reduce override sums the data and the ::finalize override scales by 1/N, where N is the number of datasets summed.
| [in] | device_id | The device that should be used for the reduction. A value of -1 indicates the CPU should be used. |
| [in] | ds | the reduced dataset |
Reimplemented from teca_index_reduce.
|
inlineoverridevirtual |
return the name of the class.
Implements teca_algorithm.
|
inline |
Get the finalize_callback algorithm property
|
inline |
Get the finalize_callback algorithm property
|
inline |
Get the reduce_callback algorithm property
|
inline |
Get the reduce_callback algorithm property
|
inline |
Get the report_callback algorithm property
|
inline |
Get the report_callback algorithm property
|
inline |
Get the request_callback algorithm property
|
inline |
Get the request_callback algorithm property
|
overrideprotectedvirtual |
An override that allows derived classes to report what they can produce. this will be called from ::get_output_metadata which will strip out time and partition time across MPI ranks. The default implementation passes the incoming metadata through.
Reimplemented from teca_index_reduce.
|
overrideprotectedvirtual |
An override that allows derived classes to generate upstream requests that will be applied over all time steps. derived classes implement this method instead of ::get_upstream_request, which here is already implemented to handle the application of requests over the index set. The default implementation creates an empty request that is then populated with extent, bounds, and arrays if these have been provided.
Reimplemented from teca_index_reduce.
|
inlinestatic |
Returns an instance of teca_programmable_reduce
|
overrideprotectedvirtual |
An override that implements the reduction. given two datasets a left and right, reduce into a single dataset and return.
| [in] | device_id | The device that should be used for the reduction. A value of -1 indicates the CPU should be used. |
| [in] | left | a dataset to reduce |
| [in] | right | a dataset to reduce |
Implements teca_index_reduce.
|
inline |
Set the finalize_callback algorithm property
|
inline |
Set the reduce_callback algorithm property
|
inline |
Set the report_callback algorithm property
|
inline |
Set the request_callback algorithm property
|
inline |
Enables the static constructor
|
inline |
Enables the static constructor