Эх сурвалжийг харах

wasi-nn: Improve tests paths for local dev (#2309)

## Context

Path to models use `/assets` for testing inside docker. While testing directly from
the repo we are forced to use soft-links or modify the paths.

## Proposed Changes

Use relative path and adjust docker volumes in docs.
tonibofarull 2 жил өмнө
parent
commit
f5c5a83331

+ 8 - 4
core/iwasm/libraries/wasi-nn/README.md

@@ -55,8 +55,10 @@ Tests: passed!
 
 ```
 docker run \
-    -v $PWD/core/iwasm/libraries/wasi-nn/test:/assets wasi-nn-cpu \
-    --dir=/assets \
+    -v $PWD/core/iwasm/libraries/wasi-nn/test:/assets \
+    -v $PWD/core/iwasm/libraries/wasi-nn/test/models:/models \
+    wasi-nn-cpu \
+    --dir=/ \
     --env="TARGET=cpu" \
     /assets/test_tensorflow.wasm
 ```
@@ -66,8 +68,10 @@ docker run \
 ```
 docker run \
     --runtime=nvidia \
-    -v $PWD/core/iwasm/libraries/wasi-nn/test:/assets wasi-nn-nvidia-gpu \
-    --dir=/assets \
+    -v $PWD/core/iwasm/libraries/wasi-nn/test:/assets \
+    -v $PWD/core/iwasm/libraries/wasi-nn/test/models:/models \
+    wasi-nn-nvidia-gpu \
+    --dir=/ \
     --env="TARGET=gpu" \
     /assets/test_tensorflow.wasm
 ```

+ 0 - 173
core/iwasm/libraries/wasi-nn/test/CMakeLists.txt

@@ -1,173 +0,0 @@
-# Copyright (C) 2019 Intel Corporation.  All rights reserved.
-# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-
-cmake_minimum_required (VERSION 2.9)
-
-project (iwasm)
-
-set (CMAKE_VERBOSE_MAKEFILE OFF)
-# Reset default linker flags
-set (CMAKE_C_STANDARD 99)
-set (CMAKE_CXX_STANDARD 17)
-set (CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "")
-set (CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "")
-
-if (NOT DEFINED WAMR_BUILD_PLATFORM)
-  set (WAMR_BUILD_PLATFORM "linux")
-endif ()
-
-# Set WAMR_BUILD_TARGET, currently values supported:
-# "X86_64", "AMD_64", "X86_32", "AARCH64[sub]", "ARM[sub]", "THUMB[sub]",
-# "MIPS", "XTENSA", "RISCV64[sub]", "RISCV32[sub]"
-if (NOT DEFINED WAMR_BUILD_TARGET)
-  if (CMAKE_SYSTEM_PROCESSOR MATCHES "^(arm64|aarch64)")
-    set (WAMR_BUILD_TARGET "AARCH64")
-  elseif (CMAKE_SYSTEM_PROCESSOR STREQUAL "riscv64")
-    set (WAMR_BUILD_TARGET "RISCV64")
-  elseif (CMAKE_SIZEOF_VOID_P EQUAL 8)
-    # Build as X86_64 by default in 64-bit platform
-    set (WAMR_BUILD_TARGET "X86_64")
-  elseif (CMAKE_SIZEOF_VOID_P EQUAL 4)
-    # Build as X86_32 by default in 32-bit platform
-    set (WAMR_BUILD_TARGET "X86_32")
-  else ()
-    message(SEND_ERROR "Unsupported build target platform!")
-  endif ()
-endif ()
-
-if (NOT CMAKE_BUILD_TYPE)
-  set(CMAKE_BUILD_TYPE Release)
-endif ()
-
-if (NOT DEFINED WAMR_BUILD_INTERP)
-  # Enable Interpreter by default
-  set (WAMR_BUILD_INTERP 1)
-endif ()
-
-if (NOT DEFINED WAMR_BUILD_AOT)
-  # Enable AOT by default.
-  set (WAMR_BUILD_AOT 1)
-endif ()
-
-if (NOT DEFINED WAMR_BUILD_JIT)
-  # Disable JIT by default.
-  set (WAMR_BUILD_JIT 0)
-endif ()
-
-if (NOT DEFINED WAMR_BUILD_FAST_JIT)
-  # Disable Fast JIT by default
-  set (WAMR_BUILD_FAST_JIT 0)
-endif ()
-
-if (NOT DEFINED WAMR_BUILD_LIBC_BUILTIN)
-  # Enable libc builtin support by default
-  set (WAMR_BUILD_LIBC_BUILTIN 1)
-endif ()
-
-if (NOT DEFINED WAMR_BUILD_LIBC_WASI)
-  # Enable libc wasi support by default
-  set (WAMR_BUILD_LIBC_WASI 1)
-endif ()
-
-if (NOT DEFINED WAMR_BUILD_FAST_INTERP)
-  # Enable fast interpreter
-  set (WAMR_BUILD_FAST_INTERP 1)
-endif ()
-
-if (NOT DEFINED WAMR_BUILD_MULTI_MODULE)
-  # Disable multiple modules by default
-  set (WAMR_BUILD_MULTI_MODULE 0)
-endif ()
-
-if (NOT DEFINED WAMR_BUILD_LIB_PTHREAD)
-  # Disable pthread library by default
-  set (WAMR_BUILD_LIB_PTHREAD 0)
-endif ()
-
-if (NOT DEFINED WAMR_BUILD_MINI_LOADER)
-  # Disable wasm mini loader by default
-  set (WAMR_BUILD_MINI_LOADER 0)
-endif ()
-
-if (NOT DEFINED WAMR_BUILD_SIMD)
-  # Enable SIMD by default
-  set (WAMR_BUILD_SIMD 1)
-endif ()
-
-if (NOT DEFINED WAMR_BUILD_REF_TYPES)
-  # Disable reference types by default
-  set (WAMR_BUILD_REF_TYPES 0)
-endif ()
-
-if (NOT DEFINED WAMR_BUILD_DEBUG_INTERP)
-  # Disable Debug feature by default
-  set (WAMR_BUILD_DEBUG_INTERP 0)
-endif ()
-
-if (WAMR_BUILD_DEBUG_INTERP EQUAL 1)
-  set (WAMR_BUILD_FAST_INTERP 0)
-  set (WAMR_BUILD_MINI_LOADER 0)
-  set (WAMR_BUILD_SIMD 0)
-endif ()
-
-set (WAMR_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../../../../..)
-
-include (${WAMR_ROOT_DIR}/build-scripts/runtime_lib.cmake)
-add_library(vmlib ${WAMR_RUNTIME_LIB_SOURCE})
-
-set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--gc-sections -pie -fPIE")
-
-set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Wformat -Wformat-security -Wshadow")
-# set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wconversion -Wsign-conversion")
-
-set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wformat -Wformat-security -Wno-unused")
-
-if (WAMR_BUILD_TARGET MATCHES "X86_.*" OR WAMR_BUILD_TARGET STREQUAL "AMD_64")
-  if (NOT (CMAKE_C_COMPILER MATCHES ".*clang.*" OR CMAKE_C_COMPILER_ID MATCHES ".*Clang"))
-    set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mindirect-branch-register")
-    set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mindirect-branch-register")
-    # UNDEFINED BEHAVIOR, refer to https://en.cppreference.com/w/cpp/language/ub
-    if(CMAKE_BUILD_TYPE STREQUAL "Debug" AND NOT WAMR_BUILD_JIT EQUAL 1)
-      set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=undefined \
-                                          -fno-sanitize=bounds,bounds-strict,alignment \
-                                          -fno-sanitize-recover")
-      set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=undefined \
-                                              -fno-sanitize=bounds,bounds-strict,alignment \
-                                              -fno-sanitize-recover")
-    endif()
-  else ()
-    # UNDEFINED BEHAVIOR, refer to https://en.cppreference.com/w/cpp/language/ub
-    if(CMAKE_BUILD_TYPE STREQUAL "Debug" AND NOT WAMR_BUILD_JIT EQUAL 1)
-      set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=undefined \
-                                          -fno-sanitize=bounds,alignment \
-                                          -fno-sanitize-recover")
-      set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=undefined \
-                                              -fno-sanitize=bounds,alignment \
-                                              -fno-sanitize-recover")
-    endif()
-  endif ()
-endif ()
-
-# The following flags are to enhance security, but it may impact performance,
-# we disable them by default.
-#if (WAMR_BUILD_TARGET MATCHES "X86_.*" OR WAMR_BUILD_TARGET STREQUAL "AMD_64")
-#  set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ftrapv -D_FORTIFY_SOURCE=2")
-#endif ()
-#set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fstack-protector-strong --param ssp-buffer-size=4")
-#set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wl,-z,noexecstack,-z,relro,-z,now")
-
-include (${SHARED_DIR}/utils/uncommon/shared_uncommon.cmake)
-
-add_executable (iwasm ${WAMR_ROOT_DIR}/product-mini/platforms/${WAMR_BUILD_PLATFORM}/main.c ${UNCOMMON_SHARED_SOURCE})
-
-install (TARGETS iwasm DESTINATION bin)
-
-target_link_libraries (iwasm vmlib ${LLVM_AVAILABLE_LIBS} ${UV_A_LIBS} ${WASI_NN_LIBS} -lm -ldl -lpthread)
-
-add_library (libiwasm SHARED ${WAMR_RUNTIME_LIB_SOURCE})
-
-install (TARGETS libiwasm DESTINATION lib)
-
-set_target_properties (libiwasm PROPERTIES OUTPUT_NAME iwasm)
-
-target_link_libraries (libiwasm ${LLVM_AVAILABLE_LIBS} ${UV_A_LIBS} -lm -ldl -lpthread)

+ 4 - 3
core/iwasm/libraries/wasi-nn/test/Dockerfile.cpu

@@ -13,7 +13,7 @@ WORKDIR /home/wamr
 
 COPY . .
 
-WORKDIR /home/wamr/core/iwasm/libraries/wasi-nn/test/build
+WORKDIR /home/wamr/product-mini/platforms/linux/build
 
 # hadolint ignore=DL3008
 RUN apt-get install -y wget ca-certificates --no-install-recommends \
@@ -30,6 +30,7 @@ RUN make -j "$(grep -c ^processor /proc/cpuinfo)"
 
 FROM ubuntu:22.04
 
-COPY --from=base /home/wamr/core/iwasm/libraries/wasi-nn/test/build/iwasm /run/iwasm
+COPY --from=base /home/wamr/product-mini/platforms/linux/build/libvmlib.so /libvmlib.so
+COPY --from=base /home/wamr/product-mini/platforms/linux/build/iwasm /iwasm
 
-ENTRYPOINT [ "/run/iwasm" ]
+ENTRYPOINT [ "/iwasm" ]

+ 4 - 3
core/iwasm/libraries/wasi-nn/test/Dockerfile.nvidia-gpu

@@ -13,7 +13,7 @@ WORKDIR /home/wamr
 
 COPY . .
 
-WORKDIR /home/wamr/core/iwasm/libraries/wasi-nn/test/build
+WORKDIR /home/wamr/product-mini/platforms/linux/build
 
 # hadolint ignore=DL3008
 RUN apt-get install -y wget ca-certificates --no-install-recommends \
@@ -44,6 +44,7 @@ RUN mkdir -p /etc/OpenCL/vendors && \
 ENV NVIDIA_VISIBLE_DEVICES=all
 ENV NVIDIA_DRIVER_CAPABILITIES=compute,utility
 
-COPY --from=base /home/wamr/core/iwasm/libraries/wasi-nn/test/build/iwasm /run/iwasm
+COPY --from=base /home/wamr/product-mini/platforms/linux/build/libvmlib.so /libvmlib.so
+COPY --from=base /home/wamr/product-mini/platforms/linux/build/iwasm /iwasm
 
-ENTRYPOINT [ "/run/iwasm" ]
+ENTRYPOINT [ "/iwasm" ]

+ 1 - 1
core/iwasm/libraries/wasi-nn/test/build.sh

@@ -7,7 +7,7 @@
     -Wl,--allow-undefined \
     -Wl,--strip-all,--no-entry \
     --sysroot=/opt/wasi-sdk/share/wasi-sysroot \
-    -I.. -I../src/utils \
+    -I../include -I../src/utils \
     -o test_tensorflow.wasm \
     test_tensorflow.c utils.c
 

+ 8 - 11
core/iwasm/libraries/wasi-nn/test/test_tensorflow.c

@@ -20,7 +20,7 @@ test_sum(execution_target target)
 
     uint32_t output_size = 0;
     float *output = run_inference(target, input.input_tensor, input.dim,
-                                  &output_size, "/assets/models/sum.tflite", 1);
+                                  &output_size, "./models/sum.tflite", 1);
 
     assert(output_size == 1);
     assert(fabs(output[0] - 300.0) < EPSILON);
