月別アーカイブ: 2018年5月

Oculus Go と VR デバイスの種類

Oculus Go 入手しました。名前が Oculus なので Oculus Rift との互換性を期待してしまいますが、実際は GearVR の専用機になります。

null

↑左が Oculus Go、右が Daydream View (2017)
Oculus Go の方が若干大きめ。左下の黒いのは GearVR コントローラ

Oculus Go には Snapdraogn 821 を搭載した Android デバイスが内蔵されており、Daydream で言えば Pixel 初代機や ZenFone AR と同じです。Galaxy だと S7 世代がほぼ近いスペックです。ただし Oculus Go の RAM は 3GB でした。

性能面では HTC Vive, Oculus Rift といった PC ハイエンド VR とは比較にならないものの、一体型の専用機なのでケーブルやアダプタの接続といった煩わしさが一切ありません。セットアップも専用機らしく簡単になっています。iOS や Android のコンパニオンアプリから行うので、Wi-Fi 設定も使い慣れた操作でできました。

さらに Oculus Go の手軽さを実感できるのはサウンドです。ヘッドホンが無くてもかぶるだけで音が聞こえてきます。

ケーブルレスの Daydream や GearVR でもヘッドホンは必要でした。本来 VR では音の効果は重要なのですが、Vive や Windows MR でもヘッドホンケーブルは絡まりやすく、開発中何度もテストするときはヘッドホンを使わない場合がほとんどです。便利なのでこのスピーカーは他の HMD にも付けて欲しいくらいです。

VR デバイスは機能面で大まかに分類すると 2種類あります。

◎ ハイエンド VR (6DoF + 6DoF)

・PC Desktop GPU
・Position Tracking 対応 HMD
・Position Tracking 対応 MotionController

HTC Vive, Oculus Rift, PSVR, Windwos MR

◎ Mobile VR (3DoF + 3DoF)

・Mobile GPU
・回転のみの HMD
・回転のみの MotionController

GearVR, Daydream (Smartphone), Oculus Go

スマートフォンは普段持ち歩くので HMD に装着したままにはできませんし発熱も結構気になります。Daydrream 対応機種もなかなか増えないので、Mobile VR の場合は手軽に使える Oculus Go のような専用機は良い選択かもしれません。

Snapdraogn 835 以降では Mobile VR でも 6DoF のデバイスがいくつか登場しています。モーションコントローラの制約はまだ残っています。

◎ Mobile VR (6DoF + 3DoF)

HTC Focus (Mobile GPU, 6DoF + 3DoF)
Daydream Mirage Solo (Mobile GPU, 6DoF + 3DoF)

その他の詳細なデバイス一覧はこちらにまとめています。

関連ページ
HMD VR / AR Device spec 一覧

ARM CPU 上の開発環境とコンパイル時間の比較

最近のハイエンドスマートフォンは 6G ~ 8GB もの RAM を搭載しており PC との差がなくなってきました。termux というアプリを使えば Android 上でも開発環境を整えられるとのことなので、コンパイル時間を比べてみました。

Smartphone SoC RAM thread time1 time2
Galaxy S6 Edge Exynos 7420 3GB 8 77.8 79.8
ZenFone AR Snapdragon 821 8GB 4 118.3 127.7
Nexus 5X Snapdragon 808 2GB 6 195.6 181.0
Nexus 5 Snapdragon 800 2GB 4 244.1 233.0

・2回連続で計測しており単位は秒です。time1, time2 の値が小さい方が高速です。

big.LITTLE で 8 core の Galaxy S6 Edge が際立つ結果となっています。4 core PC で 30秒ほどなので十分なな速度と言えそうです。

今回のビルドは RAM 容量よりも Thread 数が有利に働いたようです。Galaxy S6 はビルドに 8 core 全部使われており、LITTLE core も使って並列度を増やした方が速いことが分かります。下記は Galaxy S6 と ZenFone AR でスレッド数を変えて試した結果です。bit.LITTLE を意識して制限するよりも全 core 使った方が高速でした。

↓Galaxy S6 Edge (4+4 big.LITTLE 8 core)

thread数 time
8 76.3
6 84.8
4 111.7

↓ZenFone AR (2+2 big.LITTLE 4 core)

thread数 time
5 128.9
4 118.3
3 142.0
2 174.0

以下はスマートフォン以外のデバイス含めてテストした結果です。

