2019/01/31
UserLAnd とブラウザ
Firefox だけでなく Chromium-browser も使えるらしいので使ってみました。ただし --no-sandbox オプションが必要です。(参考にしたページ)
UserLAnd Ubuntu で動く Chromium (Essential Phone PH-1)

● Install と起動方法
Debian の場合
Ubuntu の場合
2018/01/31 現在、Ubuntu では Firefox が正しく動いておらず起動しても黒い画面のまま固まってしまいます。Chromium が代わりに使えそうです。
Debian では Firefox も問題なく動いています。
● 画面分割
Android 7 以降なら画面分割が可能なので Android のブラウザを併用する方法もあります。
画面分割で Ubuntu と Android の Chrome と併用↓

UserLAnd の desktop は VNC でも XServer XSDL (X11) でも Software Rendering なので、速度と安定度を重視するなら画面分割もお勧めです。
Android 9 Pie だと XServer XSDL が restart を繰り返してしまい起動できないようです。Essential Phone と Pixel 3 の両方で確認。VNC は動きます。
関連エントリ
・Android 上の開発環境と UserLAnd
・OS の中の Linux (WSL/Chrome OS/Android UserLAnd)
・ARM CPU 上の開発環境とコンパイル時間の比較 (2) Pixel 3/UserLAnd
UserLAnd Ubuntu で動く Chromium (Essential Phone PH-1)

● Install と起動方法
Debian の場合
$ sudo apt install chromium
$ chromium --no-sandbox
$ chromium --no-sandbox
Ubuntu の場合
$ sudo apt install chromium-browser
$ chromium-browser --no-sandbox
$ chromium-browser --no-sandbox
2018/01/31 現在、Ubuntu では Firefox が正しく動いておらず起動しても黒い画面のまま固まってしまいます。Chromium が代わりに使えそうです。
Debian では Firefox も問題なく動いています。
● 画面分割
Android 7 以降なら画面分割が可能なので Android のブラウザを併用する方法もあります。
画面分割で Ubuntu と Android の Chrome と併用↓

