2016/03/27
Raspberry Pi 3 の速度比較, Cortex-A53 の速度
Raspberry Pi 3 を入手したので簡単にベンチマークを取ってみました。
昨年似たスペックの DragonBoard 410c (Snapdragon 410) が発売されています。CPU は Cortex-A53 1.2GHz quad でほぼ同等、どちらもオンボードで Wi-Fi/BT を搭載しています。RAM は Pi 3 の方が若干遅く内蔵ストレージも無いですが、値段は半分以下となっています。少々残念なのは Pi 3 の OS が 32bit なことです。DragonBoard の方は 64bit で動作しています。
いつものコンパイル時間を比較してみました。 (Time が小さい方が高速)
やはり DragonBaord 410c と近い数値になっています。SD Card の差もあるので一概には言えませんが、初代と比べておよそ 10倍、Pi 2 と比べても 2倍以上高速です。
スペック込み&より多くのデバイスとの比較は下記の通りです。
・C/T = Core数/Thread数
vfp benchmark の比較はこちら (単位は GFLOPS、値が大きい方が速い)
・SP=単精度, DP=倍精度, ST=SingleThread, MT=MultiThread
あくまでピーク値なので実際のソフトウエアでここまで差がでるわけではありませんが、潜在能力としては Pi 2 の 5倍以上の差がついています。(SIMD で 4倍 x clock差) 単精度では 初代 Pi と比べると 55倍も高速です。将来的に 64bit に対応すれば、倍精度演算も DragonBoard と同じくらいの速度に上昇するでしょう。
Cortex-A53 は big.LITTLE の LITTLE として使われていますが、浮動小数点演算に関しては A7 から大幅に拡張されており big core に近い構成になっています。下記スライド写真からも「2 倍精度 MAC / cycle」「4 単精度 MAC / cycle」であることがわかります。
・マイナビニュース ARM TechCon 2012 - 64bitプロセッサ「Cortex-A50」シリーズの概要が公開される/Cortex-A53編
さらに下位の Cortex-A35 が登場予定となっており、こちらが本来の Cortex-A7 相当の 64bit プロセッサになるものと思われます。
下記ページを更新しました。
・VFP Benchmark Log 計測結果まとめ
・CPU の浮動小数点演算能力の詳細
関連エントリ
・ARM Cortex-A53 の浮動小数点演算速度とコンパイル時間の比較
・2955U vs N3150/J1900/Athlon5350 (コンパイル時間の比較)
・Raspberry Pi 2 で速くなったコンパイル時間の比較
昨年似たスペックの DragonBoard 410c (Snapdragon 410) が発売されています。CPU は Cortex-A53 1.2GHz quad でほぼ同等、どちらもオンボードで Wi-Fi/BT を搭載しています。RAM は Pi 3 の方が若干遅く内蔵ストレージも無いですが、値段は半分以下となっています。少々残念なのは Pi 3 の OS が 32bit なことです。DragonBoard の方は 64bit で動作しています。
いつものコンパイル時間を比較してみました。 (Time が小さい方が高速)
Device | Time | |
---|---|---|
Raspberry Pi 3 | 175 sec ( 2m55s) | 10.8x |
DragonBaord 410c | 186 sec ( 3m06s) | 10.1x |
Raspberry Pi 2 | 402 sec ( 6m42s) | 4.7x |
Raspberry Pi | 1893 sec (31m33s) | 1.0x |
やはり DragonBaord 410c と近い数値になっています。SD Card の差もあるので一概には言えませんが、初代と比べておよそ 10倍、Pi 2 と比べても 2倍以上高速です。
スペック込み&より多くのデバイスとの比較は下記の通りです。
Device | core | clock | C/T | 64 | RAM | Time |
---|---|---|---|---|---|---|
Core i7-4790K | Haswell | 4.0GHz | 4/8 | Y | 16GB | 15 sec ( 0m15s) |
Celeron J1900 | Silvermont | 2.0GHz | 4/4 | Y | 8GB | 88 sec ( 1m28s) |
Athlon 5350 | Jaguar | 2.0GHz | 4/4 | Y | 8GB | 88 sec ( 1m28s) |
Celeron 2955U | Haswell | 1.4GHz | 2/2 | Y | 4GB | 93 sec ( 1m33s) |
Celeron N3150 | Airmont | 1.6GHz | 4/4 | Y | 16GB | 108 sec ( 1m48s) |
Raspberry Pi 3 | Cortex-A53 | 1.2GHz | 4/4 | N | 1GB | 175 sec ( 2m55s) |
DragonBaord 410c | Cortex-A53 | 1.2GHz | 4/4 | Y | 1GB | 186 sec ( 3m06s) |
Raspberry Pi 2 | Cortex-A7 | 0.9GHz | 4/4 | N | 1GB | 402 sec ( 6m42s) |
Atom Z540 | Bonnell | 1.8GHz | 1/2 | N | 2GB | 426 sec ( 7m06s) |
Raspberry Pi | ARM1176 | 0.7GHz | 1/1 | N | 0.5GB | 1893 sec (31m33s) |
Netwalker | Cortex-A8 | 0.8GHz | 1/1 | N | 0.5GB | 1902 sec (31m42s) |
・C/T = Core数/Thread数
vfp benchmark の比較はこちら (単位は GFLOPS、値が大きい方が速い)
Device | arch | SP-ST | DP-ST | SP-MT | DP-MT |
---|---|---|---|---|---|
DragonBoard 410c | ARMv8A | 9.498 | 4.749 | 37.965 | 18.603 |
Raspberry Pi 3 | ARMv7A | 9.431 | 2.477 | 37.442 | 9.994 |
Raspberry Pi 2 | ARMv7A | 1.791 | 0.877 | 7.087 | 3.472 |
Raspberry Pi | ARMv6 | 0.674 | 0.674 | 0.674 | 0.674 |
・SP=単精度, DP=倍精度, ST=SingleThread, MT=MultiThread
あくまでピーク値なので実際のソフトウエアでここまで差がでるわけではありませんが、潜在能力としては Pi 2 の 5倍以上の差がついています。(SIMD で 4倍 x clock差) 単精度では 初代 Pi と比べると 55倍も高速です。将来的に 64bit に対応すれば、倍精度演算も DragonBoard と同じくらいの速度に上昇するでしょう。
Cortex-A53 は big.LITTLE の LITTLE として使われていますが、浮動小数点演算に関しては A7 から大幅に拡張されており big core に近い構成になっています。下記スライド写真からも「2 倍精度 MAC / cycle」「4 単精度 MAC / cycle」であることがわかります。
・マイナビニュース ARM TechCon 2012 - 64bitプロセッサ「Cortex-A50」シリーズの概要が公開される/Cortex-A53編
さらに下位の Cortex-A35 が登場予定となっており、こちらが本来の Cortex-A7 相当の 64bit プロセッサになるものと思われます。
下記ページを更新しました。
・VFP Benchmark Log 計測結果まとめ
・CPU の浮動小数点演算能力の詳細
関連エントリ
・ARM Cortex-A53 の浮動小数点演算速度とコンパイル時間の比較
・2955U vs N3150/J1900/Athlon5350 (コンパイル時間の比較)
・Raspberry Pi 2 で速くなったコンパイル時間の比較
2016/03/26
Android NDK r11b
早くも NDK r11b がリリースされています。
・Android NDK Downloads
Android N の Java API は OpenGL ES 3.2 に対応しましたが、NDK にはまだ含まれていないようです。
・Android N for Developers : OpenGL ES 3.2 API
まとめると下記の通り。
Platform-19 以前で build すると __pure2 シンボルで問題が出ることがあります。
下記の修正でとりあえず対処できます。
include/math.h
関連エントリ
・Android N Preview と Vulkan (2) NDK r11
・Android NDK Downloads
Android N の Java API は OpenGL ES 3.2 に対応しましたが、NDK にはまだ含まれていないようです。
・Android N for Developers : OpenGL ES 3.2 API
まとめると下記の通り。
Android N OpenGL ES 3.2 Vulkan -------------------------------------------------- Java API (preview) Y N NDK r11b Platform-24 N Y
Platform-19 以前で build すると __pure2 シンボルで問題が出ることがあります。
下記の修正でとりあえず対処できます。
include/math.h
#undef __pure2 // ← 追加
#define __pure2
#define __pure2
関連エントリ
・Android N Preview と Vulkan (2) NDK r11
2016/03/13
Android N Preview と Vulkan (2) NDK r11
Android NDK r11 がリリースされました。Vulkan に対応しています。
・Android NDK Downloads
これで Android N 対応の Mobile Device で Vulkan が利用できるようになります。
Android N Preview 対応デバイスについてはこちら↓も参考にしてください。
・Android N Preview と Vulkan / OpenGL ES 3.2
2014年の Metal からだいぶ時間が経ちましたが、Android でもようやく Grahics 向けの低レベル API が使えるようになります。最初はいろいろ面倒でハードルが高いですが、互換性問題の解消や Desktop API との統一化などメリットも多いので、徐々に使われていくようになるのではないでしょうか。
関連エントリ
・Android N Preview と Vulkan / OpenGL ES 3.2
・Android NDK Downloads
これで Android N 対応の Mobile Device で Vulkan が利用できるようになります。
Android N Preview 対応デバイスについてはこちら↓も参考にしてください。
・Android N Preview と Vulkan / OpenGL ES 3.2
2014年の Metal からだいぶ時間が経ちましたが、Android でもようやく Grahics 向けの低レベル API が使えるようになります。最初はいろいろ面倒でハードルが高いですが、互換性問題の解消や Desktop API との統一化などメリットも多いので、徐々に使われていくようになるのではないでしょうか。
関連エントリ
・Android N Preview と Vulkan / OpenGL ES 3.2
2016/03/11
Android N Preview と Vulkan / OpenGL ES 3.2
Android N Preview が公開されています。
・Android N Developer Preview
Preview Image には libvulkan.so が含まれているので、Android N から Vulkan 対応になると思って間違いなさそうです。確認したのは Nexus Player 及び Nexus 9。NDK/SDK 側の用意がまだなので実際に利用できるかどうかは試していません。
なお SDK の方には新たに OpenGL ES 3.2 API が追加されているようです。
Android N Preview に対応しているデバイスは下記の通り。
いずれも OpenGL ES 3.1 以上をサポートしており、Vulkan に対応可能な GPU を搭載していることがわかります。
残念ながら Nexus 5 は含まれていませんでした。Nexus 5 は Adreno 330 (OpenGL ES 3.0) なので、Android N にアップグレードできても Vulkan はおそらく非対応となるでしょう。
関連エントリ
・低レベル Graphics API Vulkan 登場
・SHIELD Android TV (Tegra X1) は OpenGL ES 3.2 対応
・AEP を取り込んだ OpenGL ES 3.2 は機能面で Desktop に並ぶ, Android は Vulkan へ
・3D 低レベル API の現状 Direct3D 12/Metal
・CPU 負荷が低い 新しい 3D API
関連ページ
・3D Low overhead API (Low Level API) Metal/D3D12/Vulkan
・Android N Developer Preview
Preview Image には libvulkan.so が含まれているので、Android N から Vulkan 対応になると思って間違いなさそうです。確認したのは Nexus Player 及び Nexus 9。NDK/SDK 側の用意がまだなので実際に利用できるかどうかは試していません。
fugu:/system/lib $ ls -l *vul* -rw-r--r-- 1 root root 132640 2009-01-01 17:00 libvulkan.so
なお SDK の方には新たに OpenGL ES 3.2 API が追加されているようです。
Android N Preview に対応しているデバイスは下記の通り。
Device | SoC | GPU | API |
---|---|---|---|
Nexus 5X | Snapdragon 808 | Adreno 418 | ES3.1 AEP |
Nexus 6 | Snapdragon 805 | Adreno 420 | ES3.1 AEP |
Nexus 6P | Snapdragon 810 | Adreno 430 | ES3.1 AEP |
Nexus 9 | Tegra K1 | Kepler | ES3.1 AEP |
Nexus 9 LTE | Tegra K1 | Kepler | ES3.1 AEP |
Nexus Player | Bay-Trail Z3560 | PowerVR G6430 | ES3.1 |
Pixel C | Tegra X1 | Maxwell | ES3.1 AEP |
いずれも OpenGL ES 3.1 以上をサポートしており、Vulkan に対応可能な GPU を搭載していることがわかります。
残念ながら Nexus 5 は含まれていませんでした。Nexus 5 は Adreno 330 (OpenGL ES 3.0) なので、Android N にアップグレードできても Vulkan はおそらく非対応となるでしょう。
関連エントリ
・低レベル Graphics API Vulkan 登場
・SHIELD Android TV (Tegra X1) は OpenGL ES 3.2 対応
・AEP を取り込んだ OpenGL ES 3.2 は機能面で Desktop に並ぶ, Android は Vulkan へ
・3D 低レベル API の現状 Direct3D 12/Metal
・CPU 負荷が低い 新しい 3D API
関連ページ
・3D Low overhead API (Low Level API) Metal/D3D12/Vulkan