Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 21 additions & 7 deletions benchmark_sources/MLPerfTiny/CMake/add_test.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -273,12 +273,25 @@ macro(add_benchmark_etiss TEST SOURCE_DIR)
target_link_libraries(${TEST_NAME} PRIVATE tflm etiss_crt0 sim_etiss)


target_link_options(${TEST_NAME} PRIVATE
"-L${ETISS_CRT_LIB}"
"--specs=${ETISS_CRT_TOP}/etiss-semihost.specs"
"-T${ETISS_CRT_TOP}/etiss.ld"
"-nostartfiles"
)
if(CMAKE_CXX_COMPILER_ID MATCHES "(C|c?)lang")
target_link_options(${TEST_NAME} PRIVATE
"-nostdlib"
"-lc"
"-lsemihost"
"-lgcc"
"-lstdc++"
"-L${ETISS_CRT_LIB}"
"-T${ETISS_CRT_TOP}/etiss.ld"
)
else()
target_link_options(${TEST_NAME} PRIVATE
"-L${ETISS_CRT_LIB}"
"--specs=${ETISS_CRT_TOP}/etiss-semihost.specs"
"-T${ETISS_CRT_TOP}/etiss.ld"
"-nostartfiles"
)
endif()


# put objdump in elf target
add_custom_command(TARGET ${TEST_NAME}
Expand All @@ -288,9 +301,10 @@ macro(add_benchmark_etiss TEST SOURCE_DIR)

add_test(NAME ${TEST_NAME}
COMMAND
${TOOLCHAIN_TOP}/etiss_base/etiss_rvv/build/installed/bin/bare_etiss_processor
${TOOLCHAIN_TOP}/etiss_base/etiss_rvv/build/installed/bin/bare_etiss_processor
-i${FRAMEWORK_TOP}/etiss/etiss.ini
--vp.elf_file=${BINARY_DIR}/${TEST_NAME}.elf
--arch.cpu=RV32IMACFDV_zvl${VREG_W}b
WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
endmacro()

Expand Down
45 changes: 34 additions & 11 deletions benchmark_sources/MLPerfTiny/tflm/CMake/add_muriscv_nn_test.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,16 @@ macro(add_muriscv_nn_test TEST)
get_target_property(_target_flags unity COMPILE_OPTIONS)
list(REMOVE_ITEM _target_flags "-Werror")
set_target_properties(unity PROPERTIES COMPILE_OPTIONS "-Wno-error {_target_flags} -Wno-error")
if(CMAKE_CXX_COMPILER_ID MATCHES "(C|c?)lang")
target_link_options(unity PRIVATE
"-nostdlib"
"-lc"
"-lsemihost"
"-lgcc"
"-lstdc++"
"-T${ETISS_CRT_TOP}/etiss.ld"
)
endif()

add_executable(${TEST_NAME})

Expand All @@ -30,10 +40,6 @@ macro(add_muriscv_nn_test TEST)
string(REPLACE "int main" "int muriscv_nn_main" FILE_CONTENT "${FILE_CONTENT}")
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/TestCases/${TEST}/${TEST}.c "${FILE_CONTENT}")

# copy include files
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/muriscv-nn/Tests/TestData DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/muriscv-nn/Tests/Utils DESTINATION ${CMAKE_CURRENT_BINARY_DIR})

