From 1fdf95d7812e6524d0b5f92864c8e96072e1b291 Mon Sep 17 00:00:00 2001 From: zhangkaihuo Date: Sat, 6 Jun 2020 03:57:39 -0700 Subject: [PATCH 01/11] cross-compilation --- CMakeLists.txt | 34 ++++++++++++++++++++++++++++++---- Makefile | 2 ++ tests/Makefile | 9 +++++---- 3 files changed, 37 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ea3739c8..2160332b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,16 +5,32 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON ) # Utility functions include(cmake/util/Util.cmake) -include(cmake/util/FindCUDA.cmake) -include(cmake/util/FindOpenmp.cmake) +#include(cmake/util/FindCUDA.cmake) +#include(cmake/util/FindOpenmp.cmake) if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/config.cmake) include(${CMAKE_CURRENT_SOURCE_DIR}/config.cmake) endif() +if(ENABLE_RISCV) + set(CMAKE_SYSTEM_NAME Generic) + set(CMAKE_SYSTEM_PROCESSOR riscv) + set(CMAKE_CROSSCOMPILING 1) + set(CMAKE_CXX_COMPILER "riscv64-unknown-linux-gnu-g++") + set(CMAKE_C_COMPILER "riscv64-unknown-linux-gnu-gcc") + set(CMAKE_ASM_COMPILER "riscv64-unknown-linux-gnu-gcc") + set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) + set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) + set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) + set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) + set(CMAKE_EXPORT_COMPILE_COMMANDS 1) + +endif() + # include directories include_directories("include") + # Generic compilation options set(CMAKE_C_FLAGS "-fsigned-char -Wall -fPIC ${CMAKE_C_FLAGS}") set(CMAKE_CXX_FLAGS "-fsigned-char -Wall -fPIC -std=c++11 ${CMAKE_CXX_FLAGS}") @@ -47,6 +63,16 @@ file(GLOB RUNTIME_SRCS src/core/*.cc file(GLOB CVM_SRCS src/compiler/*.cc src/pass/*.cc) +if(ENABLE_RISCV) + message(STATUS "ENABLE RISCV") + + file(GLOB RUNTIME_RISCV_SRCS src/runtime/formal/devapi/*.cc) + list(APPEND RUNTIME_SRCS ${RUNTIME_RISCV_SRCS}) + + file(GLOB CVM_OPS_RISCV_SRCS src/runtime/formal/ops/*.cc) + list(APPEND RUNTIME_SRCS ${CVM_OPS_RISCV_SRCS}) +endif() + if(ENABLE_CPU) message(STATUS "ENABLE CPU") file(GLOB CVM_OPS_CPU_SRCS src/runtime/cpu/ops/*.cc) @@ -120,11 +146,11 @@ file(GLOB CVM_TOP_SRCS src/top/*.cc src/top/tensor/*.cc) list(APPEND RUNTIME_SRCS ${CVM_TOP_SRCS}) -add_library(${EXECUTE_NAME} SHARED ${RUNTIME_SRCS}) +add_library(${EXECUTE_NAME} STATIC ${RUNTIME_SRCS}) target_link_libraries(${EXECUTE_NAME} ${CVM_RUNTIME_LINKER_LIBS}) list(APPEND CVM_SRCS ${RUNTIME_SRCS}) -add_library(${LIBRARY_NAME} SHARED ${CVM_SRCS}) +add_library(${LIBRARY_NAME} STATIC ${CVM_SRCS}) target_link_libraries(${LIBRARY_NAME} ${CVM_RUNTIME_LINKER_LIBS}) diff --git a/Makefile b/Makefile index 72490a3b..fdfdfe67 100644 --- a/Makefile +++ b/Makefile @@ -41,5 +41,7 @@ test_opencl: ${TEST_OPENCL} %_opencl: ${TESTS}/%.cc lib 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} +%_riscv: ${TESTS}/%.cc lib + riscv64-unknown-linux-gnu-g++ -o ${BUILD}/${TESTS}/$@ $< -DDEVICE=2 -std=c++11 -I${INCLUDE} -L${BUILD} -pthread -lcvm -fsigned-char -Wl,-rpath=${BUILD} clean: rm -rf ./build/* diff --git a/tests/Makefile b/tests/Makefile index c23b5b80..834bc5e0 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -1,17 +1,18 @@ all: test_model_cpu test_model_gpu test_model_formal test_op +GPP=riscv64-unknown-linux-gnu-g++ test_model_cpu: test_model.cc - g++ -o test_model_cpu test_model.cc -I../include -L../build/cpu/ -lcvm_runtime_cpu --std=c++11 -pthread -fopenmp -I../ -ldl -g -DUSE_GPU=0 -DCVM_PROFILING -fsigned-char + ${GPP} -o test_model_cpu test_model.cc -I../include -L../build/cpu/ -lcvm_runtime_cpu --std=c++11 -I../ -ldl -g -DUSE_GPU=0 -DCVM_PROFILING -fsigned-char test_model_formal: test_model.cc - g++ -o test_model_formal test_model.cc -I../include -L../build/formal/ -lcvm_runtime_formal --std=c++11 -pthread -fopenmp -I../ -ldl -g -DUSE_GPU=0 -fsigned-char + ${GPP} -o test_model_formal test_model.cc -I../include -L../build/formal/ -lcvm_runtime_formal --std=c++11 -I../ -ldl -g -DUSE_GPU=0 -fsigned-char test_model_gpu: test_model.cc - g++ -o test_model_gpu test_model.cc -I../include -L../build/cpu/ -L../build/gpu/ -lcvm_runtime_cuda -lcudart -lcuda --std=c++11 -pthread -fopenmp -I./ -ldl -g -DUSE_GPU=1 -DCVM_PROFILING -fsigned-char + ${GPP} -o test_model_gpu test_model.cc -I../include -L../build/cpu/ -L../build/gpu/ -lcvm_runtime_cuda -lcudart -lcuda --std=c++11 -I./ -ldl -g -DUSE_GPU=1 -DCVM_PROFILING -fsigned-char test_op: - g++ -o test_op test_op.cc -I../include -L../build/gpu -lcvm_runtime_cuda -lcuda -lcudart --std=c++11 -pthread -fopenmp -I../ -ldl -DCVM_PROFILING -fsigned-char -DUSE_GPU + ${GPP} -o test_op test_op.cc -I../include -L../build/gpu -lcvm_runtime_cuda -lcuda -lcudart --std=c++11 -I../ -ldl -DCVM_PROFILING -fsigned-char -DUSE_GPU clean: rm -f test_model_cpu test_model_formal test_model_gpu test_op From 9c0f140f5927aa71cb307b666352e859dea9f91f Mon Sep 17 00:00:00 2001 From: kaihuo zhang Date: Tue, 16 Jun 2020 16:24:19 +0800 Subject: [PATCH 02/11] tests on: riscv-gnu-toolchain + busybear-linux + qemu-v3.0.0 + linux-v4.19 + riscv-pk --- CMakeLists.txt | 19 +++------ Makefile | 3 +- tests/test_model.cc | 95 +++++++++++++++++++++++---------------------- 3 files changed, 56 insertions(+), 61 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2160332b..d3720234 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,13 +12,16 @@ if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/config.cmake) include(${CMAKE_CURRENT_SOURCE_DIR}/config.cmake) endif() -if(ENABLE_RISCV) +if(USE_RISCV) + message(STATUS "using riscv") set(CMAKE_SYSTEM_NAME Generic) set(CMAKE_SYSTEM_PROCESSOR riscv) set(CMAKE_CROSSCOMPILING 1) set(CMAKE_CXX_COMPILER "riscv64-unknown-linux-gnu-g++") set(CMAKE_C_COMPILER "riscv64-unknown-linux-gnu-gcc") set(CMAKE_ASM_COMPILER "riscv64-unknown-linux-gnu-gcc") + set(CMAKE_LINKER "riscv64-unknown-linux-gnu-ld") + set(CMAKE_AR "riscv64-unknown-linux-gnu-ar") set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) @@ -63,16 +66,6 @@ file(GLOB RUNTIME_SRCS src/core/*.cc file(GLOB CVM_SRCS src/compiler/*.cc src/pass/*.cc) -if(ENABLE_RISCV) - message(STATUS "ENABLE RISCV") - - file(GLOB RUNTIME_RISCV_SRCS src/runtime/formal/devapi/*.cc) - list(APPEND RUNTIME_SRCS ${RUNTIME_RISCV_SRCS}) - - file(GLOB CVM_OPS_RISCV_SRCS src/runtime/formal/ops/*.cc) - list(APPEND RUNTIME_SRCS ${CVM_OPS_RISCV_SRCS}) -endif() - if(ENABLE_CPU) message(STATUS "ENABLE CPU") file(GLOB CVM_OPS_CPU_SRCS src/runtime/cpu/ops/*.cc) @@ -146,11 +139,11 @@ file(GLOB CVM_TOP_SRCS src/top/*.cc src/top/tensor/*.cc) list(APPEND RUNTIME_SRCS ${CVM_TOP_SRCS}) -add_library(${EXECUTE_NAME} STATIC ${RUNTIME_SRCS}) +add_library(${EXECUTE_NAME} SHARED ${RUNTIME_SRCS}) target_link_libraries(${EXECUTE_NAME} ${CVM_RUNTIME_LINKER_LIBS}) list(APPEND CVM_SRCS ${RUNTIME_SRCS}) -add_library(${LIBRARY_NAME} STATIC ${CVM_SRCS}) +add_library(${LIBRARY_NAME} SHARED ${CVM_SRCS}) target_link_libraries(${LIBRARY_NAME} ${CVM_RUNTIME_LINKER_LIBS}) diff --git a/Makefile b/Makefile index fdfdfe67..e40985fd 100644 --- a/Makefile +++ b/Makefile @@ -41,7 +41,8 @@ test_opencl: ${TEST_OPENCL} %_opencl: ${TESTS}/%.cc lib 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} -%_riscv: ${TESTS}/%.cc lib +#objs := $(wildcard ${BUILD}/obj/*.o) +%_riscv: ${TESTS}/%.cc lib riscv64-unknown-linux-gnu-g++ -o ${BUILD}/${TESTS}/$@ $< -DDEVICE=2 -std=c++11 -I${INCLUDE} -L${BUILD} -pthread -lcvm -fsigned-char -Wl,-rpath=${BUILD} clean: rm -rf ./build/* diff --git a/tests/test_model.cc b/tests/test_model.cc index 978f5431..11eb330d 100644 --- a/tests/test_model.cc +++ b/tests/test_model.cc @@ -252,53 +252,54 @@ void test_thread() { int test_models(int device_type = 0) { std::cout << device_type << " DDDDDD" << std::endl; auto model_roots = { - "/data/std_out/yolo_tfm", - "/data/std_out/null", - "/data/std_out/resnet50_mxg", - "/data/std_out/ssd_512_mobilenet1.0_voc_tfm", - "/data/std_out/resnet18_v1_tfm", - "/data/std_out/resnet50_v2", - "/data/std_out/qd10_resnet20_v2", - "/data/std_out/trec", - // "/data/new_cvm/yolo3_darknet53_voc/data", - "/data/lz_model_storage/dcnet_mnist_v1/data", - "/data/lz_model_storage/mobilenetv1.0_imagenet/data", - "/data/lz_model_storage/resnet50_v1_imagenet/data", - "/data/lz_model_storage/animal10/data", - "/data/lz_model_storage/resnet50_v2/data", - "/data/lz_model_storage/vgg16_gcv/data", - "/data/lz_model_storage/sentiment_trec/data", - "/data/lz_model_storage/vgg19_gcv/data", - "/data/lz_model_storage/squeezenet_gcv1.1/data", - "/data/lz_model_storage/squeezenet_gcv1.0/data", - // invalid has strange attribute in operator elemwise_add. - // "/data/lz_model_storage/octconv_resnet26_0.250/data", - "/data/std_out/resnet50_mxg/", - "/data/std_out/resnet50_v2", - "/data/std_out/qd10_resnet20_v2", - "/data/std_out/random_3_0/", - "/data/std_out/random_3_1/", - "/data/std_out/random_3_2/", - "/data/std_out/random_3_3/", - "/data/std_out/random_3_4/", - "/data/std_out/random_3_5/", - "/data/std_out/random_4_0/", - "/data/std_out/random_4_1/", - // "/data/std_out/random_4_2/", - // "/data/std_out/random_4_3/", - // "/data/std_out/random_4_4/", - "/data/std_out/random_4_5/", - "/data/std_out/random_4_6/", - "/data/std_out/random_4_7/", - "/data/std_out/random_4_8/", - "/data/std_out/random_4_9/", - "/data/std_out/log2", - //"./tests/3145ad19228c1cd2d051314e72f26c1ce77b7f02/", - "/data/std_out/lr_attr", - // "/data/std_out/non_in", - "/data/std_out/shufflenet", - "/data/std_out/ssd", - "/data/std_out/ssd_512_mobilenet1.0_coco_tfm/", + "/data/std_out/cvm_mnist" +// "/data/std_out/yolo_tfm", +// "/data/std_out/null", +// "/data/std_out/resnet50_mxg", +// "/data/std_out/ssd_512_mobilenet1.0_voc_tfm", +// "/data/std_out/resnet18_v1_tfm", +// "/data/std_out/resnet50_v2", +// "/data/std_out/qd10_resnet20_v2", +// "/data/std_out/trec", +// // "/data/new_cvm/yolo3_darknet53_voc/data", +// "/data/lz_model_storage/dcnet_mnist_v1/data", +// "/data/lz_model_storage/mobilenetv1.0_imagenet/data", +// "/data/lz_model_storage/resnet50_v1_imagenet/data", +// "/data/lz_model_storage/animal10/data", +// "/data/lz_model_storage/resnet50_v2/data", +// "/data/lz_model_storage/vgg16_gcv/data", +// "/data/lz_model_storage/sentiment_trec/data", +// "/data/lz_model_storage/vgg19_gcv/data", +// "/data/lz_model_storage/squeezenet_gcv1.1/data", +// "/data/lz_model_storage/squeezenet_gcv1.0/data", +// // invalid has strange attribute in operator elemwise_add. +// // "/data/lz_model_storage/octconv_resnet26_0.250/data", +// "/data/std_out/resnet50_mxg/", +// "/data/std_out/resnet50_v2", +// "/data/std_out/qd10_resnet20_v2", +// "/data/std_out/random_3_0/", +// "/data/std_out/random_3_1/", +// "/data/std_out/random_3_2/", +// "/data/std_out/random_3_3/", +// "/data/std_out/random_3_4/", +// "/data/std_out/random_3_5/", +// "/data/std_out/random_4_0/", +// "/data/std_out/random_4_1/", +// // "/data/std_out/random_4_2/", +// // "/data/std_out/random_4_3/", +// // "/data/std_out/random_4_4/", +// "/data/std_out/random_4_5/", +// "/data/std_out/random_4_6/", +// "/data/std_out/random_4_7/", +// "/data/std_out/random_4_8/", +// "/data/std_out/random_4_9/", +// "/data/std_out/log2", +// //"./tests/3145ad19228c1cd2d051314e72f26c1ce77b7f02/", +// "/data/std_out/lr_attr", +// // "/data/std_out/non_in", +// "/data/std_out/shufflenet", +// "/data/std_out/ssd", +// "/data/std_out/ssd_512_mobilenet1.0_coco_tfm/", }; for (auto model_root : model_roots) { auto ret = run_LIF(model_root, device_type); From 42900b8c7d303eb63beaffdbeee1b9d036076f2f Mon Sep 17 00:00:00 2001 From: kaihuo zhang Date: Wed, 17 Jun 2020 13:16:01 +0800 Subject: [PATCH 03/11] update config for riscv --- cmake/config.cmake | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/cmake/config.cmake b/cmake/config.cmake index 5e844e45..f2a72c6c 100644 --- a/cmake/config.cmake +++ b/cmake/config.cmake @@ -1,9 +1,10 @@ set(PROFILE OFF) set(DEBUG OFF) -set(ENABLE_CPU ON) -set(ENABLE_FORMAL OFF) +set(ENABLE_CPU OFF) +set(ENABLE_FORMAL ON) set(ENABLE_CUDA OFF) set(ENABLE_OPENCL OFF) -set(USE_NANO ON) +set(USE_RISCV ON) +set(USE_NANO OFF) From 03a0555432896e62724f73891ac3a07f4398a1f8 Mon Sep 17 00:00:00 2001 From: zkh2018 <44425324+zkh2018@users.noreply.github.com> Date: Wed, 17 Jun 2020 13:31:47 +0800 Subject: [PATCH 04/11] Update README.md --- README.md | 63 ++++++++++++++++++++++++++++++------------------------- 1 file changed, 35 insertions(+), 28 deletions(-) diff --git a/README.md b/README.md index 1ea69886..43ef3e95 100644 --- a/README.md +++ b/README.md @@ -1,29 +1,36 @@ -# cvm-runtime -CVM Runtime +# Test the cvm-runtime under QEMU with RISC-V support - - -## Latency - -model| Jetson Nano \- Cortex\-A57(s) | Intel E5\-2650(s) | Jetson Nano \- GPU(128 CUDA Cores)(s) | 1080Ti(3584 CUDA Cores)(s) --|-|-|-|- -yolo_tfm | | | 1.076 | 0.043 -resnet50_mxg | 1.2076| 0.3807| 0.147 | 0.009 -resnet18_v1 | | | 0.055 | 0.004 -qd10_resnet20_v2 || | 0.064 | 0.010 -resnet50_v2 |1.4674| 0.5005 | 0.185 | 0.010 -qd10_resnet20_v2|0.2944|0.1605 | 0.065 | 0.012 -trec | 0.0075| 0.0028 | 0.002 | 0.001 -dcnet_mnist_v1|0.0062|0.0057 | 0.002 | 0.001 -mobilenetv1.0_imagenet|0.3508| 0.1483| 0.039 | 0.002 -resnet50_v1_imagenet|1.2453| 0.3429 | 0.150 | 0.009 -animal10 | 0.3055 | 0.1466 | 0.065 | 0.010 -vgg16_gcv|4.3787| 0.6092 | 0.713 | 0.021 -sentiment_trec|0.0047| 0.0022 | 0.002 | 0.001 -vgg19_gcv|5.1753| 0.7513 | 0.788 | 0.023 -squeezenet_gcv1.1|0.3889| 0.0895 | 0.044 | 0.002 -squeezenet_gcv1.0|0.1987| 0.1319 | 0.064 | 0.003 -shufflenet|1.4575| 0.7697 | 0.140 | 0.004 -ssd| | |0.773 | 0.030 -ssd_512_mobilenet1.0_coco_tfm| | | 0.311 | 0.016 -ssd_512_mobilenet1.0_voc_tfm| | | 0.220 | 0.014 +## Config The QEMU Environment +You will need to refer to this [documentation](https://risc-v-getting-started-guide.readthedocs.io/en/latest/linux-qemu.html) to download and install the following: +``` +1. https://github.com/riscv/riscv-gnu-toolchain : master +2. https://github.com/qemu/qemu : v3.0.0 +3. https://github.com/torvalds/linux : v4.19 +4. https://github.com/riscv/riscv-pk : master +5. https://github.com/michaeljclark/busybear-linux : master +``` +## Testing +1. git clone git@github.com:CortexFoundation/cvm-runtime.git +2. git checkout riscv +3. cp cmake/config . (in cvm-runtime directory) +4. make lib && make test_model_riscv +5. cd ${busybear-linux directory} +6. mkdir etc/tests +7. cp ~/cvm-runtime/build/libcvm.so ~/cvm-runtime/build/tests/test_model_riscv etc/tests/ +8. modify scripts/start-qemu.sh: +``` + 32 # construct command + 33 cmd="${QEMU_SYSTEM_BIN} -nographic -machine virt \ + 34 -kernel build/riscv-pk/bbl \ + 35 -m 2G \ + 36 -append \"root=/dev/vda ro console=ttyS0\" \ + 37 -drive file=busybear.bin,format=raw,id=hd0 \ + 38 -device virtio-blk-device,drive=hd0 \ + 39 -netdev ${QEMU_NETDEV},id=net0 \ + 40 -device virtio-ne +``` +9. make clean && make && ./scripts/start-qemu.sh +10. login as root, and password is busybear +11. cd /etc/tests +12. export LD_LIBRARY_PATH=/etc/tests +13. ./test_model_riscv From eb284b9194457e829318eb127f34f22c3a8ac197 Mon Sep 17 00:00:00 2001 From: kaihuo zhang Date: Wed, 29 Jul 2020 16:26:37 +0800 Subject: [PATCH 05/11] profiling --- Makefile | 2 +- src/runtime/graph_runtime.cc | 14 +++++++------- tests/test_model.cc | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Makefile b/Makefile index e40985fd..ca87a081 100644 --- a/Makefile +++ b/Makefile @@ -43,6 +43,6 @@ test_opencl: ${TEST_OPENCL} #objs := $(wildcard ${BUILD}/obj/*.o) %_riscv: ${TESTS}/%.cc lib - riscv64-unknown-linux-gnu-g++ -o ${BUILD}/${TESTS}/$@ $< -DDEVICE=2 -std=c++11 -I${INCLUDE} -L${BUILD} -pthread -lcvm -fsigned-char -Wl,-rpath=${BUILD} + riscv64-unknown-linux-gnu-g++ -o ${BUILD}/${TESTS}/$@ $< -DDEVICE=0 -std=c++11 -I${INCLUDE} -L${BUILD} -pthread -lcvm -fsigned-char -Wl,-rpath=${BUILD} clean: rm -rf ./build/* diff --git a/src/runtime/graph_runtime.cc b/src/runtime/graph_runtime.cc index 78d1d504..6226bc44 100644 --- a/src/runtime/graph_runtime.cc +++ b/src/runtime/graph_runtime.cc @@ -24,7 +24,7 @@ //#define CUDA_PROFILE #ifdef PROFILE -#include +#include #ifdef CUDA_PROFILE #include #include @@ -59,7 +59,7 @@ CVM_REGISTER_OP(cvm_op) */ void CvmRuntime::Run() { #ifdef PROFILE - double start = omp_get_wtime(); + clock_t start = clock(); #endif // setup the array and requirements. for (size_t i = 0; i < op_execs_.size(); ++i) { @@ -69,8 +69,8 @@ void CvmRuntime::Run() { #ifdef CUDA_PROFILE cudaDeviceSynchronize(); #endif - double end = omp_get_wtime(); - double total = end - start; + clock_t end = clock(); + double total = (double)(end - start) / CLOCKS_PER_SEC; std::vector> vec_times(times.begin(), times.end()); std::stable_sort(vec_times.begin(), vec_times.end(), [](const std::pair& a, const std::pair& b) ->bool { @@ -662,7 +662,7 @@ std::function CvmRuntime::CreateCVMOp( ](){ #ifdef PROFILE if(times.find(op) == times.end()) times[op] = 0; - double start = omp_get_wtime(); + clock_t start = clock(); #endif CVMRetValue rv; CVMArgs targs( @@ -677,8 +677,8 @@ std::function CvmRuntime::CreateCVMOp( #ifdef CUDA_PROFILE //cudaDeviceSynchronize(); #endif - double end = omp_get_wtime(); - times[op] += end-start; + clock_t end = clock(); + times[op] += (double)(end-start) / CLOCKS_PER_SEC; #endif }; diff --git a/tests/test_model.cc b/tests/test_model.cc index 11eb330d..023a9cca 100644 --- a/tests/test_model.cc +++ b/tests/test_model.cc @@ -252,13 +252,13 @@ void test_thread() { int test_models(int device_type = 0) { std::cout << device_type << " DDDDDD" << std::endl; auto model_roots = { - "/data/std_out/cvm_mnist" +// "/data/std_out/cvm_mnist" // "/data/std_out/yolo_tfm", // "/data/std_out/null", // "/data/std_out/resnet50_mxg", // "/data/std_out/ssd_512_mobilenet1.0_voc_tfm", // "/data/std_out/resnet18_v1_tfm", -// "/data/std_out/resnet50_v2", + "/data/std_out/resnet50_v2", // "/data/std_out/qd10_resnet20_v2", // "/data/std_out/trec", // // "/data/new_cvm/yolo3_darknet53_voc/data", From 9b41ee1ea94de8ce840de1451b07b2050643b18b Mon Sep 17 00:00:00 2001 From: zkh2018 <44425324+zkh2018@users.noreply.github.com> Date: Fri, 28 Aug 2020 11:56:21 +0800 Subject: [PATCH 06/11] Update README.md --- README.md | 57 ++++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 44 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 43ef3e95..ab79b2c5 100644 --- a/README.md +++ b/README.md @@ -1,23 +1,52 @@ # Test the cvm-runtime under QEMU with RISC-V support ## Config The QEMU Environment -You will need to refer to this [documentation](https://risc-v-getting-started-guide.readthedocs.io/en/latest/linux-qemu.html) to download and install the following: +1. mkdir riscv64-linux +2. cd riscv64-linux + +### riscv-gnu-toolchain +``` +1. git clone --recursive https://github.com/riscv/riscv-gnu-toolchain +2. cd riscv-gnu-toolchain && ./configure --prefix=/opt/riscv +3. make linux +4. export RISCV=/opt/riscv +5. export PATH=$PATH:$RISCV/bin +``` +### qemu +``` +1. git clone https://github.com/qemu/qemu +2. cd qemu && git checkout v3.0.0 +3. ./configure --target-list=riscv64-softmmu +4. make -j $(nproc) +5. sudo make install +``` +### linux kernel ``` -1. https://github.com/riscv/riscv-gnu-toolchain : master -2. https://github.com/qemu/qemu : v3.0.0 -3. https://github.com/torvalds/linux : v4.19 -4. https://github.com/riscv/riscv-pk : master -5. https://github.com/michaeljclark/busybear-linux : master +1. git clone https://github.com/torvalds/linux.git +2. cd linux && git checkout v4.19-rc3 +3. make ARCH=riscv CROSS_COMPILE=riscv64-unknown-linux-gnu- defconfig +4. make ARCH=riscv CROSS_COMPILE=riscv64-unknown-linux-gnu- -j $(nproc) ``` -## Testing + +### busybear-linux +``` +1. git clone https://github.com/michaeljclark/busybear-linux.git +2. cd busybear-linux && git submodule init && git submodule update +3. cd src/riscv-pk && git checkout master +2. cd ../../ && CROSS_COMPILE=riscv{{bits}}-unknown-linux-gnu- make -j $(nproc) +``` + +## Deploy CVM-Runtime to QEMU + 1. git clone git@github.com:CortexFoundation/cvm-runtime.git -2. git checkout riscv -3. cp cmake/config . (in cvm-runtime directory) +2. cd cvm-runtime && git checkout riscv +3. cp cmake/config . 4. make lib && make test_model_riscv -5. cd ${busybear-linux directory} +5. cd ../riscv64-linux/busybear-linux 6. mkdir etc/tests -7. cp ~/cvm-runtime/build/libcvm.so ~/cvm-runtime/build/tests/test_model_riscv etc/tests/ -8. modify scripts/start-qemu.sh: +7. cp ../../cvm-runtime/build/libcvm.so ../../cvm-runtime/build/tests/test_model_riscv etc/tests/ +8. cp model data: cp -r /data/std_out/resnet50_v2 etc/tests/ +9. modify the scripts/start-qemu.sh: ``` 32 # construct command 33 cmd="${QEMU_SYSTEM_BIN} -nographic -machine virt \ @@ -33,4 +62,6 @@ You will need to refer to this [documentation](https://risc-v-getting-started-gu 10. login as root, and password is busybear 11. cd /etc/tests 12. export LD_LIBRARY_PATH=/etc/tests -13. ./test_model_riscv +13. mkdir -p /data/std_out/ +14. mv /etc/tests/resnet50_v2 /data/std_out/ +15. cd /etc/tests && ./test_model_riscv From c3e5b2758bf8b2802caea5a56ea1650c43e6a086 Mon Sep 17 00:00:00 2001 From: kaihuo zhang Date: Fri, 28 Aug 2020 13:21:23 +0800 Subject: [PATCH 07/11] use cpu code --- cmake/config.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/config.cmake b/cmake/config.cmake index f2a72c6c..7494147c 100644 --- a/cmake/config.cmake +++ b/cmake/config.cmake @@ -1,8 +1,8 @@ set(PROFILE OFF) set(DEBUG OFF) -set(ENABLE_CPU OFF) -set(ENABLE_FORMAL ON) +set(ENABLE_CPU ON) +set(ENABLE_FORMAL OFF) set(ENABLE_CUDA OFF) set(ENABLE_OPENCL OFF) From 3b104a1b3938de95c0c25350e7e003393af15d6f Mon Sep 17 00:00:00 2001 From: zkh2018 <44425324+zkh2018@users.noreply.github.com> Date: Fri, 28 Aug 2020 13:28:46 +0800 Subject: [PATCH 08/11] Update README.md --- README.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/README.md b/README.md index ab79b2c5..bfba3dec 100644 --- a/README.md +++ b/README.md @@ -65,3 +65,21 @@ 13. mkdir -p /data/std_out/ 14. mv /etc/tests/resnet50_v2 /data/std_out/ 15. cd /etc/tests && ./test_model_riscv +16. output: +``` +0 DDDDDD +load /data/std_out/resnet50_v2/symbol +load /data/std_out/resnet50_v2/params +ntpd: bad address '1.pool.ntp.org' +model loaded +GetOps: memory cost=711M percentage=0.0542804 ops=12396M percentage=0.94572 +ops 12500 +4 +1 3 224 224 +ntpd: bad address '0.pool.ntp.org' +output size = 1000 +9 11 -6 -4 -7 -5 -19 7 -5 -13 -15 6 -15 -17 -4 -21 -14 -17 -11 -18 -23 -26 -18 -6 -21 -8 -16 -10 -13 5 -16 -4 -1 1 1 1 5 8 -13 -12 -18 -5 -2 -10 -15 -12 -13 -13 -10 -1 +2 -22 20 4 -4 -16 0 -3 -9 -10 3 +7 4 1 -7 3 -4 0 -12 8 -9 9 9 -11 6 16 0 -4 -1 0 -11 -15 -5 0 -11 -13 -1 2 -11 7 -1 4 4 8 3 -10 8 -8 -6 12 4 4 0 12 0 2 0 -10 5 -3 -18 -11 -9 -10 -26 -8 -8 3 -10 5 9 +compare result: success +``` From 527ca226dd75982b87217a3d1f84dce0ac1ea007 Mon Sep 17 00:00:00 2001 From: zkh2018 <44425324+zkh2018@users.noreply.github.com> Date: Fri, 28 Aug 2020 14:30:02 +0800 Subject: [PATCH 09/11] Update README.md --- README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index bfba3dec..a8c67218 100644 --- a/README.md +++ b/README.md @@ -7,10 +7,11 @@ ### riscv-gnu-toolchain ``` 1. git clone --recursive https://github.com/riscv/riscv-gnu-toolchain -2. cd riscv-gnu-toolchain && ./configure --prefix=/opt/riscv -3. make linux -4. export RISCV=/opt/riscv -5. export PATH=$PATH:$RISCV/bin +2. sudo apt-get install autoconf automake autotools-dev curl python3 libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev +3. cd riscv-gnu-toolchain && ./configure --prefix=/opt/riscv +4. make linux +5. export RISCV=/opt/riscv +6. export PATH=$PATH:$RISCV/bin ``` ### qemu ``` From 5fc63ee6d6da5740857c879078c1647a193fc52b Mon Sep 17 00:00:00 2001 From: zhanghaojia123456 <32709820+zhanghaojia123456@users.noreply.github.com> Date: Tue, 1 Sep 2020 09:55:48 +0800 Subject: [PATCH 10/11] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index a8c67218..4a993174 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,7 @@ 1. git clone https://github.com/qemu/qemu 2. cd qemu && git checkout v3.0.0 3. ./configure --target-list=riscv64-softmmu +(sudo apt-get install libpixman-1-dev) 4. make -j $(nproc) 5. sudo make install ``` From cf0a203c8caca24152dcceaff7193017d86785b2 Mon Sep 17 00:00:00 2001 From: zhanghaojia123456 <32709820+zhanghaojia123456@users.noreply.github.com> Date: Tue, 1 Sep 2020 10:28:16 +0800 Subject: [PATCH 11/11] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4a993174..409266e3 100644 --- a/README.md +++ b/README.md @@ -47,7 +47,7 @@ 5. cd ../riscv64-linux/busybear-linux 6. mkdir etc/tests 7. cp ../../cvm-runtime/build/libcvm.so ../../cvm-runtime/build/tests/test_model_riscv etc/tests/ -8. cp model data: cp -r /data/std_out/resnet50_v2 etc/tests/ +8. cp model data: cp -r /data/std_out/resnet50_v2 etc/tests/ etc/tests 9. modify the scripts/start-qemu.sh: ``` 32 # construct command pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy