diff --git a/Makefile b/Makefile index 33925d025..9e827f43f 100644 --- a/Makefile +++ b/Makefile @@ -10,13 +10,13 @@ BPATH=. # objectives that makes up rabit library MPIOBJ= $(BPATH)/engine_mpi.o OBJ= $(BPATH)/allreduce_base.o $(BPATH)/allreduce_robust.o $(BPATH)/engine.o $(BPATH)/engine_empty.o $(BPATH)/engine_mock.o\ - $(BPATH)/rabit_wrapper.o + $(BPATH)/rabit_wrapper.o $(BPATH)/engine_base.o SLIB= wrapper/librabit_wrapper.so wrapper/librabit_wrapper_mock.so wrapper/librabit_wrapper_mpi.so -ALIB= lib/librabit.a lib/librabit_mpi.a lib/librabit_empty.a lib/librabit_mock.a +ALIB= lib/librabit.a lib/librabit_mpi.a lib/librabit_empty.a lib/librabit_mock.a lib/librabit_base.a HEADERS=src/*.h include/*.h include/rabit/*.h .PHONY: clean all install mpi python -all: lib/librabit.a lib/librabit_mock.a wrapper/librabit_wrapper.so wrapper/librabit_wrapper_mock.so +all: lib/librabit.a lib/librabit_mock.a wrapper/librabit_wrapper.so wrapper/librabit_wrapper_mock.so mpi: lib/librabit_mpi.a wrapper/librabit_wrapper_mpi.so python: wrapper/librabit_wrapper.so wrapper/librabit_wrapper_mock.so @@ -26,8 +26,10 @@ $(BPATH)/allreduce_robust.o: src/allreduce_robust.cc $(HEADERS) $(BPATH)/engine_mpi.o: src/engine_mpi.cc $(HEADERS) $(BPATH)/engine_empty.o: src/engine_empty.cc $(HEADERS) $(BPATH)/engine_mock.o: src/engine_mock.cc $(HEADERS) +$(BPATH)/engine_base.o: src/engine_base.cc $(HEADERS) lib/librabit.a: $(BPATH)/allreduce_base.o $(BPATH)/allreduce_robust.o $(BPATH)/engine.o +lib/librabit_base.a: $(BPATH)/allreduce_base.o $(BPATH)/engine_base.o lib/librabit_mock.a: $(BPATH)/allreduce_base.o $(BPATH)/allreduce_robust.o $(BPATH)/engine_mock.o lib/librabit_empty.a: $(BPATH)/engine_empty.o lib/librabit_mpi.a: $(MPIOBJ) diff --git a/src/engine.cc b/src/engine.cc index b58f738d3..c5041642e 100644 --- a/src/engine.cc +++ b/src/engine.cc @@ -17,11 +17,15 @@ namespace rabit { namespace engine { // singleton sync manager +#ifndef RABIT_USE_BASE #ifndef RABIT_USE_MOCK AllreduceRobust manager; #else AllreduceMock manager; #endif +#else +AllreduceBase manager; +#endif /*! \brief intiialize the synchronization module */ void Init(int argc, char *argv[]) { diff --git a/src/engine_base.cc b/src/engine_base.cc new file mode 100644 index 000000000..62739536f --- /dev/null +++ b/src/engine_base.cc @@ -0,0 +1,15 @@ +/*! + * Copyright (c) 2014 by Contributors + * \file engine_mock.cc + * \brief this is an engine implementation that will + * insert failures in certain call point, to test if the engine is robust to failure + * \author Tianqi Chen + */ +// define use MOCK, os we will use mock Manager +#define _CRT_SECURE_NO_WARNINGS +#define _CRT_SECURE_NO_DEPRECATE +#define NOMINMAX +// switch engine to AllreduceMock +#define RABIT_USE_BASE +#include "./engine.cc" +