Ryzen 9 9950Xで解析用コンピューターを組んだ

日付;2024/11/04(月)、2024/11/24(日)LAN Driverについて追記、2024/12/04(水)psensorによるモニタリングについて追記、2024/12/08(日)psensorではなくメモリ不足にだったことを追記

はじめに

これまで、マウスコンピューターのmouse K5というラップトップで解析を行ってきたが、これでTCGAなどのように数千人のデータだったり、シングルセルRNA-seqだったりの解析ではさすがに厳しくなってきた。一つのコードチャンクを走らせるのに数時間も数日も費やすのは時間がいくらあっても足りないような気がする。期限付きの解析もあったりするわけで、これではちょっと時間がもったいない。

他にも問題がある。うちにはまともに機能するWindowsがない。これが解析用Linuxの導入につながってくる理由としては、実はこれまでLinuxのコンピューターとして使っていたmouse K5は、もともとWIndows11が入っていて、それを復活させれば新しくWindows11を準備する必要がなく、かつ、そこそこ良いコンピューターでWindows11を準備することができる、ということである。

Windowsが無いことの問題は、プリンターが使えなくなることである。うちにあるプリンターも古い。うちにはMacOS Montereyが今でも走っているが、このプリンターのドライバーが使えなくなっている。そもそも、MacOS Montereyって、これも古い。もう全部古い。どんだけ古いものを使っているのだろうか。もう家にある機器が全部10年前になろうとしている。でも、買いたくない。最近のこういったオールインワンの機器の半減期が短すぎるし、機能的にも無駄が多い。

実際のところCore i5のWindows 10が一応機能しているのだが、このラップトップは購入後、もうすぐ10年を迎えようとしており、ストレージの容量が合計256GBとかなり小さく、入れておきたいソフトウェアも全部入れることが出来ず、使っていてもやっとのこと走っているような感じがする。

そして、購入を前提として色々と現状と条件を考えてみた。

  1. 処理能力が高いコンピューターが必要である。
  2. 新しいプリンタを買いたくない。
  3. 新しいラップトップを買いたくない。新しいMacはまだましとして、Windows11を買うなんて論外。
  4. 持っているWindows 10は機能するものの、処理能力が遅く、ストレージ容量が256GBなのはかなり厳しい。でもまだ使いたい。というか、持っておきたい。これはバックアップのバックアップみたいなポジションである。
  5. Windows 11はMouse K5のプレインストール(OEM版というのだろうか)版を持っており、プリンターもつながる。もともとゲノム解析の練習用に揃えたものなので、性能も高い。

これを考えてみても、計算の能力の高いコンピューターを一台入れて、かつMouse K5をWindows 11に戻して、家にある古い、でも全く問題なく使える機器をつなげたほうが良いように思う。また、上述のように一つのコードチャンクに数時間から数日費やすのは、どう考えても時間の無駄に思えてならない。

そういうわけで、CPUの性能に特化させたコンピューターを一台いれることにした。まず、行うことは数千から数万例の遺伝子発現、ゲノム解析、シングルセルRNA-seq解析であり、それをできる限り効率的に行うことが出来るコンピューターであれば良い。そして、CUDAが動くグラフィックボードも入れることにする。最近、たまにCUDAを使っているライブラリを見るし、個人的にも機械学習を勉強したいと思っている。当然、メモリは何でもいいから128GB入れる。

IntelかAMDか

IntelかAMDのどっちにするか、ここが最大の問題である。目的が解析であり、CPUの機能が重要である。最上位のCPUとそれの廉価版では、高々2から3万円くらいの差である。2万円をケチって廉価版を買い、とりあえず動かし、来年にそれのちょっとだけ良いCPUに変えるとか、単に面倒くさい。下手するとマザーボードも動かんとか、そういうことになり、結局10万円以上費やしたとかになるに決まっている。なので、初っ端から高級CPU一択である。もう設定をいちいち変えないようにする必要がある。途中からライブラリのバージョンが変わって計算結果の再現性がなくなったとかのほうが嫌である。

