2016/06/12
ARM CPU の浮動小数点演算能力まとめ
ARMv8A | NEON | flop |
---|---|---|
Apple Cyclone | 128bit mla 2 | 16 |
Apple Typhoon | 128bit mla 2 | 16 |
Apple Twister | 128bit mla 3 | 24 |
NVIDIA Denver | 128bit mla 1 + add 1 | 12 |
ARM Cortex-A53 | 64bit mla 2 | 8 |
ARM Cortex-A57 | 64bit mla 2 | 8 |
ARM Cortex-A72 | 64bit mla 2 | 8 |
Qualcomm Kyro | 64bit mla 1 + add 1 | 6 |
ARMv7A | NEON | flop |
ARM Cortex-A8 | 64bit mla 1 | 4 |
ARM Cortex-A9 | 32bit mac 1 | 2 |
ARM Cortex-A9 NEON | 64bit mla 1 | 4 |
ARM Cortex-A7 | 32bit fma 1 | 2 |
ARM Cortex-A15 | 64bit fma 2 | 8 |
Qualcomm Scorpion | 128bit mla 1 | 8 |
Qualcomm Krait | 128bit fma 1 | 8 |
Apple Swift | 128bit fma 1 | 8 |
暫定のまとめ。上の表は単精度のみです。vfpbench の結果から推定した値になります。
倍精度 (ARMv8A のみ) は下記のとおりです。
ARMv8A | NEON | flop-dp |
---|---|---|
Apple Cyclone | 128bit mla 2 | 8 |
Apple Typhoon | 128bit mla 2 | 8 |
Apple Twister | 128bit mla 2 | 8 |
NVIDIA Denver | 128bit mla 1 + add 1 | 6? |
ARM Cortex-A53 | 64bit mla 2 | 4 |
ARM Cortex-A57 | 64bit mla 2 | 4 |
ARM Cortex-A72 | 64bit mla 2 | 4 |
Qualcomm Kyro | 64bit mla 1 + add 1 | 3 |
関連ページ
・CPU の浮動小数点演算能力の詳細
・64bit ARMv8A CPU Core
・VFP Benchmark Log 計測結果まとめ
2016/06/10
HTC 10 Snapdragon 820 Kyro の浮動小数点演算能力
Snapdragon 820 は Qualcomm 独自の 64bit CPU core Kyro を搭載しています。vfpbench で浮動小数点演算速度を計測してみました。
Qualcomm はもともと自社製 CPU core の Scorpion や Krait シリーズを採用していました。早い時期から 1GHz を超える高クロック化、また multi-core 化を実現しており主にハイエンド SoC での差別化を図っています。
ところが 64bit 時代に入ると一転し、フラグシップの Snapdragon 810 も ARM の一般的な Cortex-A57/A53 の big.LITTLE 構成となっていました。Kyro は久々に登場した Qualcomm の独自 CPU でかつ初の 64bit core になります。
2 + 2 の非対称 Multi core なので vfpbench では正しく計測することができませんでした。そのため Single-Thread 時の結果を中心に見ています。
Snapdragon 820 Kyro (2.2GHz x2 + 1.6GHz x2)
上の値は 1 core あたりの性能です。思ったよりも低い数値が出ています。より詳細なログは下記の通り。
乗算、加算ともに 64bit 単位で、1 cycle あたり 乗算1, 加算2 の構成になっているように見えます。よって 32bit 単精度の場合は 6 flop/cycle となり、Atom 系 (Silvermont, Airmont) に近い値になると思われます。同時に積和命令だけではピークにならないので、実際の理論値はおそらく 6 flop x 2.2GHz = 13.2 GFLOPS くらいでしょうか。2+2 の 4 core で 45.6 GFLOSP 前後。
上の vfpbench の結果は 4 flop/cycle 時のピーク値なので、4 x 2.2GHz = 8.8 GFLOPS。それよりも数値が伸びているので、2.2GHz よりも高い clock に boost されている可能性があります。もしくは、パイプラインが深いために vfpbench でピーク性能を捉えきれていないだけかもしれません。
どちらにせよ、浮動小数点演算だけに注目すると若干控えめな結果といえます。世代が上がる毎に浮動小数点演算をひたすら強化してきた Apple Aシリーズとは大きく特性が異なります。なにせ Apple A9 Twister に至っては 24 flop/clock で初期の AVX を超えています。
倍精度の結果からも 64bit 単位のパイプラインになっているようです。余裕があれば、Multi-Thread 時を含めてもう少し詳しく調べてみたいと思っています。
関連エントリ
・iPhone SE, Apple A9 の浮動小数点演算速度
・Raspberry Pi 3 の速度比較, Cortex-A53 の速度
・ARM Cortex-A53 の浮動小数点演算速度とコンパイル時間の比較
・iPod touch 6 の浮動小数点演算速度は Core 2 Duo ライン超え
・iPad Air 2 (Apple A8X) の浮動小数点演算能力
Qualcomm はもともと自社製 CPU core の Scorpion や Krait シリーズを採用していました。早い時期から 1GHz を超える高クロック化、また multi-core 化を実現しており主にハイエンド SoC での差別化を図っています。
ところが 64bit 時代に入ると一転し、フラグシップの Snapdragon 810 も ARM の一般的な Cortex-A57/A53 の big.LITTLE 構成となっていました。Kyro は久々に登場した Qualcomm の独自 CPU でかつ初の 64bit core になります。
2 + 2 の非対称 Multi core なので vfpbench では正しく計測することができませんでした。そのため Single-Thread 時の結果を中心に見ています。
Snapdragon 820 Kyro (2.2GHz x2 + 1.6GHz x2)
ARCH: ARMv8A CPU core: 4 VFP: AArch64 NEON FMA: Yes NEON: Yes Result SingleT SP max: 10.517 GFLOPS SingleT DP max: 5.216 GFLOPS
上の値は 1 core あたりの性能です。思ったよりも低い数値が出ています。より詳細なログは下記の通り。
* VFP/NEON (単精度 fp) single-thread sec MFLOPS --------------------------------------------------- FPU fmul (32bit x1) n8 : 0.469 2559.9 FPU fadd (32bit x1) n8 : 0.251 4777.4 FPU fmadd (32bit x1) n8 : 0.571 4205.1 NEON fmul.2s (32bit x2) n8 : 0.456 5257.7 NEON fadd.2s (32bit x2) n8 : 0.252 9510.8 NEON fmla.2s (32bit x2) n8 : 0.456 10516.8 NEON fmul.4s (32bit x4) n8 : 0.913 5258.8 NEON fadd.4s (32bit x4) n8 : 0.489 9825.7 NEON fmla.4s (32bit x4) n8 : 0.924 10387.4 FPU fmul (32bit x1) ns4 : 1.141 1051.6 FPU fadd (32bit x1) ns4 : 0.685 1752.7 FPU fmadd (32bit x1) ns4 : 0.913 2630.1 NEON fmul.2s (32bit x2) ns4 : 1.141 2103.5 NEON fadd.2s (32bit x2) ns4 : 0.685 3504.8 NEON fmla.2s (32bit x2) ns4 : 1.146 4187.6 NEON fmul.4s (32bit x4) ns4 : 1.144 4194.1 NEON fadd.4s (32bit x4) ns4 : 0.728 6595.9 NEON fmla.4s (32bit x4) ns4 : 1.142 8403.3 FPU fmul (32bit x1) n1 : 0.459 2614.5 FPU fadd (32bit x1) n1 : 0.274 4380.9 FPU fmadd (32bit x1) n1 : 4.568 525.5 NEON fmul.2s (32bit x2) n1 : 0.458 5245.7 NEON fadd.2s (32bit x2) n1 : 0.251 9562.2 NEON fmla.2s (32bit x2) n1 : 3.651 1314.6 NEON fmul.4s (32bit x4) n1 : 0.913 5257.8 NEON fadd.4s (32bit x4) n1 : 0.488 9828.5 NEON fmla.4s (32bit x4) n1 : 3.651 2629.5 NEON fmul.4s (32bit x4) n12 : 1.376 5234.2 NEON fadd.4s (32bit x4) n12 : 0.720 10001.3 NEON fmla.4s (32bit x4) n12 : 1.381 10429.9
乗算、加算ともに 64bit 単位で、1 cycle あたり 乗算1, 加算2 の構成になっているように見えます。よって 32bit 単精度の場合は 6 flop/cycle となり、Atom 系 (Silvermont, Airmont) に近い値になると思われます。同時に積和命令だけではピークにならないので、実際の理論値はおそらく 6 flop x 2.2GHz = 13.2 GFLOPS くらいでしょうか。2+2 の 4 core で 45.6 GFLOSP 前後。
上の vfpbench の結果は 4 flop/cycle 時のピーク値なので、4 x 2.2GHz = 8.8 GFLOPS。それよりも数値が伸びているので、2.2GHz よりも高い clock に boost されている可能性があります。もしくは、パイプラインが深いために vfpbench でピーク性能を捉えきれていないだけかもしれません。
どちらにせよ、浮動小数点演算だけに注目すると若干控えめな結果といえます。世代が上がる毎に浮動小数点演算をひたすら強化してきた Apple Aシリーズとは大きく特性が異なります。なにせ Apple A9 Twister に至っては 24 flop/clock で初期の AVX を超えています。
* VFP/NEON (倍精度 fp) single-thread sec MFLOPS --------------------------------------------------- FPU fmul (64bit x1) n8 : 0.465 2578.8 FPU fadd (64bit x1) n8 : 0.251 4781.4 FPU fmadd (64bit x1) n8 : 0.685 3506.0 NEON fmul.2d (64bit x2) n8 : 0.913 2627.7 NEON fadd.2d (64bit x2) n8 : 0.489 4912.0 NEON fmla.2d (64bit x2) n8 : 0.924 5194.1 FPU fmul (64bit x1) ns4 : 1.369 876.4 FPU fadd (64bit x1) ns4 : 0.685 1752.6 FPU fmadd (64bit x1) ns4 : 0.913 2629.6 NEON fmul.2d (64bit x2) ns4 : 1.369 1752.7 NEON fadd.2d (64bit x2) ns4 : 0.727 3303.5 NEON fmla.2d (64bit x2) ns4 : 1.369 3505.0 FPU fmul (64bit x1) n1 : 0.456 2629.0 FPU fadd (64bit x1) n1 : 0.274 4379.8 FPU fmadd (64bit x1) n1 : 5.477 438.2 NEON fmul.2d (64bit x2) n1 : 0.913 2629.1 NEON fadd.2d (64bit x2) n1 : 0.489 4911.5 NEON fmla.2d (64bit x2) n1 : 3.651 1314.6 NEON fmul.2d (64bit x2) n12 : 1.369 2629.6 NEON fadd.2d (64bit x2) n12 : 0.721 4992.3 NEON fmla.2d (64bit x2) n12 : 1.380 5215.8
倍精度の結果からも 64bit 単位のパイプラインになっているようです。余裕があれば、Multi-Thread 時を含めてもう少し詳しく調べてみたいと思っています。
関連エントリ
・iPhone SE, Apple A9 の浮動小数点演算速度
・Raspberry Pi 3 の速度比較, Cortex-A53 の速度
・ARM Cortex-A53 の浮動小数点演算速度とコンパイル時間の比較
・iPod touch 6 の浮動小数点演算速度は Core 2 Duo ライン超え
・iPad Air 2 (Apple A8X) の浮動小数点演算能力
Snapdragon 820 (Adreno 530) の OpenGL ES の extension 結果です。Snapdragon 820 は Qualcomm 独自の 64bit CPU Kyro を搭載し、GPU も Adreno 530 に強化されています。
Android 6 なので ES 3.1 AEP 止まりですが、Android N 以降では ES 3.2 と Vulkan に対応するものと思われます。この中では ASTC HDR 対応が目を引きます。今までサポートしていたのは Mali だけでした。
Adreno 400 等、他の GPU のデータは下記からどうぞ。
・CPU/GPU OpenGL ES Extension (Mobile GPU)
HTC 10 Snapdragon 820 Android 6.0 CPU Kyro 2+2 core GPU Adreno 530
Android 6 なので ES 3.1 AEP 止まりですが、Android N 以降では ES 3.2 と Vulkan に対応するものと思われます。この中では ASTC HDR 対応が目を引きます。今までサポートしていたのは Mali だけでした。
GL_VENDOR: Qualcomm GL_RENDERER: Adreno (TM) 530 GL_VERSION: OpenGL ES 3.1 V@145.0 (GIT@I7b6ba47bd6) GL_EXTENSIONS: GL_OES_EGL_image GL_OES_EGL_image_external GL_OES_EGL_sync GL_OES_vertex_half_float GL_OES_framebuffer_object GL_OES_rgb8_rgba8 GL_OES_compressed_ETC1_RGB8_texture GL_AMD_compressed_ATC_texture GL_KHR_texture_compression_astc_ldr GL_KHR_texture_compression_astc_hdr GL_OES_texture_compression_astc GL_OES_texture_npot GL_EXT_texture_filter_anisotropic GL_EXT_texture_format_BGRA8888 GL_OES_texture_3D GL_EXT_color_buffer_float GL_EXT_color_buffer_half_float GL_QCOM_alpha_test GL_OES_depth24 GL_OES_packed_depth_stencil GL_OES_depth_texture GL_OES_depth_texture_cube_map GL_EXT_sRGB GL_OES_texture_float GL_OES_texture_float_linear GL_OES_texture_half_float GL_OES_texture_half_float_linear GL_EXT_texture_type_2_10_10_10_REV GL_EXT_texture_sRGB_decode GL_OES_element_index_uint GL_EXT_copy_image GL_EXT_geometry_shader GL_EXT_tessellation_shader GL_OES_texture_stencil8 GL_EXT_shader_io_blocks GL_OES_shader_image_atomic GL_OES_sample_variables GL_EXT_texture_border_clamp GL_EXT_multisampled_render_to_texture GL_OES_shader_multisample_interpolation GL_EXT_texture_cube_map_array GL_EXT_draw_buffers_indexed GL_EXT_gpu_shader5 GL_EXT_robustness GL_EXT_texture_buffer GL_EXT_shader_framebuffer_fetch GL_ARM_shader_framebuffer_fetch_depth_stencil GL_OES_texture_storage_multisample_2d_array GL_OES_sample_shading GL_OES_get_program_binary GL_EXT_debug_label GL_KHR_blend_equation_advanced GL_KHR_blend_equation_advanced_coherent GL_QCOM_tiled_rendering GL_ANDROID_extension_pack_es31a GL_EXT_primitive_bounding_box GL_OES_standard_derivatives GL_OES_vertex_array_object GL_EXT_disjoint_timer_query GL_KHR_debug GL_EXT_YUV_target GL_EXT_sRGB_write_control GL_EXT_texture_norm16 GL_EXT_discard_framebuffer GL_OES_surfaceless_context GL_OVR_multiview GL_OVR_multiview2 GL_EXT_texture_sRGB_R8 GL_KHR_no_error GL_EXT_debug_marker GL_OVR_multiview_multisampled_render_to_texture GL_EXT_buffer_storage GL_EXT_blit_framebuffer_paramsDisabled
Adreno 400 等、他の GPU のデータは下記からどうぞ。
・CPU/GPU OpenGL ES Extension (Mobile GPU)
2016/06/08
VR 対応 GPU の値段と Vive Controller 置き場
家の Vive Controller 置き場

