Ryzen Threadripper 3970X 搭載機でバックテストをしてみた

新しいCPUを搭載したPCを購入したので、記事にしておきます。

スポンサーリンク

Ryzen Threadripper とは?

PCに搭載するCPUの製品名称です。 個人向けのハイエンドPCに搭載されるCPUの中でトップレベルの性能を誇っています。

Ryzen(ライゼン)

AMD社という半導体メーカーがリリースしているCPUシリーズに用いられているブランド名。
CPUというと Intel(インテル)社は知っている人は多いと思いますが、昨今、Intel CPUの競合として台頭してきたのがAMD Ryzenシリーズで、
処理性能がそこそこ良いのに加えて価格が安く、コスパが良いことから近年一気にシェアを伸ばしています。

Threadripper(スレッドリッパー)

Ryzenブランドの中でも、Threadripper と名のつくCPUは超ハイスペックな処理能力を求めるユーザー向けに用意されたシリーズです。
CPUコア数が圧倒的に多く、現時点ではCPU1個で最大32コア64スレッドを保有しています。(Threadripper 3970Xの場合)
クロック数も昨年リリースされたThreadripper 2990WXから十分に改善され実用性に耐えられるCPUになったと思います。

※3990WXが販売されるのをずっと待っていたんですが、 「3990WXは 2020年リリース予定」というニュースを見て、先が長そうなので諦めました。。

なぜ Threadripper 3970Xが良いか?

バックテストはCPU性能が重要

Threadripperに関し、レビュー記事では「CPUコアが大量にあっても用途がない」「ただのロマン」的なものをよく見かけますが、殊 MT5においてはフルで活躍します。

なぜかというと、MT5でバックテストを実行する場合、特にパラメータの組み合わせを最適化させる場合にはCPUのスレッド数が多い程、同時実行できるテスト数が増えるからです。
※MT4はシングルCPUしか使用不可(環境複製的な力技をすれば別ですが、最適化を分散環境では実施できない)

この最適化という処理は機械学習的な行為に近いので、本来はGPUが活躍しそうな領域ではあるのですが
MT5のバックテストはCPUベースでしか実行できないという問題を抱えているために、CPUを大量に積んだマシンは価値を発揮します。

Threadripper 3970Xは総合性能でも優秀

PassMarkのベンチマークソフトで、手元にある2台のPCのCPU性能を測定してみました。

左:Intel Xeon E-2176M (6コア 12スレッド)
右:Ryzen Threadripper 3970X (32コア 64スレッド)

左側でもハイスペックな方なんですが、、右側の結果が高過ぎて基準がよく分からなるくらいの差が出ました・・・

3970X側の Percentileが99%になっているのは、このベンチマークソフトの統計の中で、ワールドランキング上位1%以内 ということらしいです。恐るべし。

ちなみにPassMark社 HP上にあるCPUベンチマークランキングでも3970Xが首位でした。  ランキング内の3970X 平均スコアが 48,020になっていますが、手元の環境では50,486。
何度か繰り返しベンチマークテストを行うと、CPU温度が上がり48,000くらいになる時もあったので誤差の範囲でしょうかね。

https://www.cpubenchmark.net/high_end_cpus.html

スポンサーリンク

環境整備

ようやく本題。

3970X を積んだPCをバックテスト用端末としてセットアップします。
やることは単純で、 MT5をインストールした後にテスト用のエージェントを起動するだけ。 のはずだったのですが・・・ 単純にはセットアップ出来ませんでした。

MT5インストール

特に問題なし。 敢えて書くことも無いのでスキップ。

MetaTester エージェント設定

MT5をインストールしたら、ストラテジーテスター エージェントマネージャーを開き、テストで利用するエージェント数を指定します。

1エージェントはCPU1スレッドを利用します。 エージェントマネージャは自動でCPUスレッド数を認識し、最大設定数までを選択可能にしてくれます。
今回の場合、32コア64スレッドの端末なので、64エージェントまで指定できることになるのですが。

選べない。

32エージェントまでしか指定できません。

タスクマネージャを見る限り64スレッドを認識しているのに、エージェントの最大数が32。。 このままではせっかくのCPUの暴力度合いが半減してしまいます。

ちなみに、MT5のバージョンはBuild 2280。

※少し古いリリースバージョンのMT5で試したところ、64エージェントまで指定可能な状態になりましたが
途中からエージェントマネージャが開かなくなったり、なんとなく挙動が怪しかったので、Build 2280で動作するような回避策を検討。

回避策

何度かMT5を再インストールしたものの、やはりMT5エージェントは最大32まで。

やむを得ず、MT5環境を2つ用意してエージェントマネージャー自体を2つ起動。

├MT5_1
│ └エージェントマネージャー1
│   └32エージェント(port 2000~)
└MT5_2
└エージェントマネージャー2
└32エージェント(port 3000~)

各エージェントにはユニークなポート番号が割り当てられるように、重複しないポートのレンジで割当を行うことで64エージェント分を同時に起動することができました。

MT5環境を複数用意するには

MT5環境を2つ用意する際は、インストール x 2 でも良いですが、インストール済のMT5ディレクトリを複製するだけでもOKです。

データフォルダが %appdata% 配下に切り出されてしまい、コピーが面倒という場合は
terminal.exe を起動する際に /portable 引数をつけておけば、MT5インストールディレクトリ配下にデータフォルダも内包します。
起動の度に入力するのが面倒なので、ショートカットファイルを作成し 「リンク先」に引数追加、ショートカットファイルからMT5を起動すればOK。

エージェントを起動する

無事に64エージェントが起動しました。

その他設定

ローカルネットワーク内において、他のPC上にあるMT5からこのPC上のエージェントを使いたい場合は、ファイアウォールの受信規則を設定します。
※エージェントマネージャを2つ起動する場合、それぞれのアプリに対して設定が必要

スポンサーリンク
おすすめの記事