ちなみに、自作PCの経験なんか、全くない。雰囲気で作業を進めることにする。我ながら、かなりぶっ飛んだ勇気であると思う。

この買い物ではAMDを買うことに決めた。その理由は、UbuntuではIntelのPコア(Performance core)とEコア(Efficient core)を最大限活用できないように思うためである。経験的に言えば、ライブラリにdoParallelとかが組み込まれていないと、ほぼ間違いなくシングルスレッドで動く。Intelの開発グループには是非考えてみてほしいことがある。コンピューターの正常な機能の担保だったり、パフォーマンスを出すためだったり、そもそも動作に支障が出るようならば、つまり、動作面での電力効率ならなんとなくわかるが、ハイパフォーマンスのコンピューターのランニングコスト面において「電力効率が良い」ということにどれだけに意味があるのだろうか。こんなCPUを使いたいっていう奴は、そもそも電力効率なんて気にしちゃあいない。パフォーマンスが必要なんだから、これらを使用している。もしそれが電気代のようなランニングコスト面について言っているのならば、そういう人はこんなCPUは買わん。ラップトップのようなコンピューターを選ぶはずである。そういうことでPコアとかEコアという考え方は、このコンピューターを買おうとするユーザーの意図から全くズレたCPUである。AMDに良い研究者を引き抜かれて、Intelには間抜けだけが残ったのだろうか。自分は、とにかくあのEコアとPコアが嫌いである。24コアあるうち、どうせ優先的にEcore(16コア)にジョブが振られ、8コアが仕事しねんだろ?どうせ後々ゴミみたいなバグが出てくるよ。どうせAMDの次のモデルで、また大幅に抜かれるよ。小手先だけの言い訳みたいな開発をしてんじゃあないよ。無駄無駄。この記事を書いている時点ではCore Ultra 285Kとかも発売されているようだが、これもEコアとPコアで構成されているようだし、そもそもこんなものはゲーム用なんじゃあねえのかと思うところである。AMDだって似たようなものな気がするが、なんかCPUコアをぶち合わせただけ、という構造になんとも好感が持てるような気がする。

さらに、Core i9 14900番台の電圧問題もある。言うても自分はオーバークロックとか、そういうことにあまり興味はないのだが、そういった不安定なCPUに自費するのは嫌である。そういうことで、AMDのCPUにすることにした。

構成

そういうわけで、以下が組んだコンピューターの構成である。自分は自作PCは素人である。なので、詳しいことは良く知らない。とにかく、目的の解析を個人で、そして自分の能力を持って出来る限り早く終わらせるためにCPUをぶち回せれば、とりあえずOKである。しかしながら、個人的にちょっと気を使ったのはケース内のエアフローである。自分で解析していても負荷の高い計算のさなかの熱には驚くときがある。熱が出すぎて計算が止まったりするのは嫌である。そういうことでchatGPTに聞いて、おすすめされたCPUクーラーとエアフローの良いケースを選んだ。ちなみに、本格水冷は要らない。結局あれだって冷却用の媒体の温度が上がってしまったら同じことだし、メンテナンスとか面倒くさそうである。

パーツ商品名メーカー型番販売店単価個数
CPURyzen 9 9950XAMD100-100001277WOFアークコンピューター114,8001114,800
マザーボードASUS PRIME X870-P WIFI-CSMASUS90MB1IS0-M0JAYCアークコンピューター47,980147,980
メモリDDR Prp (DDR5-5600 64KIT (2x32GB) UDIMM 1.1V CL46)CrucialCP2K32GB56C46U5アマゾン23,036246,072
CPUクーラーNoctua NH-U12A chromax.blackNoctuaNH-U12Aアマゾン16,180116,180
グリスNoctua NT-H2NoctuaNT-H2アマゾン2,50012,500
Graphic BoardMSI  GeForce RTX 3060 VENTUS 2X 8G OCMSIGeForce RTX 3060 VENTUS 2X 8G OCドスパラ36,800136,800
電源MAG ABSOGL PCIE5MSIMAG A850GL PCIE5アマゾン18,973118,973
ケースH7 FlowNZXTCM-H71FB-01 CS8452アマゾン16,800116,800
購入した各パーツ

