diff options
-rw-r--r-- | .gitignore | 2 | ||||
-rw-r--r-- | .gitmodules | 3 | ||||
-rw-r--r-- | Makefile | 71 | ||||
-rwxr-xr-x | build_luajit.sh | 5 | ||||
m--------- | luarocks | 0 | ||||
-rwxr-xr-x | nerv | 2 | ||||
-rw-r--r-- | nerv/.gitignore | 1 | ||||
-rw-r--r-- | nerv/Makefile | 60 | ||||
-rw-r--r-- | nerv/common.c (renamed from common.c) | 0 | ||||
-rw-r--r-- | nerv/common.h (renamed from common.h) | 0 | ||||
-rw-r--r-- | nerv/doc/nerv.md (renamed from doc/nerv.md) | 0 | ||||
-rw-r--r-- | nerv/doc/nerv_class.md (renamed from doc/nerv_class.md) | 0 | ||||
-rw-r--r-- | nerv/doc/nerv_io.md (renamed from doc/nerv_io.md) | 0 | ||||
-rw-r--r-- | nerv/doc/nerv_layer.md (renamed from doc/nerv_layer.md) | 0 | ||||
-rw-r--r-- | nerv/doc/nerv_matrix.md (renamed from doc/nerv_matrix.md) | 0 | ||||
-rw-r--r-- | nerv/doc/nerv_nn.md (renamed from doc/nerv_nn.md) | 0 | ||||
-rw-r--r-- | nerv/doc/nerv_param.md (renamed from doc/nerv_param.md) | 0 | ||||
-rw-r--r-- | nerv/examples/asr_trainer.lua (renamed from examples/asr_trainer.lua) | 0 | ||||
-rw-r--r-- | nerv/examples/chunk_file_example.lua (renamed from examples/chunk_file_example.lua) | 0 | ||||
-rw-r--r-- | nerv/examples/cumatrix_example.lua (renamed from examples/cumatrix_example.lua) | 0 | ||||
-rw-r--r-- | nerv/examples/cumatrix_from_mmatrix.lua (renamed from examples/cumatrix_from_mmatrix.lua) | 0 | ||||
-rw-r--r-- | nerv/examples/mmatrix_example.lua (renamed from examples/mmatrix_example.lua) | 0 | ||||
-rw-r--r-- | nerv/examples/oop_example.c (renamed from examples/oop_example.c) | 0 | ||||
-rw-r--r-- | nerv/examples/oop_example.lua (renamed from examples/oop_example.lua) | 0 | ||||
-rw-r--r-- | nerv/examples/swb_baseline.lua (renamed from examples/swb_baseline.lua) | 0 | ||||
-rw-r--r-- | nerv/examples/test_dnn_layers.lua (renamed from examples/test_dnn_layers.lua) | 0 | ||||
-rw-r--r-- | nerv/examples/test_nn_lib.lua (renamed from examples/test_nn_lib.lua) | 0 | ||||
-rw-r--r-- | nerv/init.lua (renamed from nerv.lua) | 22 | ||||
-rw-r--r-- | nerv/io/chunk_file.c (renamed from io/chunk_file.c) | 0 | ||||
-rw-r--r-- | nerv/io/chunk_file.h (renamed from io/chunk_file.h) | 0 | ||||
-rw-r--r-- | nerv/io/init.c (renamed from io/init.c) | 0 | ||||
-rw-r--r-- | nerv/io/init.lua (renamed from io/init.lua) | 2 | ||||
-rw-r--r-- | nerv/io/sgd_buffer.lua (renamed from io/sgd_buffer.lua) | 0 | ||||
-rw-r--r-- | nerv/layer/affine.lua (renamed from layer/affine.lua) | 0 | ||||
-rw-r--r-- | nerv/layer/bias.lua (renamed from layer/bias.lua) | 0 | ||||
-rw-r--r-- | nerv/layer/combiner.lua (renamed from layer/combiner.lua) | 0 | ||||
-rw-r--r-- | nerv/layer/init.lua (renamed from layer/init.lua) | 14 | ||||
-rw-r--r-- | nerv/layer/mse.lua (renamed from layer/mse.lua) | 0 | ||||
-rw-r--r-- | nerv/layer/sigmoid.lua (renamed from layer/sigmoid.lua) | 0 | ||||
-rw-r--r-- | nerv/layer/softmax_ce.lua (renamed from layer/softmax_ce.lua) | 0 | ||||
-rw-r--r-- | nerv/layer/window.lua (renamed from layer/window.lua) | 0 | ||||
-rw-r--r-- | nerv/luaT/README.md (renamed from luaT/README.md) | 0 | ||||
-rw-r--r-- | nerv/luaT/luaT.c (renamed from luaT/luaT.c) | 0 | ||||
-rw-r--r-- | nerv/luaT/luaT.h (renamed from luaT/luaT.h) | 0 | ||||
-rw-r--r-- | nerv/matrix/cuda_helper.h (renamed from matrix/cuda_helper.h) | 0 | ||||
-rw-r--r-- | nerv/matrix/cukernel.cu (renamed from matrix/cukernel.cu) | 0 | ||||
-rw-r--r-- | nerv/matrix/cukernel.h (renamed from matrix/cukernel.h) | 0 | ||||
-rw-r--r-- | nerv/matrix/cumatrix.c (renamed from matrix/cumatrix.c) | 0 | ||||
-rw-r--r-- | nerv/matrix/generic/cukernel.cu (renamed from matrix/generic/cukernel.cu) | 0 | ||||
-rw-r--r-- | nerv/matrix/generic/cumatrix.c (renamed from matrix/generic/cumatrix.c) | 0 | ||||
-rw-r--r-- | nerv/matrix/generic/elem_type.h (renamed from matrix/generic/elem_type.h) | 0 | ||||
-rw-r--r-- | nerv/matrix/generic/matrix.c (renamed from matrix/generic/matrix.c) | 0 | ||||
-rw-r--r-- | nerv/matrix/generic/matrix.h (renamed from matrix/generic/matrix.h) | 0 | ||||
-rw-r--r-- | nerv/matrix/generic/mmatrix.c (renamed from matrix/generic/mmatrix.c) | 0 | ||||
-rw-r--r-- | nerv/matrix/init.c (renamed from matrix/init.c) | 0 | ||||
-rw-r--r-- | nerv/matrix/init.lua (renamed from matrix/init.lua) | 0 | ||||
-rw-r--r-- | nerv/matrix/mmatrix.c (renamed from matrix/mmatrix.c) | 0 | ||||
-rw-r--r-- | nerv/nerv | 13 | ||||
-rw-r--r-- | nerv/nerv-scm-1.rockspec | 38 | ||||
-rw-r--r-- | nerv/nerv.c (renamed from nerv.c) | 0 | ||||
-rw-r--r-- | nerv/nn/init.lua | 3 | ||||
-rw-r--r-- | nerv/nn/layer_dag.lua (renamed from nn/layer_dag.lua) | 0 | ||||
-rw-r--r-- | nerv/nn/layer_repo.lua (renamed from nn/layer_repo.lua) | 0 | ||||
-rw-r--r-- | nerv/nn/param_repo.lua (renamed from nn/param_repo.lua) | 0 | ||||
-rw-r--r-- | nn/init.lua | 3 | ||||
-rw-r--r-- | pl/compat.lua | 137 | ||||
-rw-r--r-- | pl/utils.lua | 476 | ||||
m--------- | speech | 0 | ||||
-rwxr-xr-x | tools/build_luajit.sh | 4 | ||||
-rwxr-xr-x | tools/build_luarocks.sh | 4 |
70 files changed, 162 insertions, 698 deletions
@@ -1,4 +1,4 @@ *.o -build/ +install/ *.swp *.swo diff --git a/.gitmodules b/.gitmodules index 2bb1788..1432de9 100644 --- a/.gitmodules +++ b/.gitmodules @@ -7,3 +7,6 @@ [submodule "speech"] path = speech url = https://github.com/Determinant/nerv-speech.git +[submodule "luarocks"] + path = luarocks + url = https://github.com/keplerproject/luarocks.git @@ -1,63 +1,10 @@ -.PHONY: all clean luajit -BUILD_DIR := $(CURDIR)/build -OBJS := nerv.o luaT.o common.o \ - matrix/mmatrix.o matrix/cumatrix.o matrix/init.o matrix/cukernel.o \ - io/init.o io/chunk_file.o \ - examples/oop_example.o -LIBS := libnerv.so -LUA_LIBS := matrix/init.lua io/init.lua nerv.lua \ - pl/utils.lua pl/compat.lua \ - layer/init.lua layer/affine.lua layer/sigmoid.lua layer/softmax_ce.lua \ - layer/window.lua layer/bias.lua layer/combiner.lua layer/mse.lua \ - nn/init.lua nn/layer_repo.lua nn/param_repo.lua nn/layer_dag.lua \ - io/sgd_buffer.lua -INCLUDE := -I build/luajit-2.0/include/luajit-2.0/ -DLUA_USE_APICHECK -CUDA_BASE := /usr/local/cuda-6.5 -#CUDA_BASE := /usr/local/cuda-5.0 -CUDA_INCLUDE := -I $(CUDA_BASE)/include/ -INCLUDE += $(CUDA_INCLUDE) -LDFLAGS := -L$(CUDA_BASE)/lib64/ -Wl,-rpath=$(CUDA_BASE)/lib64/ -lcudart -lcublas -CFLAGS := -Wall -Wextra -O2 -OBJ_DIR := $(BUILD_DIR)/objs -LUA_DIR := $(BUILD_DIR)/lua -LIB_DIR := $(BUILD_DIR)/lib -SUBDIR := matrix io layer examples pl nn -NVCC := $(CUDA_BASE)/bin/nvcc -NVCC_FLAGS := -Xcompiler -fPIC,-Wall,-Wextra - -OBJS := $(addprefix $(OBJ_DIR)/,$(OBJS)) -OBJ_SUBDIR := $(addprefix $(OBJ_DIR)/,$(SUBDIR)) -LUA_SUBDIR := $(addprefix $(LUA_DIR)/,$(SUBDIR)) -LIBS := $(addprefix $(BUILD_DIR)/lib/,$(LIBS)) -LUA_LIBS := $(addprefix $(LUA_DIR)/,$(LUA_LIBS)) - -all: luajit $(OBJ_DIR) $(LIB_DIR) $(OBJ_SUBDIR) $(LIBS) $(LUA_DIR) $(LUA_SUBDIR) $(LUA_LIBS) +.PHONY: all clean install luajit luarocks nerv +SHELL := /bin/bash +PREFIX := $(CURDIR)/install/ +all: luajit luarocks luajit: - ./build_luajit.sh -$(OBJ_DIR) $(LIB_DIR) $(LUA_DIR) $(OBJ_SUBDIR) $(LUA_SUBDIR): - -mkdir -p $@ -$(OBJ_DIR)/%.o: %.c $(patsubst /%.o,/%.c,$@) - gcc -c -o $@ $< $(INCLUDE) -fPIC $(CFLAGS) -$(OBJ_DIR)/matrix/cukernel.o: matrix/cukernel.cu - $(NVCC) -c -o $@ $< $(INCLUDE) $(NVCC_FLAGS) -$(LUA_DIR)/%.lua: %.lua - cp $< $@ -$(OBJ_DIR)/luaT.o: - gcc -c -o $@ luaT/luaT.c $(INCLUDE) -fPIC -$(LIBS): $(OBJS) - gcc -shared -o $@ $(OBJS) $(LDFLAGS) - -$(OBJ_DIR)/matrix/cumatrix.o: matrix/generic/cumatrix.c matrix/generic/matrix.c matrix/generic/cukernel.cu -$(OBJ_DIR)/matrix/mmatrix.o: matrix/generic/mmatrix.c matrix/generic/matrix.c -$(OBJ_DIR)/matrix/cukernel.o: matrix/generic/cukernel.cu - -.PHONY: speech - -speech: - -mkdir -p build/objs/speech/tnet_io - $(MAKE) -C speech/ BUILD_DIR=$(BUILD_DIR) LIB_DIR=$(LIB_DIR) OBJ_DIR=$(CURDIR)/build/objs/speech/ LUA_DIR=$(LUA_DIR) - -clean: - -rm -rf $(OBJ_DIR) - -rm -rf $(LUA_DIR) - -rm -rf $(LIB_DIR) + PREFIX=$(PREFIX) ./tools/build_luajit.sh +luarocks: + PREFIX=$(PREFIX) ./tools/build_luarocks.sh +install: + cd nerv; $(PREFIX)/bin/luarocks make diff --git a/build_luajit.sh b/build_luajit.sh deleted file mode 100755 index bb23b5f..0000000 --- a/build_luajit.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -PREFIX="${PWD}/build" -LUAJIT_SRC='luajit-2.0/' -LUAJIT_PREFIX="${PREFIX}/luajit-2.0" -[[ -d $LUAJIT_PREFIX ]] || (cd "$LUAJIT_SRC"; make && make PREFIX="$LUAJIT_PREFIX" install) diff --git a/luarocks b/luarocks new file mode 160000 +Subproject a0315b7bc2432ea517bb90ce39df0cc8b1cd2f6 @@ -1,2 +0,0 @@ -#!/bin/bash -exec 'build/luajit-2.0/bin/luajit' -e "package.cpath=\"${PWD}/build/lib/?.so\"" -e "package.path=\"${PWD}/build/lua/?/init.lua;${PWD}/build/lua/?.lua;${PWD}/?.lua\"" -e "require 'nerv'" "$@" diff --git a/nerv/.gitignore b/nerv/.gitignore new file mode 100644 index 0000000..567609b --- /dev/null +++ b/nerv/.gitignore @@ -0,0 +1 @@ +build/ diff --git a/nerv/Makefile b/nerv/Makefile new file mode 100644 index 0000000..b69a63e --- /dev/null +++ b/nerv/Makefile @@ -0,0 +1,60 @@ +.PHONY: build install clean +SHELL := /bin/bash +BUILD_DIR := $(CURDIR)/build +OBJS := nerv.o luaT.o common.o \ + matrix/mmatrix.o matrix/cumatrix.o matrix/init.o matrix/cukernel.o \ + io/init.o io/chunk_file.o \ + examples/oop_example.o +LIBS := libnerv.so +LUA_LIBS := matrix/init.lua io/init.lua init.lua \ + layer/init.lua layer/affine.lua layer/sigmoid.lua layer/softmax_ce.lua \ + layer/window.lua layer/bias.lua layer/combiner.lua layer/mse.lua \ + nn/init.lua nn/layer_repo.lua nn/param_repo.lua nn/layer_dag.lua \ + io/sgd_buffer.lua +INCLUDE := -I $(LUA_INCDIR) -DLUA_USE_APICHECK +CUDA_BASE := /usr/local/cuda-6.5 +#CUDA_BASE := /usr/local/cuda-5.0 +CUDA_INCLUDE := -I $(CUDA_BASE)/include/ +INCLUDE += $(CUDA_INCLUDE) +LDFLAGS := -L$(CUDA_BASE)/lib64/ -Wl,-rpath=$(CUDA_BASE)/lib64/ -lcudart -lcublas +CFLAGS := -Wall -Wextra -O2 +OBJ_DIR := $(BUILD_DIR)/objs +SUBDIR := matrix io layer examples nn +NVCC := $(CUDA_BASE)/bin/nvcc +NVCC_FLAGS := -Xcompiler -fPIC,-Wall,-Wextra + +LUA_DIR = $(INST_LUADIR)/nerv +OBJS := $(addprefix $(OBJ_DIR)/,$(OBJS)) +OBJ_SUBDIR := $(addprefix $(OBJ_DIR)/,$(SUBDIR)) +LUA_SUBDIR := $(addprefix $(LUA_DIR)/,$(SUBDIR)) +LIBS := $(addprefix $(INST_LIBDIR)/,$(LIBS)) +LUA_LIBS := $(addprefix $(LUA_DIR)/,$(LUA_LIBS)) + +build: $(OBJ_DIR) $(OBJ_SUBDIR) $(OBJS) +$(OBJ_DIR) $(LUA_DIR) $(OBJ_SUBDIR) $(LUA_SUBDIR): + -mkdir -p $@ +$(OBJ_DIR)/%.o: %.c $(patsubst /%.o,/%.c,$@) + gcc -c -o $@ $< $(INCLUDE) -fPIC $(CFLAGS) +$(OBJ_DIR)/matrix/cukernel.o: matrix/cukernel.cu + $(NVCC) -c -o $@ $< $(INCLUDE) $(NVCC_FLAGS) +$(LUA_DIR)/%.lua: %.lua + cp $< $@ +$(OBJ_DIR)/luaT.o: + gcc -c -o $@ luaT/luaT.c $(INCLUDE) -fPIC +$(LIBS): $(OBJS) + gcc -shared -o $@ $(OBJS) $(LDFLAGS) + +$(OBJ_DIR)/matrix/cumatrix.o: matrix/generic/cumatrix.c matrix/generic/matrix.c matrix/generic/cukernel.cu +$(OBJ_DIR)/matrix/mmatrix.o: matrix/generic/mmatrix.c matrix/generic/matrix.c +$(OBJ_DIR)/matrix/cukernel.o: matrix/generic/cukernel.cu + +.PHONY: speech + +speech: + -mkdir -p build/objs/speech/tnet_io + $(MAKE) -C speech/ BUILD_DIR=$(BUILD_DIR) LIB_DIR=$(LIB_DIR) OBJ_DIR=$(CURDIR)/build/objs/speech/ LUA_DIR=$(LUA_DIR) + +clean: + -rm -rf $(OBJ_DIR) + +install: $(LIBS) $(LUA_DIR) $(LUA_SUBDIR) $(LUA_LIBS) diff --git a/doc/nerv.md b/nerv/doc/nerv.md index 28411f5..28411f5 100644 --- a/doc/nerv.md +++ b/nerv/doc/nerv.md diff --git a/doc/nerv_class.md b/nerv/doc/nerv_class.md index 99f63e7..99f63e7 100644 --- a/doc/nerv_class.md +++ b/nerv/doc/nerv_class.md diff --git a/doc/nerv_io.md b/nerv/doc/nerv_io.md index 07589df..07589df 100644 --- a/doc/nerv_io.md +++ b/nerv/doc/nerv_io.md diff --git a/doc/nerv_layer.md b/nerv/doc/nerv_layer.md index de2fb12..de2fb12 100644 --- a/doc/nerv_layer.md +++ b/nerv/doc/nerv_layer.md diff --git a/doc/nerv_matrix.md b/nerv/doc/nerv_matrix.md index 22971d2..22971d2 100644 --- a/doc/nerv_matrix.md +++ b/nerv/doc/nerv_matrix.md diff --git a/doc/nerv_nn.md b/nerv/doc/nerv_nn.md index c57447d..c57447d 100644 --- a/doc/nerv_nn.md +++ b/nerv/doc/nerv_nn.md diff --git a/doc/nerv_param.md b/nerv/doc/nerv_param.md index 167cb11..167cb11 100644 --- a/doc/nerv_param.md +++ b/nerv/doc/nerv_param.md diff --git a/examples/asr_trainer.lua b/nerv/examples/asr_trainer.lua index a5727be..a5727be 100644 --- a/examples/asr_trainer.lua +++ b/nerv/examples/asr_trainer.lua diff --git a/examples/chunk_file_example.lua b/nerv/examples/chunk_file_example.lua index 5961c98..5961c98 100644 --- a/examples/chunk_file_example.lua +++ b/nerv/examples/chunk_file_example.lua diff --git a/examples/cumatrix_example.lua b/nerv/examples/cumatrix_example.lua index 544fc7f..544fc7f 100644 --- a/examples/cumatrix_example.lua +++ b/nerv/examples/cumatrix_example.lua diff --git a/examples/cumatrix_from_mmatrix.lua b/nerv/examples/cumatrix_from_mmatrix.lua index 2309e14..2309e14 100644 --- a/examples/cumatrix_from_mmatrix.lua +++ b/nerv/examples/cumatrix_from_mmatrix.lua diff --git a/examples/mmatrix_example.lua b/nerv/examples/mmatrix_example.lua index 8ddfe84..8ddfe84 100644 --- a/examples/mmatrix_example.lua +++ b/nerv/examples/mmatrix_example.lua diff --git a/examples/oop_example.c b/nerv/examples/oop_example.c index 59dfc5a..59dfc5a 100644 --- a/examples/oop_example.c +++ b/nerv/examples/oop_example.c diff --git a/examples/oop_example.lua b/nerv/examples/oop_example.lua index b753288..b753288 100644 --- a/examples/oop_example.lua +++ b/nerv/examples/oop_example.lua diff --git a/examples/swb_baseline.lua b/nerv/examples/swb_baseline.lua index 8b7e01a..8b7e01a 100644 --- a/examples/swb_baseline.lua +++ b/nerv/examples/swb_baseline.lua diff --git a/examples/test_dnn_layers.lua b/nerv/examples/test_dnn_layers.lua index 64c0dec..64c0dec 100644 --- a/examples/test_dnn_layers.lua +++ b/nerv/examples/test_dnn_layers.lua diff --git a/examples/test_nn_lib.lua b/nerv/examples/test_nn_lib.lua index 5444810..5444810 100644 --- a/examples/test_nn_lib.lua +++ b/nerv/examples/test_nn_lib.lua @@ -108,7 +108,21 @@ function nerv.is_type(obj, tname) return false end -require 'matrix.init' -require 'io.init' -require 'layer.init' -require 'nn.init' +function nerv.dirname(filename) + if filename:match(".-/.-") then + local name = string.gsub(filename, "(.*/)(.*)", "%1") + return name + else + return '' + end +end + +function nerv.include(filename) + local caller = debug.getinfo(2, "S").source:sub(2) + dofile(nerv.dirname(caller) .. filename) +end + +nerv.include('matrix/init.lua') +nerv.include('io/init.lua') +nerv.include('layer/init.lua') +nerv.include('nn/init.lua') diff --git a/io/chunk_file.c b/nerv/io/chunk_file.c index c0b6b9f..c0b6b9f 100644 --- a/io/chunk_file.c +++ b/nerv/io/chunk_file.c diff --git a/io/chunk_file.h b/nerv/io/chunk_file.h index 9bae59d..9bae59d 100644 --- a/io/chunk_file.h +++ b/nerv/io/chunk_file.h diff --git a/io/init.c b/nerv/io/init.c index 70585f7..70585f7 100644 --- a/io/init.c +++ b/nerv/io/init.c diff --git a/io/init.lua b/nerv/io/init.lua index b722a81..647ff93 100644 --- a/io/init.lua +++ b/nerv/io/init.lua @@ -52,4 +52,4 @@ function DataBuffer:get_batch() nerv.error_method_not_implemented() end -require 'io.sgd_buffer' +nerv.include('sgd_buffer.lua') diff --git a/io/sgd_buffer.lua b/nerv/io/sgd_buffer.lua index f4f7dfe..f4f7dfe 100644 --- a/io/sgd_buffer.lua +++ b/nerv/io/sgd_buffer.lua diff --git a/layer/affine.lua b/nerv/layer/affine.lua index 00cbcfb..00cbcfb 100644 --- a/layer/affine.lua +++ b/nerv/layer/affine.lua diff --git a/layer/bias.lua b/nerv/layer/bias.lua index c99274d..c99274d 100644 --- a/layer/bias.lua +++ b/nerv/layer/bias.lua diff --git a/layer/combiner.lua b/nerv/layer/combiner.lua index 7bd7617..7bd7617 100644 --- a/layer/combiner.lua +++ b/nerv/layer/combiner.lua diff --git a/layer/init.lua b/nerv/layer/init.lua index e39af94..3c55a94 100644 --- a/layer/init.lua +++ b/nerv/layer/init.lua @@ -70,10 +70,10 @@ function Layer:get_dim() return self.dim_in, self.dim_out end -require 'layer.affine' -require 'layer.sigmoid' -require 'layer.softmax_ce' -require 'layer.bias' -require 'layer.window' -require 'layer.mse' -require 'layer.combiner' +nerv.include('affine.lua') +nerv.include('sigmoid.lua') +nerv.include('softmax_ce.lua') +nerv.include('bias.lua') +nerv.include('window.lua') +nerv.include('mse.lua') +nerv.include('combiner.lua') diff --git a/layer/mse.lua b/nerv/layer/mse.lua index 9a97add..9a97add 100644 --- a/layer/mse.lua +++ b/ |