RADEON RX 480 が発表されたので、VR 対応 GPU のおおよその値段を比べてみました。いずれも登場時のもので、その後の値下げ等は考慮していないものです。
VR 対応 GPU の Spec については こちら(wiki) を参照してください。
↓ Wiki もたまに更新しています。
・HMD VR Device spec 一覧
関連エントリ
・HTC Vive のセットアップと PC スペック、遅い PC で動くかどうか
・HTC Vive (VR ヘッドマウントディスプレイ) の接続

RADEON RX 480 が発表されたので、VR 対応 GPU のおおよその値段を比べてみました。いずれも登場時のもので、その後の値下げ等は考慮していないものです。
VR 対応 GPU の Spec については こちら(wiki) を参照してください。
GeForce GTX1080 | $599 |
GeForce GTX1070 | $379 |
GeForce GTX TITAN X | $999 |
GeForce GTX980 Ti | $649 |
GeForce GTX980 | $549 |
GeForce GTX970 | $329 |
RADEON RX 480 | $199 |
RADEON R9 Fury X | $649 |
RADEON R9 Nano | $649 |
RADEON R9 Fury | $549 |
RADEON R9 390X | $429 |
RADEON R9 390 | $329 |
RADEON R9 290X | $549 |
RADEON R9 290 | $399 |
↓ Wiki もたまに更新しています。
・HMD VR Device spec 一覧
関連エントリ
・HTC Vive のセットアップと PC スペック、遅い PC で動くかどうか
・HTC Vive (VR ヘッドマウントディスプレイ) の接続