UserLAnd の desktop は VNC でも XServer XSDL (X11) でも Software Rendering なので、速度と安定度を重視するなら画面分割もお勧めです。
Android 9 Pie だと XServer XSDL が restart を繰り返してしまい起動できないようです。Essential Phone と Pixel 3 の両方で確認。VNC は動きます。
関連エントリ
・Android 上の開発環境と UserLAnd
・OS の中の Linux (WSL/Chrome OS/Android UserLAnd)
・ARM CPU 上の開発環境とコンパイル時間の比較 (2) Pixel 3/UserLAnd
2019/01/28
Termux で持ち運べるモバイルリポジトリを作る Mercurial/Git
Linux だと同期できるオンラインストレージの選択肢があまりありません。ARM だとなおさらで、ARM 向けの公式クライアントが用意されていなかったりします。今まで設定ファイルの共有に Dropbox を使い Mercurial で履歴管理をしていたのですが、arm 機種の Termux/UserLand では代わりの手段が必要になりました。
最近のスマートフォンは内部ストレージも増えているので、手持ちの Android スマートフォンを持ち運べるリポジトリにしてみます。
UserLAnd なら GitBucket もそのまま動きます。簡単に高機能なリポジトリサーバーを実現できますが UserLAnd はファイルアクセスがあまり速くありません。固定のリポジトリなら ssh で十分なので、今回は Termux を使用しました。
termux の ssh については こちら(Termux wiki) を参考にしました。
以降のコマンド表記でプロンプト '$' はすべてスマートフォンの Termux 上の操作になります。プロンプト '>' は PC (Windows/macOS/Linux) 等、他のデバイスからの操作を意味しています。
● Termux に SSH で接続する
termux はデフォルトで ssh の Password 認証が有効になっています。
まず termux に password を設定します。
sshd を起動します。
これで ssh で接続できるようになります。ポート番号は 8022 です。
最近の Windows 10 には最初から OpenSSH が含まれているので、PC のコマンドラインから下記のように実行するだけで接続することができます。
もちろん Putty 等の client も使えます。Putty の場合 user name はダミーで何でも OK です。
● Termux に git / mercurial を install する
termux 上で git を install しておきます。
Mercurial の場合 termux に pakcage が用意されていませんが、pip を使って install することができます。
● Termux 上に repository を作る
リポジトリを termux 上で作るか、または既存のリポジトリを Termux にコピーします。
新規に作る場合任意のフォルダで init。
既存のリポジトリをコピーする場合は scp (WinSCP 等) を使うことができます。Git の場合は .git フォルダ、Mercurial の場合は .hg フォルダを Termux にコピーするだけです。他にサーバーがあるなら Termux 上で clone しても構いません。
あとは普通にスマートフォン上のリポジトリにアクセスできます。下記は PC 等他の Device からの操作になります。
git の場合は絶対パスなので HOME 相対には ~ が必要です。mercurial は常に HOME からのパスになるようです。反応が鈍い場合はスマートフォンのロック(スリープ)を解除してみてください。
● Termux に public key 認証でログインする
git / hg の同期時に毎回パスワードを入力するのは手間なので、public key 認証を使ってみます。Windows 10 も Linux 等、他の OS と手順は同じです。
id_rsa.pub をスマートフォンに転送します。このファイルは Windows の場合 C:\Users\<ユーザー名>\.ssh 以下にあります。転送は scp でも良いですし、もっと簡単に USB 接続して直接ファイルコピーしても構いません。
termux 上で共有 storage にアクセスできるようにしておきます。
例えば Android の Download フォルダに転送した場合 ~/storage/downloads/id_rsa.pub でアクセスできるようになります。
id_rsa.pub の内容を Termux の authorized_keys に追加します。
これで git/hg の同期の度に password を毎回打たなくて済むようになりました。
● 使用してみて
バックアップには向かないのであくまで外出時の同期用にしています。設定ファイルだけでなく、個人で使うプロジェクトには十分使えそうです。
関連エントリ
・Android 上の開発環境と UserLAnd
・OS の中の Linux (WSL/Chrome OS/Android UserLAnd)
・ARM CPU 上の開発環境とコンパイル時間の比較 (2) Pixel 3/UserLAnd
・Android/Linux MaruOS その4
・Nexus 7 上に開発環境をつくる (4) Ubuntu 13.04
最近のスマートフォンは内部ストレージも増えているので、手持ちの Android スマートフォンを持ち運べるリポジトリにしてみます。
UserLAnd なら GitBucket もそのまま動きます。簡単に高機能なリポジトリサーバーを実現できますが UserLAnd はファイルアクセスがあまり速くありません。固定のリポジトリなら ssh で十分なので、今回は Termux を使用しました。
termux の ssh については こちら(Termux wiki) を参考にしました。
以降のコマンド表記でプロンプト '$' はすべてスマートフォンの Termux 上の操作になります。プロンプト '>' は PC (Windows/macOS/Linux) 等、他のデバイスからの操作を意味しています。
● Termux に SSH で接続する
$ pkg upgrade $ pkg install openssh
termux はデフォルトで ssh の Password 認証が有効になっています。
まず termux に password を設定します。
$ passwd
sshd を起動します。
$ sshd
これで ssh で接続できるようになります。ポート番号は 8022 です。
最近の Windows 10 には最初から OpenSSH が含まれているので、PC のコマンドラインから下記のように実行するだけで接続することができます。
> ssh <AndroidIPAddress> -p 8022
もちろん Putty 等の client も使えます。Putty の場合 user name はダミーで何でも OK です。
● Termux に git / mercurial を install する
termux 上で git を install しておきます。
$ pkg install git
Mercurial の場合 termux に pakcage が用意されていませんが、pip を使って install することができます。
$ pkg install python2 python2-dev clang $ pip2 install mercurial
● Termux 上に repository を作る
リポジトリを termux 上で作るか、または既存のリポジトリを Termux にコピーします。
新規に作る場合任意のフォルダで init。
$ mkdir ~/repository_git $ cd ~/repository_git $ git init
$ mkdir ~/repository_hg $ cd ~/repository_hg $ hg init
既存のリポジトリをコピーする場合は scp (WinSCP 等) を使うことができます。Git の場合は .git フォルダ、Mercurial の場合は .hg フォルダを Termux にコピーするだけです。他にサーバーがあるなら Termux 上で clone しても構いません。
> scp -r -P 8022 .hg <AndroidIPAddress>:repository_hg/
あとは普通にスマートフォン上のリポジトリにアクセスできます。下記は PC 等他の Device からの操作になります。
> git clone ssh://<AndroidIPAddress>:8022/~/repository_git
> hg clone ssh://<AndroidIPAddress>:8022/repository_hg
git の場合は絶対パスなので HOME 相対には ~ が必要です。mercurial は常に HOME からのパスになるようです。反応が鈍い場合はスマートフォンのロック(スリープ)を解除してみてください。
● Termux に public key 認証でログインする
git / hg の同期時に毎回パスワードを入力するのは手間なので、public key 認証を使ってみます。Windows 10 も Linux 等、他の OS と手順は同じです。
> ssh-keygen
id_rsa.pub をスマートフォンに転送します。このファイルは Windows の場合 C:\Users\<ユーザー名>\.ssh 以下にあります。転送は scp でも良いですし、もっと簡単に USB 接続して直接ファイルコピーしても構いません。
termux 上で共有 storage にアクセスできるようにしておきます。
$ termux-setup-storage
例えば Android の Download フォルダに転送した場合 ~/storage/downloads/id_rsa.pub でアクセスできるようになります。
id_rsa.pub の内容を Termux の authorized_keys に追加します。
$ cd ~/.ssh $ cat ~/storage/downloads/id_rsa.pub >> authorized_keys $ chmod 600 authorized_keys
これで git/hg の同期の度に password を毎回打たなくて済むようになりました。
● 使用してみて
バックアップには向かないのであくまで外出時の同期用にしています。設定ファイルだけでなく、個人で使うプロジェクトには十分使えそうです。
関連エントリ
・Android 上の開発環境と UserLAnd
・OS の中の Linux (WSL/Chrome OS/Android UserLAnd)
・ARM CPU 上の開発環境とコンパイル時間の比較 (2) Pixel 3/UserLAnd
・Android/Linux MaruOS その4
・Nexus 7 上に開発環境をつくる (4) Ubuntu 13.04
2019/01/24
Android 上の開発環境と UserLAnd
Android 上の開発環境のまとめページを作成しました。
・Android の上の開発環境
UserLAnd は root 不要で、アプリとして Linux 環境をそのまま Android 上で走らせることができます。Store から install するだけで済み、Windows 10 の WSL のように手軽に扱えます。
・Google Play: UserLAnd
ただの 1アプリとしてユーザーモードで走りますが、proot を使うことでほぼ完全な Linux 環境を作り出しているようです。例えば proot の下でファイルを作成すると、隠しファイル .proot-meta-files.* が作られます。この meta-file の中には独自の file mode (644等) と UID/GID が記録されており、user 管理やファイルパーミッションが再現されています。同じように Hard Link を用いると .proot.l2s.* といった管理ファイルが作られています。これは Symbolic Link で代用するための仕組みです。
反面、meta-file があるためファイルアクセスには追加のコストが発生しているようです。以前行ったコンパイル時間のテストを見ても、termux と比べるとビルド速度が落ちていることがわかります。それでも Android 上でほぼ完全な Linux 環境がそのまま動くのは非常に魅力的です。
・ARM CPU 上の開発環境とコンパイル時間の比較 (2) Pixel 3/UserLAnd
現在 Arch, Debian, Kali, Ubuntu の 4つの Linux Distribution を選択可能で、それぞれ別のストレージ領域が割り当てられます。SSH を使った Console または VNC を使った Desktop を選ぶことができます。SSH or VNC はいつでも切り替え可能です。
以前は外部アプリとして SSH client が必要でしたが、UserLAnd の新しい Version では SSH Terminal が統合されました。Connect Bot の install が不要になっています。
ZenFone AR の UserLAnd (Debian)

