スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


Ryzen マルチスレッド処理

8コア16スレッドのRyzenでマルチスレッド処理に対応したプログラムをテストします。


■Ryzen(マルチスレッド)の概要
task_cpu.png 

Ryzenには1つのCPUコアで2つのスレッドを動作させるSMT(Simultaneous MultiThreading)と言う仕組みがあります。
また、4つのCPUコアを一つのパッケージとしたCCX(Core Compulex)という構成になっています。
このCCXを2つ搭載することでRyzen 1800Xは8コア16スレッドとして動作します。

【参考記事 PC Watch】 
AMD「Ryzen 7」の半導体チップの姿


用語
論理プロセッサ  タスクマネージャ上のCPU0とかCPU1のこと。
コア    CPUコアとか物理プロセッサと呼ばれる部分。SMTの場合、一つのコアに2つの論理プロセッサがあります。
CCX  4コアを一つのパッケージとしたもの。



■テスト方法
AMV2 MT ビデオコーデックを4スレッドでエンコード、およびデコードするように設定し、処理時間(FPS)をCPU(論理プロセッサ)の割り当てを変えながら計測していきます。
論理プロセッサの割り当てについてはCPUマスクと表記し16進数で示します。

CPUマスク
CPU
マスク
タスクマネージャ説明
0x000F task_0x000F.png CPU0からCPU3を使い2コア4スレッドを使って処理します。
SMTにより1コアのリソースを2つのスレッドで分け合います。
0x0055   task_0x0055.png CPU0,2,4,6を使い4コア4スレッドで処理します。
各スレッドは1コア分のリソースをほぼ独占できます。
0x00FF task_0x00FF.png CPU0からCPU7までの8つの論理プロセッサのうち空いているリソースをOSが判断して自動で割り当てて処理します。
0x0303 task_0x0303.png CCX0の1コア2スレッドとCCX1の1コア2スレッドで処理します。
2つのCCXをまたがる場合にどうなるか見ます。
0x0505 task_0x0505.png CCX0の2コア2スレッドとCCX1の2コア2スレッドで処理します。
すべてのスレッドが1コア分のリソースをほぼ独占できますがCCXをまたがります。
0xFFFF task_0xFFFF.png CPU0からCPU15までの16の論理プロセッサのうち空いているリソースをOSが判断して自動で割り当てて処理します。
これが既定の動作(特別な設定をしない場合の動作)です。


■結果
Ryzen 1800X 3.6GHz  Windows10 Home  HD画質 AMV2 MT Y2 SSE2 4Threads
CPU
マスク
Encode
FPS
 Decode
FPS
0x000F1402 1497 
0x00551880  1866 
0x00FF1898 1861 
0x03031230 1456 
0x05051597 1849 
0xFFFF1611 1847 


■考察
最もいい結果となったのは0x0055と0x00FFです。0x0055については4スレッド分の処理を行う場合の理想的な割り当てなので、納得です。
また、0x00FFでもほぼ同等の性能を発揮したのでこのテストにおいてはOSによる自動割り当ても十分優秀と言えます。
一方0x000Fは2コア分のリソースしか使えないところに4スレッド分の処理を詰め込むためパフォーマンスが低下しています。0x0055と比べエンコードで約25%減、デコードで約20%減。

そして、Ryzenを使う上で気になるのが後半の3パターンです。
CCXをまたがって処理すると(CCXをまたがらない場合に比べ)エンコードで約15%減、デコード処理では著しいパフォーマンスの低下は見られませんでした。
0x0303はCCXをまたがり且つ2コア分のリソースしか使えないため最悪の結果となり、0x0055と比べエンコード処理は約35%減となっています。

以上より、CCXをまたがってマルチスレッド処理を行う場合、パフォーマンスが低下するプログラムと、CCXをまたがっても低下しないプログラムがあることが解ります。
0xFFFFは既定の動作なのでRyzenを普通に使っているとマルチスレッドで処理するプログラムの場合にCCXをまたがって10%程度パフォーマンスが低下する場合があるかもしれません。

