diff --git a/moses-cmd/MainVW.cpp b/moses-cmd/MainVW.cpp index 2f313df01..0e611b139 100644 --- a/moses-cmd/MainVW.cpp +++ b/moses-cmd/MainVW.cpp @@ -51,12 +51,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA #include "hypergraph.pb.h" #endif -#ifdef PT_UG -#include -#include "moses/TranslationModel/UG/mmsapt.h" -#include "moses/TranslationModel/UG/generic/program_options/ug_splice_arglist.h" -#endif - using namespace std; using namespace Moses; @@ -76,6 +70,9 @@ void OutputFeatureWeightsForHypergraph(std::ostream &outputSearchGraphStream) /** main function of the command line version of the decoder **/ int main(int argc, char const** argv) { + //setting in the Staticdata a link between the thread id of this process and a NULL tasksptr + // StaticData::InstanceNonConst().SetTask(); // => moved into StaticData constructor + try { #ifdef HAVE_PROTOBUF @@ -141,11 +138,13 @@ int main(int argc, char const** argv) } #ifdef WITH_THREADS +#pragma message ("Compiling with Threads.") ThreadPool pool(staticData.ThreadCount()); #endif // main loop over set of input sentences + boost::shared_ptr scope(new ContextScope); boost::shared_ptr source; while ((source = ioWrapper->ReadInput()) != NULL) { IFVERBOSE(1) { @@ -154,7 +153,7 @@ int main(int argc, char const** argv) // set up task of training one sentence boost::shared_ptr task; - task = TrainingTask::create(source, ioWrapper); + task = TrainingTask::create(source, ioWrapper, scope); // execute task #ifdef WITH_THREADS diff --git a/moses/TrainingTask.h b/moses/TrainingTask.h index 4d2152920..eed6d7d4b 100644 --- a/moses/TrainingTask.h +++ b/moses/TrainingTask.h @@ -39,6 +39,18 @@ public: boost::shared_ptr const& ioWrapper) { boost::shared_ptr ret(new TrainingTask(source, ioWrapper)); ret->m_self = ret; + ret->m_scope.reset(new ContextScope); + return ret; + } + + // factory function + static boost::shared_ptr + create(boost::shared_ptr const& source, + boost::shared_ptr const& ioWrapper, + boost::shared_ptr const& scope) { + boost::shared_ptr ret(new TrainingTask(source, ioWrapper)); + ret->m_self = ret; + ret->m_scope = scope; return ret; }