/
githubmirror
/
cmssw
Обзор
Документация
Войти
/
githubmirror
/
cmssw
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
HeterogeneousCore/AlpakaInterface/src/Backend.cc
34 строки
1 KB
Matti Kortelainen
Make every Alpaka EDProducer to store an unsigned short int for the backend
17 окт 2023, 14:27
17 окт 2023, 14:27
9a3e06b
Код
Авторство
О чём код?
#include "FWCore/Utilities/interface/Exception.h" #include "HeterogeneousCore/AlpakaInterface/interface/Backend.h" #include <algorithm> #include <array> namespace { constexpr const std::array<std::string_view, static_cast<short>(cms::alpakatools::Backend::size)> backendNames = { {"SerialSync", "CudaAsync", "ROCmAsync", "TbbAsync"}}; } namespace cms::alpakatools { Backend toBackend(std::string_view name) { auto found = std::find(backendNames.begin(), backendNames.end(), name); if (found == backendNames.end()) { cms::Exception ex("EnumNotFound"); ex << "Invalid backend name '" << name << "'"; ex.addContext("Calling cms::alpakatools::toBackend()"); throw ex; } return static_cast<Backend>(std::distance(backendNames.begin(), found)); } std::string_view toString(Backend backend) { auto val = static_cast<unsigned short>(backend); if (val >= static_cast<unsigned short>(Backend::size)) { cms::Exception ex("InvalidEnumValue"); ex << "Invalid backend enum value " << val; ex.addContext("Calling cms::alpakatools::toString()"); throw ex; } return backendNames[val]; } } // namespace cms::alpakatools