Skip to content

Commit e285880

Browse files
committed
add riscv support
Signed-off-by: craft <convercraft@gmail.com>
1 parent 0988e13 commit e285880

File tree

2 files changed

+145
-0
lines changed

2 files changed

+145
-0
lines changed

Makefile-rv

Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
# Copyright (C) 2020 Texas Instruments Incorporated - http://www.ti.com/
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
15+
TARGET_TOOLCHAIN_PREFIX ?= aarch64-linux-gnu-
16+
17+
TF_SRC_DIR ?=/home/craft/workspace/gem5/tensorflow_src
18+
TFLITE_INC_DIR ?=$(TF_SRC_DIR)
19+
TFLITE_BUILD_DIR ?=$(TF_SRC_DIR)/build
20+
FLATBUFFERS_INC_DIR ?=$(TFLITE_BUILD_DIR)/flatbuffers/include
21+
TFLITE_LIB_DIR ?=$(TFLITE_BUILD_DIR)
22+
TFLITE_FLATBUF_LIB_DIR ?=$(TFLITE_BUILD_DIR)/_deps/flatbuffers-build
23+
TFLITE_RUY_LIB_DIR ?=$(TFLITE_BUILD_DIR)/_deps/ruy-build/ruy
24+
TFLITE_FARMHASH_LIB_DIR ?=$(TFLITE_BUILD_DIR)/_deps/farmhash-build
25+
TFLITE_FFT2D_DIR ?=$(TFLITE_BUILD_DIR)/_deps/fft2d-build
26+
TFLITE_CPUINFO_DIR ?=$(TFLITE_BUILD_DIR)/_deps/cpuinfo-build
27+
TFLITE_CLOG_DIR ?=$(TFLITE_BUILD_DIR)/_deps/clog-build
28+
29+
OPENCV_SRC_DIR ?=/home/craft/workspace/gem5/opencv
30+
OPENCV_BUILD_DIR ?=$(OPENCV_SRC_DIR)/build
31+
OPENCV_INC_DIR ?=$(OPENCV_BUILD_DIR)/install/include/opencv4/
32+
OPENCV_LIB_DIR ?=$(OPENCV_BUILD_DIR)/install/lib/
33+
OPENCV_LIB_3RDPARTY_DIR ?=$(OPENCV_BUILD_DIR)/install/lib/opencv4/3rdparty/
34+
35+
PHONY: all
36+
37+
all: classification/tflite_classification segmentation/tflite_segmentation detection/tflite_detection
38+
39+
LIBS = $(TFLITE_LIB_DIR)/libtensorflow-lite.a
40+
LIBS += $(TFLITE_RUY_LIB_DIR)/libruy_ctx.a \
41+
$(TFLITE_RUY_LIB_DIR)/libruy_frontend.a \
42+
$(TFLITE_RUY_LIB_DIR)/libruy_tune.a \
43+
$(TFLITE_RUY_LIB_DIR)/libruy_context.a \
44+
$(TFLITE_RUY_LIB_DIR)/libruy_context_get_ctx.a \
45+
\
46+
$(TFLITE_RUY_LIB_DIR)/libruy_thread_pool.a \
47+
$(TFLITE_RUY_LIB_DIR)/libruy_wait.a \
48+
$(TFLITE_RUY_LIB_DIR)/libruy_allocator.a \
49+
$(TFLITE_RUY_LIB_DIR)/libruy_system_aligned_alloc.a \
50+
$(TFLITE_RUY_LIB_DIR)/libruy_cpuinfo.a \
51+
$(TFLITE_RUY_LIB_DIR)/libruy_blocking_counter.a \
52+
\
53+
$(TFLITE_RUY_LIB_DIR)/libruy_apply_multiplier.a \
54+
$(TFLITE_RUY_LIB_DIR)/libruy_trmul.a \
55+
$(TFLITE_RUY_LIB_DIR)/libruy_kernel_arm.a \
56+
$(TFLITE_RUY_LIB_DIR)/libruy_block_map.a \
57+
$(TFLITE_RUY_LIB_DIR)/libruy_pack_arm.a \
58+
$(TFLITE_RUY_LIB_DIR)/libruy_prepacked_cache.a \
59+
$(TFLITE_RUY_LIB_DIR)/libruy_prepare_packed_matrices.a \
60+
$(TFLITE_RUY_LIB_DIR)/libruy_denormal.a
61+
62+
LIBS += $(TFLITE_FLATBUF_LIB_DIR)/libflatbuffers.a
63+
LIBS += $(TFLITE_FARMHASH_LIB_DIR)/libfarmhash.a
64+
LIBS += $(TFLITE_FFT2D_DIR)/libfft2d_fftsg.a
65+
LIBS += $(TFLITE_FFT2D_DIR)/libfft2d_fftsg2d.a
66+
LIBS += $(TFLITE_CPUINFO_DIR)/libcpuinfo.a
67+
LIBS += $(TFLITE_CLOG_DIR)/libclog.a
68+
69+
LIBS += $(OPENCV_LIB_DIR)/libopencv_features2d.a \
70+
$(OPENCV_LIB_DIR)/libopencv_imgcodecs.a \
71+
$(OPENCV_LIB_DIR)/libopencv_photo.a \
72+
$(OPENCV_LIB_DIR)/libopencv_calib3d.a \
73+
$(OPENCV_LIB_DIR)/libopencv_flann.a \
74+
$(OPENCV_LIB_DIR)/libopencv_imgproc.a \
75+
$(OPENCV_LIB_DIR)/libopencv_stitching.a \
76+
$(OPENCV_LIB_DIR)/libopencv_gapi.a \
77+
$(OPENCV_LIB_DIR)/libopencv_ml.a \
78+
$(OPENCV_LIB_DIR)/libopencv_video.a \
79+
$(OPENCV_LIB_DIR)/libopencv_dnn.a \
80+
$(OPENCV_LIB_DIR)/libopencv_highgui.a \
81+
$(OPENCV_LIB_DIR)/libopencv_objdetect.a \
82+
$(OPENCV_LIB_DIR)/libopencv_videoio.a \
83+
$(OPENCV_LIB_DIR)/libopencv_core.a
84+
85+
LIBS += $(OPENCV_LIB_3RDPARTY_DIR)/liblibjpeg-turbo.a \
86+
$(OPENCV_LIB_3RDPARTY_DIR)/liblibpng.a \
87+
$(OPENCV_LIB_3RDPARTY_DIR)/libzlib.a \
88+
$(OPENCV_LIB_3RDPARTY_DIR)/libade.a \
89+
$(OPENCV_LIB_3RDPARTY_DIR)/liblibopenjp2.a \
90+
$(OPENCV_LIB_3RDPARTY_DIR)/liblibprotobuf.a \
91+
$(OPENCV_LIB_3RDPARTY_DIR)/liblibwebp.a \
92+
$(OPENCV_LIB_3RDPARTY_DIR)/liblibtiff.a \
93+
$(OPENCV_LIB_3RDPARTY_DIR)/libquirc.a
94+
95+
LIBS += -lstdc++ -lpthread -lm -ldl -lrt -latomic -static
96+
97+
INCLUDES := -I. -I$(FLATBUFFERS_INC_DIR) -I$(TFLITE_INC_DIR) -I$(OPENCV_INC_DIR)
98+
99+
CCFLAGS = -O3 -DNDEBUG -fPIC
100+
101+
CXX := ${TARGET_TOOLCHAIN_PREFIX}g++
102+
103+
COMMON_SRC = model_utils.cc utils.cc
104+
105+
JDSK_DL_ACC ?= no
106+
ifeq ($(JDSK_DL_ACC), yes)
107+
COMMON_SRC +=
108+
CCFLAGS += -march=rv64gcv0p7_zfh_xtheadc -mabi=lp64d -mtune=c906 -std=gnu++11
109+
110+
JDSK_API_LIB_DIR ?= /home/craft/workspace/DNN/XNNPACK-riscv/build/linux/c906-v240/install/lib/
111+
LIBS += $(JDSK_API_LIB_DIR)/libXNNPACK.a \
112+
$(JDSK_API_LIB_DIR)/libpthreadpool.a
113+
endif
114+
115+
classification/tflite_classification: classification.cc $(COMMON_SRC)
116+
mkdir -p classification
117+
$(CXX) classification.cc $(COMMON_SRC) -o classification/tflite_classification $(LDFLAGS) $(LIBS) $(CXXFLAGS) $(CCFLAGS) $(INCLUDES)
118+
119+
segmentation/tflite_segmentation: segmentation.cc $(COMMON_SRC)
120+
mkdir -p segmentation
121+
$(CXX) segmentation.cc $(COMMON_SRC) -o segmentation/tflite_segmentation $(LDFLAGS) $(LIBS) $(CXXFLAGS) $(CCFLAGS) $(INCLUDES)
122+
123+
detection/tflite_detection: detection.cc yolov5.cc $(COMMON_SRC)
124+
mkdir -p detection
125+
$(CXX) detection.cc yolov5.cc $(COMMON_SRC) -o detection/tflite_detection $(LDFLAGS) $(LIBS) $(CXXFLAGS) $(CCFLAGS) $(INCLUDES)
126+
127+
clean:
128+
rm -rf classification/tflite_classification segmentation/tflite_segmentation detection/tflite_detection

scripts/make_riscv.sh

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
#!/usr/bin/env bash
2+
#
3+
# This source code is licensed under the BSD-style license found in the
4+
# LICENSE file in the root directory of this source tree.
5+
6+
set -e
7+
8+
export TARGET_TOOLCHAIN_PREFIX=riscv64-unknown-linux-gnu-
9+
10+
export TFLITE_BUILD_DIR=/home/craft/workspace/gem5/tensorflow_src/buildrv64
11+
12+
export OPENCV_SRC_DIR=/home/craft/workspace/gem5/opencv
13+
export OPENCV_BUILD_DIR=/home/craft/workspace/gem5/opencv/buildrv64
14+
15+
export JDSK_DL_ACC=yes
16+
17+
make

0 commit comments

Comments
 (0)