Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:12:08

0001 #include "FWCore/Framework/interface/ensureAvailableAccelerators.h"
0002 #include "FWCore/Utilities/interface/EDMException.h"
0003 
0004 #include <algorithm>
0005 #include <vector>
0006 
0007 namespace edm {
0008   void ensureAvailableAccelerators(edm::ParameterSet const& parameterSet) {
0009     auto const& selectedAccelerators =
0010         parameterSet.getUntrackedParameter<std::vector<std::string>>("@selected_accelerators");
0011     if (selectedAccelerators.empty()) {
0012       Exception ex(errors::UnavailableAccelerator);
0013       ex << "The system has no compute accelerators that match the patterns specified in "
0014             "process.options.accelerators:\n";
0015       ParameterSet const& optionsPset(parameterSet.getUntrackedParameterSet("options"));
0016       auto const& patterns = optionsPset.getUntrackedParameter<std::vector<std::string>>("accelerators");
0017       for (auto const& pat : patterns) {
0018         ex << " " << pat << "\n";
0019       }
0020       ex << "\nThe following compute accelerators are available:\n";
0021       auto const& availableAccelerators =
0022           parameterSet.getUntrackedParameter<std::vector<std::string>>("@available_accelerators");
0023       for (auto const& acc : availableAccelerators) {
0024         ex << " " << acc << "\n";
0025       }
0026 
0027       throw ex;
0028     }
0029   }
0030 }  // namespace edm