1 #ifndef teca_threaded_algorithm_h
2 #define teca_threaded_algorithm_h
4 #include "teca_algorithm.h"
5 #include "teca_dataset.h"
11 template <
typename task_t,
typename data_t>
15 class teca_threaded_algorithm_internals;
20 using teca_data_request_task = std::packaged_task<const_p_teca_dataset()>;
22 class teca_data_request;
29 using p_teca_data_request_queue = std::shared_ptr<teca_data_request_queue>;
38 p_teca_data_request_queue new_teca_data_request_queue(MPI_Comm comm,
39 int n,
bool bind,
bool verbose);
56 TECA_GET_ALGORITHM_PROPERTIES_DESCRIPTION()
57 TECA_SET_ALGORITHM_PROPERTIES()
71 TECA_ALGORITHM_PROPERTY(
int, verbose)
80 TECA_ALGORITHM_PROPERTY(
int, bind_threads)
89 TECA_ALGORITHM_PROPERTY(
int, stream_size)
97 TECA_ALGORITHM_PROPERTY(
long long, poll_interval)
101 void set_data_request_queue(const p_teca_data_request_queue &queue);
111 const_p_teca_dataset execute(
unsigned int port,
112 const std::vector<const_p_teca_dataset> &input_data,
116 const_p_teca_dataset execute(
unsigned int port,
117 const std::vector<const_p_teca_dataset> &input_data,
123 const_p_teca_dataset request_data(teca_algorithm_output_port &port,
129 long long poll_interval;
131 teca_threaded_algorithm_internals *internals;