目次: RISC-V
CoreMarkを以前(2019年7月5日の日記参照)測りましたが、ARM系のGCCのバージョンを上げたのと、x86系と、RISC-V系のFU740の計測結果を追加しました。FU540の値は以前のままです。
動作周波数については後述します。
コンパイル条件は下記の通りです。
Ryzen 7はなぜかO2よりOfastの方が遅かった(O2: 41946, Ofast: 40442)ので、O2の結果を採用しました。RK3399はCA72とCA53の2種類のコアがあるので、taskset 0x1 ./coremarkのように実行するコアを固定して計測しています。
CoreMarkのIterations/Secの結果はCPUの動作周波数の影響を受けてしまうため、CPUの性能比較をする際はIterations/SecをCPU動作周波数で割った値を使うことが多いです。
SoC (x86) | CPU/micro arch | Iterations/Sec | GHz | CoreMark/MHz | Board/Machine |
---|---|---|---|---|---|
Ryzen 9 5900X | Zen 3 | 44345.89800 | 4.7 | 9.435 | |
Ryzen 7 5700X | Zen 3 | 42040.35874 | 4.6 | 9.139 | |
Ryzen 9 3950X | Zen 2 | 36140.22407 | 4.5 | 8.031 | |
Core i5 8250U | Cabylake R | 29237.62883 | 3.6 | 7.694 | ThinkPad E480 |
Core i7 6700 | Skylake | 26963.26256 | 3.8 | 7.489 | |
Pentium J4205 | Goldmont | 13319.12627 | 2.6 | 5.122 | |
SoC (ARM) | CPU/micro arch | Iterations/Sec | GHz | CoreMark/MHz | Board/Machine |
A311D | CA73 | 12491.41215 | 2.2 | 5.677 | Khadas VIM3 |
A311D | CA53 | 5909.213000 | 1.8 | 3.282 | Khadas VIM3 |
RK3588 | CA76 | 18228.21728 | 2.4 | 7.595 | Radxa ROCK 5B |
RK3588 | CA55 | 6745.983074 | 1.8 | 3.747 | Radxa ROCK 5B |
RK3399 | CA72 | 10218.15767 | 1.8 | 5.676 | Pine64 ROCKPro64 |
RK3399 | CA53 | 4622.852300 | 1.4 | 3.302 | Pine64 ROCKPro64 |
RK3328 | CA53 | 4215.259238 | 1.3 | 3.242 | Pine64 ROCK64 |
RK3288 | CA17 | 8594.421439 | 1.8 | 4.774 | ASUS tinkerboard |
BCM2837 | CA53 | 3877.973113 | 1.2 | 3.231 | Raspberry Pi 3B |
SoC (RISC-V) | CPU/micro arch | Iterations/Sec | GHz | CoreMark/MHz | Board/Machine |
JH7110 | U74-MC | 5324.298161 | 1.5 | 3.549 | StarFive VisionFive 2 |
FU740 | U74-MC | 4134.509372 | 1.2 | 3.445 | SiFive HiFive Unmatched |
FU540 | U54-MC | 2255.130422 | 1.0 | 2.255 | SiFive HiFive Unleashed |
NS31A | NS31A | 58.164129 | 0.025 | 2.326 | Local RAM, FPGA(Digilent Arty A7-100T, Xilinx Artix-7) |
やはりx86系CPUの速さは圧倒的です。Ryzen 7は異次元の速さですし、ローエンド向けに思われがちなAtom系コアもARM Cortex-A72を圧倒しています。(12/28追記)Pentium J4205の動作周波数が間違っていた(1.5GHz → 2.6GHz)ので修正しました。
RISC-V勢はFU540(U54-MCコア)はかなり遅く、FU740(U74-MCコア)でやっとRK3328(Cortex-A53コア)などのSoCと並ぶくらいです。FU740を搭載したHiFive UnmatchedはPCと同じホームファクタのMini-ITXを採用しており、NVMe SSDやグラフィックカードが装着できる点などは非常に素晴らしいのですが……、PCの代わりに使用するとなると非力すぎて、RISC-V PCを名乗るにはまだ厳しそうですね。
LinuxでCPUの動作周波数を取得する方法は色々あって、イマイチ統一感がないですけれども、このベンチマークでは下記のようにしています。
FU740の動作周波数はCore PLL(/sys/kernel/debug/clk/corepll/clk_rateの値 = 1196000000)から得ました。ARM系はCPU周波数が負荷に応じて変化するため、yes > /dev/nullなどを起動してCPUに負荷をかけた状態で見ています。
もし私が何か勘違いしていてCPU動作周波数を間違えているとどうなるかというと、Coremark/MHzが間違った値になります。Iteration/Secは変わりません。
今日、東京や千葉で輪のような形で雨が降っていると教えてもらいました。本当だ……不思議な現象ですね。
この現象、調べてみると既に名前がついていて「ブライトバンド」と呼ぶそうです。かっこいい名前ですね。ブライトバンドについてはウェザーニュースの解説が非常にわかりやすかったです(参考: 秋田県の雨雲レーダーに映る 謎のドーナツ型の正体は? - ウェザーニュース)。
詳しくはぜひウェザーニュースの解説を読んでいただきたいですが、簡単に言えばレーダーが融解層(雪→雨に変わる部分)を捉えて過剰に反応している状態で、実際には強い雨が降っているとは限らないとのこと。
ブライトバンドが出ているときに降水量の過去情報を見ると、ブライトバンドは出たり消えたりするだけで、その場からほとんど動かないことがわかります。
30分経っても移動しない(松戸、取手、習志野の近辺のまま、横浜の輪は消えた)
天気予報システムはブライトバンド=強い雨雲と解釈して予想をするようで、輪が他の雨雲とともに移動するような予報を出しています。気象の専門家ではないので「それが何か問題でも?」に対する答えは持ち合わせていませんが……。
1時間後の予報、輪が移動している(習志野の近辺が右に流れている)
ブライトバンドの付近での局所予報は少し食い違うかもしれませんが、過去情報と予報を見比べても特に破綻しているようには見えませんし、ブライトバンドを雨雲とみなそうが、無視しようが大勢に影響はないのでしょう。
目次: 独自OS
最近、趣味&趣味からの発展で仕事でも独自OSを作成しています。独自OSの設計目標は下記の通りです。
最初の2つの項目は大抵トレードオフですが、3つ目の項目を活かして軽く&便利を両立させることが狙いです。
「便利、手軽」の実現のため、ソースコードレベルの互換性の確保を目指します。具体的にはLinux用に書かれたソースコードをそのままアクセラレータ用にコンパイル&実行できれば、プログラマから見てLinuxの使い勝手を実現できている、と言えるはずです。
一方で「軽く、速く」を実現するため、Linuxとのソース互換を目指しつつも、アクセラレータ向けに割り切った制限をいくつか設けます。
これらの制限が妥当かどうか?について今は結論は出ないので、実装して使って問題があれば今後修正したいと思います。アクセラレータやOSに詳しい方々の意見も聞いてみたいです。
アクセラレータに処理を依頼する際のインタフェースはいくつかありますが、いずれも定番ではなさそうです。今回はOpenCL風のAPIを採用しました。OpenCL規格に準拠はしませんが、ある程度(例えばclinfoに応答できる程度)のOpenCL APIを実装します(ホスト側のソースコードのリンク)。
ホストとアクセラレータ間のデータ移動や実行制御の方法も考える必要があります。ホスト側からアクセラレータ側に何か計算を依頼するケースと、もう一つアクセラレータ側のスタンドアローン実行(ホスト側から制御なしでアクセラレータ側のみ単独実行するモード)はデバッグの利便性を考えると、必須に近い機能です。
またホスト側に過度に依存しないように、ホスト側のAPIが気に入らなくなったら別のAPIを実装することができるように、アクセラレータ側の独自OSとは別のリポジトリに分離して実装します。
独自にOSを実装する道を選びました。既存のOSSを改造するより実装期間が短く済むと思ったくらいで、独自実装しなければならない強力な理由はないです。個人的な理由も入れて良ければ、独自OS実装に対する興味があったことが大きいです。
RTOSにLinux互換レイヤを積む方法、Linuxをダウンサイズする方法、などでも実現できるのではないでしょうか。Linuxをダウンサイズする方法だとスレッド周りの制約実現が難しいですかね……?やったことがないので何とも言えません。
そんなの簡単にできるよ、という方はぜひOS作成フレンズになりましょう。
< | 2022 | > | ||||
<< | < | 12 | > | >> | ||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
- | - | - | - | 1 | 2 | 3 |
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
合計:
本日:
管理者: Katsuhiro Suzuki(katsuhiro( a t )katsuster.net)
This is Simple Diary 1.0
Copyright(C) Katsuhiro Suzuki 2006-2023.
Powered by PHP 8.2.15.
using GD bundled (2.1.0 compatible)(png support.)