diff --git a/Framework/Algorithms/inc/MantidAlgorithms/AlignDetectors.h b/Framework/Algorithms/inc/MantidAlgorithms/AlignDetectors.h index de48ddb74647f7caebbacea08caf0a03b07447b2..6d5dd1fb37c9a8fd5a1ecf8dfae60517a5243065 100644 --- a/Framework/Algorithms/inc/MantidAlgorithms/AlignDetectors.h +++ b/Framework/Algorithms/inc/MantidAlgorithms/AlignDetectors.h @@ -72,6 +72,11 @@ public: /// Cross-check properties with each other @see IAlgorithm::validateInputs std::map<std::string, std::string> validateInputs() override; +protected: + Parallel::ExecutionMode getParallelExecutionMode( + const std::map<std::string, Parallel::StorageMode> &storageModes) + const override; + private: // Implement abstract Algorithm methods void init() override; diff --git a/Framework/Algorithms/src/AlignDetectors.cpp b/Framework/Algorithms/src/AlignDetectors.cpp index 96d3731959288402f6cb14fb659f9ac7705a4966..d36670cb4709824fe18421e758097dbedd84491f 100644 --- a/Framework/Algorithms/src/AlignDetectors.cpp +++ b/Framework/Algorithms/src/AlignDetectors.cpp @@ -318,5 +318,16 @@ void AlignDetectors::align(const ConversionFactors &converter, outputWS.clearMRU(); } +Parallel::ExecutionMode AlignDetectors::getParallelExecutionMode( + const std::map<std::string, Parallel::StorageMode> &storageModes) const { + using namespace Parallel; + const auto inputMode = storageModes.at("InputWorkspace"); + const auto &calibrationMode = storageModes.find("CalibrationWorkspace"); + if (calibrationMode != storageModes.end()) + if (calibrationMode->second != StorageMode::Cloned) + return ExecutionMode::Invalid; + return getCorrespondingExecutionMode(inputMode); +} + } // namespace Algorithms } // namespace Mantid diff --git a/dev-docs/source/AlgorithmMPISupport.rst b/dev-docs/source/AlgorithmMPISupport.rst index 43326d3338ad2e32b1b13bc58a683949d3ec4eff..60e22f83bcc82718cb1661d0094b1275c222bf01 100644 --- a/dev-docs/source/AlgorithmMPISupport.rst +++ b/dev-docs/source/AlgorithmMPISupport.rst @@ -491,6 +491,7 @@ Supported Algorithms ====================================== ======================= ======== Algorithm Supported modes Comments ====================================== ======================= ======== +AlignDetectors all with ``StorageMode::Distributed`` this touches only detectors that have spectra on this rank, i.e., the modified instrument is not in an identical state on all ranks BinaryOperation all not supported if ``AllowDifferentNumberSpectra`` is enabled CalculateChiSquared MasterOnly, Identical see ``IFittingAlgorithm`` CalculateCostFunction MasterOnly, Identical see ``IFittingAlgorithm``