Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/moses-smt/mosesdecoder.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHieu Hoang <hieuhoang@gmail.com>2020-10-06 01:39:26 +0300
committerHieu Hoang <hieuhoang@gmail.com>2020-10-06 01:39:26 +0300
commit74e2e11bfaab3920af808a8ffeab0be8e836f90b (patch)
treecb88e357d97ffc70ab126d2be2c7d9482dcff54e
parentdd638e16f5af7ded5b82eb942fec3d06294046d7 (diff)
thread-safe
-rw-r--r--moses2/TranslationModel/MSPT/MSPT.cpp8
-rw-r--r--moses2/TranslationModel/MSPT/MSPT.h3
2 files changed, 7 insertions, 4 deletions
diff --git a/moses2/TranslationModel/MSPT/MSPT.cpp b/moses2/TranslationModel/MSPT/MSPT.cpp
index eb06fda21..a30169f29 100644
--- a/moses2/TranslationModel/MSPT/MSPT.cpp
+++ b/moses2/TranslationModel/MSPT/MSPT.cpp
@@ -36,13 +36,12 @@ using namespace std;
namespace Moses2
{
-
+thread_local MSPT::PBNODE *MSPT::m_rootPb;
////////////////////////////////////////////////////////////////////////
MSPT::MSPT(size_t startInd, const std::string &line)
:PhraseTable(startInd, line)
- ,m_rootPb(NULL)
{
ReadParameters();
}
@@ -57,7 +56,6 @@ void MSPT::CreatePTForInput(const ManagerBase &mgr, string phraseTableString)
//cerr << "In CreatePTForInput" << endl << flush;
const System &system = mgr.system;
FactorCollection &vocab = system.GetVocab();
- MemPool &systemPool = system.GetSystemPool();
MemPool &pool = mgr.GetPool();
MemPool tmpSourcePool;
@@ -148,6 +146,10 @@ TargetPhrases* MSPT::Lookup(const Manager &mgr, MemPool &pool,
return tps;
}
+void MSPT::CleanUpAfterSentenceProcessing(const System &system, const InputType &input) const {
+ delete m_rootPb;
+}
+
void MSPT::InitActiveChart(
MemPool &pool,
const SCFG::Manager &mgr,
diff --git a/moses2/TranslationModel/MSPT/MSPT.h b/moses2/TranslationModel/MSPT/MSPT.h
index f13fe5847..fe37e34b9 100644
--- a/moses2/TranslationModel/MSPT/MSPT.h
+++ b/moses2/TranslationModel/MSPT/MSPT.h
@@ -66,9 +66,10 @@ public:
SCFG::InputPath &path) const;
virtual void InitializeForInput(const ManagerBase &mgr, const InputType &input);
+ virtual void CleanUpAfterSentenceProcessing(const System &system, const InputType &input) const;
protected:
- PBNODE *m_rootPb;
+ thread_local static PBNODE *m_rootPb;
void LookupGivenNode(
MemPool &pool,