Other Parts Discussed in Thread: SYSBIOS
Hi!
I have TDA4VM. I want to convert my own models to tidl format.
For the first step I want to launch examples with models provided by vendor.
I have downloaded SDKs and files from www.ti.com/.../TDA4VM
The problem is that I got "Illegal instruction" message in logs when try to compile models using command:
python3 onnxrt_ep.py -c
...
***************** Calibration iteration number 3 started ************************
~~~~~Running TIDL in PC emulation mode to collect Activations range for each layer~~~~~
Processing config file #0 : /home/stepin/edgeai-tidl-tools/model-artifacts/ss-ort-deeplabv3lite_mobilenetv2/tempDir/566TIDL_cast_out_tidl_io_.qunat_stats_config.txt
Illegal instruction
...
TIDL ALLOWLISTING LAYER CHECK: TIDL_E_QUANT_STATS_NOT_AVAILABLE] tidl_quant_stats_tool.out fails to collect dynamic range. Please look into quant stats log. This model will get fault on target.
Environment:
System: Windows 11
Processor: Ryzen 9 5900HX / Intel 12700
Steps to reproduce
1. Install Ubuntu 22.04 via WSL and install necessary packages (docker also have been used and has similar results)
wsl –install Ubuntu-22.04
sudo apt-get install libyaml-cpp-dev
sudo apt install python3-pip
sudo apt install protobuf-compiler
sudo apt-get install graphviz
sudo apt-get install libgtk-3-dev
sudo apt-get install cmake
2. Download edgeai-tidl-tools and setup environments:
git clone github.com/.../edgeai-tidl-tools.git
cd edgeai-tidl-tools
export SOC=am68pa
export PATH="$PATH:/home/stepin/.local/bin"
source ./setup.sh
2.1 Re-export environments after wsl session restart:
export PATH="$PATH:/home/stepin/.local/bin"
export TIDL_TOOLS_PATH=/home/stepin/edgeai-tidl-tools/tidl_tools
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TIDL_TOOLS_PATH
export ARM64_GCC_PATH=/home/stepin/edgeai-tidl-tools/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu
3. Go to folder "examples/osrt_python/ort" and launch:
python3 onnxrt_ep.py -c
All models from model zoo have this message and after launching examples I don't have results which provided as examples of succesfull launching.
--------------------------------------------------------------------------------------------------------------------------------
I found some forum topics where you offer to check which AVX instruction are supported by PC processor.
I do next command:
grep avx /proc/cpuinfo
and there were avx and avx2 for Ryzen and Intel.
BTW I tried to do next:export TIDL_RT_AVX_REF=0
but it didn't help, I still got "Illegal instruction"
--------------------------------------------------------------------------------------------------------------------------------
Then I found next instruction in your guides:
Known Issue
In some of the old machines, user many observe "Illegal Instruction" error while importing model or performing inference on PC. This is observed because of new x86_64 instruction used in the pre-built binaries. To overcome this, user would need to re-built the TIDL-RT host emulation executable by executing below command
$ cd ${TIDL_INSTALL_PATH}
$ make tidl TARGET_PLATFORM=PC
I have downloaded SDKs:
- ti-processor-sdk-linux-adas-j721e-evm-09_00_00_08
- ti-processor-sdk-rtos-j721e-evm-09_00_00_02
export PSDKL_PATH=/home/stepin/ti-processor-sdk-linux-adas-j721e-evm-09_00_00_08
export PSDKR_PATH=/home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02
export PSDK_INSTALL_PATH=$PSDKR_PATH
export TIDL_INSTALL_PATH=${PSDKR_PATH}/c7x-mma-tidl
export SOC=j721e
cp ${PSDKL_PATH}/board-support/prebuilt-images/boot-adas-${SOC}-evm.tar.gz ${PSDKR_PATH}/
cp ${PSDKL_PATH}/filesystem/tisdk-adas-image-${SOC}-evm.tar.xz ${PSDKR_PATH}/cd ${PSDKR_PATH}
./sdk_builder/scripts/setup_psdk_rtos.sh
After it I also downloaded and build dependant libraries from here and put it into SDK RTOS folder:
software-dl.ti.com/.../md_tidl_dependency_info.html
Then I go to the folder "c7x-mma-tidl" and do command:
make TARGET_PLATFORM=PC
It gives me a new import libraries but they have same size with libraris from TIDL_TOOLS archive, downloaded via setup.sh script in edgeai-tidl-tools repo.
When I try to do:make tidl TARGET_PLATFORM=PC
I have next logs:.
======== MAKING CUSTOM LIB =================
make -C ./ti_dl/custom -f makefile
make[1]: Entering directory '/home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/ti_dl/custom'
r - /home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/out/PC/dsp/algo/release/ti_dl/custom/tidl_custom.obj
r - /home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/out/PC/dsp/algo/release/ti_dl/custom/tidl_custom_maxpooling.obj
r - /home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/out/PC/dsp/algo/release/ti_dl/custom/./tidsp/tidl_custom_maxpool_ixX_oxX.obj
r - /home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/out/PC/dsp/algo/release/ti_dl/custom/./tidsp/tidl_custom_maxpool_ixX_oxX_c7x.obj
r - /home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/out/PC/dsp/algo/release/ti_dl/custom/./tidsp/tidl_custom_maxpool_ixX_oxX_cn.obj
make[1]: Leaving directory '/home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/ti_dl/custom'
======== MAKING TIDL ALGO =================
make -C ./ti_dl/algo -f makefile
make[1]: Entering directory '/home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/ti_dl/algo'
r - /home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/out/PC/dsp/algo/release/ti_dl/algo/./src/printv.obj
r - /home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/out/PC/dsp/algo/release/ti_dl/algo/./src/tidl_alg.obj
r - /home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/out/PC/dsp/algo/release/ti_dl/algo/./src/tidl_alg_utils.obj
r - /home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/out/PC/dsp/algo/release/ti_dl/algo/./src/tidl_argmax.obj
r - /home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/out/PC/dsp/algo/release/ti_dl/algo/./src/tidl_batchNorm.obj
r - /home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/out/PC/dsp/algo/release/ti_dl/algo/./src/tidl_batchReshape.obj
r - /home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/out/PC/dsp/algo/release/ti_dl/algo/./src/tidl_colorConversion.obj
r - /home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/out/PC/dsp/algo/release/ti_dl/algo/./src/tidl_commonUtils.obj
r - /home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/out/PC/dsp/algo/release/ti_dl/algo/./src/tidl_concat.obj
r - /home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/out/PC/dsp/algo/release/ti_dl/algo/./src/tidl_const.obj
r - /home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/out/PC/dsp/algo/release/ti_dl/algo/./src/tidl_conv2d_base.obj
r - /home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/out/PC/dsp/algo/release/ti_dl/algo/./src/tidl_crop.obj
r - /home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/out/PC/dsp/algo/release/ti_dl/algo/./src/tidl_custom_int.obj
r - /home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/out/PC/dsp/algo/release/ti_dl/algo/./src/tidl_dataConvert.obj
r - /home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/out/PC/dsp/algo/release/ti_dl/algo/./src/tidl_deconv2d.obj
r - /home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/out/PC/dsp/algo/release/ti_dl/algo/./src/tidl_depthToSpace.obj
r - /home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/out/PC/dsp/algo/release/ti_dl/algo/./src/tidl_detectionOutput.obj
r - /home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/out/PC/dsp/algo/release/ti_dl/algo/./src/tidl_detectionOutput_score.obj
r - /home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/out/PC/dsp/algo/release/ti_dl/algo/./src/tidl_device_functions.obj
r - /home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/out/PC/dsp/algo/release/ti_dl/algo/./src/tidl_eltWise.obj
r - /home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/out/PC/dsp/algo/release/ti_dl/algo/./src/tidl_flatten.obj
r - /home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/out/PC/dsp/algo/release/ti_dl/algo/./src/tidl_function_mapping.obj
r - /home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/out/PC/dsp/algo/release/ti_dl/algo/./src/tidl_gatherLayer.obj
r - /home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/out/PC/dsp/algo/release/ti_dl/algo/./src/tidl_innerProduct.obj
r - /home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/out/PC/dsp/algo/release/ti_dl/algo/./src/tidl_odOutputReformat.obj
r - /home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/out/PC/dsp/algo/release/ti_dl/algo/./src/tidl_pad.obj
r - /home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/out/PC/dsp/algo/release/ti_dl/algo/./src/tidl_pooling.obj
r - /home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/out/PC/dsp/algo/release/ti_dl/algo/./src/tidl_preEmption.obj
r - /home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/out/PC/dsp/algo/release/ti_dl/algo/./src/tidl_reduce.obj
r - /home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/out/PC/dsp/algo/release/ti_dl/algo/./src/tidl_reshape.obj
r - /home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/out/PC/dsp/algo/release/ti_dl/algo/./src/tidl_resize.obj
r - /home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/out/PC/dsp/algo/release/ti_dl/algo/./src/tidl_roiPooling.obj
r - /home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/out/PC/dsp/algo/release/ti_dl/algo/./src/tidl_scatterElements.obj
r - /home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/out/PC/dsp/algo/release/ti_dl/algo/./src/tidl_shuffleChannel.obj
r - /home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/out/PC/dsp/algo/release/ti_dl/algo/./src/tidl_slice.obj
r - /home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/out/PC/dsp/algo/release/ti_dl/algo/./src/tidl_softmax.obj
r - /home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/out/PC/dsp/algo/release/ti_dl/algo/./src/tidl_squeeze.obj
r - /home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/out/PC/dsp/algo/release/ti_dl/algo/./src/tidl_transpose.obj
r - /home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/out/PC/dsp/algo/release/ti_dl/algo/./src/workload_ref_exec.obj
make[1]: Leaving directory '/home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/ti_dl/algo'
make -C ./ti_dl/algo/src/avx -f makefile
make[1]: Entering directory '/home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/ti_dl/algo/src/avx'
r - /home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/out/PC/dsp/algo/release/ti_dl/algo/src/avx/./tidl_avx.obj
make[1]: Leaving directory '/home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/ti_dl/algo/src/avx'
.
======== MAKING TIDL PRIV ALGO =================
make -C ./ti_dl/algo/src/priv -f makefile
make[1]: Entering directory '/home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/ti_dl/algo/src/priv'
r - /home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/out/PC/dsp/algo/release/ti_dl/algo/src/priv/./tidl_stalgo.obj
r - /home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/out/PC/dsp/algo/release/ti_dl/algo/src/priv/./tidl_stalgo_workload.obj
make[1]: Leaving directory '/home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/ti_dl/algo/src/priv'
.
======== MAKING TIDL AND CUSTOM LIBRARIES =================
.
======== MAKING TIDL TEST =================
make -C ./ti_dl/test -f makefile final_install
make[1]: Entering directory '/home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/ti_dl/test'
SHELL=/bin/sh
TARGET_MAKEFILES=src/dsp_rtos/concerto.mak src/pc_linux/concerto.mak
Keep only PC platform in TARGET_COMBOS
undefined TIARMCGT_ROOT=
undefined TIARMCGT_LLVM_ROOT=
undefined GCC_SYSBIOS_ARM_ROOT=
undefined CGT6X_ROOT=
file CGT7X_ROOT="/home/stepin/ti/ti-cgt-c7000_3.1.0.LTS"
undefined GCC_WINDOWS_ROOT=
file GCC_LINUX_ROOT=/usr
undefined GCC_QNX_ROOT=
#######################################################################
TARGET_COMBO=PC:LINUX:x86_64:1:release:GCC_LINUX
Required system library libtidl_custom.a
Required system library libtidl_algo.a
Required system library libtidl_obj_algo.a
Required system library libtidl_priv_algo.a
Required system library libmmalib_cn_x86_64.a
Required system library libmmalib_x86_64.a
Required system library libcommon_x86_64.a
Required system library libC7100-host-emulation.a
Required system library libopencv_imgproc.a
Required system library libopencv_imgcodecs.a
Required system library libopencv_core.a
Required system library liblibtiff.a
Required system library liblibwebp.a
Required system library liblibpng.a
Required system library liblibjpeg-turbo.a
Required system library libIlmImf.a
Required system library libzlib.a
Required system library liblibjasper.a
Required system library libtidl_avx_kernels.a
Required system library libdl.so
Linking /home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/ti_dl/test/out/PC/x86_64/LINUX/release/PC_dsp_test_dl_algo.out
Copying built libraries: /home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/ti_dl/test/out/PC/x86_64/LINUX/release to /home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/ti_dl/test/lib/PC/x86_64/LINUX/release
Copying built libraries: /home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/ti_dl/test/out/PC/x86_64/LINUX/release/PC_dsp_test_dl_algo.out to /home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/ti_dl/test/src/pc_linux/../..
TROLOLO /home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/sdk_builder/concerto
make[1]: Leaving directory '/home/stepin/ti-processor-sdk-rtos-j721e-evm-09_00_00_02/c7x-mma-tidl/ti_dl/test'
So I want you to help me with next problems:
-----------------------------------------------------------------------------------------------------------------
- What should I do to fix Illegal instruction?
- Am I use correct SDKs?
- How should I launch tdil-rt rebuild?