target_sources(${TEST_NAME} PUBLIC
${FRAMEWORK_TOP}/main.cpp
${CMAKE_CURRENT_BINARY_DIR}/TestCases/${TEST}/${TEST}.c
Expand All @@ -55,13 +61,24 @@ macro(add_muriscv_nn_test TEST)
add_dependencies(${TEST_NAME} etiss_crt0)
target_link_libraries(${TEST_NAME} PRIVATE tflm etiss_crt0 sim_etiss)


target_link_options(${TEST_NAME} PRIVATE
"-L${ETISS_CRT_LIB}"
"--specs=${ETISS_CRT_TOP}/etiss-semihost.specs"
"-T${ETISS_CRT_TOP}/etiss.ld"
"-nostartfiles"
)
if(CMAKE_CXX_COMPILER_ID MATCHES "(C|c?)lang")
target_link_options(${TEST_NAME} PRIVATE
"-nostdlib"
"-lc"
"-lsemihost"
"-lgcc"
"-lstdc++"
"-L${ETISS_CRT_LIB}"
"-T${ETISS_CRT_TOP}/etiss.ld"
)
else()
target_link_options(${TEST_NAME} PRIVATE
"-L${ETISS_CRT_LIB}"
"--specs=${ETISS_CRT_TOP}/etiss-semihost.specs"
"-T${ETISS_CRT_TOP}/etiss.ld"
"-nostartfiles"
)
endif()

# put objdump in elf target
add_custom_command(TARGET ${TEST_NAME}
Expand All @@ -75,5 +92,11 @@ macro(add_muriscv_nn_test TEST)
${TOOLCHAIN_TOP}/etiss_base/etiss_rvv/build/installed/bin/bare_etiss_processor
-i${FRAMEWORK_TOP}/etiss/etiss.ini
--vp.elf_file=${BINARY_DIR}/tflm/${TEST_NAME}.elf
--arch.cpu=RV32IMACFDV_zvl${VREG_W}b
WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
endmacro()

macro(prepare_muriscv_nn_tests)
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/muriscv-nn/Tests/TestData DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/muriscv-nn/Tests/Utils DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
endmacro()
12 changes: 12 additions & 0 deletions benchmark_sources/MLPerfTiny/tflm/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -570,12 +570,24 @@ if(MURISCV_NN)
)

add_subdirectory(muriscv-nn/Source muriscv-nn)

# Pass vector extension flags to muriscv-nn target
if (DEFINED USE_VEXT AND USE_VEXT)
target_compile_definitions(muriscvnn PRIVATE USE_VEXT)
if (DEFINED USE_IME AND USE_IME)
target_compile_definitions(muriscvnn PRIVATE USE_IME)
endif()
elseif(DEFINED USE_PEXT AND USE_PEXT)
target_compile_definitions(muriscvnn PRIVATE USE_PEXT)
endif()

if (DEFINED MURISCV_NN_TEST AND NOT MURISCV_NN_TEST STREQUAL "OFF")
# add muriscv-nn testcases only if etiss is used as the backend simulator
if (${ETISS_SIM})
include(${CMAKE_CURRENT_SOURCE_DIR}/CMake/add_muriscv_nn_test.cmake)
prepare_muriscv_nn_tests()
add_muriscv_nn_test(test_muriscv_nn_fully_connected_s8)
add_muriscv_nn_test(test_muriscv_nn_fully_connected_s16)
else()
message(WARNING "muriscv-nn testcases are not added because ETISS is not used as the backend simulator")
endif()
Expand Down
2 changes: 1 addition & 1 deletion benchmark_sources/framework/etiss/etiss.ini
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ simple_mem_system.memseg_length_01=0x01000000

[StringConfigurations]
jit.type=TCCJIT
arch.cpu=RV32IMACFDV_zvl128b
#specified in cmd line arguments arch.cpu=RV32IMACFDV_zvl512b

[Plugin Logger]
plugin.logger.logaddr=0x10000000
Expand Down
26 changes: 19 additions & 7 deletions benchmark_sources/generic_cpp/CMake/add_test.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -152,13 +152,24 @@ macro(add_benchmark_etiss TEST TEST_NUM)
add_dependencies(${TEST_NAME} etiss_crt0)
target_link_libraries(${TEST_NAME} PRIVATE etiss_crt0 sim_etiss)


target_link_options(${TEST_NAME} PRIVATE
"-L${ETISS_CRT_LIB}"
"--specs=${ETISS_CRT_TOP}/etiss-semihost.specs"
"-T${ETISS_CRT_TOP}/etiss.ld"
"-nostartfiles"
)
if(CMAKE_CXX_COMPILER_ID MATCHES "(C|c?)lang")
target_link_options(${TEST_NAME} PRIVATE
"-nostdlib"
"-lc"
"-lsemihost"
"-lgcc"
"-lstdc++"
"-L${ETISS_CRT_LIB}"
"-T${ETISS_CRT_TOP}/etiss.ld"
)
else()
target_link_options(${TEST_NAME} PRIVATE
"-L${ETISS_CRT_LIB}"
"--specs=${ETISS_CRT_TOP}/etiss-semihost.specs"
"-T${ETISS_CRT_TOP}/etiss.ld"
"-nostartfiles"
)
endif()

# put objdump in elf target
add_custom_command(TARGET ${TEST_NAME}
Expand All @@ -171,5 +182,6 @@ macro(add_benchmark_etiss TEST TEST_NUM)
${TOOLCHAIN_TOP}/etiss_base/etiss_rvv/build/installed/bin/bare_etiss_processor
-i${FRAMEWORK_TOP}/etiss/etiss.ini
--vp.elf_file=${TEST_BUILD_DIR}/${TEST_NAME}.elf
--arch.cpu=RV32IMACFDV_zvl${VREG_W}b
WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
endmacro()
2 changes: 1 addition & 1 deletion toolchain/llvm/llvm_toolchain.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,4 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --gcc-toolchain=${RISCV_GCC_PREFIX} --sy
set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} --target=riscv32 -march=${RISCV_ARCH_COMP_STRING}_zicsr -mabi=${RISCV_ABI} -mcmodel=${RISCV_CMODEL}")
set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} --gcc-toolchain=${RISCV_GCC_PREFIX} --sysroot=${RISCV_GCC_PREFIX}/${RISCV_GCC_BASENAME}")

set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -march=${RISCV_ARCH_COMP_STRING}_zicsr -mabi=${RISCV_ABI} -fuse-ld=ld -mcmodel=${RISCV_CMODEL} --gcc-toolchain=${RISCV_GCC_PREFIX}")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -march=${RISCV_ARCH_COMP_STRING}_zicsr -mabi=${RISCV_ABI} -fuse-ld=lld -mcmodel=${RISCV_CMODEL} --gcc-toolchain=${RISCV_GCC_PREFIX}")