From 30e51f4656b5e935dddae0fa1c47190755665448 Mon Sep 17 00:00:00 2001 From: Franck Dary <franck.dary@lis-lab.fr> Date: Sat, 6 Mar 2021 19:35:43 +0100 Subject: [PATCH] Corrected bug in MacaonDecode where dicts were not closed. Parallel decode. --- decoder/src/MacaonDecode.cpp | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/decoder/src/MacaonDecode.cpp b/decoder/src/MacaonDecode.cpp index eea032a..525e452 100644 --- a/decoder/src/MacaonDecode.cpp +++ b/decoder/src/MacaonDecode.cpp @@ -1,5 +1,6 @@ #include "MacaonDecode.hpp" #include <filesystem> +#include <execution> #include "util.hpp" #include "Decoder.hpp" #include "Submodule.hpp" @@ -122,11 +123,23 @@ int MacaonDecode::main() configs.emplace_back(mcd, tsv, util::utf8string(), std::vector<int>()); } - for (unsigned int i = 0; i < configs.size(); i++) + machine.setDictsState(Dict::State::Closed); + + if (configs.size() > 1) { - decoder.decode(configs[i], beamSize, beamThreshold, debug, printAdvancement); - configs[i].print(stdout, i == 0); + NeuralNetworkImpl::device = torch::kCPU; + machine.to(NeuralNetworkImpl::device); + std::for_each(std::execution::par_unseq, configs.begin(), configs.end(), + [&decoder, debug, printAdvancement, beamSize, beamThreshold](BaseConfig & config) + { + decoder.decode(config, beamSize, beamThreshold, debug, printAdvancement); + }); } + else + decoder.decode(configs[0], beamSize, beamThreshold, debug, printAdvancement); + + for (unsigned int i = 0; i < configs.size(); i++) + configs[i].print(stdout, i == 0); } catch(std::exception & e) {util::error(e);} -- GitLab