linux」タグアーカイブ

Proxmox VE の GPU パススルー設定

Proxmox VE の GPU パススルーを色々試しています。以下のページにまとめました。

GeForce の外付け GPU であれば、Proxmox 上の GUI だけで簡単に設定できることがわかりました。

AMD CPU はもともと設定不要ですし、Intel CPU でも Proxmox VE 8.2 から intel_iommu=on がデフォルトで有効化されており grub 上のカーネルオプションの設定が不要になっています。

実際に Ryzen 9 3950X + X570 にビデオカードを最大 4枚繋いでパススルーを行うことができました。

2枚はマザー上の x16 スロットに直接、もう一つは PCIe x1 からライザーケーブル経由、最後は M.2 スロットから OCulink で DEG1 に外部 GPU として接続しています。

それぞれ異なる VM に割り当ててもいいですし、全部同じ VM で使うこともできます。

例えば VRAM 8GB のビデオカードでも、3台集めれば 27b の LLM モデルを GPU で走らせることができます。GeForce RTX 2070 Super + GeForce GTX 1080 + GeForce GTX 1070 はいずれも VRAM 8GB ですが、3台使うことで ollama 上の Gemma2:27b が 13 token/s ほどになりました。CPU のみだと 1.5 token/s くらいです。

試した GPU は以下の通りです。動かなかったのは今のところ RADEON RX Vega 56 のみです。詳しくはまとめたページの方をご覧ください。

  • GeForce RTX 4060 Ti
  • GeForce RTX 2070 Super
  • GeForce GTX 1080
  • GeForce GTX 1070
  • GeForce GTX 970
  • GeForce GTX 960
  • RADEON RX 6400
  • RADEON RX 480

関連ページ

IvyBridge と N100 を比較する

OS サポートが切れた 12年前の Mac mini をずっと Linux マシンとして使用していましたが、今なら Intel N100 の方が速いのではないかと思い速度を比べてみました。N100 は AlderLake (第12世代) の E-Core のみ搭載した CPU です。

以下は Ubuntu 22.04 におけるコンパイル時間 (clang 14) を比較したものです。

PCCPUTDPClockCoreThreadコンパイル時間
Mac mini Late2012Core i7-3615QM45W3.3GHzIvyBridge4C 8T69.57
Mini PCIntel N10020W3.2GHzAlderLake(E)4C 4T59.67
  • ↑コンパイル時間の数値が小さい方が高速

ストレージもメモリもクロックもちょうど同じくらいの性能でしたが、N100 の方が 10秒ほど早くビルドが終わっています。N100 は Atom 系の省電力コアながら、第3世代 Core の IvyBridge よりも速いことがわかります。

搭載されているメモリとストレージは以下の通りです。

PCCPURAM 容量メモリの種類メモリ速度STORAGE
Mac mini Late2012Core i7-3615QM16GBDDR3-1600 x225.6 GB/sSATA SSD
Mini PCIntel N10016GBDDR4-3200 x125.6 GB/sSATA SSD

なお N100 の TDP はスペックを見ると 6W ですが、テストした PC の UEFI (BIOS) では PL1=20W, PL2=無効 に設定されていたため今回の結果は 20W 時の値になっています。

さらに N100 で vfpbench の値も調べてみました。IvyBridge と比較してみます。

PCCPUTDPClockSingle SpSingle DpMulti SpMulti Dp
Mac mini Late2012Core i7-3615QM45W3.3GHz51.7G26.1G193.4G97.0G
Mini PCIntel N10020W3.2GHz54.2G27.1G185.0G92.6G
  • ↑数値の単位は FLOPS、値が大きい方が高速

すべての結果は以下の場所にあります。

掲載した表の数値はピーク値のみです。これを見るとどちらもあまり差が生じていないように見えますが、その内訳は大きく異なっています。

IvyBridge は 256bit の浮動小数点演算パイプを 2本持っており、それぞれ加算と乗算を受け持ちます。FMA には非対応ですが AVX 256bit の add と mul 命令を同時に実行できるため、この組み合わせがピーク値になります。add または mul 命令単独の場合は片方のみが使われるため効率は半減します。

N100 は FMA に対応しているため 1命令で積和演算が可能です。その代わり 256bit の AVX 命令はクロックあたりひとつしか実行できず、256bit fma がピーク値になります。128bit の AVX/SSE であれば 2命令実行できているため、浮動小数点演算の実行パイプラインは 128bit が 2本あることがわかります。この構成は AMD の Jaguar 系と似ています。

