以下の内容はhttps://msyksphinz.hatenablog.com/entry/2026/01/29/040000より取得しました。


SPEC CPU2006 を GitHub Actions で SimPoint → SIFT → Sniper まで回す (5. SPEC2k6FPのビルド環境を作る)

前回の続き:

msyksphinz.hatenablog.com

ビルドオプションの変更

FPに対応するため、ビルドオプションを変更した。

  • riscv64_config.cfg
runlist       = int fp
strict_rundir_verify        = 0

monitor_wrapper         = qemu-riscv64 -L /riscv-linux/sysroot $command

default:
    CC                  = riscv64-unknown-linux-gnu-gcc -std=gnu89
    CXX                 = riscv64-unknown-linux-gnu-g++
    FC                  = riscv64-unknown-linux-gnu-gfortran

    CC_VERSION_OPTION   = --version
    CXX_VERSION_OPTION  = --version
    FC_VERSION_OPTION   = --version

default:
    # Language-specific OPTIMIZE only (no global OPTIMIZE), so C-only flags are not passed to gfortran
    COPTIMIZE            = -g -Ofast -funroll-loops -flto -flto-partition=one -fno-builtin-memcpy -fno-builtin-memmove
    CXXOPTIMIZE          = -g -Ofast -funroll-loops -flto -flto-partition=one -fno-builtin-memcpy -fno-builtin-memmove
    FOPTIMIZE            = -g -Ofast -funroll-loops -flto

    EXTRA_OPTIMIZE      = -mabi=lp64d
    EXTRA_FFLAGS        = -mabi=lp64d
    PORTABILITY         = -DSPEC_CPU_LP64
    FPORTABILITY        = -DSPEC_CPU_LP64
    LDCXXFLAGS          = -Wl,--allow-multiple-definition

テストベンチとしては、 410.bwaves433.milc を使用してみた。

410.bwaves は、ビルドはできるようだが、シミュレーションが失敗するようだ。

Running Benchmarks           
  Running 410.bwaves ref base gcc default
                                                                                     
410.bwaves: copy 0 non-zero return code (exit code=11, signal=0)
                                                                                     

****************************************
Contents of bwaves.err                                                     
****************************************
Segmentation fault (core dumped)                        
                                                                                     
****************************************
Error: 1x410.bwaves                                                                                                                                                        
Producing Raw Reports
mach: default                                                         
  ext: gcc                                                                     
    size: ref                    
      set: int                 
      set: fp                          
        format: raw -> /home/kimura/work/bench_trace/bench_trace_env/spec2006_work/spec2006_installed/result/CFP2006.066.ref.rsf
Parsing flags for 410.bwaves base: done                                                                                                                                    
Doing flag reduction: done   
        format: CSV -> /home/kimura/work/bench_trace/bench_trace_env/spec2006_work/spec2006_installed/result/CFP2006.066.ref.csv
                                                                                     
The log for this run is in /home/kimura/work/bench_trace/bench_trace_env/spec2006_work/spec2006_installed/result/CPU2006.066.log
The debug log for this run is in /home/kimura/work/bench_trace/bench_trace_env/spec2006_work/spec2006_installed/result/CPU2006.066.log.debug

433.milc の方は一応、シミュレーションは動き出したようだ。

410.bwaves のシミュレーションで落ちる

確かに、410.bwavesを実行してみると、Segmentation Faultで落ちた。

../../../../../../../qemu-9.2.4/build/qemu-riscv64 -L /riscv-linux/sysroot ../run_base_ref_gcc.0000/bwaves_base.gcc 
Segmentation fault (core dumped)

これをGDBで見てみようと思い、接続してみた。

  • (サーバ側)
../../../../../../../qemu-9.2.4/build/qemu-riscv64 -g 8888 -L /riscv-linux/sysroot ../run_base_ref_gcc.0000/bwaves_base.gcc
  • (クライアント側)
$ gdb
(gdb) target remote :8888
Remote debugging using :8888
warning: while parsing target description (at line 1): Target description specified unknown architecture "riscv:rv64"
warning: Could not load XML target description; ignoring
Reading /home/kimura/work/bench_trace/bench_trace_env/spec2006_work/spec2006_installed/benchspec/CPU2006/410.bwaves/run/run_base_ref_gcc.0000/bwaves_base.gcc from remote target...
warning: File transfers from remote targets can be slow. Use "set sysroot" to access files locally instead.
Reading /home/kimura/work/bench_trace/bench_trace_env/spec2006_work/spec2006_installed/benchspec/CPU2006/410.bwaves/run/run_base_ref_gcc.0000/bwaves_base.gcc from remote target...
Reading symbols from target:/home/kimura/work/bench_trace/bench_trace_env/spec2006_work/spec2006_installed/benchspec/CPU2006/410.bwaves/run/run_base_ref_gcc.0000/bwaves_base.gcc...
Truncated register 37 in remote 'g' packet

あら、これは riscv64-unknown-linux-gnu-gdb を使う必要があるらしい。

  • (サーバ側)
../../../../../../../qemu-9.2.4/build/qemu-riscv64 -g 8888 -L /riscv-linux/sysroot /home/kimura/work/bench_trace/bench_trace_env/spec2006_work/spec2006_installed/benchspec/CPU2006/410.bwaves/run/run_base_ref_gcc.0000/bwaves_base.gcc
  • (クライアント側)
riscv64-unknown-linux-gnu-gdb /home/kimura/work/bench_trace/bench_trace_env/spec2006_work/spec2006_installed/benchspec/CPU2006/410.bwaves/run/run_base_ref_gcc.0000/bwaves_base.gcc
(gdb) target remote :8888
Remote debugging using :8888
Reading symbols from /riscv-linux/sysroot/lib/ld-linux-riscv64-lp64d.so.1...
(No debugging symbols found in /riscv-linux/sysroot/lib/ld-linux-riscv64-lp64d.so.1)
0x00001465080d9a26 in _start () from /riscv-linux/sysroot/lib/ld-linux-riscv64-lp64d.so.1
(gdb) bt
#0  0x00001465080d9a26 in _start () from /riscv-linux/sysroot/lib/ld-linux-riscv64-lp64d.so.1
#1  0x0000000000000000 in ?? ()
Backtrace stopped: frame did not save the PC
(gdb) continue 
Continuing.

Program received signal SIGSEGV, Segmentation fault.
shell (re=100000, pr=0.71999999999999997, nx=65, ny=65, nz=64, nuim=0.10000000000000001, nuex2=0.10000000000000001, nuex4=0.050000000000000003, cfl=2, scheme=1, 
    conf=<optimized out>, ni=<optimized out>, maxit=0) at shell_lam.f:56
56                       xyz(2,i,j,k)=t2

スタック不足で落ちているらしい。以下で修正できた。

../../../../../../../qemu-9.2.4/build/qemu-riscv64 -s 1024M -L /riscv-linux/sysroot /home/kimura/work/bench_trace/bench_trace_env/spec2006_work/spec2006_installed/benchspec/CPU2006/410.bwaves/run/run_base_ref_gcc.0000/bwaves_base.gcc



以上の内容はhttps://msyksphinz.hatenablog.com/entry/2026/01/29/040000より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14