blob: a30b9d1d924bf7b94a02c3d3dbc842f872620bd7 [file] [log] [blame]
ACLOCAL_AMFLAGS = -I config
AUTOMAKE_OPTIONS = foreign subdir-objects
#AM_CPPFLAGS = -I$(top_srcdir)/src
#AM_LDFLAGS = $(LD_FLAGS)
MSHADOW_FLAGS = -DMSHADOW_USE_CUDA=0 -DMSHADOW_USE_CBLAS=1 -DMSHADOW_USE_MKL=0
DEFAULT_FLAGS = -Wall -pthread -fPIC -std=c++11 -Wno-unknown-pragmas \
$(MSHADOW_FLAGS) -funroll-loops -DTHREADED
CFLAGS = $(DEBUG)
CXXFLAGS = $(DEBUG)
#AC_CXXFLAGS = $(DEBUG)
INCLUDES = -I$(top_srcdir)/include
PROTOS := $(top_srcdir)/src/proto/singa.proto \
$(top_srcdir)/src/proto/job.proto \
$(top_srcdir)/src/proto/common.proto
PROTO_SRCS := src/proto/singa.pb.cc \
src/proto/job.pb.cc \
src/proto/common.pb.cc
PROTO_HDRS := include/proto/singa.pb.h \
include/proto/job.pb.h \
include/proto/common.pb.h
PROTO_PYS := tool/python/pb2/singa_pb2.py \
tool/python/pb2/job_pb2.py \
tool/python/pb2/common_pb2.py
CUDA_SRCS := src/utils/math_kernel.cu
CUDA_OBJS := src/utils/math_kernel.o
CUDA_HDRS := include/singa/utils/math_kernel.h
CUDNN_SRCS := src/neuralnet/loss_layer/cudnn_softmaxloss.cc \
src/neuralnet/neuron_layer/cudnn_softmax.cc \
src/neuralnet/neuron_layer/cudnn_pooling.cc \
src/neuralnet/neuron_layer/cudnn_activation.cc \
src/neuralnet/neuron_layer/cudnn_lrn.cc \
src/neuralnet/neuron_layer/cudnn_convolution.cc \
src/neuralnet/neuron_layer/cudnn_bm.cc
PY_SRCS := tool/python/singa/driver_wrap.cxx \
src/driver.cc
ZOOKEEPER_SRCS := src/utils/zk_service.cc
ZOOKEEPER_HDRS := include/singa/utils/zk_service.h
HDFS_SRCS := src/io/hdfsfile.cc \
src/io/hdfsfile_store.cc
HDFS_HDRS := include/singa/io/hdfsfile.h \
include/singa/io/hdfsfile_store.h
SINGA_SRCS := src/driver.cc \
src/server.cc \
src/worker.cc \
src/stub.cc \
src/neuralnet/layer.cc \
src/neuralnet/connection_layer/bridge.cc \
src/neuralnet/connection_layer/concate.cc \
src/neuralnet/connection_layer/slice.cc \
src/neuralnet/connection_layer/split.cc \
src/neuralnet/connection_layer/rnn_dummy.cc \
src/neuralnet/input_layer/char_rnn.cc \
src/neuralnet/input_layer/onehot.cc \
src/neuralnet/input_layer/csv.cc \
src/neuralnet/input_layer/image_preprocess.cc \
src/neuralnet/input_layer/record.cc \
src/neuralnet/input_layer/deprecated.cc \
src/neuralnet/input_layer/store.cc \
src/neuralnet/input_layer/rnn_label.cc \
src/neuralnet/output_layer/accuracy.cc \
src/neuralnet/output_layer/argsort.cc \
src/neuralnet/output_layer/csv.cc \
src/neuralnet/output_layer/record.cc \
src/neuralnet/output_layer/char_rnn.cc \
src/neuralnet/loss_layer/euclidean.cc \
src/neuralnet/loss_layer/softmax.cc \
src/neuralnet/neuron_layer/activation.cc \
src/neuralnet/neuron_layer/bm.cc \
src/neuralnet/neuron_layer/convolution.cc \
src/neuralnet/neuron_layer/dropout.cc \
src/neuralnet/neuron_layer/dummy.cc \
src/neuralnet/neuron_layer/embedding.cc \
src/neuralnet/neuron_layer/inner_product.cc \
src/neuralnet/neuron_layer/lrn.cc \
src/neuralnet/neuron_layer/pooling.cc \
src/neuralnet/neuron_layer/rbm.cc \
src/neuralnet/neuron_layer/gru.cc \
src/neuralnet/neuron_layer/relu.cc \
src/neuralnet/neuron_layer/sigmoid.cc \
src/neuralnet/neuron_layer/softmax.cc \
src/neuralnet/neuron_layer/stanh.cc \
src/neuralnet/neuralnet.cc \
src/comm/socket.cc \
src/comm/msg.cc \
src/io/kvfile.cc \
src/io/kvfile_store.cc \
src/io/textfile_store.cc \
src/io/store.cc \
src/utils/cluster.cc \
src/utils/cluster_rt.cc \
src/utils/graph.cc \
src/utils/common.cc \
src/utils/param.cc \
src/utils/updater.cc \
src/utils/blob.cc \
src/utils/image_transform.cc \
src/utils/job_manager.cc
SINGA_HDRS := include/singa.h \
include/singa/utils/math_blob.h \
include/singa/utils/math_addr.h \
include/singa/utils/cluster.h \
include/utils/cluster_rt.h \
include/utils/param.h \
include/utils/common.h \
include/utils/factory.h \
include/utils/data_shard.h \
include/utils/singleton.h \
include/utils/graph.h \
include/utils/blob.h \
include/utils/updater.h \
include/utils/tinydir.h \
include/utils/tokenizer.h \
include/utils/image_transform.h \
include/utils/job_manager.h \
include/server.h \
include/worker.h \
include/stub.h \
include/neuralnet/layer.h \
include/neuralnet/output_layer.h \
include/neuralnet/input_layer.h \
include/neuralnet/loss_layer.h \
include/neuralnet/neuron_layer.h \
include/neuralnet/connection_layer.h \
include/neuralnet/neuralnet.h \
include/singa/comm/msg.h \
include/singa/comm/socket.h \
include/singa/io/store.h \
include/singa/io/kvfile.h \
include/singa/io/kvfile_store.h \
include/singa/io/textfile_store.h \
include/mshadow/cxxnet_op.h \
include/mshadow/tensor_expr.h \
include/mshadow/tensor_container.h \
include/mshadow/tensor_expr_ext.h \
include/mshadow/tensor.h \
include/mshadow/tensor_io.h \
include/mshadow/tensor_base.h \
include/mshadow/tensor_random.h
GTEST_SRCS := include/gtest/gtest-all.cc
GTEST_HRDS := include/gtest/gtest.h
TEST_SRCS := include/gtest/gtest_main.cc \
src/test/test_cluster.cc \
src/test/test_common.cc \
src/test/test_msg.cc \
src/test/test_math.cc \
src/test/test_neuralnet.cc \
src/test/test_paramslicer.cc \
src/test/test_kvfile.cc \
src/test/test_store.cc \
src/test/test_connection_layers.cc \
src/test/test_record_input_layer.cc \
src/test/test_csv_input_layer.cc \
src/test/test_gru_layer.cc \
src/test/test_unrolling.cc
#EXTRA_PROGRAMS = $(PROGS)
EXTRA_PROGRAMS = singatest test
#EXTRA_LTLIBRARIES = $(LTLIBS)
EXTRA_LTLIBRARIES = libgtest.la _driver.la
lib_LTLIBRARIES = libsinga.la $(LTLIBS)
bin_PROGRAMS = singa singatool $(PROGS)
pydir = $(CURDIR)/tool/python/singa/
py_LTLIBRARIES = $(PY_PROGS)
#gpudir = $(CURDIR)/.libs
#gpu_LTLIBRARIES = libsingagpu.so
#lib_LTLIBRARIES = libsinga.la
libsinga_la_SOURCES = $(PROTO_SRCS) $(SINGA_SRCS)
libsinga_la_CXXFLAGS = $(DEFAULT_FLAGS) -msse3 -fpermissive -I$(top_srcdir)/include
libsinga_la_LDFLAGS =
if LMDB
libsinga_la_CXXFLAGS += -DUSE_LMDB
endif
if DCUDNN
libsinga_la_SOURCES += $(CUDNN_SRCS)
libsinga_la_CXXFLAGS += $(CUDNN_CFLAGS)
libsinga_la_LDFLAGS += $(CUDNN_LDFLAGS) $(CUDNN_LIBS)
endif
if DCUDA
libsinga_la_SOURCES += $(CUDA_SRCS) $(CUDA_HDRS)
libsinga_la_CXXFLAGS += $(CUDA_CFLAGS)
libsinga_la_LDFLAGS += $(CUDA_LDFLAGS) $(CUDA_LIBS) -L./ -lsingagpu -Wl,-rpath=.
libsinga_la_LIBADD = libsingagpu.so
endif
if DDIST
libsinga_la_SOURCES += $(ZOOKEEPER_SRCS)
libsinga_la_CXXFLAGS += $(DIST_CFLAGS)
libsinga_la_LDFLAGS += $(DIST_LDFLAGS) $(DIST_LIBS)
endif
if DHDFS
libsinga_la_SOURCES += $(HDFS_SRCS)
libsinga_la_CXXFLAGS += $(HDFS_CFLAGS)
libsinga_la_LDFLAGS += $(HDFS_LDFLAGS) $(HDFS_LIBS)
endif
#bin_PROGRAMS = singa
singa_SOURCES = src/main.cc
singa_CXXFLAGS = $(DEFAULT_FLAGS) -MMD -I$(top_srcdir)/include
singa_LDFLAGS = -lsinga \
-lglog \
-lprotobuf \
-lopenblas \
-lczmq
if LMDB
singa_LDFLAGS += -llmdb
endif
if DCUDNN
singa_SOURCES += $(CUDNN_SRCS)
singa_CXXFLAGS += $(CUDNN_CFLAGS)
singa_LDFLAGS += $(CUDNN_LDFLAGS) $(CUDNN_LIBS)
endif
if DCUDA
singa_SOURCES += $(CUDA_SRCS) $(CUDA_HDRS)
singa_CXXFLAGS += $(CUDA_CFLAGS)
singa_LDFLAGS += $(CUDA_LDFLAGS) $(CUDA_LIBS)
endif
if DDIST
singa_SOURCES += $(ZOOKEEPER_SRCS)
singa_CXXFLAGS += $(DIST_CFLAGS)
singa_LDFLAGS += $(DIST_LDFLAGS) $(DIST_LIBS)
endif
if DHDFS
singa_SOURCES += $(HDFS_SRCS)
singa_CXXFLAGS += $(HDFS_CFLAGS)
singa_LDFLAGS += $(HDFS_LDFLAGS) $(HDFS_LIBS)
endif
#bin_PROGRAMS += singatool
singatool_SOURCES = src/utils/tool.cc #$(CUDA_SRCS) $(CUDA_HDRS) $(CUDNN_SRCS)
singatool_CXXFLAGS = -Wall -pthread -fPIC -std=c++11 -MMD -Wno-unknown-pragmas \
-funroll-loops -DTHREADED -I$(top_srcdir)/include $(DEFAULT_FLAGS)
singatool_LDFLAGS = -lsinga \
-lglog \
-lprotobuf
if DDIST
singatool_SOURCES += $(ZOOKEEPER_SRCS)
singatool_CXXFLAGS += $(DIST_CFLAGS)
singatool_LDFLAGS += $(DIST_LDFLAGS) $(DIST_LIBS)
endif
#lib_LTLIBRARIES += libgtest.la
libgtest_la_SOURCES = $(GTEST_HDRS) $(GTEST_SRCS)
libgtest_la_CXXFLAGS = $(DEFAULT_FLAGS) -msse3 -fpermissive -I$(top_srcdir)/include
if LMDB
libgtest_la_CXXFLAGS += -DUSE_LMDB
endif
#libgtest_la_LDFLAGS = -I$(top_srcdir)/include
#bin_PROGRAMS += test
singatest_SOURCES = $(GTEST_HDRS) $(TEST_SRCS)
singatest_CXXFLAGS = $(DEFAULT_FLAGS) -I$(top_srcdir)/include
singatest_LDADD = ./libgtest.la
singatest_LDFLAGS = -lsinga \
-lglog \
-lprotobuf \
-lopenblas \
-lczmq \
-lgtest
if LMDB
singatest_LDFLAGS += -llmdb
endif
if DCUDNN
singatest_SOURCES += $(CUDNN_SRCS)
singatest_CXXFLAGS += $(CUDNN_CFLAGS)
singatest_LDFLAGS += $(CUDNN_LDFLAGS) $(CUDNN_LIBS)
endif
if DCUDA
singatest_SOURCES += $(CUDA_SRCS) $(CUDA_HDRS)
singatest_CXXFLAGS += $(CUDA_CFLAGS)
singatest_LDFLAGS += $(CUDA_LDFLAGS) $(CUDA_LIBS)
endif
if DDIST
singatest_SOURCES += $(ZOOKEEPER_SRCS)
singatest_CXXFLAGS += $(DIST_CFLAGS)
singatest_LDFLAGS += $(DIST_LDFLAGS) $(DIST_LIBS)
endif
_driver_la_SOURCES = $(PY_SRCS)
_driver_la_CXXFLAGS = $(DEFAULT_FLAGS) $(MSHADOW_FLAGS) -I$(top_srcdir)/include $(PYFLAGS)
_driver_la_LDFLAGS = -lsinga -module -shared $(PYLIBS) -avoid-version -rpath $(pydir)
if DCUDNN
_driver_la_CXXFLAGS += $(CUDNN_CFLAGS)
_driver_la_LDFLAGS += $(CUDNN_LDFLAGS) $(CUDNN_LIBS)
endif
if DCUDA
_driver_la_CXXFLAGS += $(CUDA_CFLAGS)
_driver_la_LDFLAGS += $(CUDA_LDFLAGS) $(CUDA_LIBS)
endif
clean-local:
rm -rf $(PROTO_SRCS) $(PROTO_HDRS)
rm -rf $(PROTO_PYS)
rm -rf neuralnet/neuron_layer/*.o
rm -rf src/utils/math_kernel.o
rm -rf rat_check
rm -rf tool/python/pb2
rm -rf libsingagpu.so
# Add scrips for py driver installation
all-local:
@if [ -f ".libs/_driver.so" ]; then \
echo "Copy libs for python wrapper"; \
cp -f .libs/_driver.so tool/python/singa/; \
touch tool/python/singa/__init__.py; \
fi
@if [ -f "libsingagpu.so" ]; then \
cp libsingagpu.so .libs/; \
fi
# For rat check
rat:
@if test ! -z '$(shell command -v java 2>/dev/null)'; then \
if test ! -z '$(shell echo $$RAT_PATH)'; then \
make distclean;\
java -jar $(RAT_PATH) -E rat-excludes -d . > rat_check; \
else \
echo "RAT_PATH is not set to correct jar file. Apache RAT can be downloaded at http://creadur.apache.org/rat/download_rat.cgi"; \
fi \
else \
echo "java is not found"; \
fi
.cu.o: .cu
$(NVCC) $(MSHADOW_FLAGS) --shared -Xcompiler -fPIC $(CUDA_CFLAGS) $(CUDA_LDFLAGS) $(CUDA_LIBS) -I$(top_srcdir)/include -std=c++11 -G -c -o $@ $<
# Generate gpu libs for singa
libsingagpu.so: $(CUDA_OBJS)
$(NVCC) -o libsingagpu.so -shared -Xcompiler -fPIC $(CUDA_OBJS) $(CUDA_CFLAGS) $(CUDA_LDFLAGS) $(CUDA_LIBS) -I$(top_srcdir)/include -std=c++11 -G
# Create python class files
install-pyLTLIBRARIES: $(py_LTLIBRARIES)
touch tool/python/singa/__init__.py
@if [ -f ".libs/_driver.so" ]; then \
cp -f .libs/_driver.so tool/python/singa/;\
fi
uninstall-pyLTLIBRARIES:
rm -f tool/python/singa/__init__.py
rm -f tool/python/singa/_driver.so
# For autorun singatest
test: singatest
@./singatest
$(PROTO_HDRS) $(PROTO_SRCS): $(PROTOS)
protoc --proto_path=$(top_srcdir)/src/proto --cpp_out=$(top_srcdir)/src/proto $(PROTOS)
mkdir -p $(top_srcdir)/tool/python/pb2/
touch $(top_srcdir)/tool/python/pb2/__init__.py
protoc --proto_path=$(top_srcdir)/src/proto --python_out=$(top_srcdir)/tool/python/pb2 $(PROTOS)
mkdir -p $(top_srcdir)/include/singa/proto/
cp $(top_srcdir)/src/proto/*.pb.h $(top_srcdir)/include/singa/proto/
@echo