これらの結果より FMA や AVX2 があるので互換性の面でも N100 が有利ですが、fma 以外の 256bit AVX 浮動小数点演算が混在するようなケースでは IvyBridge の方がスループットが高くなる可能性があります。

大まかに両者の性能がわかったところで、他の PC ともコンパイル時間を比較してみたいと思います。

以下の表は同じ Linux 上での比較です。Ubuntu 22.04 Clang 14。SteamDeck は Distrobox を使用しています。

PCCPUTDPThreadCoreSTORAGEコンパイル時間
Mac mini Late2012Core i7-3615QM45W4C 8TIvyBridgeSATA SSD69.57 秒
Mini PCIntel N10020W4C 4TAlderLake(E)SATA SSD59.67 秒
SteamDeck LCDCustom APU 040515W4C 8TZen2NVMe 452.31 秒
Desktop PCRyzen 5 260065W6C 12TZen1+SATA SSD29.78 秒
  • ↑コンパイル時間の数値が小さい方が高速

以下の表は同じ Ubuntu 22.04 Clang 14 ですが Windows 上の WSL2 を使用しています。同じ N100 や Ryzen 5 2600 で比べるとわかるように、Native の Linux よりも若干遅めの数値になります。

CPUTDPTHREADCORESTORAGEコンパイル時間
Intel N10020W4C 4TAlderLake(E)NVMe 367.26 秒
Core i5-940065W6C 6TCoffeeLakeNVMe 355.86 秒
Core i7-4790K88W4C 8THaswellSATA SSD39.77 秒
Core i7-6700K65W4C 8TSKyLakeSATA SSD35.83 秒
Ryzen 5 5560U25W6C 12TZen3NVMe 335.04 秒
Ryzen 5 260065W6C 12TZen1+NVMe 332.10 秒
Ryzen 5 360065W6C 12TZen2NVMe 322.78 秒
Ryzen 7 4750G45W8C 16TZen2NVMe 322.36 秒
Ryzen Z1 Extreme25W8C 16TZen4NVMe 417.33 秒
Ryzen 9 3950X105W16C 32TZen2NVMe 39.17 秒
Core i7-1370065W16C 24TRaptorLakeNVMe 48.39 秒
  • ↑コンパイル時間の数値が小さい方が高速

やはりコア数が多い CPU や新しいアーキテクチャの CPU、消費電力の高い CPU は性能が上がります。

下の表はさらに Android 上の Termux (Clang 18.1.7) での計測してみた結果です。モバイルデバイスも CPU もコア数が多いので今回のケースでは速度が出ています。ただし RAM 容量が少ないことや放熱の問題があるので、大きなプロジェクトや長時間の連続稼働にはおそらく向きません。

PCCPUTHREADCOREコンパイル時間
iPlay 50 Mini ProHelio G998C 8T (2+6)A76 / A5553.68 秒
iPlay 50 ProHelio G998C 8T (2+6)A76 / A5547.45 秒
Huawei P30 ProKirin 9808C 8T (4+4)A76 / A5527.73 秒
Pixel 8aTensor G39C 9T (1+4+4)X3 / A715 / A51021.94 秒
Pixel 8Tensor G39C 9T (1+4+4)X3 / A715 / A51020.35 秒
  • ↑コンパイル時間の数値が小さい方が高速

N100 搭載 PC は安価で入手できることもあり人気があります。Raspberry Pi 5 を一通り揃えても同じくらいの価格帯になりますので、入手のしやすさは魅力といえます。IvyBridge の Core i7-3615QM との比較でも十分 N100 の方が速いことがわかりました。

ただし思ったよりも差は少なく、他の PC と比べると性能には限界があります。もし少ない価格差で Ryzen 5 5560U にアップグレードできるならビルド時間は約半分、浮動小数点演算性能も数倍になりますので、用途によってはこちらの方がコストパフォーマンスは良いかもしれません。

関連エントリ

SteamDeck の Linux Desktop で日本語入力環境を作る

前回 SteamDeck には簡単に Linux 環境をインストールできることがわかりました。SteamOS には最初から distrobox コマンドがインストールされており、コマンド一つで各種 Linux 環境を入れることができます。

