月別アーカイブ: 2013年2月

Android で WebGL (Chrome)

Android 向けに新しい Chrome がリリースされ、WebGL 対応になったようです。

「膨大な変更」でパフォーマンス向上した「Chrome for Android」最新版

WebGL を有効にする方法 (手順は PC版 Chrome と同じです)

(1) URL に “about:flags” と入力 (または “chrome://flags”)
(2) リスト内の “WebGL を有効にする” を有効にする
(3) ブラウザの再起動

有効になっているかどうか下記の手順で確認できます。
(機能を有効にしても GPU によっては使えない可能性があります。)

(1) URL 欄に “chrome://gpu-internals” と入力
(2013/04/07 追記: 新しい Chrome は gpu-internals ではなく “chrome://gpu” に変更されています)

chrome_webgl.png

Android には様々なブラウザアプリケーションが揃っているので、
これまでも WebGL を使うことができました。

Opera , Firefox はすでに Android 版で WebGL に対応しており
3D 描画ができるようになっています。

Chrome の正式版はこれまで未対応でしたが、
先行配信されていた Chrome Beta ではすでに機能が入っていました。
WebGL の次は NativeClient へと、徐々に対応機能が広がっていくものと考えられます。

PlayStation 4

PC では 4 core x HT でハードウエア 8 スレッドは当たり前になりましたが、
完全に独立した 8 core でプログラムを走らせる機会はまだあまり多くありません。
1 core あたりの演算能力がどの程度かわかりませんが、
うまく並列化できれば最大 8倍 (数倍)のパフォーマンスを見積もれるのは
ユニークだと思います。

ゲーム機は Xbox360 や PS3 の時点で multi core + HT (Hardware Multi Threading)
が当たり前となっています。
ただし core の数と高い動作クロック数を維持するために、
これまでは非常にシンプルなデザインの CPU core が用いられていました。

PPE+SPE で 8 core 搭載する Cell はもちろん、3 core の Xenon も
pipeline は in-order で、単体の実行効率はあまり高くありません。
その代わり 2 thread を interleave することで見かけのレイテンシを減らしています。
3.2GHz の 1個は、ある意味 1.6GHz 2個相当といえるのかもしれません。

比較的単純な In-order の core に HT を組み合わせて
高いクロックで走らせる手法は Atom に近い考え方です。
ただし Atom は省電力に用い、ゲーム機は高性能化のためで目的が異なります。
また Atom は interleave ではなく、さらに core あたりの演算能力は
Cell PPE, Xenon の方が高くなっています。

PS4 の CPU はこれまでと違い、比較的実行効率の高い core が多数
並列に存在していることになります。
ハイエンド core ではありませんが out-of-order の 2並列なので、
おそらく Cell/Xenon/Atom よりも、
クロック周波数に対して違和感ない速度で動作するのではないかと予想されます。

Cell/Xenon/Atom は HT 依存 In-order であり
ピーク性能は高くても single thread では性能を引き出すことができないため、
クロック周波数よりも遅い印象を受けるからです。
速いけどピーキーな CPU が多数存在していた前世代から、
PC と同じように比較的扱いやすい CPU core で均等な 8並列に移行したのだと
考えられます。

GPU 性能に関してもバス速度で推測出来ます。
176GB/sec の帯域があるそうなので、少なくてもこれくらい必要とするだけの能力が
システム全体に備わっていると言えます。

GC         2.6GB/s
PS2        3.2GB/s (+VRAM 48GB/s)
Xbox1      6.4GB/s
Xbox360   22.4GB/s (+ED RAM 32GB/s)
PS3       22.4GB/s (+CPU 25.6GB/s)    ( 22.4 =  3.2  x7.0倍)
PS4      176  GB/s                    (176.0 = 22.4  x7.8倍)

PCハイエンドの GPU では VRAM が 200GB/s を優に超えているのですが、
VRAM 容量では single で 8GB 搭載したビデオカードは自分が知る限りでは
まだ無かったように思います。
今までできなかったメモリをふんだんに使用したアルゴリズムが
利用できるようになりそうです。

おそらく CPU 性能や演算能力ではモバイルデバイスの進化の方が速いので、
数年後に追いつかれる可能性があります。
ですが GPU とバス帯域に関しては、据え置き専用機としてのアドバンテージが
十分備わっているといえるのではないでしょうか。

ユーザーとして欲しいかどうかは置いといて、
開発者としてはどのようなアルゴリズムを実装してみようかと、
いろいろと考えるだけでも楽しみなハードウエアではないかと思います。
モバイルデバイスの方が進化が早いと思っていましたが少々興味を持ちました。

関連エントリ
2007/01/22: PS3 PPU は速いのか

Nexus 7 Ubuntu Touch Developer Preview (2)

Nexus 7 の MultiROM が Ubuntu touch 対応となっています。

xda: [WiFi&3G] MultiROM v8 (new recovery for Ubuntu Touch)

TWRP の新しいバージョン (2013/02/22以降) で

xda: Ubuntu touch preview

この手順に従い install 可能となりました。
Android, Ubuntu Desktop, Ubuntu Touch を共存させて
起動時に選択することができます。

これでタブレットの利用には Android を、
単体でのプログラミングなら Ubuntu Desktop を、
Ubuntu Touch UI やアプリのテスト時に Desktop Preview を起動できます。

Ubuntu Touch Developer preview は adb 経由で chroot することからもわかるように、
Android 上に install した chroot 版 Linux に近い構造となっているようです。
HW アクセラレート対応の UI が乗っており、
Android SDK の AVD のようにアプリケーションの動作確認に利用することができます。

Ubuntu をベースとした Tablet/Phone 向け OS なので、
Android のようにタッチによる操作がしやすくなっています。
ただし Touch UI 上で Linux アプリがそのまま使えるわけではないので、
新しいプラットフォームと考えた方が良いでしょう。
UI 上で Linux らしさを期待するなら、今のところは Desktop 版との使い分けが
ベストだと思います。

関連エントリ
Nexus 7 Ubuntu Touch Developer Preview
Nexus 7 上に開発環境をつくる (4) Ubuntu 13.04
Nexus 7 上に開発環境をつくる (3) Ubuntu
Nexus 7 上に開発環境をつくる (2) Bluetooth と OpenGL ES 2.0
Android Tablet Nexus 7 上に開発環境をつくる (Ubuntu)

Nexus 7 Ubuntu Touch Developer Preview

Nexus 7 等のモバイルデバイスで動く Ubuntu Touch を試してみました。
開発者向けです。

Ubuntu Touch

Nexus 7 には下記のように通常の desktop 版 Ubuntu もあります。

Android Tablet Nexus 7 上に開発環境をつくる (Ubuntu)

↓この二つは別物です。

◎ Nexus 7 で動く Desktop 版 Ubuntu
◎ Nexus 7 で動く Ubuntu Touch Developer Preview

Desktop 版は PC と同一の豊富なアプリケーションを動かすことができる反面、
タッチだけの操作は必ずしも使いやすいとはいえませんでした。
キーボードやマウスを繋げば快適で、超小型のパソコンになります。

Ubuntu Touch は Android や iOS のように、タッチ操作に特化した UI が入ります。
まだ開発者向けで、操作に HOST PC が必要となることがあります。(2013/02/22現在)

● install

Desktop 版 Ubuntu の native install と同じように、本体の Android OS を置き換える形になります。
(Android のデータは全部消えます。)
MultiROM が対応すれば、他の環境と共存できるようになるかもしれません。

Install

Ubuntu 上で走る installer が用意されています。
PC に Ubuntu が入っている状態なら上記の Install 手順に従うだけです。

コマンドは python で書かれているので、
手順がわかれば Windows から手動で入れることもできるかもしれません。

bootloader の unlock が必要です。
installer は fastboot だけでなく adb も使うので、
Android を起動し USB デバッグにチェックを入れておきます。

● UI

インストールが完了すると、端末上で Ubuntu Touch の UI を試すことが可能となります。

ReleaseNotes

UI 上でできることがまだ少ないですが、ReleaseNotes に
書かれているように USB + adb 経由でシェルにログインできます。

adb root
adb shell

端末上で shell が動いたらさらにコマンドを実行します。

ubuntu_chroot shell

これで ARM 版 Ubuntu 12.10 としてシェルが動きます。
ReleaseNotes にあるように ssh を入れておけば Wi-Fi 経由で login できます。

apt-get update 
apt-get install openssh-server 

普通の Linux コマンドを install できるようです。コンパイラとか動きます。
残念ながら ubuntu-sdk は入れられませんでした。

関連エントリ
Nexus 7 上に開発環境をつくる (4) Ubuntu 13.04
Nexus 7 上に開発環境をつくる (3) Ubuntu
Nexus 7 上に開発環境をつくる (2) Bluetooth と OpenGL ES 2.0
Android Tablet Nexus 7 上に開発環境をつくる (Ubuntu)

Nexus 7 上に開発環境をつくる (4) Ubuntu 13.04

先週の Nexus 7 Ubuntu 13.04 image で、
新規インストールができない問題が出ていたようです。
古いバージョンなら大丈夫で、手元では 2013/02/05 の image が正しく動いています。

xda: [WiFi&3G] MultiROM v8 – (4.2.2 kernel and 4.18 bootloader fix)

また MultiROM 環境の Ubuntu で、apt-get upgrade / dist-upgrade と
フル更新をかけると OS の起動に失敗するようになります。

こちらは TWRP の Recovery menu モードに入ってから
Advanced → MultiROM → List ROMs で 選択 → re-patch init
で修復できるとのことです。

>Re-patch init – this is available only for ubuntu. Use it when ubuntu
> cannot find root partition, ie. after apt-get upgrade which changed
> the init script.

Android 4.2.2 への更新が配信されていましたが、
自動で更新できなかったので手動で行いました。

Gadget 好きの忘備録: Nexus7を4.2.2にUpdate

こちらによれば Factory Image を書き込めば良いとのことです。
boot と recovery はどうせ置き換えるので、system だけ書き込んでみました。
アーカイブ内の bat ファイルでは全パーティションを erase していましたが
そのまま実行しています。あくまで自己責任でお願いします。
また MultiROM 対応の kernel も 4.2.2 用に置き換えています。

関連エントリ
Nexus 7 上に開発環境をつくる (3) Ubuntu
Nexus 7 上に開発環境をつくる (2) Bluetooth と OpenGL ES 2.0
Android Tablet Nexus 7 上に開発環境をつくる (Ubuntu)