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 }