例えば Ubuntu をインストールするならコマンドラインから「distrobox create -i ubuntu:22.04」のように実行するだけです。apt 経由で各種ソフトウエアを利用できるので開発環境の構築なども簡単です。またインストールした環境はコンテナなので、失敗しても削除できますしすぐやり直すことができます。気軽にテストすることができます。

今回は Debian で GUI の日本語入力環境を整えてみます。

先に USB または Bluetooth キーボードを接続しておいてください。マウスもあった方が良いですが、SteamDeck 右側のタッチパッド + R2(左クリック) / L2(右クリック) でも代用できます。

(1) SteamOS のデスクトップに切り替える

  1. 「STEAM」ボタン → 「電源」→「デスクトップに切り替え」

以降再起動でゲーミングモードに戻った場合は、再びこの操作でデスクトップに切り替えてください

(2) 日本語表示に切り替える

  1. デスクトップ左下の Application Launcher アイコン → Settings → System Settings
  2. Regional Settings → 一番上にある Language 右端の「Modify…」
  3. 「Change Language」→「日本語」を選択
  4. 右下の「Apply」→ 右上の「Restart now」→「OK」
  5. 再起動するので、再びデスクトップに切り替えておきます。

(3) キーボードを日本語配列に切り替える

接続したキーボードが日本語配列の場合以下の設定を行います。英語配列キーボードを使用していて不要な場合はスキップしてください。

  1. デスクトップ左下の「アプリケーションランチャー」アイコン → 設定 → KDE システム設定
  2. 入力デバイス →「レイアウト」タブを選択 → 「レイアウトを設定」にチェックを入れる
  3. 「+Add」ボタン → Search欄に「109」を入れて「日本語 (OADG 109A)」を選択 → OK
  4. もとからあった英語配列を削除します。”英語(US) ” を選択して「-Remove」ボタンで削除
  5. 右下の「適用」クリック → 設定ウィンドウを閉じる

(4) ホームディレクトリに .distroboxrc を作成

  1. デスクトップ左下の「アプリケーションランチャー」アイコンから「ユーティリティ」→「KWrite」を開く
  2. メニューの「ファイル」→「新規」
  3. 以下の内容を書き込む
xhost +si:localuser:$USER
export PIPEWIRE_RUNTIME_DIR=/dev/null
  1. メニューの「ファイル」→「名前をつけて保存」
  2. 左上の「場所」の中から「ホーム」をクリックして選択
  3. 下の「名前(N):」の欄に「 .distroboxrc 」と入力
  4. 右下の「保存(S)」をクリック
  5. KWrite のウィンドウを閉じる

(5) ホームディレクトリの .bashrc を編集

  1. 画面左下のアプリケーションランチャーアイコンから「ユーティリティ」→「KWrite」を開く
  2. メニューの「ファイル」→「開く」
  3. 下の「名前(N):」の欄に「.bashrc」を入力して右下の「開く」をクリック
  4. 一番下に以下の内容を入力
export LANG=ja_JP.UTF-8
export DefaultIMModule=fcitx
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
  1. メニューの「ファイル」→「保存」を選択してから KWrite のウィンドウを閉じる

(6) ターミナルから Debian をインストール

  1. 画面左下のアプリケーションランチャーアイコンから「システム」→「Konsole」を開く
  2. ターミナル (Konsole) 内で以下のコマンドを実行
    • (“$” はプロンプトを意味するので、$ を除いた空白以降 “distrobox create ~” 部分を入力して Enter を押します。以後同じです)
$ distrobox create -i debian:12 -n debian
  1. “Do you want to pull the image now? [Y/n]:” と表示されたら「Y] を入力

(7) Debian 環境に入る

  1. 同じようにコンソールのコマンドラインから以下のように実行します。
$ distrobox enter debian

初回はインストールが入るので時間がかかります。

Debian 環境に入るとプロンプトが「(deck@steamdeck ~)$」から「deck@debian:~$」に変わります。

(8) Debian 上で環境構築

以後同じプロンプト「$」で表現していますが Debian に入った状態で行います。

  1. 以下のコマンドを実行します
$ sudo apt update
$ sudo apt upgrade -y
$ sudo apt install -y locales
$ sudo dpkg-reconfigure locales
  1. 言語選択画面になるので、キーボードから [j] キーを入力
  2. ja_JP.UTF-8 が選択されているので [SPACE] キーを押して選択状態にします (“*” マークが付きます)
  3. 同時に下段の < OK > が選択されているはずなので、そのまま [Enter] を 2回押して終了します
  4. 同じようにコンソールから以下のコマンドを実行します
