2014/10/30
iPad Air 2 (Apple A8X) の GPU
一番大きな違いは ASTC のサポートです。
Metal の時代に今更 OpenGL ES という気もしますが念のため。
A8X では A7 になかった ASTC 圧縮テクスチャ形式が追加されています。
ASTC について詳しくは下記を参照してください。
・OpenGL 4.3/GLES 3.0 次の圧縮テクスチャ ASTC
・OpenGL ES 3.0 / OpenGL 4.3 ASTC 圧縮テクスチャの比較
OpenGL ES は 3.0 のままですが、すでに Metal API があるので
無くてもあまり問題は無いと思われます。
Metal では ES 3.1 相当の機能を利用することができます。
下記ページを更新しました。
・CPU/GPU OpenGL ES Extension (Mobile GPU)
関連エントリ
・iPhone 5s の Apple A7 GPU
・OpenGL ES 3.0 / OpenGL 4.3 ASTC 圧縮テクスチャの比較
・OpenGL 4.3/GLES 3.0 次の圧縮テクスチャ ASTC
・OpenGL ES 3.0 / OpenGL 4.3 ETC2 テクスチャ圧縮の比較
GL_VERSION: OpenGL ES 3.0 Apple A8X GPU - 50.6.10 GL_RENDERER: Apple A8X GPU GL_VENDOR: Apple Inc. GL_SHADING_LANGUAGE_VERSION: OpenGL ES GLSL ES 3.00
Metal の時代に今更 OpenGL ES という気もしますが念のため。
A8X では A7 になかった ASTC 圧縮テクスチャ形式が追加されています。
ASTC について詳しくは下記を参照してください。
・OpenGL 4.3/GLES 3.0 次の圧縮テクスチャ ASTC
・OpenGL ES 3.0 / OpenGL 4.3 ASTC 圧縮テクスチャの比較
OpenGL ES は 3.0 のままですが、すでに Metal API があるので
無くてもあまり問題は無いと思われます。
Metal では ES 3.1 相当の機能を利用することができます。
Extension: GL_OES_standard_derivatives GL_KHR_texture_compression_astc_ldr GL_EXT_color_buffer_half_float GL_EXT_debug_label GL_EXT_debug_marker GL_EXT_pvrtc_sRGB GL_EXT_read_format_bgra GL_EXT_separate_shader_objects GL_EXT_shader_framebuffer_fetch GL_EXT_shader_texture_lod GL_EXT_shadow_samplers GL_EXT_texture_filter_anisotropic GL_APPLE_clip_distance GL_APPLE_color_buffer_packed_float GL_APPLE_copy_texture_levels GL_APPLE_rgb_422 GL_APPLE_texture_format_BGRA8888 GL_IMG_read_format GL_IMG_texture_compression_pvrtc TextureFormat 42 00=8c00 GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG 01=8c01 GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG 02=8c02 GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG 03=8c03 GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG 04=9270 GL_COMPRESSED_R11_EAC 05=9271 GL_COMPRESSED_SIGNED_R11_EAC 06=9272 GL_COMPRESSED_RG11_EAC 07=9273 GL_COMPRESSED_SIGNED_RG11_EAC 08=9274 GL_COMPRESSED_RGB8_ETC2 09=9275 GL_COMPRESSED_SRGB8_ETC2 10=9278 GL_COMPRESSED_RGBA8_ETC2_EAC 11=9279 GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC 12=9276 GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 13=9277 GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 14=93b0 GL_COMPRESSED_RGBA_ASTC_4x4_KHR 15=93b1 GL_COMPRESSED_RGBA_ASTC_5x4_KHR 16=93b2 GL_COMPRESSED_RGBA_ASTC_5x5_KHR 17=93b3 GL_COMPRESSED_RGBA_ASTC_6x5_KHR 18=93b4 GL_COMPRESSED_RGBA_ASTC_6x6_KHR 19=93b5 GL_COMPRESSED_RGBA_ASTC_8x5_KHR 20=93b6 GL_COMPRESSED_RGBA_ASTC_8x6_KHR 21=93b7 GL_COMPRESSED_RGBA_ASTC_8x8_KHR 22=93b8 GL_COMPRESSED_RGBA_ASTC_10x5_KHR 23=93b9 GL_COMPRESSED_RGBA_ASTC_10x6_KHR 24=93ba GL_COMPRESSED_RGBA_ASTC_10x8_KHR 25=93bb GL_COMPRESSED_RGBA_ASTC_10x10_KHR 26=93bc GL_COMPRESSED_RGBA_ASTC_12x10_KHR 27=93bd GL_COMPRESSED_RGBA_ASTC_12x12_KHR 28=93d0 GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR 29=93d1 GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR 30=93d2 GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR 31=93d3 GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR 32=93d4 GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR 33=93d5 GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR 34=93d6 GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR 35=93d7 GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR 36=93d8 GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR 37=93d9 GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR 38=93da GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR 39=93db GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR 40=93dc GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR 41=93dd GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR
下記ページを更新しました。
・CPU/GPU OpenGL ES Extension (Mobile GPU)
関連エントリ
・iPhone 5s の Apple A7 GPU
・OpenGL ES 3.0 / OpenGL 4.3 ASTC 圧縮テクスチャの比較
・OpenGL 4.3/GLES 3.0 次の圧縮テクスチャ ASTC
・OpenGL ES 3.0 / OpenGL 4.3 ETC2 テクスチャ圧縮の比較
2014/10/29
iPad Air 2 (Apple A8X) の浮動小数点演算能力
iPad Air 2 (A8X) の浮動小数点演算能力を調べてみました。
より詳細なログは下記ページに乗せています。
・VFP Benchmark Log
↑本当に CPU が 3 core でした。
モバイルデバイスではあまり見かけませんが Xbox360 や Wii U など
ゲーム機に多い印象です。
もともと Cyclone は Apple A7 でも浮動小数点演算能力が突出していた CPU
でしたが、A8X でもほぼ同様の傾向が出ています。
浮動小数点演算命令はスカラーベクター共に 2 命令同時に実行可能で、
NEON の 128bit 積和も並列に走ります。
動作クロックは低いものの、3 core になったことで他の ARM Core の
4 core に匹敵する数値となってます。(下記表の (*1) )
さらに命令毎のログを詳しく見ていくと、A7 で何故か遅かった
倍精度演算のスカラー積和が改善されていることがわかります。
↑ Apple A7 では、FPU fmadd の積和 (A-7) だけ 3.915 と実行時間が
余計にかかっていました。
同じ積和でも NEON fmla はそこまでの落ち込みはなく、
(B-7) 見てわかるようにむしろスカラーよりも高速に実行できています。
↑ Apple A8X ではスカラーの倍精度積和 (A-8) も NEON (B-8) と変わらない
速度で実行できており、Apple A7 の弱点が克服されていることになります。
この辺りの演算能力の違いをまとめたのが下記ページの表です。
・CPU の浮動小数点演算能力の詳細
関連エントリ
・Android x86 Binary Translator を試してみる
・Atom Bay Trail の浮動小数点演算能力
・VFP Benchmark v1.1 浮動小数点演算命令の速度 (NEON/SSE/AVX)
・ARM CPU の VFP Benchmark アプリ 浮動小数点演算速度の計測
・iPhone 5s A7 CPU の浮動小数点演算速度 (2) (arm64/AArch64/64bit)
・iPhone 5s A7 CPU の浮動小数点演算速度 (32bit)
・Nexus 10 CPU Cortex-A15 の速度
・Nexus 10 CPU Cortex-A15 の浮動小数点演算速度
・Qualcomm APQ8064 GPU Adreno 320 の速度
・Qualcomm APQ8064 Krait/A6 swift の浮動小数点演算能力
・ARM Cortex-A8 の NEON と浮動小数演算最適化
・benchmark 関連
より詳細なログは下記ページに乗せています。
・VFP Benchmark Log
// iPad 2 Air (Apple A8X) ARCH: ARMv8A VFP: AArch64 NEON SingleT SP max: 23.568 GFLOPS SingleT DP max: 11.751 GFLOPS MultiT SP max: 68.591 GFLOPS MultiT DP max: 33.968 GFLOPS CPU core: 3 FMA: Yes NEON: Yes
↑本当に CPU が 3 core でした。
モバイルデバイスではあまり見かけませんが Xbox360 や Wii U など
ゲーム機に多い印象です。
もともと Cyclone は Apple A7 でも浮動小数点演算能力が突出していた CPU
でしたが、A8X でもほぼ同様の傾向が出ています。
浮動小数点演算命令はスカラーベクター共に 2 命令同時に実行可能で、
NEON の 128bit 積和も並列に走ります。
動作クロックは低いものの、3 core になったことで他の ARM Core の
4 core に匹敵する数値となってます。(下記表の (*1) )
Apple A8X Snapdragon 800 Tegra K1 Atom Z3745 Cyclone Krait 400 Cortex-A15 Silvermont 1.5GHz x3 2.2GHz x4 2.2GHz x4 1.83GHz x4 ------------------------------------------------------------------ SingleT SP 23.568 17.128 17.136 8.946 SingleT DP 11.751 4.289 3.431 2.797 MultiT SP(*1) 68.591 67.539 70.174 35.473 MultiT DP 33.968 16.874 14.036 11.060 * 数値は GFLOPS 、値が大きい方が速い * 倍精度 (DP) で大きく差が付いているのは ARMv7A (32bit) に NEON が無いため * ピーク値なので実際のアプリケーション動作速度とは異なります
さらに命令毎のログを詳しく見ていくと、A7 で何故か遅かった
倍精度演算のスカラー積和が改善されていることがわかります。
// iPhone 5s (Apple A7) 倍精度演算 実行時間 演算数 演算数 --------------------------------------------------------------- FPU fmul (64bit x1) n8 : 1.642 2436.1 2436.1 FPU fadd (64bit x1) n8 : 1.045 3827.0 3827.0 FPU fmadd (64bit x1) n8 : 3.915 2043.6 2043.6 --- (A-7) NEON fmul.2d (64bit x2) n8 : 1.567 5105.1 5105.1 NEON fadd.2d (64bit x2) n8 : 1.034 7736.5 7736.5 NEON fmla.2d (64bit x2) n8 : 1.958 8172.1 8172.1 --- (B-7)
↑ Apple A7 では、FPU fmadd の積和 (A-7) だけ 3.915 と実行時間が
余計にかかっていました。
同じ積和でも NEON fmla はそこまでの落ち込みはなく、
(B-7) 見てわかるようにむしろスカラーよりも高速に実行できています。
// iPad Air 2 (Apple A8X) 倍精度演算 実行時間 演算数 演算数 --------------------------------------------------------------- VFP fmul (64bit x1) n8 : 1.442 2773.8 2773.8 VFP fadd (64bit x1) n8 : 0.926 4321.2 4321.2 VFP fmadd (64bit x1) n8 : 1.772 4513.6 4513.6 --- (A-8) NEON fmul.2d (64bit x2) n8 : 1.408 5681.0 5681.0 NEON fadd.2d (64bit x2) n8 : 0.922 8680.2 8680.2 NEON fmla.2d (64bit x2) n8 : 1.744 9175.5 9175.5 --- (B-8)
↑ Apple A8X ではスカラーの倍精度積和 (A-8) も NEON (B-8) と変わらない
速度で実行できており、Apple A7 の弱点が克服されていることになります。
この辺りの演算能力の違いをまとめたのが下記ページの表です。
・CPU の浮動小数点演算能力の詳細
関連エントリ
・Android x86 Binary Translator を試してみる
・Atom Bay Trail の浮動小数点演算能力
・VFP Benchmark v1.1 浮動小数点演算命令の速度 (NEON/SSE/AVX)
・ARM CPU の VFP Benchmark アプリ 浮動小数点演算速度の計測
・iPhone 5s A7 CPU の浮動小数点演算速度 (2) (arm64/AArch64/64bit)
・iPhone 5s A7 CPU の浮動小数点演算速度 (32bit)
・Nexus 10 CPU Cortex-A15 の速度
・Nexus 10 CPU Cortex-A15 の浮動小数点演算速度
・Qualcomm APQ8064 GPU Adreno 320 の速度
・Qualcomm APQ8064 Krait/A6 swift の浮動小数点演算能力
・ARM Cortex-A8 の NEON と浮動小数演算最適化
・benchmark 関連
2014/10/14
iOS8 で WebGL & 物理エンジンのベンチマーク結果
iOS 8 から WebGL が使えるようになりました。
平山さんが移植した物理エンジンのデモをさまざまな環境で走らせてみました。
(コメントで教えていただきました)
・3Dやわらか物理エンジンをemscriptenでJavaScript+WebGLに移植してみた
一応全部異なる CPU core です。(5種類)
iOS 端末でもきちんと動いています。
特に Apple A7 世代の端末なら非常に高速に動作することがわかります。
JavaScript + WebGL を使えば、Windows, Android, iOS, OSX, Linux と
どこでも動作可能な 3D アプリケーションを作れることになります。
ブラウザや端末によってまだ速度に差がありますが、
世代が進む毎に今後解消していくでしょう。
関連エントリ
・Emscripten C++ のアプリをブラウザで動かす (8) iOS でも動く
平山さんが移植した物理エンジンのデモをさまざまな環境で走らせてみました。
(コメントで教えていただきました)
・3Dやわらか物理エンジンをemscriptenでJavaScript+WebGLに移植してみた
60fps で何体出せたか --------------------------------------------------------------- iPad mini retina iOS8 Apple A7 Cyclone Safari 11体 iPad 4 iOS8 Apple A6 Swift Safari 2体 MeMO Pad7 ME176 A4.4 Z3740 Atom Chrome 1体 MeMO Pad7 ME176 A4.4 Z3740 Atom Firefox 10体 *1 Tegra Note 7 A4.4 Tegra 4 Cortex-A15 Chrome 4体 Tegra Note 7 A4.4 Tegra 4 Cortex-A15 Firefox 8体 *1 Nexus 5 A4.4 MSM8974 Krait 400 Chrome 4体 Nexus 5 A4.4 MSM8974 Krait 400 Firefox 8体 *1 *1Firefox ではテクスチャが表示されない問題あり
一応全部異なる CPU core です。(5種類)
iOS 端末でもきちんと動いています。
特に Apple A7 世代の端末なら非常に高速に動作することがわかります。
JavaScript + WebGL を使えば、Windows, Android, iOS, OSX, Linux と
どこでも動作可能な 3D アプリケーションを作れることになります。
ブラウザや端末によってまだ速度に差がありますが、
世代が進む毎に今後解消していくでしょう。
関連エントリ
・Emscripten C++ のアプリをブラウザで動かす (8) iOS でも動く
2014/10/12
ASUS MeMO Pad 7 ME176 で OpenGL ES 3.0 が復活
ASUS MeMO Pad 7 ME176 の最新ファームウエアで
再び OpenGL ES 3.0 が使えるようになっています。
以前の記事はこちら。
・Android BayTrail ME176 で OpenGL ES 3.0 が使えない
下記ページに追加しました。
・CPU/GPU OpenGL ES Extension (Mobile GPU)
関連エントリ
・Android BayTrail ME176 で OpenGL ES 3.0 が使えない
・Android の新しい GPU BayTrail-T Intel HD Graphics
再び OpenGL ES 3.0 が使えるようになっています。
Android 4.4.2 JP-3.2.23.182 GL_VERSION: OpenGL ES 3.0 - Build CL-260519-CI-15.33-24169 GL_RENDERER: Intel(R) HD Graphics for BayTrail GL_VENDOR: Intel GL_SHADING_LANGUAGE_VERSION: OpenGL ES GLSL ES 3.0 - Build CL-260519-CI-15.33-24169
以前の記事はこちら。
・Android BayTrail ME176 で OpenGL ES 3.0 が使えない
下記ページに追加しました。
・CPU/GPU OpenGL ES Extension (Mobile GPU)
関連エントリ
・Android BayTrail ME176 で OpenGL ES 3.0 が使えない
・Android の新しい GPU BayTrail-T Intel HD Graphics
Tegra K1 を搭載した SHILED Tablet が発売されました。
SHIELD Tablet の CPU Core は Tegra 4 同様 32bit Cortex-A15 Quad ですが、
GPU の本気度がこれまでと違います。
ブランドイメージに反して GPU が非力だった Tegra シリーズも、
K1 でようやく NVIDIA らしいスペックになったと言えるでしょう。
・NVIDIA SHIELD
OpenGL ES 3.1 に対応しており、OpenGL 4.x 相当の AEP
「 GL_ANDROID_extension_pack_es31a 」が付いています。
Tegra 2/3 の ULP GeForce は Direct3D 9 世代の GPU から
GLES 2.0 仕様ぎりぎりまで機能を削減したものでした。
Tegra 4 の ULP GeForce は同じ Direct3D 9 世代の GPU core のまま
本来のあるべき機能を復活させたもの。
Tegra K1 は Direct3D 11 世代の GPU core を搭載しています。
Shader Core 数が少ないだけで、対応 API など機能的には desktop GPU との差が
なくなっています。
CPU の VFP Benchmark の結果はこちら。
下記ページにも追加しました。
・CPU/GPU OpenGL ES Extension (Mobile GPU)
・VFP Benchmark Log
SHIELD Tablet の CPU Core は Tegra 4 同様 32bit Cortex-A15 Quad ですが、
GPU の本気度がこれまでと違います。
ブランドイメージに反して GPU が非力だった Tegra シリーズも、
K1 でようやく NVIDIA らしいスペックになったと言えるでしょう。
・NVIDIA SHIELD
GL_VENDOR: NVIDIA Corporation GL_RENDERER: NVIDIA Tegra GL_VERSION: OpenGL ES 3.1 340.00 Extension: GL_EXT_debug_marker GL_EXT_blend_minmax GL_EXT_color_buffer_float GL_EXT_color_buffer_half_float GL_EXT_copy_image GL_EXT_debug_label GL_EXT_draw_buffers_indexed GL_EXT_frag_depth GL_EXT_geometry_point_size GL_EXT_geometry_shader GL_EXT_gpu_shader5 GL_EXT_map_buffer_range GL_EXT_occlusion_query_boolean GL_EXT_primitive_bounding_box GL_EXT_robustness GL_EXT_separate_shader_objects GL_EXT_shader_implicit_conversions GL_EXT_shader_integer_mix GL_EXT_shader_io_blocks GL_EXT_shadow_samplers GL_EXT_sRGB GL_EXT_sRGB_write_control GL_EXT_tessellation_point_size GL_EXT_tessellation_shader GL_EXT_texture_border_clamp GL_EXT_texture_buffer GL_EXT_texture_compression_dxt1 GL_EXT_texture_compression_s3tc GL_EXT_texture_cube_map_array GL_EXT_texture_filter_anisotropic GL_EXT_texture_format_BGRA8888 GL_EXT_texture_rg GL_EXT_texture_sRGB_decode GL_EXT_texture_storage GL_EXT_texture_view GL_EXT_unpack_subimage GL_KHR_debug GL_KHR_texture_compression_astc_ldr GL_NV_bgr GL_NV_bindless_texture GL_NV_blend_equation_advanced GL_NV_blend_equation_advanced_coherent GL_NV_copy_buffer GL_NV_copy_image GL_NV_draw_buffers GL_NV_draw_instanced GL_NV_draw_texture GL_NV_EGL_stream_consumer_external GL_NV_explicit_attrib_location GL_NV_fbo_color_attachments GL_NV_framebuffer_blit GL_NV_framebuffer_multisample GL_NV_generate_mipmap_sRGB GL_NV_instanced_arrays GL_NV_occlusion_query_samples GL_NV_non_square_matrices GL_NV_pack_subimage GL_NV_packed_float GL_NV_packed_float_linear GL_NV_pixel_buffer_object GL_NV_read_buffer GL_NV_read_depth GL_NV_read_depth_stencil GL_NV_read_stencil GL_NV_secure_context GL_NV_shadow_samplers_array GL_NV_shadow_samplers_cube GL_NV_sRGB_formats GL_NV_texture_array GL_NV_texture_border_clamp GL_NV_texture_compression_latc GL_NV_texture_compression_s3tc GL_NV_texture_compression_s3tc_update GL_NV_timer_query GL_KHR_blend_equation_advanced GL_KHR_blend_equation_advanced_coherent GL_OES_compressed_ETC1_RGB8_texture GL_OES_depth24 GL_OES_depth32 GL_OES_depth_texture GL_OES_depth_texture_cube_map GL_OES_EGL_image GL_OES_EGL_image_external GL_OES_EGL_sync GL_OES_element_index_uint GL_OES_fbo_render_mipmap GL_OES_get_program_binary GL_OES_mapbuffer GL_OES_packed_depth_stencil GL_OES_rgb8_rgba8 GL_OES_sample_shading GL_OES_sample_variables GL_OES_shader_image_atomic GL_OES_shader_multisample_interpolation GL_OES_standard_derivatives GL_OES_surfaceless_context GL_OES_texture_npot GL_OES_texture_float GL_OES_texture_float_linear GL_OES_texture_half_float GL_OES_texture_half_float_linear GL_OES_texture_stencil8 GL_OES_texture_storage_multisample_2d_array GL_OES_vertex_array_object GL_OES_vertex_half_float GL_ANDROID_extension_pack_es31a
OpenGL ES 3.1 に対応しており、OpenGL 4.x 相当の AEP
「 GL_ANDROID_extension_pack_es31a 」が付いています。
Tegra 2 Cortex-A9 x2 ULP GeForce(8) OpenGL ES 2.0 Tegra 3 Cortex-A9 x4 ULP GeForce(12) OpenGL ES 2.0 Tegra 4 Cortex-A15 x4 ULP GeForce(72) OpenGL ES 2.0 Tegra K1 Cortex-A15 x4 GeForce Kepler(192) OpenGL ES 3.1 AEP/OpenGL 4.4
Tegra 2/3 の ULP GeForce は Direct3D 9 世代の GPU から
GLES 2.0 仕様ぎりぎりまで機能を削減したものでした。
Tegra 4 の ULP GeForce は同じ Direct3D 9 世代の GPU core のまま
本来のあるべき機能を復活させたもの。
Tegra K1 は Direct3D 11 世代の GPU core を搭載しています。
Shader Core 数が少ないだけで、対応 API など機能的には desktop GPU との差が
なくなっています。
CPU の VFP Benchmark の結果はこちら。
SingleT SP max: 17.136 GFLOPS SingleT DP max: 3.431 GFLOPS MultiT SP max: 70.174 GFLOPS MultiT DP max: 14.036 GFLOPS
下記ページにも追加しました。
・CPU/GPU OpenGL ES Extension (Mobile GPU)
・VFP Benchmark Log