以下いくつか設定などのメモ
● Install
UserLAnd アプリを Install したあと、任意の Distribution を選択するだけです。最初に外部ストレージへのアクセス許可と、ログインに使う user name や password の設定が必要です。
● SSH / VNC 切り替え
UserLAnd アプリの Distribution 名を長押しで App Info から設定できます。切り替え時は一旦 UserLAnd の再起動が必要です。Distribution 名を長押しして Stop App で止めてから、さらに UserLAnd アプリを終了して再び起動します。
● Desktop の install 方法
最初に SSH, VNC どちらを選んでも構いません。
その後 VNC に切り替えます。(一旦止めるのを忘れないように)
● VNC の解像度設定
Debian の場合は ~/.vncrc 、Ubuntu の場合は ~/.vnc/tightvncserver.conf に下記の内容を書き込む。
Smartphone の Native 解像度 (2160x1080, 2560x1440 等) をそのまま指定すると文字が小さすぎるので注意。720p 前後がおすすめです。
例
● Keyboard / Mouse
Desktop を使う場合は Buletooth Keyboard / Mouse の併用をお勧めします。Gboard や Google 日本語入力なら物理キーボードのレイアウトを選択できます。Ctrl/Caps/ESC 等の配列変更には106/109ハードウェアキーボード配列変更(+親指Ctrl)がお勧めです。
・Google Play: 106/109ハードウェアキーボード配列変更(+親指Ctrl)
● SSH 経由のアクセス
PC 等から SSH 経由でアクセスきます。port は 2022。
SSH (console) モードでは何もせずそのまま接続できます。VNC mode では下記のように予めサーバーを起動しておく必要があります。
● Android 外部 Storage へのアクセス
/sdcard でアクセスできます。例えば Android でダウンロードしたファイル一覧を見るには下記のようになります。
● ブラウザ
2019/01 現在 Ubuntu では Firefox の画面が真っ黒で見えなくなっています。Debian では動いています。Android 7 以降なら画面分割できるので、Android のブラウザを併用する方法もあります。
● 自分自身への adb 接続
Android を Developer mode にしたあと一旦 PC に USB 接続して adb で tcpip に切り替えておきます。
PC 上で "adb tcpip 5555" を実行。
これで Android (UserLAnd) 上では adb で自分自身が "emulator-5554" として見えるようになります。
● 日本語入力
SSH 等の Console では uim-fep, uim-mozc が使えます。下記手順は Ubuntu の場合。
ファイル ~/.uim を作成 (任意)
起動方法
上の設定例では Ctrl + SPACE または Ctrl+G で入力モードを切り替えています。なお Android 9 Pie では Android 側で Ctrl + SPACE が使われており Console への入力ができないようです。使えない場合は代わりに Ctrl + @ を試してみてください。Android 7 では Ctrl + SPACE が使えました。
Desktop の場合。下記手順は Debian の場合。
一旦 UserLAnd 再起動。
Debian streatch には mozc の arm64 が無いのでそのままではインストールできません。下記ページを参考にさせていただきました。
・matoken's meme: Debian, Ubuntu で 上流のパッケージを借りてくる
上のページを参考に buster を追加してから
入力切り替えキーの設定は Desktop Menu から「設定→入力メソッド→全体キー設定」。Terminal は LXTerminal を使用。
日本語設定の参考にしたページ
・WSLのUbuntu環境を日本語化する
・uim-fepとuim-anthyの使い方と設定方法
・WSLのDebian環境を日本語化する
・Debian, Ubuntu で 上流のパッケージを借りてくる
● 他の Distribution ファイルへのアクセス
ストレージ領域は /data/data/tech.ula/files/ 以下にあります。Filesystem を作るごとに /data/data/tech.ula/files/1 ~ と番号が割り振られています。例えば Debian の設定を書き換えてうまく起動しなくなった場合、Ubuntu から直接ファイルを修正することが可能です。
ただし他のストレージでは proot meta-file が直接見えてしまうので、meta-file に矛盾しない修正に留めておいた方が良いでしょう。ファイル内容の修正だけなら問題ありません。
● PC の X11 server に直接接続
VNC の場合は事前に UserLAnd 上で SSH Server を起動しておいてください。
Windows の場合は何らかの X11 server を起動しておきます。Microsoft Store にある X410 や VcXsrv 等。PC から (Windows の場合は WSL を想定) 下記のように SSH 接続します。
関連エントリ
・OS の中の Linux (WSL/Chrome OS/Android UserLAnd)
・ARM CPU 上の開発環境とコンパイル時間の比較 (2) Pixel 3/UserLAnd
・Android/Linux MaruOS その4
・Nexus 7 上に開発環境をつくる (4) Ubuntu 13.04
・Android の上の開発環境
UserLAnd は root 不要で、アプリとして Linux 環境をそのまま Android 上で走らせることができます。Store から install するだけで済み、Windows 10 の WSL のように手軽に扱えます。
・Google Play: UserLAnd
ただの 1アプリとしてユーザーモードで走りますが、proot を使うことでほぼ完全な Linux 環境を作り出しているようです。例えば proot の下でファイルを作成すると、隠しファイル .proot-meta-files.* が作られます。この meta-file の中には独自の file mode (644等) と UID/GID が記録されており、user 管理やファイルパーミッションが再現されています。同じように Hard Link を用いると .proot.l2s.* といった管理ファイルが作られています。これは Symbolic Link で代用するための仕組みです。
反面、meta-file があるためファイルアクセスには追加のコストが発生しているようです。以前行ったコンパイル時間のテストを見ても、termux と比べるとビルド速度が落ちていることがわかります。それでも Android 上でほぼ完全な Linux 環境がそのまま動くのは非常に魅力的です。
・ARM CPU 上の開発環境とコンパイル時間の比較 (2) Pixel 3/UserLAnd
現在 Arch, Debian, Kali, Ubuntu の 4つの Linux Distribution を選択可能で、それぞれ別のストレージ領域が割り当てられます。SSH を使った Console または VNC を使った Desktop を選ぶことができます。SSH or VNC はいつでも切り替え可能です。
以前は外部アプリとして SSH client が必要でしたが、UserLAnd の新しい Version では SSH Terminal が統合されました。Connect Bot の install が不要になっています。
ZenFone AR の UserLAnd (Debian)

