Skip to content

Commit 38a8f4b

Browse files
authored
Merge pull request #40 from CortexFoundation/wlt
Update features
2 parents 8767b7a + d276c7f commit 38a8f4b

File tree

318 files changed

+39780
-8023
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

318 files changed

+39780
-8023
lines changed

.gitignore

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,3 +34,14 @@ Thumbs.db
3434
# lib
3535
*.a
3636
*.so
37+
python/cvm/_cython/libcvm.c
38+
39+
compile_commands.json
40+
.ycm_extra_conf.py
41+
42+
# binary
43+
tests/test_model*
44+
tests/test_op*
45+
tests/ipy
46+
47+
config.cmake

.gitmodules

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[submodule "z3/3rdparty/z3"]
2+
path = z3/3rdparty/z3
3+
url = [email protected]:Z3Prover/z3.git

CMakeLists.txt

Lines changed: 101 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -1,123 +1,130 @@
11
cmake_minimum_required(VERSION 3.2)
22
project(cvm C CXX)
33

4-
set( CMAKE_EXPORT_COMPILE_COMMANDS ON )
4+
set(CMAKE_EXPORT_COMPILE_COMMANDS ON )
5+
56
# Utility functions
67
include(cmake/util/Util.cmake)
78
include(cmake/util/FindCUDA.cmake)
89
include(cmake/util/FindOpenmp.cmake)
910

10-
if(EXISTS ${CMAKE_CURRENT_BINARY_DIR}/config.cmake)
11-
include(${CMAKE_CURRENT_BINARY_DIR}/config.cmake)
12-
else()
13-
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/config.cmake)
14-
include(${CMAKE_CURRENT_SOURCE_DIR}/config.cmake)
15-
endif()
11+
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/config.cmake)
12+
include(${CMAKE_CURRENT_SOURCE_DIR}/config.cmake)
1613
endif()
1714

18-
# NOTE: do not modify this file to change option values.
19-
# You can create a config.cmake at build folder
20-
# and add set(OPTION VALUE) to override these build options.
21-
# Alernatively, use cmake -DOPTION=VALUE through command-line.
22-
cvm_option(USE_CUDA "Build with CUDA" ON)
23-
cvm_option(USE_LLVM "Build with LLVM, can be set to specific llvm-config path" ON)
24-
cvm_option(USE_CVM_RUNTIME "Build with tiny cvm runtime" ON)
25-
cvm_option(USE_RTTI "Build with RTTI" ON)
26-
cvm_option(INSTALL_DEV "Install compiler infrastructure" OFF)
27-
2815
# include directories
2916
include_directories("include")
3017

