run_libncrt.sh 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. #!/bin/env bash
  2. CORE=${CORE:-n300}
  3. BENCH=${BENCH:-dhrystone}
  4. CYCM=${CORE}_best_config_cymodel_latest
  5. MKOPTS="CORE=$CORE SIMU=xlspike SIMULATION=1 RISCV_TUNE= "
  6. SCRIPTDIR=$(dirname $(readlink -f $BASH_SOURCE))
  7. SCRIPTDIR=$(readlink -f $SCRIPTDIR)
  8. COMMON_ENV=$(readlink -f $SCRIPTDIR/env.sh)
  9. source $COMMON_ENV
  10. OLDPATH=$PATH
  11. function setup_gcc {
  12. local GCC_VER=${1:-latest}
  13. TOOL_VER=$GCC_VER source $DEVTOOL_ENV
  14. }
  15. function reset_gcc {
  16. export PATH=$OLDPATH
  17. }
  18. function build_app {
  19. local clib=$1
  20. local makeopts="STDCLIB=$clib $MKOPTS"
  21. runcmd="make $makeopts clean all"
  22. echo $runcmd
  23. if [ "x$DRYRUN" == "x0" ] ; then
  24. eval $runcmd
  25. fi
  26. }
  27. function run_app {
  28. local app=$1
  29. runcmd="$CYCM $app"
  30. echo $runcmd
  31. if [ "x$DRYRUN" == "x0" ] ; then
  32. eval $runcmd
  33. fi
  34. }
  35. function do_test {
  36. local app=${1:-dhrystone}
  37. local applogdir=$logdir/$app
  38. local appbuildlog=$applogdir/build.log
  39. local apprunlog=$applogdir/run.log
  40. mkdir -p $applogdir
  41. for cfg in newlib_small libncrt_small libncrt_balanced libncrt_fast
  42. do
  43. echo "Build $app for CORE=$CORE STDCLIB=$cfg"
  44. echo "==>Build for $cfg" >> $appbuildlog
  45. build_app $cfg >> $appbuildlog
  46. local bkapp=$applogdir/${app}_$cfg
  47. cp $app.elf $bkapp.elf
  48. echo "Run $app for CORE=$CORE STDCLIB=$cfg"
  49. local appsz=$(riscv-nuclei-elf-size $bkapp.elf | tail -1)
  50. echo "CSV, $appsz" >> $apprunlog
  51. run_app $app.elf >> $apprunlog 2>&1
  52. done
  53. cat $apprunlog | grep CSV
  54. }
  55. function do_test_on_gcc {
  56. local GCC_VER=${1:-latest}
  57. local app=${2:-dhrystone}
  58. logdir=$LOGDIR/$GCC_VER
  59. buildtxt=$logdir/build.txt
  60. runlog=$logdir/run.log
  61. rm -rf $logdir
  62. mkdir -p $logdir
  63. setup_gcc $GCC_VER
  64. riscv-nuclei-elf-gcc -v > $buildtxt 2>&1
  65. riscv64-unknown-elf-gcc -v >> $buildtxt 2>&1
  66. do_test $app | tee $runlog
  67. reset_gcc
  68. }
  69. gen_logdir "libncrt_$BENCH"
  70. function do_bench_on_gcc {
  71. local dhryappdir=$NSDK_ROOT/application/baremetal/benchmark/$BENCH
  72. pushd $dhryappdir
  73. local totallog=$LOGDIR/run.log
  74. for ver in 2021.11-eng1 2022.01 2022.04 2022.05-eng2
  75. do
  76. echo "Run on GCC $ver"
  77. do_test_on_gcc $ver $BENCH
  78. done | tee $totallog
  79. popd
  80. zip_logdir
  81. }
  82. do_bench_on_gcc