以下いくつか設定などのメモ
● Install
UserLAnd アプリを Install したあと、任意の Distribution を選択するだけです。最初に外部ストレージへのアクセス許可と、ログインに使う user name や password の設定が必要です。
● SSH / VNC 切り替え
UserLAnd アプリの Distribution 名を長押しで App Info から設定できます。切り替え時は一旦 UserLAnd の再起動が必要です。Distribution 名を長押しして Stop App で止めてから、さらに UserLAnd アプリを終了して再び起動します。
● Desktop の install 方法
最初に SSH, VNC どちらを選んでも構いません。
sudo apt install lxde
その後 VNC に切り替えます。(一旦止めるのを忘れないように)
● VNC の解像度設定
Debian の場合は ~/.vncrc 、Ubuntu の場合は ~/.vnc/tightvncserver.conf に下記の内容を書き込む。
$geometry = "1280x720"
Smartphone の Native 解像度 (2160x1080, 2560x1440 等) をそのまま指定すると文字が小さすぎるので注意。720p 前後がおすすめです。
例
・ZenFoenAR (2560x1440) : $geometry = "1280x720" ・Pixel 3 (2160x1080) : $geometry = "1440x720" ・Essential Phone PH-1 (2560x1312) : $geometry = "1330x720"
● Keyboard / Mouse
Desktop を使う場合は Buletooth Keyboard / Mouse の併用をお勧めします。Gboard や Google 日本語入力なら物理キーボードのレイアウトを選択できます。Ctrl/Caps/ESC 等の配列変更には106/109ハードウェアキーボード配列変更(+親指Ctrl)がお勧めです。
・Google Play: 106/109ハードウェアキーボード配列変更(+親指Ctrl)
● SSH 経由のアクセス
PC 等から SSH 経由でアクセスきます。port は 2022。
$ ssh <AndroidIPADDR> -p 2022
SSH (console) モードでは何もせずそのまま接続できます。VNC mode では下記のように予めサーバーを起動しておく必要があります。
$ sudo /support/startSSHServer.sh
● Android 外部 Storage へのアクセス
/sdcard でアクセスできます。例えば Android でダウンロードしたファイル一覧を見るには下記のようになります。
$ ls /sdcard/Download/
● ブラウザ
2019/01 現在 Ubuntu では Firefox の画面が真っ黒で見えなくなっています。Debian では動いています。Android 7 以降なら画面分割できるので、Android のブラウザを併用する方法もあります。
● 自分自身への adb 接続
Android を Developer mode にしたあと一旦 PC に USB 接続して adb で tcpip に切り替えておきます。
PC 上で "adb tcpip 5555" を実行。
これで Android (UserLAnd) 上では adb で自分自身が "emulator-5554" として見えるようになります。
$ sudo apt install android-tools-adb $ adb devices
● 日本語入力
SSH 等の Console では uim-fep, uim-mozc が使えます。下記手順は Ubuntu の場合。
$ sudo apt isntall language-pack-ja $ sudo update-locale LANG=ja_JP.UTF-8 $ sudo dpkg-reconfigure tzdata $ sudo apt install uim-fep uim-mozc
ファイル ~/.uim を作成 (任意)
(define default-im-name 'mozc) (define-key generic-on-key? '("<Control> " "<Control>g")) (define-key generic-off-key? '("<Control> " "<Control>g"))
起動方法
$ export LANG=ja_JP.UTF-8 $ uim-fep
上の設定例では Ctrl + SPACE または Ctrl+G で入力モードを切り替えています。なお Android 9 Pie では Android 側で Ctrl + SPACE が使われており Console への入力ができないようです。使えない場合は代わりに Ctrl + @ を試してみてください。Android 7 では Ctrl + SPACE が使えました。
Desktop の場合。下記手順は Debian の場合。
$ sudo apt install lxde $ sudo apt install task-japanese $ sudo apt install task-japanese-desktop $ sudo apt isntall fonts-takao $ sudo dpkg-reconfigure tzdata $ sudo dpkg-reconfigure locales
一旦 UserLAnd 再起動。
Debian streatch には mozc の arm64 が無いのでそのままではインストールできません。下記ページを参考にさせていただきました。
・matoken's meme: Debian, Ubuntu で 上流のパッケージを借りてくる
上のページを参考に buster を追加してから
$ apt install uim-mozc
入力切り替えキーの設定は Desktop Menu から「設定→入力メソッド→全体キー設定」。Terminal は LXTerminal を使用。
日本語設定の参考にしたページ
・WSLのUbuntu環境を日本語化する
・uim-fepとuim-anthyの使い方と設定方法
・WSLのDebian環境を日本語化する
・Debian, Ubuntu で 上流のパッケージを借りてくる
● 他の Distribution ファイルへのアクセス
ストレージ領域は /data/data/tech.ula/files/ 以下にあります。Filesystem を作るごとに /data/data/tech.ula/files/1 ~ と番号が割り振られています。例えば Debian の設定を書き換えてうまく起動しなくなった場合、Ubuntu から直接ファイルを修正することが可能です。
ただし他のストレージでは proot meta-file が直接見えてしまうので、meta-file に矛盾しない修正に留めておいた方が良いでしょう。ファイル内容の修正だけなら問題ありません。
● PC の X11 server に直接接続
VNC の場合は事前に UserLAnd 上で SSH Server を起動しておいてください。
Windows の場合は何らかの X11 server を起動しておきます。Microsoft Store にある X410 や VcXsrv 等。PC から (Windows の場合は WSL を想定) 下記のように SSH 接続します。
$ export DISPLAY=localhost:0.0 $ xhost +<AndroidIPAddress> $ ssh -Y <AndroidIPAddress> -p 2022 $ xterm
関連エントリ
・OS の中の Linux (WSL/Chrome OS/Android UserLAnd)
・ARM CPU 上の開発環境とコンパイル時間の比較 (2) Pixel 3/UserLAnd
・Android/Linux MaruOS その4
・Nexus 7 上に開発環境をつくる (4) Ubuntu 13.04
2019/01/05
Snapdragon 845 の浮動小数点演算速度
Snapdragon 845 の CPU は Qualcomm の Kryo 385 が使われています。big.LITTLE の 8 core (4+4) 非対称構成なので、ぞれぞれの CPU core 毎に測定してみました。下記はいずれも big.LITTLE 構成の CPU を使った SoC です。
・big = big core, little = little core
・Total = Multi thread の合計
vfpbench の単精度の結果のみ抜き出しています。単位は GFLOPS 。数値が大きい方が高速です。
表の CPU は Kryo, Kryo 385 (A75), Cortex-A57 いずれも 64bit x2 pipe なので、ピーク性能の差は純粋に core 数と clock 数で決まっています。
同様に little core の Cortex-A53/A55 も 64bit x2 の FP pipe を持っているので、数値上はほぼクロック差だけの違いとなっています。32bit 時代の little core Cortex-A7 と比べると性能は大きく上がっています。
初代 Kryo は Qualcomm 独自 core ですが、Snapdragon 845 の Kyro 385 は ARM Cortex-A75 + A55 がベースになっているようです。そのため Snapdragon 845 Kryo 385 の特性は初代 Kryo は異なっています。
例えば Kyro と Kyo 385 は積和命令のピーク演算はどちらも同一ながら、加算だけなら Snapdragon 821 の Kryo の方が 2倍速く回っています。
下記の表は 1 cycle に実行できる命令数 (IPC)
Kryo 385 のもとになった Cortex-A75 は ARM の新しい命令セットに対応しています。
以前の fp16 (半精度浮動小数点) 対応は変換命令だけでした。ロードストアは fp16 でも演算は fp32 以上に変換してから行います。v8.2 対応の A75/A55 では Deep Learning 向けに 16bit 命令が強化されています。fp16 のまま直接演算できるようになりました。
・ARM FPU (VFP/NEON) の種類
例えば NEON (Advanced SIMD) では 128bit 時に 8並列で演算が行われます。単精度 32bit と比べると 2倍の速度が出るはずなので、余裕があったら試してみたいと思います。
テストに使った機種の詳細
関連エントリ
・ARM CPU 上の開発環境とコンパイル時間の比較 (2) Pixel 3/UserLAnd
・ARM CPU の浮動小数点演算能力まとめ
・HTC 10 Snapdragon 820 Kyro の浮動小数点演算能力
・HTC 10 Snapdragon 820 Kyro の浮動小数点演算能力
・iPhone SE, Apple A9 の浮動小数点演算速度
・Raspberry Pi 3 の速度比較, Cortex-A53 の速度
・ARM Cortex-A53 の浮動小数点演算速度とコンパイル時間の比較
・iPod touch 6 の浮動小数点演算速度は Core 2 Duo ライン超え
・iPad Air 2 (Apple A8X) の浮動小数点演算能力
Device | Single thread | Multi thread | |||||
---|---|---|---|---|---|---|---|
SoC | CPU Core | big | little | big | little | Total | |
Snapdragon 845 | Kryo385 | 4+4 | 22.3 | 13.7 | 84.4 | 54.9 | 139.3 GFLOPS |
Exynos 7420 | A57+A53 | 4+4 | 16.8 | 11.8 | 55.5 | 47.1 | 102.6 GFLOPS |
Rockchip RK3399 | A72+A53 | 2+4 | 16.1 | 11.8 | 32.1 | 47.2 | 79.3 GFLOPS |
Snapdragon 808 | A57+A53 | 2+4 | 14.5 | 11.2 | 29.1 | 44.9 | 74.0 GFLOPS |
Snapdragon 821 | Kryo | 2+2 | 18.7 | 12.6 | 37.4 | 25.3 | 62.7 GFLOPS |
・big = big core, little = little core
・Total = Multi thread の合計
vfpbench の単精度の結果のみ抜き出しています。単位は GFLOPS 。数値が大きい方が高速です。
表の CPU は Kryo, Kryo 385 (A75), Cortex-A57 いずれも 64bit x2 pipe なので、ピーク性能の差は純粋に core 数と clock 数で決まっています。
同様に little core の Cortex-A53/A55 も 64bit x2 の FP pipe を持っているので、数値上はほぼクロック差だけの違いとなっています。32bit 時代の little core Cortex-A7 と比べると性能は大きく上がっています。
初代 Kryo は Qualcomm 独自 core ですが、Snapdragon 845 の Kyro 385 は ARM Cortex-A75 + A55 がベースになっているようです。そのため Snapdragon 845 Kryo 385 の特性は初代 Kryo は異なっています。
例えば Kyro と Kyo 385 は積和命令のピーク演算はどちらも同一ながら、加算だけなら Snapdragon 821 の Kryo の方が 2倍速く回っています。
下記の表は 1 cycle に実行できる命令数 (IPC)
Device | 64bit | 128bit | ||
---|---|---|---|---|
CPU Core | mul/fma | add | mul/fma | add |
Kryo (Snapdragon 821) | 2 | 4 | 1 | 2 |
Kryo 385 (A75/A55)/A72/A57/A53 | 2 | 2 | 1 | 1 |
Kryo 385 のもとになった Cortex-A75 は ARM の新しい命令セットに対応しています。
Kryo 385 (A75/A55) | ARMv8.2-A |
Cortex-A72/57/53 | ARMv8.0-A |
以前の fp16 (半精度浮動小数点) 対応は変換命令だけでした。ロードストアは fp16 でも演算は fp32 以上に変換してから行います。v8.2 対応の A75/A55 では Deep Learning 向けに 16bit 命令が強化されています。fp16 のまま直接演算できるようになりました。
・ARM FPU (VFP/NEON) の種類
例えば NEON (Advanced SIMD) では 128bit 時に 8並列で演算が行われます。単精度 32bit と比べると 2倍の速度が出るはずなので、余裕があったら試してみたいと思います。
テストに使った機種の詳細
Pixel 3 | Snapdragon 845 SDM845 | 4+4 | Kryo 385 (A75/A55) | 2.8GHz | 1.8GHz |
Galaxy S6 | Exynos 7420 | 4+4 | Cortex-A57/A53 | 2.1GHz | 1.5GHz |
C101PA | Rockchip RK3399 | 2+4 | Cortex-A72/A53 | 2.0GHz | 1.5GHz |
ZenfoneAR | Snapdragon 821 MSM8996 | 2+2 | Kryo | 2.3GHz | 2.1GHz |
Nexus 5X | Snapdragon 808 MSM8992 | 2+4 | Cortex-A57/A53 | 1.8GHz | 1.4GHz |
関連エントリ
・ARM CPU 上の開発環境とコンパイル時間の比較 (2) Pixel 3/UserLAnd
・ARM CPU の浮動小数点演算能力まとめ
・HTC 10 Snapdragon 820 Kyro の浮動小数点演算能力
・HTC 10 Snapdragon 820 Kyro の浮動小数点演算能力
・iPhone SE, Apple A9 の浮動小数点演算速度
・Raspberry Pi 3 の速度比較, Cortex-A53 の速度
・ARM Cortex-A53 の浮動小数点演算速度とコンパイル時間の比較
・iPod touch 6 の浮動小数点演算速度は Core 2 Duo ライン超え
・iPad Air 2 (Apple A8X) の浮動小数点演算能力
いろんな OS の中で Linux 環境が使えるようになってきました。OS の中に同居し、Native なアプリと同時に Linux のソフトウエアも走らせられるようになっています。ハードウエアまるごとエミュレーションする仮想 PC とは異なります。RAM やストレージに境界はなく、カーネルをそのまま共有しつつシステムに間借りする形で動きます。
● Windows 10 WSL
複数の Distribution が用意されており、Microsoft Store からアプリとしてインストールできます。事前に WSL を有効化しておく必要があります。
(1) 設定→ 「アプリと機能」→「プログラムと機能」→「Windows の機能の有効化または無効化」
(2) 「Windows Subsystem for Linux」にチェックを入れて再起動。
● Chrome OS (Chromebook/Chromebox 等)
ChromeOS は Chrome Browser のための Platform です。普段 PC で Chrome ブラウザを使っているなら、Chrome OS に触ると大半の作業がブラウザで事足りることに気が付きます。利用できる Chrome アプリは限られているものの、必要なら Android や Linux アプリを使うことができます。アプリ選択の自由度は意外に高くなっています。
現在 Chrome OS デバイスで Linux を走らせる方法は複数あります。それぞれ複数の Distribution から選ぶことができます。(Linux Apps を除く)
公式に対応した Linux Apps は対応機種がまだ少ないですが、Developer mode に切り替える必要がないので非常に扱いやすくなりました。
インストール&起動方法で分けると下記の 3種類です。
(1) Native Install
普通の PC と同じように Linux をゼロから install します。Gallium OS 他。
(2) Dualboot (ChrUbuntu)
カーネルを流用して Linux を起動します。boot 時に選択します。(ChrUbuntu)
(3) Chrome OS と同居
コンテナとして Chrome OS 上で動きます。Chrome OS と同時利用が可能。
さらに (3) の方法にも複数の選択肢ができました。
1. Crouton : chroot で Linux を install。古くから存在し多くのデバイスで利用可能。
2. Android Apps : Android アプリとして Linux 環境 (UserLAnd 等) を install
3. Linux Apps (crostini) : ChromeOS 公式の Linux 環境
2. および 3. は比較的新しい機種のみ対応しており、古い機種では使うことができません。
なお Crouton は Chrome OS 内に Linux Desktop を表示できますが、X11 の動作モードが 2種類あります。(sudo startsfce4 -X xiwi 等のオプションで切り替え)
・xiwi : Chrome OS のウィンドウの一つとして表示。ソフトウエア描画。
・xorg : 全画面を乗っ取ってしまうがハードウェアアクセラレーション対応。
下記画面は Crouton の xiwi で Linux Desktop を表示したものです。

・GitHub: Crouton
・GitHub: ChrUbuntu
・Gallium OS
● Android
(UserLAnd) は Android アプリとして Linux 環境を install します。root 無しに利用可能で、複数の Distribution から選ぶことができます。現在は Arch, Debian, Kali, Ubuntu の 4種類用意されているようです。
アプリからは SSH Terminal, VNC の 2種類の接続方法を選ぶことができます。公式サイトにあるように X Server も使えます。
1. アプリ install
2. 任意の Distribution を選択 (Debian, Ubuntu 等)
3. フォルダへのアクセス許可
4. ユーザー名とパスワードの入力
5. 利用方法の選択 (SSH or VNC) あとから変更可能
6. 初回のみ ConnectBot or bVNC Free の install
7. 6. で install した場合はアプリに戻ってもう一度選択すると起動
VNC 利用時の desktop install 手順。
VNC の解像度変更方法
"~/.vnc/tightvncserver.conf" を作成して下記のように任意の解像度を書き込む。この指定がない場合 1024x768 になっています。
2160x1080 や 1920x1080 等、スマートフォンで実解像度を指定すると小さすぎて文字が読めなくなる可能性があるので注意。↓ は ZenFone AR の画面です。

・UserLAnd
関連エントリ
・ARM CPU 上の開発環境とコンパイル時間の比較 (2) Pixel 3/UserLAnd
・Android/Linux MaruOS その4
・Nexus 7 上に開発環境をつくる (4) Ubuntu 13.04
Windows | WSL (Windows Subsystem for Linux) |
---|---|
Chrome OS | Linux Apps, Crouton, Android Apps |
Android | UserLAnd |
● Windows 10 WSL
複数の Distribution が用意されており、Microsoft Store からアプリとしてインストールできます。事前に WSL を有効化しておく必要があります。
(1) 設定→ 「アプリと機能」→「プログラムと機能」→「Windows の機能の有効化または無効化」
(2) 「Windows Subsystem for Linux」にチェックを入れて再起動。
● Chrome OS (Chromebook/Chromebox 等)
ChromeOS は Chrome Browser のための Platform です。普段 PC で Chrome ブラウザを使っているなら、Chrome OS に触ると大半の作業がブラウザで事足りることに気が付きます。利用できる Chrome アプリは限られているものの、必要なら Android や Linux アプリを使うことができます。アプリ選択の自由度は意外に高くなっています。
現在 Chrome OS デバイスで Linux を走らせる方法は複数あります。それぞれ複数の Distribution から選ぶことができます。(Linux Apps を除く)
公式に対応した Linux Apps は対応機種がまだ少ないですが、Developer mode に切り替える必要がないので非常に扱いやすくなりました。
インストール&起動方法で分けると下記の 3種類です。
(1) Native Install
普通の PC と同じように Linux をゼロから install します。Gallium OS 他。
(2) Dualboot (ChrUbuntu)
カーネルを流用して Linux を起動します。boot 時に選択します。(ChrUbuntu)
(3) Chrome OS と同居
コンテナとして Chrome OS 上で動きます。Chrome OS と同時利用が可能。
さらに (3) の方法にも複数の選択肢ができました。
1. Crouton : chroot で Linux を install。古くから存在し多くのデバイスで利用可能。
2. Android Apps : Android アプリとして Linux 環境 (UserLAnd 等) を install
3. Linux Apps (crostini) : ChromeOS 公式の Linux 環境
2. および 3. は比較的新しい機種のみ対応しており、古い機種では使うことができません。
なお Crouton は Chrome OS 内に Linux Desktop を表示できますが、X11 の動作モードが 2種類あります。(sudo startsfce4 -X xiwi 等のオプションで切り替え)
・xiwi : Chrome OS のウィンドウの一つとして表示。ソフトウエア描画。
・xorg : 全画面を乗っ取ってしまうがハードウェアアクセラレーション対応。
下記画面は Crouton の xiwi で Linux Desktop を表示したものです。

・GitHub: Crouton
・GitHub: ChrUbuntu
・Gallium OS
● Android
(UserLAnd) は Android アプリとして Linux 環境を install します。root 無しに利用可能で、複数の Distribution から選ぶことができます。現在は Arch, Debian, Kali, Ubuntu の 4種類用意されているようです。
アプリからは SSH Terminal, VNC の 2種類の接続方法を選ぶことができます。公式サイトにあるように X Server も使えます。
1. アプリ install
2. 任意の Distribution を選択 (Debian, Ubuntu 等)
3. フォルダへのアクセス許可
4. ユーザー名とパスワードの入力
5. 利用方法の選択 (SSH or VNC) あとから変更可能
6. 初回のみ ConnectBot or bVNC Free の install
7. 6. で install した場合はアプリに戻ってもう一度選択すると起動
VNC 利用時の desktop install 手順。
$ sudo apt update $ sudo apt upgrade $ sudo apt install lxde $ mv ~/.vnc/xstartup ~/.vnc/xstartup.bak $ cp /usr/bin/startlxde ~/.vnc/xstartup
VNC の解像度変更方法
"~/.vnc/tightvncserver.conf" を作成して下記のように任意の解像度を書き込む。この指定がない場合 1024x768 になっています。
$geometry = "1280x720"
2160x1080 や 1920x1080 等、スマートフォンで実解像度を指定すると小さすぎて文字が読めなくなる可能性があるので注意。↓ は ZenFone AR の画面です。

・UserLAnd
関連エントリ
・ARM CPU 上の開発環境とコンパイル時間の比較 (2) Pixel 3/UserLAnd
・Android/Linux MaruOS その4
・Nexus 7 上に開発環境をつくる (4) Ubuntu 13.04