[Cross Compile] TensorFlow Lite RISC-V Cross Compile

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)

 

๐Ÿ‘ฉ‍๐Ÿ’ป ๊ต์ˆ˜๋‹˜๊ป˜์„œ ๋ณด๋‚ด์ฃผ์‹  ์ฝ”๋“œ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ์ž‘์„ฑํ–ˆ๋‹ค. 

 

 

 

 

 

riscv ํˆด์ฒด์ธ์ด ์žˆ๋Š” ๊ฒฝ๋กœ

 

 

 

๐Ÿ“Œ Toolchains

bin - ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ๋“ค์ด ์žˆ๋Š” ๊ณณ 

lib - ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํŒŒ์ผ๋“ค์ด ์ €์žฅ๋œ ๊ณณ (for ๋งํ‚น)

sysroot - ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํ—ค๋”๊ฐ€ ํฌํ•จ๋œ, ํƒ€๊ฒŸ ์‹œ์Šคํ…œ์˜ ๋ฃจํŠธ ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ๊ฐ€๋ฆฌํ‚จ๋‹ค 

 

 

 

๐Ÿ“Œ Cross Compile

ํฌ๋กœ์Šค ์ปดํŒŒ์ผ์ด๋ž€?

ํ˜ธ์ŠคํŠธ์—์„œ ํƒ€๊ฒŸ์ด ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๋นŒ๋“œํ•˜๋Š” ๊ณผ์ •

์ž„๋ฒ ๋””๋“œ ๋ณด๋“œ์—์„œ ์ง์ ‘ ์ปดํŒŒ์ผํ•˜๊ธฐ ์–ด๋ ค์šด ๊ฒฝ์šฐ - PC์—์„œ ํ”„๋กœ๊ทธ๋žจ์„ ๋นŒ๋“œํ•˜๊ณ ,

๊ฒฐ๊ณผ๋ฌผ๋งŒ ํƒ€๊ฒŸ์œผ๋กœ ์˜ฎ๊ฒจ์„œ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํ™œ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค. 

 

 

 

๊ธฐ์กด CMakeList.txt ๋Œ€์‹ , riscv32-glibc-toolchains.cmake ๋กœ ์ƒˆ๋กœ ํŒŒ์ผ์„ ํŒ ๋‹ค.!

 

 

 

 

 

๐Ÿ“Œ ์ฐธ๊ณ  ์ž๋ฃŒ

1) https://github.com/Tencent/ncnn/blob/f7e6411a01b1154f70ef76299a109ae8ce85b504/toolchains/riscv32-unknown-elf.toolchain.cmake

 

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

 

 

4) https://www.tensorflow.org/lite/guide/build_cmake?hl=ko#6๋‹จ๊ณ„_tensorflow_lite_๋ฒค์น˜๋งˆํฌ_๋„๊ตฌ_๋ฐ_๋ ˆ์ด๋ธ”_์ด๋ฏธ์ง€_์˜ˆ์ œ_๋นŒ๋“œํ•˜๊ธฐ์„ ํƒ_์‚ฌํ•ญ

 

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