From d8bd4d018849a4173157a0e630019c5d6c46bab9 Mon Sep 17 00:00:00 2001
From: Simon Heybrock <simon.heybrock@esss.se>
Date: Fri, 17 Nov 2017 14:01:37 +0100
Subject: [PATCH] Re #21181. Add MPI support for IFileLoader and many Load
 algorithms.

---
 Framework/API/inc/MantidAPI/IFileLoader.h     |  4 +-
 .../development/AlgorithmMPISupport.rst       | 43 +++++++++++++++++++
 2 files changed, 45 insertions(+), 2 deletions(-)

diff --git a/Framework/API/inc/MantidAPI/IFileLoader.h b/Framework/API/inc/MantidAPI/IFileLoader.h
index 0d94dba7d06..35a03238e7f 100644
--- a/Framework/API/inc/MantidAPI/IFileLoader.h
+++ b/Framework/API/inc/MantidAPI/IFileLoader.h
@@ -1,7 +1,7 @@
 #ifndef MANTID_API_IFILELOADER_H_
 #define MANTID_API_IFILELOADER_H_
 
-#include "MantidAPI/Algorithm.h"
+#include "MantidAPI/ParallelAlgorithm.h"
 #include "MantidKernel/FileDescriptor.h"
 #include "MantidKernel/NexusDescriptor.h"
 
@@ -35,7 +35,7 @@ File change history is stored at: <https://github.com/mantidproject/mantid>
 Code Documentation is available at: <http://doxygen.mantidproject.org>
  */
 template <typename DescriptorType>
-class MANTID_API_DLL IFileLoader : public Algorithm {
+class MANTID_API_DLL IFileLoader : public ParallelAlgorithm {
 public:
   /// Returns a confidence value that this algorithm can load a file
   virtual int confidence(DescriptorType &descriptor) const = 0;
diff --git a/docs/source/development/AlgorithmMPISupport.rst b/docs/source/development/AlgorithmMPISupport.rst
index 50024e2bf43..50c242cc0e6 100644
--- a/docs/source/development/AlgorithmMPISupport.rst
+++ b/docs/source/development/AlgorithmMPISupport.rst
@@ -468,10 +468,53 @@ ExtractSpectra                    all             not supported with ``DetectorL
 FilterBadPulses                   all
 FilterByLogValue                  all
 FilterByTime                      all
+FilterEventsByLogValuePreNexus    Identical       see ``IFileLoader``
+IFileLoader                       Identical       implicitly adds support for many load inheriting from this
+LoadAscii2                        Identical       see ``IFileLoader``
+LoadAscii                         Identical       see ``IFileLoader``
+LoadBBY                           Identical       see ``IFileLoader``
+LoadCanSAS1D                      Identical       see ``IFileLoader``
+LoadDaveGrp                       Identical       see ``IFileLoader``
+LoadEmptyInstrument               Identical       see ``IFileLoader``
 LoadEventNexus                    Distributed     storage mode of output cannot be changed via a parameter currently, min and max bin boundary are not globally the same
+LoadEventPreNexus2                Identical       see ``IFileLoader``
+LoadFITS                          Identical       see ``IFileLoader``
+LoadGSS                           Identical       see ``IFileLoader``
+LoadILLDiffraction                Identical       see ``IFileLoader``
+LoadILLIndirect2                  Identical       see ``IFileLoader``
+LoadILLReflectometry              Identical       see ``IFileLoader``
+LoadILLSANS                       Identical       see ``IFileLoader``
+LoadILLTOF2                       Identical       see ``IFileLoader``
 LoadInstrument                    all
+LoadIsawPeaks                     Identical       see ``IFileLoader``
+LoadISISNexus2                    Identical       see ``IFileLoader``
+LoadLLB                           Identical       see ``IFileLoader``
+LoadMcStas                        Identical       see ``IFileLoader``
+LoadMcStasNexus                   Identical       see ``IFileLoader``
+LoadMD                            Identical       see ``IFileLoader``
+LoadMLZ                           Identical       see ``IFileLoader``
+LoadMuonNexus                     Identical       see ``IFileLoader``
 LoadNexusLogs                     all
+LoadNexusProcessed                Identical       see ``IFileLoader``
+LoadNXcanSAS                      Identical       see ``IFileLoader``
+LoadNXSPE                         Identical       see ``IFileLoader``
 LoadParameterFile                 all             segfaults when used in unit tests with MPI threading backend due to `#9365 <https://github.com/mantidproject/mantid/issues/9365>`_, normal use should be ok
+LoadPDFgetNFile                   Identical       see ``IFileLoader``
+LoadPreNexus                      Identical       see ``IFileLoader``
+LoadQKK                           Identical       see ``IFileLoader``
+LoadRawHelper                     Identical       see ``IFileLoader``
+LoadRKH                           Identical       see ``IFileLoader``
+LoadSassena                       Identical       see ``IFileLoader``
+LoadSESANS                        Identical       see ``IFileLoader``
+LoadSINQFocus                     Identical       see ``IFileLoader``
+LoadSNSspec                       Identical       see ``IFileLoader``
+LoadSPE                           Identical       see ``IFileLoader``
+LoadSpice2D                       Identical       see ``IFileLoader``
+LoadSQW2                          Identical       see ``IFileLoader``
+LoadSQW                           Identical       see ``IFileLoader``
+LoadSwans                         Identical       see ``IFileLoader``
+LoadTBL                           Identical       see ``IFileLoader``
+LoadTOFRawNexus                   Identical       see ``IFileLoader``
 MaskBins                          all
 Minus                             all             see ``BinaryOperation``
 MoveInstrumentComponent           all
-- 
GitLab