R・RStudioでの分析にかかる時間をハード面の変更で短縮したい

:::note alert
宣伝と思われないように、使用している or 購入したパソコンの商品名は伏せています。
:::

　パソコンに関する知識は、「OSは何ですか？」に対して「Intel i9です（ドヤァ）」と即答する程度です。もちろんパソコンを自作するスキルもありません。
　このように、知識がほとんどなく、また自作PCを作るスキルもない僕が周りに助けられながらワークステーション選んだ際の情報を共有します。購入する際の参考になれば幸いです。

# 背景
　私は、大学教員をしていて、人を対象に実験や調査を行い、得られたデータを多変量解析法や数理モデリングなどの手法で分析しています。使用しているのはR言語になります。例えば、1つの研究で使用するデータセットの大きさは2.80 MBです。以下のコードで調べました（[Efficient R prgramming](https://csgillespie.github.io/efficientR/hardware.html)）
　使用しているノートパソコンのスペックは以下の通りです。
CPU|論理コア|物理コア|OS|メモリ（RAM）|SSD|
:---:|:---:|:---:|:------:|:------:|:---:
Core i7-10510U|8|4|Windows 11|16 GM | 1 TB
 
```R
library(pryr)
pryr::object_size(dat)
#> 2.80 MB
```

引用している記事にはこんな格言が
```
A rough rule of thumb is that your RAM should be three times the size of your data set.
（大まかな目安として、RAMはデータセットの3倍の大きさが必要です。）
```

目安として距離行列を求めた結果を調べると、671.80 MBでした。3倍すると、RAMとして2 GB以上が必要なことがわかりました。

```R
d = dist(dat)
pryr::object_size(d)
#> 671.80 MB
```
 
 今のノートPCもスペック的には決して悪くないと思っています。しかし、近年、分析手法の高度化や、分析対象となるデータ数が増大したことで、物理的に実行できない分析などが出てきました。また、分析が終わるまでに数日経過したり、はたまた途中で落ちてしまったりすることがありました。博士論文までは何とか乗り切りましたが、大学教員となり、研究費もこれまでより使用できるので、より計算処理が速いマシンを購入したいと思うようになりました。


## どれくらいの処理速度か
　目安として、Rの処理にどれくらいかかるのかを計測しました。処理速度を測定するコードはこちらの記事を参考に少し修正しました（[Rの高速化](https://www.slideshare.net/antiplastics/acceralation-of-r)）。すべてベースのコードで書かれているので、パッケージのインストールはいりません。
```R
num_steps <- 1000000000
step <- 1.0 / num_steps
summ <- 0

before <- proc.time() # 計測開始

  for(i in 1:num_steps){
    x <- (i - 0.5) * step
    summ <- summ + 4.0 / (1.0 + x * x)
                          }

after <- proc.time() # 計測開始

print(after - before) # 経過時間
```
実行の結果、65.87秒でした。
ちなみに、他の先生にも実行していただき、処理速度を比較していただきました。

CPU|物理コア|OS|計算時間
:---:|:---:|:---:|:---:
Ryzen5 3500X 3.9GHz|6|Windows11|79 秒
Ryzen5 5600X 3.9GHz|6|Windows11|54 秒
Ryzen5 5600G 3.9GHz|6|CentOS8|52 秒
Corei9-10900X 3.7GHz|10|CentOS8|48 秒

# 購入する際の条件
　初めてワークステーションを購入するので、パソコンに詳しい先生方にいろいろと相談をしました。R言語を使っている先生ばかりではなかったので、どのような分析をしているかなどをお伝えしました。具体的に、以下のようなアドバイスをいただきました。

- CPU：Xeon or Core i9
- メモリー：個数が多いほど良い
- SSD：1TBくらい、未満でもいい


　ワークステーションはオプションの変更でかなり値段が上がります。例えば、16GBメモリー1つと4つでは、値段に10万円以上の差があります。16GBメモリー4つと32GBメモリー4つではさらに10万円以上の差がありました。ですので、購入する際は、オプション選択にじっくり時間を費やす必要があります。

## 購入したもの
　60万円以内に収まりました（結構な割引で）。メモリーに関しては、32 GB DDR5-4400MHz (UDIMM)を4つ搭載しています。当初は、Xeonの購入を検討していましたが、予算の都合上、搭載するメモリが4コアに制限されました。そのことをパソコンに詳しい先生にご相談したところ、
 
 「Xeonはメモリチャネル数が多いときに最も効果を発揮するが、現在の4コアのカスタマイズなら、Core i9 の方が相当に速くなるかと考えます。CPU自体の能力に差がありすぎてXeonのメモリの差がかき消されてしまうぐらいの違いがあります。」
 
とのコメントをいただきました。つまり、もっとコア数を多くできる場合は（数十個など）、Xeonの方がよいかもしれないとのことです。このように、CPUだけではなく、メモリーの数を踏まえて選ばないといけないようです。最終的に購入したワークステーションのスペックです。

CPU|論理コア|物理コア|OS|メモリー（RAM）|SSD|
:---:|:---:|:---:|:------:|:------:|:---:
Core i9-13900K|32|24|Windows 11|128 GM | 1 TB

## どれくらいの処理速度か
　上記のコードで計算速度を計測しました。結果、31.97秒でした。ノートパソコンと比べて、34秒処理が速くなっています。

## 注意した方がいいこと
　購入して起動してから知ったのですが、以下の点に注意です。
 
:::note warn
1. スピーカーの音質がかなり悪い
    - ビープ音が聞こえるくらいのスペックしかないようです。ビデオ会議などする際に、かなり聞こえづらいと感じました。安いスピーカーなど購入しましょう

2. Bluetooth機能が付いていない
    - ワイヤレスマウスを使おうと思って、Bluetoothボタンがなく焦りました。ワークステーションなどには基本、ついてないようです。
:::

# 最後に
　パソコンの知識がほとんどない僕でしたが、何とか納得のいくものを購入することができました。また、分からないなりに調べていく過程で少しは詳しくなったのかなと思います。今回記載したRの処理に関するデータを提供する関数も、ワークステーション選びに役立ちました。
 　間違っている点や、おすすめなどがありましたらコメント等にお願いいたします。

 # 引用文献
- [Efficient R programming](https://csgillespie.github.io/efficientR/)
- [Rの高速化](https://www.slideshare.net/antiplastics/acceralation-of-r)