合計で300,105円。予算は30万円だったのに、105円超えてしまった。さらに、後述するLANカードの費用3,300円を含めると3405円超過である。でも、このくらいのコンピューターをBTOで注文すると簡単に50万円を超えて、70万とかになったりするので、それよりはかなり安いと思う。もっと流用できるようなパーツを持っていれば、マザーボードとCPUだけ買えば良いわけなので、その場合は最上位の構成にしても20万円を下回ることになるはず。

ストレージはこれまでにmouse K5に積んでいたものを流用することにするので、それらは購入していない。注意点は高額で、かつ初期不良の恐れがあるものについてはアマゾンはやめたほうが良いと思う。もしなにかあったとき、アマゾンではこういうことに対応してくれるのかわからないし。個人的にはアークコンピューター、パソコン工房、ドスパラあたりを見て、アマゾンと価格を照らし合わせ、一番安い店を選べばよいのではないかと思う。アマゾンでなにかあったら、まず間違いなく対応不十分と思うことになる。

また、グラフィックボードに関しても注意すべき点がある。CUDAを使いたい場合NvidiaのページでどのチップセットがCUDAに対応しているのか、ここで確認してから買ったほうが良い。ここで入れたRTX 3060は、CUDAに対応しているGPUでかつ簡単に入手できるもののうちで最安だった。以前、対応していないチップ(GeForce 1030)に頑張ってCUDAを入れようとして、駄目だった経験がある。当たり前だけど。

一度グリスを塗って、それをクリーニングワイプで掃除したんで、ちょっと汚れた。

オンボードのEthernetが動かない

本当に悲報である。OSはUbuntu 22.04.5を入れることができたが、Ethernetが全く動かない。RealtekのRTL8125を使っているようだが、そのドライバーをインストールしても全く動かない。公式のページからダウンロードしてきたドライバーでも駄目だし、インターネットに書いてある方法を使ってみても駄目だった。そういうことで組み込みのEthernetを使うのは諦めた。このあたりはおそらく自分のスキルが足りないのだろう。でも、わからないんだからしょうがない。あと5年くらいしたらOSのバージョンも上がって使えるようになるやろきっと。

試しにと思って、BuffaloのUSB ethernetコネクター(LUA4-U3-AGTE-BK)を挿してみると、難なく動作した。どうなってるんだろうか。言うてもマザーボードもCPUもまだリリースされて間もないわけだし、仕方ないのだろうか。これがWindowsだったら問題なかったのだろうか。これ、もう一個買っておこうかな、と本気で思っているところである。

これ。ちゃんと動く。

で、後日、試しにTP-linkのLANボード(2.5 gigabit PCIe Network Adapter, TX201, tp-link)を買ってみた。実はこれ、上述のBaffaloのUSBイーサネットコネクターに合わせて1G bitのものを買ったつもりだったけど、間違えて2.5G bitを買ってしまったらしい。届いたときには「うわやっちまった。」と本気で思った。せっかく買ったのだから試しにセットしてみると、一瞬でインターネットがつながった。

…ま、これでいいかって感じである。もう考えるのやめた。

まさかのEthernet Driverのバージョン違いで動く(2024/11/24)

いや、これは本当に誰もわからん。というか、自分でもよく気づいたと思う。気づいたというか、やれやれである。

ふと思ってずーっとlscpiの出力結果を見ていたときだった。以下の画像のように書いてある。

