2025. 4. 2. 23:16ใComputerScience/FaultTolerance
0402 Wednesday
TensorFlow Lite RISC-V Cross Compile
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR riscv32)
# riscv32-glibc-ubuntu-22.04-llvm-nightly-2025.01.20-nightly.tar.xz
# ํด์ฒด์ธ ๊ฒฝ๋ก ์ค์
# /home/sohyun/toolchains/riscv/sysroot
set(triple riscv32-unknown-linux-gnu)
set(toolchain /home/sohyun/toolchains/riscv)
set(CMAKE_SYSROOT ${toolchain}/sysroot)
set(CMAKE_C_COMPILER ${toolchain}/bin/${triple}-gcc)
set(CMAKE_CXX_COMPILER ${toolchain}/bin/${triple}-g++)
set(CMAKE_ASM_COMPILER ${toolchain}/bin/${triple}-gcc)
set(CMAKE_AR ${toolchain}/bin/${triple}-ar)
set(CMAKE_RANLIB ${toolchain}/bin/${triple}-ranlib)
# ์ต์ ํ, ๋๋ฒ๊น
์ต์
set(CMAKE_C_FLAGS "-O2 -g --sysroot=${CMAKE_SYSROOT}")
set(CMAKE_CXX_FLAGS "-O2 -g --sysroot=${CMAKE_SYSROOT}")
set(CMAKE_ASM_FLAGS "--sysroot=${CMAKE_SYSROOT}")
set(CMAKE_C_FLAGS_RELEASE "-DNDEBUG")
set(CMAKE_CXX_FLAGS_RELEASE "-DNDEBUG")
set(CMAKE_ASM_FLAGS_RELEASE "-DNDEBUG")
# ๋ง์ปค ๊ฒฝ๋ก, ๋ฒ์ ํ์ธ
# ~/toolchains/riscv/lib/gcc/riscv32-unknown-linux-gnu$ ls -> 14.2.0
set(CMAKE_EXE_LINKER_FLAGS "-fuse-ld=lld -L${toolchain}/lib/gcc/${triple}/14.2.0 -L${CMAKE_SYSROOT}/lib -L${CMAKE_SYSROOT}/usr/lib -lm -lstdc++")
set(CMAKE_C_COMPILER_FORCED TRUE)
set(CMAKE_CXX_COMPILER_FORCED TRUE)
set(CMAKE_C_COMPILER_TARGET ${triple})
set(CMAKE_CXX_COMPILER_TARGET ${triple})
list(APPEND CMAKE_CXX_COMPILE_FEATURES
cxx_std_11
cxx_std_17
)
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)
๐ฉ๐ป ๊ต์๋๊ป์ ๋ณด๋ด์ฃผ์ ์ฝ๋๋ฅผ ์ฐธ๊ณ ํ์ฌ ์์ฑํ๋ค.
๐ Toolchains
bin - ๋ฐ์ด๋๋ฆฌ ํ์ผ๋ค์ด ์๋ ๊ณณ
lib - ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ผ๋ค์ด ์ ์ฅ๋ ๊ณณ (for ๋งํน)
sysroot - ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํค๋๊ฐ ํฌํจ๋, ํ๊ฒ ์์คํ ์ ๋ฃจํธ ํ์ผ ์์คํ ์ ๊ฐ๋ฆฌํจ๋ค
๐ Cross Compile
ํฌ๋ก์ค ์ปดํ์ผ์ด๋?
ํธ์คํธ์์ ํ๊ฒ์ด ์คํ๋ ์ ์๋ ํ๋ก๊ทธ๋จ์ ๋น๋ํ๋ ๊ณผ์
์๋ฒ ๋๋ ๋ณด๋์์ ์ง์ ์ปดํ์ผํ๊ธฐ ์ด๋ ค์ด ๊ฒฝ์ฐ - PC์์ ํ๋ก๊ทธ๋จ์ ๋น๋ํ๊ณ ,
๊ฒฐ๊ณผ๋ฌผ๋ง ํ๊ฒ์ผ๋ก ์ฎ๊ฒจ์ ์คํํ๋ ๋ฐฉ์์ผ๋ก ํ์ฉ๋ ์ ์๋ค.
๐ ์ฐธ๊ณ ์๋ฃ
ncnn/toolchains/riscv32-unknown-elf.toolchain.cmake at f7e6411a01b1154f70ef76299a109ae8ce85b504 · Tencent/ncnn
ncnn is a high-performance neural network inference framework optimized for the mobile platform - Tencent/ncnn
github.com
2) https://austindhkim.tistory.com/528
[RISC-V] RISC-V ํด์ฒด์ธ์ผ๋ก ๋ฆฌ๋ ์ค ์ปค๋ ๋น๋ํ๊ธฐ - ํฌ๋ก์ค ์ปดํ์ผ(cross-compile)
์ด๋ฒ ํฌ์คํธ์์๋ RISC-V ํด์ฒด์ธ์ ์ค์นํด ๋ฆฌ๋ ์ค ์ปค๋์ ๋น๋ํ๋ ๋ฐฉ๋ฒ์ ์๊ฐํฉ๋๋ค. ๋จผ์ RISC-V ํด์ฒด์ธ์ ์ค์นํ๋ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํฉ์๋ค. RISC-V ํด์ฒด์ธ ์์ค๋ฅผ ๋ด๋ ค๋ฐ๊ธฐ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํด
austindhkim.tistory.com
3) https://kkastory.tistory.com/29
[CMake] CMakeLists.txt ์์ฑํ๊ธฐ
l Make - ํญ์ ์ ์ง/๋ณด์๋ฅผ ์ ๊ฒฝ์จ์ผํ๋ค. ( ์์ค ์ฝ๋๋ฅผ ์์ ํด์ ์์กด์ฑ์ด ๋ฐ๋ ๋ ๋ง๋ค Makefile์ ์ ๋ฐ์ดํธ ํด์ผํ๋ค. ) - ํ๋ก์ ํธ ๊ท๋ชจ๊ฐ ๊ฑฐ๋ํด ์ง์๋ก ๊ด๋ฆฌํด์ผํ ์์ค ํ์ผ์ด ๋ง์์ง๊ณ , ์์กด
kkastory.tistory.com
CMake๋ก TensorFlow Lite ๋น๋ํ๊ธฐ
CMake๋ก TensorFlow Lite ๋น๋ํ๊ธฐ ์ปฌ๋ ์ ์ ์ฌ์ฉํด ์ ๋ฆฌํ๊ธฐ ๋ด ํ๊ฒฝ์ค์ ์ ๊ธฐ์ค์ผ๋ก ์ฝํ ์ธ ๋ฅผ ์ ์ฅํ๊ณ ๋ถ๋ฅํ์ธ์. ์ด ํ์ด์ง์์๋ CMake ๋๊ตฌ๋ก TensorFlow Lite ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋น๋ํ๊ณ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
www.tensorflow.org
5) https://github.com/riscv-collab/riscv-gnu-toolchain/releases
Releases · riscv-collab/riscv-gnu-toolchain
GNU toolchain for RISC-V, including GCC. Contribute to riscv-collab/riscv-gnu-toolchain development by creating an account on GitHub.
github.com
์ค์นํ release version: riscv32-glibc-ubuntu-22.04-llvm-nightly-2025.01.20-nightly.tar.xz
'ComputerScience > FaultTolerance' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[TFLite] ์บก์คํค๋์์ธ ์ต์ข ๋ฐํ (0) | 2025.06.20 |
---|---|
[TFLite] Emulation Results (0) | 2025.06.10 |
[TFLite] Fault Injection (0) | 2025.06.05 |
[TFLite] Hook and Fault Injection (0) | 2025.05.26 |
[Paper Review] A Portable and Fault-Tolerant Microprocessor Based on the SPARC V8Architecture (0) | 2025.03.17 |