$ sudo apt install -y task-japanese
$ sudo apt install -y fonts-noto-cjk
$ sudo apt install -y fcitx-mozc
$ fcitx

これで Debian 側でインストールしたアプリケーションは日本語入力が可能になります。

(9) キーボード配列の設定その2

タスクバーの右下あたりにキーボードのアイコンが追加されていることを確認します

  1. タスクバーにあるキーボードのアイコン右クリック→「設定」
  2. 「入力メソッド」のタブに、以下のように Mozc が並んでいれば OK です
キーボード - 日本語 - 日本語(OADG 109A)
Mozc

  1. もし日本語キーボードを使用しているのに、上の段が「キーボード ~ 日本語 (OADG 109)」になってない場合は切り替えてください
    • 画面下の「+」ボタンから新たに「日本語」配列を追加して、「-」ボタンで不要なものを削除しておきます
  2. タブを「全体の設定」に切り替えます
  3. 入力メソッドのオンオフ」の部分で、日本語入力切り替え方法を確認します
    • デフォルトでは「Ctrl+Space」が設定されているはずです。
  4. 設定ウィンドウを閉じます

これであとは Debian 側でインストールしたアプリケーションは日本語入力ができます。日本語入力への切り替えは「Ctrl」を押しながらスペースキーです。

注意点としては、デスクトップ左下のアプリケーションランチャーからは起動できず、Debian のコマンドラインから起動する必要があります。またこの手順では自動起動のの設定をしていないので、再起動後は手動で fcitx を起動する必要があります。

再起動後やゲームモードから切り替えた場合に再び Debian 環境に入る手順

  1. Konsole を起動し、ターミナル内で「 distrobox enter debian 」を実行
  2. Debian 環境に入ったらコマンドラインで「fcitx」を実行

タスクバーにキーボードのアイコンがない場合は手動で fcitx を起動してください。

以下アプリケーションごとのインストール例

あくまで例なので必要に応じてどうぞ。

Firefox

Debian 環境に入った状態で以下のようにインストールします。インストールが終われば firefox コマンドで起動できます。この firefox 上では [Ctrl] + [SPACE] で日本語入力ができます。

$ sudo apt install -y firefox-esr
$ firefox

起動時に「KDE ウォレットサービス」の画面が表示された場合はとりあえずキャンセルします。

なお、この Firefox は SteamOS 側のアプリケーションランチャーやタスクバーからは起動できないので注意が必要です。必ず distrobox enter debian で Debian 環境に入ったあとに、コマンドラインから firefox を起動してください。

Chrome

  1. firefox で Chrome for Linux をダウンロードします。「64bit .deb (Debian/Ubuntu 用)」を選択します
  2. ダウンロードしたファイルは Downloads フォルダに入っているので、Debian 環境に入ってからコマンドラインで以下のようにインストールします
$ sudo apt install -y $HOME/Downloads/google-chrome-stable_current_amd64.deb
$ google-chrome
  1. インストールが終わったら「google-chrome」コマンドで起動できます

gnome-terminal

  1. Debian 環境に入ってからインストールします
$ sudo apt install -y gnome-terminal
$ dbus-launch gnome-terminal
  1. ターミナルを起動するには「dbus-launch gnome-terminal」コマンドを実行します

Debian 側から起動したこのターミナルでは日本語入力ができます

VSCode

chrome と同じようにブラウザ上で「~.deb」ファイルをダウンロードし、「apt install 」コマンドでインストールします

  1. firefox で https://code.visualstudio.com を開いて 「.deb」ボタンから VSCode をダウンロードします
  2. ダウンロードが完了すると Downloads フォルダに入っているので、apt コマンドでインストールします (バージョンによってファイル名は異なります)
$ sudo apt install -y $HOME/Downloads/code_1.85.2-1705561292_amd64.deb
$ code
  1. インストールが完了したら、code コマンドで起動できます。もちろんテキストエディタとして普通に日本語入力できます。

Distrobox の管理

SteamOS 側のコマンドライン上で管理できます。同時に複数の環境を実行しないよう、不要なものは stop しておいてください。

インストールされているコンテナの確認

$ distrobox list

実行中のコンテナの停止

$ distrobox stop debian

名前をつけて別の Debian 環境を作成