ふーん、やっぱりRTL8125が入ってるんだなぁって感じである。ここにこうやって書いてあるから、当然、普通の人間ならばRealtekのホームページに行って、RTL8125のドライバーをインストールしたり、一致するDKMS(Dynamic Kernel Module Support)を入れたりするワケであるし、自分だってそのようにした。というか、RTL8125って書いてあるのに、誰が違うドライバーを入れるのだろうか。いや、そんな奴居るワケがない。

でも、なんというか、なんとなくレポジトリを眺めていたんですよ。暇だったから。apt search realtekと入れてみたのが以下の画像。ちゃんとr8125-dkmsは入っているらしい。一方…

なんか、あるなぁ。似たようなものが….

ということで、sudo apt install r8168-dkmsをやってみる。どうせ動かんし。

上がr8168-dkmsのインストールで動き出したLANのインターフェイス名。下が適当に買ったTP-linkのインターフェイス名。

動くんかい!!そんなんわかるかよ!!!!ということで、こういうこともある….

GeForce RTX 3060のインストール方法

以前、GeForce 1030にCUDAを入れようとして無駄な努力をした経験(当然、対応していないのだから動くわけなかったのだが)から、グラフィックボードのドライバーをUbuntuのインストール時に同時にインストールしてしまうと、一体、なんのライブラリをインストールしたのかがわからなくなってしまったことがあった。それに、いちいちOSと一緒にインストールされたドライバーを消してblacklistに入れて、改めて自分でドライバーをインストールする、ということはしたくない。

なのでこの経験を活かし、OSインストール時はグラフィックボードの電源を抜いておき、OSインストールが終了してから、自分でグラフィックボードのドライバーをインストールした。以下のコードを流すとうまくインストールはされていた。しかしながら、まだ本格的に解析をしていないから、正常なのかどうかは判断できていない。とりあえずディスプレイが写っているし、グラフィックボードにアクセスも出来ているので良しとする。ここを参考にして、以下のコードを順次流す。

Bash
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
sudo apt install -y nvidia-driver-535
sudo reboot
sudo nvidia-smi

これが出力。CUDA12.2がインストールされているらしい。他にも色々と必要だが、それらは今後インストールしようと思う。このあと、RとPythonの解析環境を整える必要がある。これ、絶対に時間かかるから嫌だ。

消費電力はどのくらいか