Smartphone (clang-6.0) SoC RAM CPU core thread time1 time2
Galaxy S6 Edge Exynos 7420 3GB A57 2.1 + A53 1.5 4+4 8 77.8 79.8
ZenFone AR Snapdragon 821 8GB Kyro 2.3 + Kyro 1.6 2+2 4 118.3 127.7
Nexus 5X Snapdragon 808 2GB A57 1.8 + A53 1.4 2+4 6 195.6 181.0
Nexus 5 Snapdragon 800 2GB Krait 400 2.2GHz 4 4 244.1 233.0
Tablet (clang-6.0) SoC RAM CPU core thread time1 time2
Tegra Note 7 Tegra 4 1GB Cortex-A15 1.8GHz 4 4 159.7 145.4
Fire HD 6 MT8135 1GB A15 1.5 + A7 1.2 2+2 4 203.3 202.5
Nexus 7 2013 Snapdragon 8064 2GB Krait 1.5GHz 4 4 262.2 260.5
Nexus 9 Tegra K1 2GB Denver 2.3GHz 2 2 317.7 356.8
Fonepad 7 ME372CL Atom Z2560 1GB Saltwell 1.6GHz 2 4 686.5 682.8
MeMO Pad 7 ME176C Atom Z3745 1GB Silvermont 1.33GHz 4 4 294.5 291.6
TV (clang-6.0) SoC RAM CPU core thread time1 time2
SHIELD TV Tegra X1 3GB A57 2.0GHz + A53 4+4 4 76.0 76.0
Nexus Player Atom Z3560 1GB Silvermont 1.8GHz 4 4 339.8 334.3
Fire TV Stick 2015 Broadcom 28155 0.5GB Cortex-A9 1.0GHz 2 2 596.7 569.2
SmartWatch (clang-6.0) SoC RAM CPU core thread time1 time2
FossilQ Marshal Snapdragon 400 0.5GB Cortex-A7 0.8GHz 4 2 810.5 810.7
SBC (clang-3.5) SoC RAM CPU core thread time1 time2
Dragonbaord 410c Snapdragon 410 1GB Cortex-A53 1.2GHz 4 4 117.3 118.7
Raspberry Pi 3 BCM2837 1GB Cortex-A53 1.2GHz 4 4 175.3 159.8
Raspberry Pi 2 BCM2836 1GB Cortex-A7 0.9GHz 4 4 337.1 301.2
Chromebook (clang-6.0) SoC RAM CPU core thread time1 time2
Chromebook Flip C101PA RK3399 4GB A72 1.8 + A53 2+4 6 106.0 105.1
Chromebook C720 Haswell 4GB Celeron 2955U 1.4GHz 2 2 220.7 219.3
PC (clang-3.8) SoC RAM CPU core thread time1 time2
X370GTN (W10+WSL) Ryzen 7 1800X 32GB Zen 3.7GHz 8 16 25.4 22.2
H97I-PLUS (W10+WSL) Core i7-4770 16GB Haswell 3.4GHz 4 8 28.7 28.2
A88M-ITX (W10+WSL) A10-7870K 8GB Steamroller 3.9GHz 4 4 65.9 61.6
MacBook Pro Core i5-3210M 2GB 8GB Ivy Birdge 2.5GHz 2 4 83.7 90.8
Q1900B-ITX (16.04LTS) Celeron J1900 8GB Silvermont 2.0GHz 4 4 112.2 108.8

・Chromebook は termux ではなく Crouton + Ubuntu を使用しています。

スマートフォンやタブレットは計測時のばらつきが結構あります。2回目以降の方が遅くなるケースも多く、形状が小さいデバイスほど発熱の影響を多く受けているものと思われます。

ARM で一番速かったのは Tegra X1 の SHIELD TV です。こちらは他の ARM デバイスと違い内蔵ファンによる熱対策が行われています。

キーボードがつながらないので実用性はほぼ無いものの Wear OS (Android Wear) の Smartwatch でも動きました。

null

関連エントリ
AMD CPU Ryzen とコンパイル時間の比較 (2)
AMD CPU Ryzen とコンパイル時間の比較
ARM Cortex-A53 の浮動小数点演算速度とコンパイル時間の比較
2955U vs N3150/J1900/Athlon5350 (コンパイル時間の比較)
Raspberry Pi 2 で速くなったコンパイル時間の比較
BayTrail vs Kabini (Celeron J1900 vs Athlon 5350)
コンパイル時間の比較 BayTrail
Atom vs Core i7

AMD Vega と Direct3D 12

遅くなりましたが DirectX 12 の対応状況に Vega 56 のデータを追加しました。Vega (GCN 5) は FEATURE_LEVEL 12_1 に対応しており、ROV 等 D3D12 の機能を搭載しています。ただし ShaderModel は 5.1 のままでした。

Direct3D 12 (DirectX 12) GPU の対応

GeForce, Intel HD Graphcs のテスト結果も更新しています。新しいドライバでは GeForce の Maxwell, Pascal も ResourceBindingTier が Tier 3 に上がっていることがわかりました。また ShaderModel 6.0 (WaveOps == true) にも対応しているようです。

GPU Driver FeatureLevel ShaderModel
RADEON Vega GCN 5 18.3 12_1 5.1
RADEON RX Polaris GCN 4 18.3 12_0 5.1
RADEON R3/R7/R9 GCN 2 18.2 12_0 5.1
GeForce GTX 1000 Pascal 388.13 12_1 6.0
GeForce GTX 900 Maxwell 388.13 12_1 6.0
GeForce GTX 750Ti Maxwell 388.43 11_0 6.0
Skylake Intel HD Graphcis Gen 9 12_1 6.1
Broadwell Intel HD Graphcis Gen 8 11_1 5.1
Haswell Intel HD Graphcis Gen 7.5 11_1 5.1

Intel HD Graphcis も Skylake 世代からは ShaderModel 6.1 対応となっています。結果は今後ドライバの更新で変わる可能性があります。

関連ページ
Direct3D 12 (DirectX 12) GPU の対応

関連エントリ
Direct3D 12 GPU GeForce GTX 1070 Pascal と RADEON RX 480 Polaris