【参考記事 PC Watch】 Windows 10はAMD Ryzenの論理コアを正しく認識できず、性能が下がる?

スポンサーサイト


テーマ : PCパーツ     ジャンル : コンピュータ
tag : RYZEN

Ryzen 1800X 、 Core-i7 7700K 可逆圧縮ベンチマーク

3月3日に発売された、いま話題のAMD社製CPUであるRyzen 7 1800Xと今年初めに発売された最新のIntel社製CPU Core i7-7700K(Kaby Lake)で可逆圧縮コーデッを使ったベンチマークテストを行いました。
シングルスレッド処理における各CPUの性能やSSE命令およびAVX2命令の挙動を見ていきます。


■テスト方法
動画ファイル Mystery of the Nile (こちらのサンプル動画1)を1280 x 720、YUY2の未圧縮に変換。
その動画ファイルをAMV4ビデオコーデックのDY3設定でエンコード、デコードした際の処理時間(FPS:一秒間に何フレーム処理できるか)を計測します。
両CPU共、動作クロックはRyzenの定格である3.6GHzになるよう設定。
メモリの動作クロックも両方とも2133MHzに設定し、なるべく同じ条件でテストします。


■テスト環境
PC1 Ryzen 1800X
OS  Microsoft Windows 10 Home 64-bit
CPU    AMD Ryzen 7 1800X 3.6GHz (100MHz x 36)
MB  MSI B350 TOMAHAWK
Memory  DDR4 16GB (8GB x 2 Dual channel) 2133MHz
備考  CPUは8コア、16スレッド、AVX2対応。動作クロックをBIOSにて全コア3.6GHz(定格)に設定しましたが
 アイドル状態になると3.1GHzまで低下します。テスト中はほぼ3.6GHzで動作しますが完全にクロックを固定できていません。


PC2 Kabylake 7700K
OS  Microsoft Windows 10 Home 64-bit
CPU  Intel(R) Core(TM) i7-7700K
 定格4.20GHz テスト時は3.6GHz (100MHz x 36)
MB  ASUS PRIME Z270-K
Memory  DDR4 16GB (8GB x 2 Dual channel) 2133MHz
備考  CPUは4コア、8スレッド、AVX2対応。動作クロックをRyzenと同じ全コア3.6GHzで固定し、省電力設定およびTurbo BoostはBIOSで無効化、動作クロックがテスト中に変動しないようにしています。


Software
 AMV4 Video Codec Ver4.02
 CodecBench64.exe Ver1.01 自作のベンチマークソフト(非公開)



■結果
Ryzen 1800X 3.6GHz  HD画質 シングルスレッド処理
CodecMode ModuleEncode
FPS
 Decode
FPS
AMV4DY3AVX2.0643 704 
AMV4DY3SSE4.1643 880 


Kabylake Core i7 7700K 3.6GHz  HD画質 シングルスレッド処理
CodecMode ModuleEncode
FPS
 Decode
FPS
AMV4DY3AVX2.01106 1169 
AMV4DY3SSE4.1747 646 



■考察
AVX2を使ったKabylakeが突出した性能を発揮していることが解ります。ちなみにこのFPSが540を超えると 理論上4K動画を秒間60フレーム以上処理する能力があります。
一方、RyzenはAVX2とSSE4どちらでもエンコード処理はほぼ同じ性能となっています。AVX2命令を使っても性能が向上しないためこのテストではKabylakeと比べると少し見劣りする結果となりました。

PC Watchのこちらの記事によると

Ryzenの場合256bitのAVX命令は128bitのマイクロオペレーションコード2つに分解して処理するためAVX命令、SSE命令どちらを使っても単位時間あたりに処理できるデータ数(Byte数)に違いが出ないようです。

また、Ryzenのデコード処理に注目するとAVX2版よりSSE4版の方が2割以上良い結果が出ています。
さらに言えば、KabylakeのSSE4版よりもRyzenの方がいい結果となっています。

