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

日付;2024/11/04(月)

はじめに

これまで、マウスコンピューターの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を買ってしまったらしい。届いたときには「うわやっちまった。」と本気で思った。せっかく買ったのだから試しにセットしてみると、一瞬でインターネットがつながった。

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

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-525
sudo reboot
sudo nvidia-smi

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

まとめ

当時は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