$ distrobox create -i debian:12 -n debian2

その他詳しくは公式サイトをご覧ください。

活用など

SteamDeck の SteamOS はタブレットやスマートフォンのように電源ボタンによるスリープができます。いつの間にか電源が入っていて知らないうちにバッテリーを消費しているなんてこともなく安定しています。バッテリーも TDP を 3W まで下げることができるので、色々使えるのではないかと思ってます。

関連エントリ

SteamDeck に Ubuntu で開発環境を作る (Distrobox)

SteamDeck の最新の OS には最初から Distrobox がプリインストールされており、簡単に Ubuntu などの環境を入れられることがわかりました。前回の vfpbench は SD-Card から起動した Windows11 上で走らせましたが、今回は SteamOS 上でそのまま実行できるように Ubuntu を入れてみます。

● デスクトップの設定

以降の一連の作業は USB Hub 経由で SteamDeck に USB のキーボードとマウスを接続した状態で行っています。Bluetooth のキーボード&マウスでも構いません。

(1) デスクトップに切り替える

  1. STEAM ボタン → 電源 →「デスクトップに切り替え」

元のゲーミングモードに戻るには、デスクトップ左上の「Return to Gaming Mode」のアイコンダブルクリックかログアウトを行います。

(2) キーボード配列を日本語に変更する場合

  1. 左下の Application Launcher アイコンクリック→ Settings → System Settings
  2. 一番上の Keyboard → Layouts Tab を開く
  3. 「Configure layouts」にチェックを入れる → 「+ Add」をクリック
  4. “Japanese” で検索して「Japanese (OADG 109A)」を選択
  5. デフォルトで入っている「us English (US)」を選択して「- Remove」をクリック
  6. 右下の「Apply」をクリック

(3) 表示言語を日本語に変更する場合

  1. 左下の Application Launcher アイコンクリック→ Settings → System Settings
  2. Regional Settings → Language 右端の「Modify…」
  3. 「Change Launguage」→「日本語」を選択→右下の「Apply」→右上の「Restart now」→「OK」
  4. 再起動後、ゲーミングモードになっている場合は再び STEAM→電源→「デスクトップに切り替え」

● Distrobox で Ubuntu をインストールする

Distrobox / podman 自体のインストール手順は不要です。公式 Image を使ってクリーンインストールした状態でも /usr/bin にコマンドが含まれていることを確認しました。

  1. 左下の「アプリケーションランチャー」アイコンクリック → システム→ Konsole (KDE Terminal) でコンソールを開く
  2. 以下内容で ~/.distroboxrc ファイルを作成します
xhost +si:localuser:$USER
export PIPEWIRE_RUNTIME_DIR=/dev/null
  1. コンソールで以下のコマンドを実行
$ distrobox create -i ubuntu:22.04

Do you want to pull the image now? [Y/n]: に Y を入力

  1. 以下のコマンドを実行
$ distrobox enter ubuntu-22-04

以後、4. のコマンドだけで Ubuntu 環境に入ることが可能です。またはアプリケーションランチャーからも直接「Ubuntu-22-04」のアイコンを探して起動することができます。

● Ubuntu 環境の設定など

あとは Ubuntu 上で apt コマンドを使ってソフトウエアのインストールができます。

例 vfpbench のために git, clang を入れる

$ sudo apt update
$ sudo apt upgrade -y
$ sudo apt install -y git clang

例 vim + uim-mozc を使った日本語入力を行う場合

  1. ソフトウエアをインストールします

予め (3) の日本語表示設定をしておく必要があります。

$ sudo apt install vim
$ sudo apt install language-pack-ja
$ sudo apt install uim-fep uim-mozc
  1. 以下の内容で ~/.uim ファイルを作成しておきます。
(define default-im-name 'mozc)
(define-key generic-on-key? '"<Control> ")
(define-key generic-off-key? '"<Control> ")
  1. 起動します
$ export LANG=ja_JP.UTF-8
$ uim-fep

例 vscode を使う

  1. https://code.visualstudio.com/Download から 「.deb」「x64」 をダウンロードしておきます。
  2. 以下のコマンドでインストール&起動します
$ sudo apt install ./code_~_adm64.deb
$ code

活用など

SteamDeck の SteamOS はスマートフォンのように電源ボタンで簡単にスリープ可能で復帰も安定しています。持ち歩ける開発環境として便利に使えそうです。

関連エントリ