FPGA開発日記

FPGAというより、コンピュータアーキテクチャかもね! カテゴリ別記事インデックス https://sites.google.com/site/fpgadevelopindex/

Coremark-Proのクロスコンパイルを試す (MIPS/RISC-Vで挑戦)

最近あまり成果のないブログになってしまっている。新しいベンチマークを解析するのは、結構時間がかかるのだ...

さて、Coremark-Proのコンパイルを再度挑戦し続けている。 諸事情につき、別のアーキテクチャの有償コンパイラを用いた場合、全てのビルドには成功している、が、肝心のMIPSRISC-Vでコンパイルがうまくいかないのだ... どちらも、ライブラリの問題と、浮動小数点の問題にぶつかっている。

おそらくRISC-Vの方がコンパイラの筋が良いので、それを中心に挑戦しているが、どうもライブラリというか、コンパイラのオプション?が悪いらしい。

make[3]: ディレクトリ `/home/masayuki/benchmark/coremark-pro_1.1.2446/builds/riscv32/riscv32_gcc/obj/bench/darkmark/zip' から出ます
/home/masayuki/riscv-gnu-toolchain//bin/riscv-linux-ld   -o/home/masayuki/benchmark/coremark-pro_1.1.2446/builds/riscv32/riscv32_gcc/bin/zip-test.exe zip-test.o /home/masayuki/benchmark/coremark-pro_1.1.2446/builds/riscv32/riscv32_gcc/obj/bench/darkmark/zip/*.o  /home/masayuki/benchmark/coremark-pro_1.1.2446/builds/riscv32/riscv32_gcc/obj/mith.a -lm -lg -lc -lm -lg -lc
/home/masayuki/benchmark/coremark-pro_1.1.2446/builds/riscv32/riscv32_gcc/obj/mith.a(th_lib.o): 関数 `__signbit' 内:
/home/masayuki/riscv-gnu-toolchain/riscv-linux/include/bits/mathinline.h:46: `__signbit' が重複して定義されています
/home/masayuki/benchmark/coremark-pro_1.1.2446/builds/riscv32/riscv32_gcc/obj/bench/darkmark/zip/zip_darkmark.o:/home/masayuki/riscv-gnu-toolchain/riscv-linux/include/bits/mathinline.h:46: ここで最初に定義されています
/home/masayuki/benchmark/coremark-pro_1.1.2446/builds/riscv32/riscv32_gcc/obj/mith.a(th_lib.o): 関数 `__signbitf' 内:
/home/masayuki/riscv-gnu-toolchain/riscv-linux/include/bits/mathinline.h:53: `__signbitf' が重複して定義されています
/home/masayuki/benchmark/coremark-pro_1.1.2446/builds/riscv32/riscv32_gcc/obj/bench/darkmark/zip/zip_darkmark.o:/home/masayuki/riscv-gnu-toolchain/riscv-linux/include/bits/mathinline.h:53: ここで最初に定義されています
/home/masayuki/benchmark/coremark-pro_1.1.2446/builds/riscv32/riscv32_gcc/obj/mith.a(th_rand.o): 関数 `__signbit' 内:
/home/masayuki/riscv-gnu-toolchain/riscv-linux/include/bits/mathinline.h:46: `__signbit' が重複して定義されています
/home/masayuki/benchmark/coremark-pro_1.1.2446/builds/riscv32/riscv32_gcc/obj/bench/darkmark/zip/zip_darkmark.o:/home/masayuki/riscv-gnu-toolchain/riscv-linux/include/bits/mathinline.h:46: ここで最初に定義されています
/home/masayuki/benchmark/coremark-pro_1.1.2446/builds/riscv32/riscv32_gcc/obj/mith.a(th_rand.o): 関数 `__signbit' 内:
/home/masayuki/riscv-gnu-toolchain/riscv-linux/include/bits/mathinline.h:53: `__signbitf' が重複して定義されています
/home/masayuki/benchmark/coremark-pro_1.1.2446/builds/riscv32/riscv32_gcc/obj/bench/darkmark/zip/zip_darkmark.o:/home/masayuki/riscv-gnu-toolchain/riscv-linux/include/bits/mathinline.h:53: ここで最初に定義されています
/home/masayuki/riscv-gnu-toolchain//bin/riscv-linux-ld: 警告: エントリシンボル _start が見つかりません。デフォルトとして 0000000010001170 を使用します
/home/masayuki/benchmark/coremark-pro_1.1.2446/builds/riscv32/riscv32_gcc/obj/mith.a(mith_lib.o): 関数 `mith_wl_get_chain_mutex' 内:
/home/masayuki/benchmark/coremark-pro_1.1.2446/mith/src/mith_lib.c:376: `__divdf3' に対する定義されていない参照です
/home/masayuki/benchmark/coremark-pro_1.1.2446/mith/src/mith_lib.c:376: `__divdf3' に対する定義されていない参照です
/home/masayuki/benchmark/coremark-pro_1.1.2446/mith/src/mith_lib.c:376: `__divdf3' に対する定義されていない参照です
/home/masayuki/benchmark/coremark-pro_1.1.2446/mith/src/mith_lib.c:376: `__divdf3' に対する定義されていない参照です
/home/masayuki/benchmark/coremark-pro_1.1.2446/mith/src/mith_lib.c:417: `__divdf3' に対する定義されていない参照です

うーん、soft-floatは使ってコンパイルした記憶はないのだけれどなあ。 とりあえず、もうちょっと挑戦して、どうしてもだめなら、もう一度RISC-Vの環境をクリーンな環境で用意してコンパイルしなおす。

♯ これ以外に仕事から帰って活動していない訳ではないのだが、移植の時期でどうしてもあまり成果が出ないのだ...