これは単にAVX命令とSSE命令による違いではなく、プログラムの実装方法による違いが影響していると思われます。
まだ調べていないので予想となりますが、AMV4ビデオコーデックは条件分岐処理を排除することで処理速度の向上を図っているけど、SSE4版のデコード処理だけは条件分岐処理を使って処理するようになっているので、そのことがRyzenでは良い結果につながっているのかもしれません。


・RyzenはAVX命令を使ってもSSE命令を使ってもパフォーマンスは変わらない(プログラムによっては、AVXを使うとパフォーマンスが低下する場合がある)
・Ryzenは分岐処理を使っても高いパフォーマンスを維持できるかもしれない(未検証)
・KabylakeのAVX命令は額面通りの圧倒的な性能を発揮する(ただしAVX命令を活かせるプログラムは皆無に近い)
・AVX命令を活かせないプログラムの場合にどちらが有利かはプログラム次第、IPCは互角と言って良いのではないでしょうか。ただし、空冷で簡単に5GHzを達成するので動作クロックを考慮するとやはり1コアあたりの性能はKabylakeに軍配が上がることが多いと思います。


最後に、RyzenでAMV4ビデオコーデックを使う場合はSSE4を使うように設定した方が良いです(自動設定だとAVX2を使ってしまいます)。AMV4ビデオコーデック以外でもAVX命令を使うかどうか設定できるプログラムの場合にAVXを使わないように設定することで性能が向上する場合があるようなので、Ryzenにおける豆知識かもしれません。

AMV4setting.png


テーマ : PCパーツ     ジャンル : コンピュータ
 
 
あまラボへようこそ
このブログでは自作ソフトの最新情報やtips、PC動画に関する話題を掲載していきます。各記事へは下にあるカテゴリからアクセスして下さい。

ファイルのダウンロードはホームページの方でお願い致します。

質問・要望・不具合報告はこちら
アマレコTV
アマミキ!
アマレココ
アマレコ・ライト
ファンタジーリモート
AMVコーデック



ホームページ
カテゴリ
最新コメント
カレンダー
02 | 2017/03 | 04
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 -
最新記事
最新トラックバック
ブログ内タグ

アマレコTV ビデオキャプチャ AMVコーデック アマレココ アマミキ! コーデック SC500 動画配信 ファンタジーリモート アマレコライト プラグイン AMV4 SC512 ライブ機能 デスクトップキャプチャ AVX2 FAQ リモートソフト 質問コーナー ニコニコ動画 DirectShow HDキャプチャ 組み換え 4K レゴ 遅延 可変再生速度 解説動画 LEGO XL2420T ベンチマーク Intensity AMV2MT 120Hz 倍速液晶 GV-USB2 アマステ 液晶モニター PS4 Pro デインターレース 32ZP2 Shadow VideoKeeper2 31024 RDT233WX-Z ffmpeg GV-USB AVX Play Alternate designs 31006 RGBキャプチャ RYZEN SD-USB2CAP4 XCAPTURE-1 DirectShowFilter キャプチャーツール Livetube シンクライアント イベント AtomでHDキャプチャ プレビュー 擬似NTSCキャプチャ IntensityPro SD-USB2CUP4 額縁遅延 MPC ハイパースレッディングテクノロジー HT インストール OBS QSV NVEnc 31021 フィギュア Kabelake SSE MonsterX3A XCapture-1 オーバーレイ 音ズレ 録画 HDMI HDCP 32ZP32 SKnet REGZA 液晶テレビ 倍速駆動 リプレイ機能 モノステ ZP3 倍速補完処理 MP3 Haswell 電源オプション LameACM 音遅延 ゲームスムーズモード MonsterXU3.0R DC-HD1 

ブログ内検索
月別アーカイブ
アマレココに関するリンク
お世話になっているソフトのリンク
RSSリンクの表示
管理画面
  • 管理画面
  • 上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。