Intel Arc A750のモニタリング(Ubuntu編)

グラフィックスカード
スポンサーリンク

Amazonのアソシエイトとして、当ブログは適格販売により収入を得ています。

いったい何を言っているんだと思うかもしれませんが、諸事上により「Pro B60」を処分して、今更ながらA750を購入しました。
引っ越しの為、いろいろと始末しなくてはならなくなった影響です。

そもそもIntel Arcを使っている人はコスパを重視する傾向がありますので、
「B60のような高級品は自分にも自分のブログにも合わなかった。」
そういうことにしておいて下さい、お願いします。

ただ、torch.xpuを利用してpythonスクリプトを改変したりするぶんには影響はないので、これからも「Intel Arcで動かしてみた」的な記事は書き続けます。

今回はA750をUbuntuで使う際、VRAM使用量やファン回転数、消費電力を表示するモニタリングソフトを作ってみましたので公開します。
多分他のAシリーズでも使えると思うので、持っている人は試してみてください。

それではいってみましょう。

まずxpumanagerをダウンロード、インストールする

VRAMの使用量とGPUのクロック周波数を取得するのに必要になります。
逆に言うと、それ以外はA750では取得できませんでした。

GitHub - intel/xpumanager
Contribute to intel/xpumanager development by creating an account on GitHub.
赤丸の部分をクリック。
赤枠で囲っているファイルをダウンロード。
ターミナルでインストールします。

以上で「xpumanager」のインストールは終了です。

「/sys/class/hwmon」の値を利用する

というわけで上に書いた「それ以外」を「/sys/class/hwmon」から取得します。

#!/bin/bash

DEVICE_ID=0
INTERVAL=1
MAX_VRAM=8192

# xe または i915 の hwmon を自動検出
HWMON_XE=""
for d in /sys/class/hwmon/hwmon*; do
    if [ -r "$d/name" ]; then
        driver_name=$(cat "$d/name")
        if [ "$driver_name" = "xe" ] || [ "$driver_name" = "i915" ]; then
            HWMON_XE="$(basename "$d")"
            break
        fi
    fi
done

if [ -z "$HWMON_XE" ]; then
    echo "Intel Arc の hwmon デバイスが見つかりませんでした。" >&2
    exit 1
fi

# k10temp (Ryzen) のhwmonを自動検出
HWMON_k10=""
for d in /sys/class/hwmon/hwmon*; do
    if [ -r "$d/name" ] && [ "$(cat "$d/name")" = "k10temp" ]; then
        HWMON_k10="$(basename "$d")"
        break
    fi
done

if [ -z "$HWMON_k10" ]; then
    echo "Ryzen の hwmon デバイスが見つかりませんでした。" >&2
    exit 1
fi

# GPUの初期エネルギーを取得
export initial_energy=$(cat /sys/class/hwmon/${HWMON_XE}/energy1_input)

gnome-terminal --geometry=20x8 -- bash -c "
# 親プロセスから初期値を受け取る
prev_energy=${initial_energy}

while true; do
    OUTPUT=\$(xpumcli stats -d ${DEVICE_ID})
    
    # CPU温度
    temp=\$(cat /sys/class/hwmon/${HWMON_k10}/temp1_input)
    temp_c=\$((temp / 1000)).\$((temp % 1000))
    
    # VRAM
    USED=\$(echo \"\$OUTPUT\" | grep 'GPU Memory Used' | awk -F 'current:' '{print \$2}' | awk '{print \$1}')
    
    # GPU温度 (1000で割って℃に変換)
    core_temp_raw=\$(cat /sys/class/hwmon/${HWMON_XE}/temp1_input)
    core_temp=\$((core_temp_raw / 1000))
     
    # GPU電力 (エスケープを追加、インターバル秒数で割る)
    current_energy=\$(cat /sys/class/hwmon/${HWMON_XE}/energy1_input)
    power=\$(echo \"scale=2; (\$current_energy - \$prev_energy) / 1000000 / ${INTERVAL}\" | bc)
    prev_energy=\$current_energy
     
    # GPU周波数
    frequency=\$(echo \"\$OUTPUT\" | grep 'GPU Frequency' | awk -F 'current:' '{print \$2}' | awk '{print \$1}')
     
    # GPUファン
    fan1=\$(cat /sys/class/hwmon/${HWMON_XE}/fan1_input 2>/dev/null || echo \"N/A\")
        
    # 表示更新
    tput cup 0 0
    tput ed
    echo \"CPU temp : \${temp_c}°C\"
    echo \"frequency: \${frequency} MHz\"
    echo \"GPU  temp: \${core_temp} ℃\"
    echo \"GPU power: \${power} W\"
    echo \"GPU fan  : \${fan1} RPM\"
    echo \"vram used: \${USED}/${MAX_VRAM} MiB\"
    
    sleep ${INTERVAL}
done
exec bash"

自分は「bash_xpumanager.sh」という名前で保存しています。

というわけで実行。
無事成功。アイドル時の消費電力が高いのはAシリーズなので仕方ないですね・・・。

最後に

生成AIを動かすときに、VRAMの表示ができるのはけっこうありがたいです。
動画生成は「–novram」を使わないとちょっと無理ですが、「Irodori-TTS」くらいだったら十分に動くし、モニタリングできます。
そのうち「Irodori-TTS」のIntel Arc用の記事を書きますね。
すでに書いて記事にしています。

今回は以上です。


「Pro B50」やAsRock製の「Pro B60」なんてめずらしいモノが出てますね。
Amazon倉庫からの出荷ではないので、購入する時は自己責任でお願いします。

Amazon | ASRock Intel Arc Pro B60 Creator 24GB グラフィックスカード、Intel Xe2-HPGアーキテクチャ、24GB GDDR6、PCIe 5.0、4X DisplayPort 2.1、ブロワーデザイン、0dBサイレント冷却。 | ASRock | グラフィックボード 通販
ASRock Intel Arc Pro B60 Creator 24GB グラフィックスカード、Intel Xe2-HPGアーキテクチャ、24GB GDDR6、PCIe 5.0、4X DisplayPort 2.1、ブロワーデザイン、0d...
Amazon | Intel 33P6PEB0BB Arc Pro B50 16GB ビデオカード。 | インテル | グラフィックボード 通販
Intel 33P6PEB0BB Arc Pro B50 16GB ビデオカード。がグラフィックボードストアでいつでもお買い得。当日お急ぎ便対象商品は、当日お届け可能です。アマゾン配送商品は、通常配送無料(一部除く)。

コメント

タイトルとURLをコピーしました