こういったPCを家で回すときに気になるのは消費電力である。言うても、ビットコインのマイニングなんかをやるわけではないのでそんなに高くはないだろうと思う。しかし、なんかちょっと怖い。怖いので測定してみることにした。ここ(https://pc.watch.impress.co.jp/docs/column/hothot/1615930.html)には、CINEBENCH2024というベンチマークソフトで「Ryzen 9 9950XのCPU温度は平均81.7℃(最大83.1℃)で、CPU消費電力は平均199.1W(最大200.2W)を記録。」とある。ここではそんな童*ビ***野*のお遊びベンチマークではなくcellranger mkrefを回したときのCPUの温度と消費電力を見ようと思う。ちなみに、以前は、マウスコンピューターのmouse K5でチマチマやっていた。そのときは2時間くらいかかったと思うが、同じ作業が高々15分くらいで終わった。

cellranger mkrefはCPUコアをぶん回すための良いベンチマークだと思う。
多分TcltがCPUの温度だと思う。
ちょっと前からPCをつけているので、その分の電力量である。上がCPU100%のときの電力。

こんなの、一瞬でサーマルスロットリングじゃあないのだろうか….96℃って。電力も313Wもある。消費電力もそうだが、熱も要注意な気がする。大丈夫かこれ…..

2024/12/04(水)メモリ喰いの解析時はpsensorによるCPU温度のモニタリングは消したほうが良い

CPU温度について上述したが、このときに使用したソフトがpsensorというソフトである。このインストールは非常に簡単で、単にsudo apt install psensorでOKである。新しく買ったPCなんかでは自分のようにひとまずどのくらいCPUをぶん回せば良いか知るためには、良いツールだとは思う。

しかし、ちょっと気づいたことがある。psensorでCPUの温度を見ながらcellranger count(cellranger 9.0.0)を使っていたんだが、これをやるとどうやらメモリへのデータの格納がおかしくなるらしく、それで一々計算が止まってしまうようだ。理由はよくわからんが、メモリ喰いな計算とpsensorによるCPU状態モニタリングの併用はやめた方が良さそうである。

だって、爆熱Ryzen 9 9950Xだから、不安なんだよ。あの熱が….CPUぶっ壊れるんじゃあないかと思って。

ちなみに、cellranger 9.0.0だが、これはcellranger 8.0.0よりも圧倒的によくなった機能がある。それはcellranger annotateが追加されたことである。これはけっこうすごいこと何だろうと思っている。あと、なぜかわからないが、マッピングの結果がcellranger 8.0.1とかのときより良くないか???これが、今改めてcellranger 9.0.0を使っているという理由である。

2024/12/08(日)cellrangerのメモリ問題はpsensorではなくシステム側のキャッシュ(メモリ)不足だった。

これがわかるまでに一週間くらい費やしてしまった。psensorを消したらうまく行ったのは、本当に偶然だったらしい。その後、どうやっても同じようにcellrangerが落ちる。cellranger count中に出力されてる_logを見たり、落ちるところをvmstat 1 でじっと見ていたりすると。どうやらメモリ不足、もしくはメモリリークのような状態で落ちていることが判明した。色々と試した結果、結局やったことは5分毎にキャッシュをクリアする、という力技である。くわしくはここに書いた

しかしながら、思った動作をさせるためにはもう少し調整が必要な気がする。特にSWAPの動作。

まとめ

当時はmouse K5を買ったときには、こんなことになるなんて思わなかったものである。でも、これで溜まっていた解析をスムーズに出来ると考えると、やる気も出てくる。

今後はどのくらい消費電力が上がるのか確認するために、それをモニターできる電源タップを買ってCPUを全開で回してみようと思う。850Wとか、もはや電熱器具である。

実は、まだオンボードのBluetooth繋がらない問題がある。でも、どうせ自分じゃ解決できないんで、考えるのをやめた。

ちなみに、最後にセットアップで流したコードをいかに書いておく。

Bash
# set password for root
sudo passwd root

# install mozc
sudo apt install ibus-mozc mozc-utils-gui

# prepare for base system
sudo apt install build-essential libssh-dev libssh-doc libssh2-1 libssh2-1-dev

# another essential packages
sudo apt install curl gfortran

# install graphic driver
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
sudo apt install -y nvidia-driver-525
sudo reboot
sudo nvidia-smi

# for dropbox
sudo apt install libpango1.0-0 python3-gpg

# git
sudo apt install git

# cmake
cd /home/kats/cmake-3.30.5
sudo ./bootstrap
sudo make
sudo make install

# try to fix onborad lan card, but it does not work.

# https://text.yusukesakai.com/entry/20240114/1705237997
# https://qiita.com/yukitoro0101/items/94ea8cd8540b92a36746
# https://www.realtek.com/Download/List?cate_id=584

sudo ubuntu-drivers list
sudo apt install r8125-dkms

uname -r

sudo apt install linux-image-6.8.0-48-generic
sudo apt install linux-headers-$(uname -r)

/home/kats/r8125-9.013.02/src
sudo mkdir /usr/src/r8125-9.013.02
sudo cp -v * /usr/src/r8125-9.013.02/
sudo dkms add -m r8125 -v 9.013.02
sudo dkms build -m r8125 -v 9.013.02 -k 6.8.0-48-generic
sudo dkms install -m r8125 -v 9.013.02 -k 6.8.0-48-generic
dkms status

# 2024/11/24 Tried, it works!!! Who knows!!!????
sudo apt install r8168-dkms