|
STIR 6.4.0
|
Declaration of functions in the distributed namespace. More...
#include "mpi.h"#include "stir/shared_ptr.h"#include "stir/recon_buildblock/ProjectorByBinPair.h"#include "stir/DiscretisedDensity.h"#include "stir/RelatedViewgrams.h"#include "stir/Viewgram.h"#include "stir/VoxelsOnCartesianGrid.h"#include "stir/ProjDataInfo.h"Go to the source code of this file.
Namespaces | |
| namespace | distributed |
| Namespace for distributed computation with MPI. | |
| namespace | stir |
| Namespace for the STIR library (and some/most of its applications) | |
Macros | |
| #define | STIR_MPI |
| Precompiler-define that needs to be set to enable the parallel version of stir::distributable_computation. | |
| #define | STIR_MPI_TIMINGS |
| Precompiler-define that needs to be set to enable timings in the parallel version of stir::distributable_computation. | |
Global variables used for STIR_MPI | |
| int | distributed::num_processors |
| the number of processes used for distributed computation | |
| bool | distributed::first_iteration |
| some stuff in distributable_computation needs to be done only in the first iteration | |
| bool | distributed::test = false |
| enable/disable tests | |
| bool | distributed::rpc_time = false |
| bool | distributed::test_send_receive_times = false |
| enable timings for PRC_process_related_viewgrams_gradient() computation | |
| double | distributed::total_rpc_time = 0 |
| enable timings for every single send/receive operation | |
| double | distributed::total_rpc_time_2 = 0.0 |
| adding up the time used for PRC_process_related_viewgrams_gradient() computation at all slaves | |
| double | distributed::total_rpc_time_slaves = 0.0 |
| adding up the time used for PRC_process_related_viewgrams_gradient() computation at a single slave | |
| double | distributed::min_threshold = 0.1 |
| value to reduce the total_rpc_time values | |
| void | distributed::send_int_value (int value, int destination) |
| threshold for displaying send/receive times, initially set to 0.1 seconds | |
| void | distributed::send_string (const std::string &str, int tag, int destination) |
| sends or broadcasts a string | |
| void | distributed::send_bool_value (bool value, int tag, int destination) |
| send or broadcast a bool value | |
| void | distributed::send_int_values (int *values, int count, int tag, int destination) |
| sends or broadcasts some integer values | |
| void | distributed::send_double_values (double *values, int count, int tag, int destination) |
| send or broadcast double values | |
| void | distributed::send_view_segment_numbers (const stir::ViewSegmentNumbers &vs_num, int tag, int destination) |
| send or broadcast ViewSegmentNumbers object | |
| void | distributed::send_projectors (const stir::shared_ptr< stir::ProjectorByBinPair > &proj_pair_sptr, int destination) |
| send or broadcast a projector-pair object | |
| void | distributed::send_image_parameters (const stir::DiscretisedDensity< 3, float > *input_image_ptr, int tag, int destination) |
| sends or broadcasts the parameters of a DiscretisedDensity object | |
| void | distributed::send_image_estimate (const stir::DiscretisedDensity< 3, float > *input_image_ptr, int destination) |
| sends or broadcasts the values of a DiscretisedDensity object | |
| void | distributed::send_exam_and_proj_data_info (const stir::ExamInfo &exam_info, const stir::ProjDataInfo &proj_data_info, int destination) |
| sends or broadcasts the information from ExamInfo and ProjDataInfo | |
| void | distributed::send_related_viewgrams (stir::RelatedViewgrams< float > *viewgrams, int destination) |
| sends a RelatedViegrams object | |
| void | distributed::send_viewgram (const stir::Viewgram< float > &viewgram, int destination) |
| sends a Viewgram object | |
| int | distributed::receive_int_value (int source) |
| receives a single integer value | |
| std::string | distributed::receive_string (int tag, int source) |
| receives a string | |
| void | distributed::receive_and_initialize_projectors (stir::shared_ptr< stir::ProjectorByBinPair > &projector_pair_ptr, int source) |
| receives all needed information to subsequently construct a ProjectorByBinPair object | |
| bool | distributed::receive_bool_value (int tag, int source) |
| receives a bool value | |
| MPI_Status | distributed::receive_int_values (int *values, int count, int tag) |
| receives some integer values | |
| MPI_Status | distributed::receive_double_values (double *values, int count, int tag) |
| receives some double values | |
| MPI_Status | distributed::receive_view_segment_numbers (stir::ViewSegmentNumbers &vs_num, int tag) |
| receive a ViewSegmentNumbers object | |
| void | distributed::receive_and_set_image_parameters (stir::shared_ptr< stir::DiscretisedDensity< 3, float > > &image_ptr, int &buffer, int tag, int source) |
| receives the parameters of a DiscretisedDensity object | |
| MPI_Status | distributed::receive_image_values_and_fill_image_ptr (stir::shared_ptr< stir::DiscretisedDensity< 3, float > > &image_ptr, int buffer_size, int source) |
| receives the values of a DiscretisedDensity object | |
| void | distributed::receive_and_construct_exam_and_proj_data_info_ptr (stir::shared_ptr< stir::ExamInfo > &exam_info_sptr, stir::shared_ptr< stir::ProjDataInfo > &proj_data_info_sptr, int source) |
| receives information of ExamInfo and ProjDataInfo objects and constructs new ones from it | |
| void | distributed::receive_and_construct_related_viewgrams (stir::RelatedViewgrams< float > *&viewgrams, const stir::shared_ptr< stir::ProjDataInfo > &proj_data_info_ptr, const stir::shared_ptr< stir::DataSymmetriesForViewSegmentNumbers > symmetries_sptr, int source) |
| receives and constructs a RelatedViewgrams object | |
| void | distributed::receive_and_construct_viewgram (stir::Viewgram< float > *&viewgram, const stir::shared_ptr< stir::ProjDataInfo > &proj_data_info_ptr, int source) |
| receives a Viewgram object | |
| void | distributed::reduce_received_output_image (stir::DiscretisedDensity< 3, float > *output_image_ptr, int destination) |
| the function called by the master to reduce the output image | |
| void | distributed::reduce_output_image (stir::shared_ptr< stir::DiscretisedDensity< 3, float > > &output_image_ptr, int image_buffer_size, int my_rank, int destination) |
| the function called by the slaves to reduce the output image | |
Declaration of functions in the distributed namespace.
| #define STIR_MPI_TIMINGS |
Precompiler-define that needs to be set to enable timings in the parallel version of stir::distributable_computation.
The functions in the distributable namespace can include run-time measurements included which print times from start to end of a single Send or Receive command. This will uncover some maybe unnecessary long waiting times. It was actually used while developing the parallel version to check whether some code rearrangements would lead to faster computation. To enable these timings, compile the MPI-Version with the preprocessor variable STIR_MPI_TIMINGS defined.
If compiled with STIR_MPI_TIMINGS defined, you still have the possibility to enable/disable the timings by using the parsing parameter (for stir::stir::PoissonLogLikelihoodWithLinearModelForMeanAndProjData).
enable message timings := 1
To give the printed times a threshold use
message timings threshold := 0.1