@@ -38,7 +38,7 @@ test_max(execution_target target)
 
     uint32_t output_size = 0;
     float *output = run_inference(target, input.input_tensor, input.dim,
-                                  &output_size, "/assets/models/max.tflite", 1);
+                                  &output_size, "./models/max.tflite", 1);
 
     assert(output_size == 1);
     assert(fabs(output[0] - 24.0) < EPSILON);
@@ -56,9 +56,8 @@ test_average(execution_target target)
     input_info input = create_input(dims);
 
     uint32_t output_size = 0;
-    float *output =
-        run_inference(target, input.input_tensor, input.dim, &output_size,
-                      "/assets/models/average.tflite", 1);
+    float *output = run_inference(target, input.input_tensor, input.dim,
+                                  &output_size, "./models/average.tflite", 1);
 
     assert(output_size == 1);
     assert(fabs(output[0] - 12.0) < EPSILON);
@@ -76,9 +75,8 @@ test_mult_dimensions(execution_target target)
     input_info input = create_input(dims);
 
     uint32_t output_size = 0;
-    float *output =
-        run_inference(target, input.input_tensor, input.dim, &output_size,
-                      "/assets/models/mult_dim.tflite", 1);
+    float *output = run_inference(target, input.input_tensor, input.dim,
+                                  &output_size, "./models/mult_dim.tflite", 1);
 
     assert(output_size == 9);
     for (int i = 0; i < 9; i++)
@@ -96,9 +94,8 @@ test_mult_outputs(execution_target target)
     input_info input = create_input(dims);
 
     uint32_t output_size = 0;
-    float *output =
-        run_inference(target, input.input_tensor, input.dim, &output_size,
-                      "/assets/models/mult_out.tflite", 2);
+    float *output = run_inference(target, input.input_tensor, input.dim,
+                                  &output_size, "./models/mult_out.tflite", 2);
 
     assert(output_size == 8);
     // first tensor check