31-
# initial variables
32-
set(CVM_LINKER_LIBS "")
33-
set(CVM_RUNTIME_LINKER_LIBS "")
34-
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
35-
3618
# Generic compilation options
37-
if(MSVC)
38-
add_definitions(-DWIN32_LEAN_AND_MEAN)
39-
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
40-
add_definitions(-D_SCL_SECURE_NO_WARNINGS)
41-
add_definitions(-D_ENABLE_EXTENDED_ALIGNED_STORAGE)
42-
add_definitions(-DHalide_SHARED)
43-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc")
44-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP")
45-
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /bigobj")
46-
if(USE_MSVC_MT)
47-
foreach(flag_var
48-
CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
49-
CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
50-
if(${flag_var} MATCHES "/MD")
51-
string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
52-
endif(${flag_var} MATCHES "/MD")
53-
endforeach(flag_var)
54-
endif()
55-
else(MSVC)
56-
include(CheckCXXCompilerFlag)
57-
check_cxx_compiler_flag("-std=c++11" SUPPORT_CXX11)
58-
if ("${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
59-
set(CMAKE_C_FLAGS "-mavx2 -Og -g -Wall -fPIC ${CMAKE_C_FLAGS}")
60-
set(CMAKE_CXX_FLAGS "-mavx2 -Og -g -Wall -fPIC -std=c++11 ${CMAKE_CXX_FLAGS}")
61-
else()
62-
set(CMAKE_C_FLAGS "-mavx2 -O3 -Wall -fPIC ${CMAKE_C_FLAGS}")
63-
set(CMAKE_CXX_FLAGS "-mavx2 -O3 -Wall -fPIC -std=c++11 ${CMAKE_CXX_FLAGS}")
64-
# set(CMAKE_CXX_FLAGS "-mavx2 -O2 -fno-strict-aliasing -Wall -fPIC -std=c++11 ${CMAKE_CXX_FLAGS}")}"
65-
endif ()
66-
if (CMAKE_CXX_COMPILER_ID MATCHES "GNU" AND
67-
CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 7.0)
68-
set(CMAKE_CXX_FLAGS "-faligned-new ${CMAKE_CXX_FLAGS}")
19+
set(CMAKE_C_FLAGS "-fsigned-char -Wall -fPIC ${CMAKE_C_FLAGS}")
20+
set(CMAKE_CXX_FLAGS "-fsigned-char -Wall -fPIC -std=c++11 ${CMAKE_CXX_FLAGS}")
21+
22+
if (DEBUG)
23+
set(CMAKE_C_FLAGS "-Og -g ${CMAKE_C_FLAGS}")
24+
set(CMAKE_CXX_FLAGS "-Og -g ${CMAKE_CXX_FLAGS}")
25+
else()
26+
set(CMAKE_C_FLAGS "-O3 ${CMAKE_C_FLAGS}")
27+
set(CMAKE_CXX_FLAGS "-O3 ${CMAKE_CXX_FLAGS}")
28+
endif ()
29+
30+
if(PROFILE)
31+
add_definitions(-DPROFILE)
32+
if (ENABLE_CUDA)
33+
add_definitions(-DCUDA_PROFILE)
6934
endif()
70-
endif(MSVC)
35+
endif()
7136

72-
# add source group
73-
FILE(GLOB_RECURSE GROUP_INCLUDE "src/*.h" "include/*.h")
74-
assign_source_group("Include" ${GROUP_INCLUDE})
37+
# compile source files
38+
set (CVM_RUNTIME_LINKER_LIBS "")
39+
set (EXECUTE_NAME cvm_runtime)
40+
set (LIBRARY_NAME cvm)
7541

7642
# Source file lists
77-
file(GLOB RUNTIME_SRCS src/*.cc)
43+
file(GLOB RUNTIME_SRCS src/core/*.cc
44+
src/runtime/*.cc
45+
src/runtime/cpu/devapi/*.cc)
46+
47+
file(GLOB CVM_SRCS src/compiler/*.cc
48+
src/pass/*.cc)
49+
50+
if(ENABLE_CPU)
51+
message(STATUS "ENABLE CPU")
52+
file(GLOB CVM_OPS_CPU_SRCS src/runtime/cpu/ops/*.cc)
53+
list(APPEND RUNTIME_SRCS ${CVM_OPS_CPU_SRCS})
54+
endif()
7855

79-
# Package runtime rules
80-
if(NOT USE_RTTI)
81-
add_definitions(-DDMLC_ENABLE_RTTI=0)
56+
if(ENABLE_FORMAL)
57+
message(STATUS "ENABLE FORMALIZATION")
58+
file(GLOB RUNTIME_FORMAL_SRCS src/runtime/formal/devapi/*.cc)
59+
list(APPEND RUNTIME_SRCS ${RUNTIME_FORMAL_SRCS})
60+
61+
file(GLOB CVM_OPS_FORMAL_SRCS src/runtime/formal/ops/*.cc)
62+
list(APPEND RUNTIME_SRCS ${CVM_OPS_FORMAL_SRCS})
8263
endif()
8364

84-
message(STATUS "Build with CVM runtime support...")
85-
file(GLOB RUNTIME_CVM_SRCS src/cvm/*.cc)
86-
if(${USE_CUDA} STREQUAL "ON")
87-
message("use cuda")
88-
project(cvm CUDA)
89-
set (EXECUTE_NAME cvm_runtime_cuda)
65+
if(ENABLE_CUDA)
66+
message(STATUS "ENABLE CUDA")
67+
# project(cvm CUDA)
68+
69+
find_cuda(${ENABLE_CUDA})
70+
if (CUDA_FOUND)
71+
include_directories(${CUDA_INCLUDE_DIRS})
72+
else()
73+
message(FATAL_ERROR "Cannot find CUDA, ENABLE_CUDA=" ${ENABLE_CUDA})
74+
endif()
75+
76+
list(APPEND CVM_RUNTIME_LINKER_LIBS ${CUDA_CUDART_LIBRARY})
77+
list(APPEND CVM_RUNTIME_LINKER_LIBS ${CUDA_CUDA_LIBRARY})
78+
list(APPEND CVM_RUNTIME_LINKER_LIBS ${CUDA_NVRTC_LIBRARY})
79+
80+
set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} --expt-extended-lambda)
81+
9082
add_definitions(-DCVM_RUNTIME_CUDA)
91-
file(GLOB RUNTIME_CVM_CUDA_SRCS src/cuda/*.cc)
92-
file(GLOB CVM_OPS_CUDA_SRCS src/cvm/ops/cuda/*.cc
93-
src/cvm/ops/cuda/*.cu)
94-
list(APPEND RUNTIME_CVM_SRCS ${CVM_OPS_CUDA_SRCS})
95-
list(APPEND RUNTIME_SRCS ${RUNTIME_CVM_CUDA_SRCS})
96-
list(APPEND CVM_RUNTIME_LINKER_LIBS "cudart")
97-
list(APPEND CVM_RUNTIME_LINKER_LIBS "cuda")
98-
set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -std=c++11 --expt-extended-lambda")
99-
else()
100-
file(GLOB CVM_OPS_CPU_SRCS src/cvm/ops/cpu/*.cc)
101-
list(APPEND RUNTIME_CVM_SRCS ${CVM_OPS_CPU_SRCS})
102-
set (EXECUTE_NAME cvm_runtime_cpu)
83+
if(USE_NANO)
84+
add_definitions(-DNANO)
85+
endif()
86+
87+
file(GLOB RUNTIME_CUDA_SRCS src/runtime/cuda/devapi/*.cc)
88+
list(APPEND RUNTIME_SRCS ${RUNTIME_CUDA_SRCS})
89+
90+
file(GLOB CVM_OPS_CUDA_SRCS src/runtime/cuda/ops/*.cc)
91+
list(APPEND RUNTIME_SRCS ${CVM_OPS_CUDA_SRCS})
92+
93+
file(GLOB CUDA_SRCS src/runtime/cuda/ops/*.cu)
94+
cuda_compile(CUDA_LIBS ${CUDA_SRCS})
95+
list(APPEND RUNTIME_SRCS ${CUDA_LIBS})
10396
endif()
104-
list(APPEND RUNTIME_SRCS ${RUNTIME_CVM_SRCS})
105-
file(GLOB CVM_TOP_SRCS src/cvm/top/*.cc
106-
src/cvm/top/nn/*.cc
107-
src/cvm/top/tensor/*.cc)
108-
list(APPEND RUNTIME_SRCS ${CVM_TOP_SRCS})
10997

110-
# Module rules
111-
include(cmake/modules/CUDA.cmake)
98+
if(ENABLE_OPENCL)
99+
message(STATUS "ENABLE OPENCL")
100+
101+
# list(APPEND RUNTIME_SRCS ${RUNTIME_CUDA_SRCS})
102+
# list(APPEND CVM_RUNTIME_LINKER_LIBS ${CUDA_CUDART_LIBRARY})
103+
# list(APPEND CVM_RUNTIME_LINKER_LIBS ${CUDA_CUDA_LIBRARY})
104+
105+
set(CMAKE_C_FLAGS "-lOpenCL ${CMAKE_C_FLAGS}")
106+
set(CMAKE_CXX_FLAGS "-lOpenCL ${CMAKE_CXX_FLAGS}")
107+
108+
file(GLOB RUNTIME_OPENCL_SRCS src/runtime/opencl/devapi/*.cc)
109+
list(APPEND RUNTIME_SRCS ${RUNTIME_OPENCL_SRCS})
110+
111+
file(GLOB CVM_OPS_OPENCL_SRCS src/runtime/opencl/ops/*.cc)
112+
list(APPEND RUNTIME_SRCS ${CVM_OPS_OPENCL_SRCS})
113+
114+
endif()
115+
116+
list(APPEND RUNTIME_SRCS ${CVM_SRCS})
117+
118+
file(GLOB CVM_TOP_SRCS src/top/*.cc
119+
src/top/nn/*.cc
120+
src/top/tensor/*.cc)
121+
list(APPEND RUNTIME_SRCS ${CVM_TOP_SRCS})
112122

113123
add_library(${EXECUTE_NAME} SHARED ${RUNTIME_SRCS})
114124
target_link_libraries(${EXECUTE_NAME} ${CVM_RUNTIME_LINKER_LIBS})
115125

116-
# Installation rules
117-
install(TARGETS ${EXECUTE_NAME} DESTINATION lib${LIB_SUFFIX})
126+
list(APPEND CVM_SRCS ${RUNTIME_SRCS})
127+
add_library(${LIBRARY_NAME} SHARED ${CVM_SRCS})
128+
target_link_libraries(${LIBRARY_NAME} ${CVM_RUNTIME_LINKER_LIBS})
129+
118130

119-
# More target definitions
120-
if(MSVC)
121-
target_compile_definitions(${EXECUTE_NAME} PRIVATE -DHalide_EXPORTS)
122-
target_compile_definitions(${EXECUTE_NAME} PRIVATE -DCVM_EXPORTS)
123-
endif()

Makefile

Lines changed: 38 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,45 @@
1-
ROOTDIR = $(CURDIR)
1+
.PHONY: clean all dep test_cpu test_gpu test_formal python
2+
# .PHONY: test_model_cpu test_model_gpu test_model_formal
3+
# .PHONY: test_op_cpu test_op_gpu test_op_formal
24

3-
.PHONY: clean all test
5+
BUILD := build
6+
INCLUDE := include
7+
TESTS := tests
48

5-
INCLUDE_FLAGS = -Iinclude
6-
PKG_CFLAGS = -std=c++11 -Wall -O2 $(INCLUDE_FLAGS) -fPIC
7-
PKG_LDFLAGS =
9+
all: lib python test_cpu test_gpu test_formal
10+
echo ${TEST_CPUS}
811

9-
all: cpu gpu
12+
# Mac OS should install libomp with brew
13+
dep:
14+
python3 install/deps.py
1015

11-
cpu:
12-
@mkdir -p build/cpu && cd build/cpu && cmake ../.. -DUSE_CUDA=OFF && $(MAKE)
13-
# @mkdir -p build/cpu && cd build/cpu && cmake ../.. -DUSE_CUDA=OFF -DCMAKE_BUILD_TYPE=Debug && $(MAKE)
16+
lib: dep
17+
@cd ${BUILD} && cmake ../ && $(MAKE)
1418

15-
gpu:
16-
@mkdir -p build/gpu && cd build/gpu && cmake ../.. -DUSE_CUDA=ON && $(MAKE)
17-
# @mkdir -p build/gpu && cd build/gpu && cmake ../.. -DUSE_CUDA=ON -DCMAKE_BUILD_TYPE=Debug && $(MAKE)
19+
TEST_SRCS := $(wildcard ${TESTS}/*.cc)
20+
TEST_EXES := $(patsubst ${TESTS}/%.cc,%,${TEST_SRCS})
21+
22+
TEST_CPUS := $(patsubst %,%_cpu,${TEST_EXES})
23+
TEST_GPUS := $(patsubst %,%_gpu,${TEST_EXES})
24+
TEST_FORMALS := $(patsubst %,%_formal,${TEST_EXES})
25+
TEST_OPENCL := $(patsubst %,%_opencl,${TEST_EXES})
26+
27+
test_cpu: ${TEST_CPUS}
28+
test_gpu: ${TEST_GPUS}
29+
test_formal: ${TEST_FORMALS}
30+
test_opencl: ${TEST_OPENCL}
31+
32+
%_cpu: ${TESTS}/%.cc lib
33+
g++ -o ${BUILD}/${TESTS}/$@ $< -DDEVICE=0 -std=c++11 -I${INCLUDE} -L${BUILD} -lcvm -fopenmp -fsigned-char -pthread -Wl,-rpath=${BUILD}
34+
35+
%_gpu: ${TESTS}/%.cc lib
36+
g++ -o ${BUILD}/${TESTS}/$@ $< -DDEVICE=1 -std=c++11 -I${INCLUDE} -L${BUILD} -lcvm -fopenmp -fsigned-char -pthread -Wl,-rpath=${BUILD}
37+
38+
%_formal: ${TESTS}/%.cc lib
39+
g++ -o ${BUILD}/${TESTS}/$@ $< -DDEVICE=2 -std=c++11 -I${INCLUDE} -L${BUILD} -lcvm -fopenmp -fsigned-char -pthread -Wl,-rpath=${BUILD}
40+
41+
%_opencl: ${TESTS}/%.cc lib
42+
g++ -o ${BUILD}/${TESTS}/$@ $< -DDEVICE=3 -std=c++11 -I${INCLUDE} -L${BUILD} -lcvm_runtime -fopenmp -L/usr/local/cuda/lib64/ -lOpenCL -fsigned-char -pthread -Wl,-rpath=${BUILD}
1843

1944
clean:
20-
rm -rf ./build/*
45+
rm -rf ./build/*

README.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# cvm-runtime
2+
CVM Runtime
3+
4+
5+
6+
## Latency
7+
8+
model| Jetson Nano \- Cortex\-A57(s) | Intel E5\-2650(s) | Jetson Nano \- GPU(128 CUDA Cores)(s) | 1080Ti(3584 CUDA Cores)(s)
9+
-|-|-|-|-
10+
yolo_tfm | | | 1.076 | 0.043
11+
resnet50_mxg | 1.2076| 0.3807| 0.147 | 0.009
12+
resnet18_v1 | | | 0.055 | 0.004
13+
qd10_resnet20_v2 || | 0.064 | 0.010
14+
resnet50_v2 |1.4674| 0.5005 | 0.185 | 0.010
15+
qd10_resnet20_v2|0.2944|0.1605 | 0.065 | 0.012
16+
trec | 0.0075| 0.0028 | 0.002 | 0.001
17+
dcnet_mnist_v1|0.0062|0.0057 | 0.002 | 0.001
18+
mobilenetv1.0_imagenet|0.3508| 0.1483| 0.039 | 0.002
19+
resnet50_v1_imagenet|1.2453| 0.3429 | 0.150 | 0.009
20+
animal10 | 0.3055 | 0.1466 | 0.065 | 0.010
21+
vgg16_gcv|4.3787| 0.6092 | 0.713 | 0.021
22+
sentiment_trec|0.0047| 0.0022 | 0.002 | 0.001
23+
vgg19_gcv|5.1753| 0.7513 | 0.788 | 0.023
24+
squeezenet_gcv1.1|0.3889| 0.0895 | 0.044 | 0.002
25+
squeezenet_gcv1.0|0.1987| 0.1319 | 0.064 | 0.003
26+
shufflenet|1.4575| 0.7697 | 0.140 | 0.004
27+
ssd| | |0.773 | 0.030
28+
ssd_512_mobilenet1.0_coco_tfm| | | 0.311 | 0.016
29+
ssd_512_mobilenet1.0_voc_tfm| | | 0.220 | 0.014

0 commit comments

Comments
 (0)