y-cruncher に Zen 対応版 v0.7.2.9468

新しいバージョン v0.7.2.9468 にZen対応の ZD1-Yukina が含まれています。
 ->デュアルソケット・ザ・ワールドの目次は こちら へ。

AMD Ryzen7 1700 定格で1億桁を測定しました。起動して 0 -> 1 -> 3 です。
Ryzen7-1700-yc.png

たぶん、KabyLake 4C/8T の同一クロック設定と比較して若干速い程度ではないでしょうか?

今後、バージョンUPを重ねて少しづつ高速化してゆくのでは?と思います。

参考までに、CoreMA XEON 物理8コア/Sandy XEON 物理8コアとの物理8コア3GHz SSE4.1 Ushioの条件統一で比較したグラフを掲載します。
8コア3GHz比較

Sandy-EP は こちら の手法でノード0限定物理8コア縛りで起動し8スレッド設定で計測した結果です。
筆者は予定していたHaswell-EP/Broadwell-EPをスキップしたので、この世代は計測出来ません。
スポンサーサイト

y-cruncher 0.7.1 で x86 版の復活と Skylake 対応、高速化などが行われた。

海外生活の続く筆者ですが、自作機3台(13号機17号機20号機)を海外拠点(コンセントが220Vの地域)に移設しActivePFC搭載電源の恩恵を受けています。
それと20号機にR9-nanoを1機追加してCFX構成にしました(元はHD7970-CFX)。そこでOpenCLベンチをガンガンに回しましたらOpenCLではR9-nanoの電力リミッターが効かないのか?突然PC本体ごとPOWERダウンしてくれました。R9-nano 1台構成やHD7970-CFX構成では大丈夫だったので・・・触ると火傷するほど熱くなっていました。その後、調べてみましたらディスプレイ/モニターを接続しない側がヤバイ状態に成る様でディスプレイ/モニターをとりあえず接続しておけば、この現象は発生しない様です。(どのGPUにも共通で言える事ですがGPGPUで高負荷を掛けて使う時にはGPU搭載ファンの回転をMAXに設定しておくか水冷化するのが良いと思います)。

と、近況報告はここまでにして、本日の本題です。

y-cruncher がバージョンUPしていたので試してみました。Skylake版の追加より筆者的にはx86版復活の方が有難いです^^。

ご存知無い方向けのy-cruncherの簡単な紹介としては、ギネス記録保持のマルチコア対応 円周率計算アプリ(ベンチ)です。

↓の一覧表は、筆者の自作機での1億桁計算結果(Broadwell-EPの結果だけはネットからの拾い物)です。デュアルソケットでは主にNUMAチューニングで速度が大きく変化し、タイマー選択によっても変化します。秒数は計測の都度変化するので数回実行した結果を四捨五入しています。その為、下表は参考値程度と考えて下さい。表はクリック/タッチ/タップすると拡大出来ます。
 
y-cruncher-ALL4.png


表の右端の列は、GFLOPS値 × 計算速度 ですが、これにより演算機の計算効率を見ようとしたのですが、GFLOPS値からではよく判らなくなってしまいました。FMAとMULやADDを単純にFLOPSで比較しては駄目だと改めて痛感ですね。今後はFMA搭載機が主流となるでしょう。演算機の指標がLINPACKからHPCG(LAPACK)へと移行した事が大きく関与している事も確かだと思います。

y-cruncher のバージョンアップ v0.6.8 -> v0.7.1 で 20号機で1秒、17号機では3秒ほど高速化していますが、逆に13号機では HTT-off で2秒、HTT-on では5秒近く遅くなりました(NUMA関連設定の影響かも?)。他の機体も計測し直せば速度改善(改悪)しているかもしれませんが、冒頭に記載しました通り、他の機体は日本に置き去りですので、次回の帰国まで再計測出来ませんOrz)
 
Windows7 で Windows Update がうまく出来ない場合の対処法
 
 
 

y-cruncher は旧OSで起動出来るか?

 円周率計算でギネスブックに掲載された事で有名になった y-cruncher ですが、特徴として複数CPUを使ったマルチスレッドで高速化している事と、最新の拡張命令( AVX2 / AVX / SSE4など)を任意に(ユーザが指定出来る)使って高速に円周率の演算が出来、ベンチマークとして活用出来ます。

 この y-cruncher の旧バージョンにはSSEを使わないVer0.5.5.9180 x86バイナリも有りますので、これを使って旧OS(WindowsNT3.51/NT4.0/2000)で起動出来るか?試してみました。

 つまり386~586(P5)世代の古いCPUで試してみたくなったのです※8

 結論としては、Windows2000 と MMX Pentium の組み合わせで実行出来ましたが、簡単には実行できませんでしたので、そこに至る経緯を記録として残しておきます。386~P5までは未だ試していませんが、Windows2000のシステム要件としてPentium133MHz(つまりP54C)が条件ですから、なかなか厳しい状況です。

 y-cruncherはVC++2008/2010でコンパイルしている事が理由でWindows2000やWindowsNTでは起動出来ない様です。Win32互換でプログラミングしてもVC++2008/2010が意図的に旧OSでの起動を禁止するヘッダをアプリに埋め込む為、製作者の意図に関わらず旧OSでは起動出来ない仕組みに成っている様です。加えて、y-cruncher独自の機能として記録の偽造を防止する為と思われますがexeバイナリを変更すると不正な変更があるという趣旨のエラーメッセージを表示して強制終了するプログラムが埋め込まれていますので、ヘッダを修正するとOSバージョンに関係なく実行出来ないexeファイルに成ってしまいます。が、後述する非公式な回避手段でWindows2000では起動できる様になりました。NT3.51/NT4.0は試行錯誤中です。(参考までにVC++2012/2013/2015でコンパイルするとデフォルトではWindowsXPでも起動不可になりますが、プロジェクトのプロパティ -> 構成プロパティ -> 全般 -> プラットフォームツールセット の変更でXPへの対応が可能です。)

 ちなみに y-cruncher はDOS窓で動作する テキストUI / CLI のアプリです。

例1:
 プログラミング上はWin32互換でも、VC++2008がNT3.51/NT4.0では強制的に起動禁止になるヘッダを埋め込む為、プログラム的には互換性が有っても起動が出来ない仕組みに成っている様です。同様にVC++2010以降でコンパイルするとWin2000でも強制的に起動禁止になるヘッダが埋め込まれます。
NT3.51
2008atNT3.jpg
NT4.0
2008atNT.jpg
2000
2010at2000.jpg
 どんなに頑張ってWin32互換のプログラミングをしてもVC++2010でコンパイルするとWindows2000に「Win32アプリではない」と断定されてしまうのは悲しいですね。

例2:
 テキストファイル等の拡張子を.exeに変更してNT3.51/NT4.0/2000で起動した場合(つまり起動禁止ヘッダが無く、かつ、有効なアプリではないexeファイル)では、上記とは異なり、下図の様に16bitアプリとして処理されます。
NT3.51
警告無しでフリーズしますが、DOS窓を強制終了すれば回復します。
TXTTOEXE351.png
NT4.0
TXTTOEXE.jpg
2000
TXTTOEXE2K.jpg

 これらを回避して、旧OSでも起動出来るWin32アプリを作成する為には、同じソースコードをVC++6.0でコンパイルし直せばOKの様です。が、y-cruncherのソースコードは非公開ですから、自分でコンパイルする事が出来ません。

 y-cruncher Ver0.5以降はSetFileValidDataを利用している為、公式にはWindowsXP/2003以降のカーネルが必須ですが、非公式には回避手段(後述)が有り、Windows2000での起動には成功しました。NT3.51/NT4.0での起動には未だ成功していません。SetFileValidDataはギネス記録を目指す人向けに超巨大ファイルを予め確保する為の仕組みで、10億桁程度でベンチマークするだけの人向けには実質的には何もしていないので、ソースコードからVC++6.0でコンパイルするのであれば、単に呼び出し元をコメントアウトするだけでOKと思われます。が、既にコンパイル済みのexeファイルを実行するには、Kernel32改造計画の様なDLLラッパーや、Wineの様な互換レイヤー(両者は、ほぼ同じ仕組み)が必要と思われます。

 y-cruncher は上記以外にもSetFilePointerEx を利用している為、公式にはWindows2000以降のカーネルが必須で、NT3.51/NT4.0で実行するには上記同様にラッパーや互換レイヤーが必要と思われます。SetFilePointerEx は2GB(20億バイト)以上のファイルサイズで必要になる機能ですから、こちらもギネス記録向けの機能と言えます。同様の機能を持ち、かつ、NT3.51/NT4.0で利用可能なSetFilePointerに置き換えるだけの単純なラッパーで代替可能ではないか思われます。

 他に y-cruncher 実行に必要なものとして、メモリサイズがあります。搭載メモリが128MB有ってもWindows2000を実行していると概ね半分の60MB程度しか利用可能な物理メモリの空きが無い為、200万桁の演算が精一杯です。

 動作検証は実機ではなく20号機(AbuDhabi)上のVMWare Workstation 7.0 仮想マシン上で 2 CPU 構成にて検証しています(その方がサクサク進められる為)。

 試行錯誤の結果、とりあえずWindows2000では起動出来る様になりましたので、MMX-Pentium 233MHz SMP ( 2 CPU ) 構成で後ほど試してみます。

以下に、検証結果を記録しておきます。
Windows NT 3.51 Workstation SP5
OSシステム要件:80386 25MHz / 12MB / SMP / VGA
y-cruncher v0.1.0.6013a: × ※6
y-cruncher v0.2.1.6841a: × ※6
y-cruncher v0.3.2.6953a: × ※6
y-cruncher v0.4.1.7408. : × ※6
y-cruncher v0.4.4.7762b: × ※6
y-cruncher v0.5.5.9180. : × ※6
SuperPI Ver1.1      : ○

Windows NT 4.0 Workstation SP7
OSシステム要件:80486 25MHz / 12MB / SMP / VGA
y-cruncher v0.1.0.6013a: × ※6
y-cruncher v0.2.1.6841a: × ※6
y-cruncher v0.3.2.6953a: × ※6
y-cruncher v0.4.1.7408. : × ※6
y-cruncher v0.4.4.7762b: × ※6
y-cruncher v0.5.5.9180. : × ※6
SuperPI Ver1.1      : ○

Windows 2000 Professional SP4
OSシステム要件:Pentium133 / 32MB / SMP / SVGA
y-cruncher v0.1.0.6013a: ○ ※1
y-cruncher v0.2.1.6841a: ○ ※1
y-cruncher v0.3.2.6953a: ○ ※1
y-cruncher v0.4.1.7408. : ○ ※1
y-cruncher v0.4.4.7762b: ○
y-cruncher v0.5.2.9025a: × ※2
y-cruncher v0.5.3.9134b: × ※2
y-cruncher v0.5.5.9179. : × ※2
y-cruncher v0.5.5.9180. : × ※3
SuperPI Ver1.1      : ○

Windows 2000 Professional SP4 + KB2722913 + KB957579 + Kernel32改 v2.5f4 ※7
※KB2722913には高度暗号化パッチ又はWindows2000用のIE8が必要です。
同様の改造をWindowsNT3.51/4.0で実現できれば・・・
y-cruncher v0.4.4.7762b: ○
y-cruncher v0.5.5.9179. : ○
y-cruncher v0.5.5.9180. :
SuperPI Ver1.1      : ○

Windows XP Professional SP3
OSシステム要件:Pentium233 / 64MB / SMP / SVGA
y-cruncher v0.4.4.7762b: ○
y-cruncher v0.5.5.9179. : ○
y-cruncher v0.5.5.9180. :
SuperPI Ver1.1      : ○

ReactOS 0.3.17 REL (Windows2000互換フリーOS)
OSシステム要件:Pentium / 96MB / UniProcessor / VESA 2.0
y-cruncher v0.4.4.7762b: △ ※4
y-cruncher v0.5.5.9179. : △ ※4
y-cruncher v0.5.5.9180. : ※4
SuperPI Ver1.1      : △ ※5

Linux + Wine
OSシステム要件:工夫次第か?
y-cruncher v0.4.4.7762b: 検証予定
y-cruncher v0.5.5.9179. : 検証予定
y-cruncher v0.5.5.9180. : 検証予定
SuperPI Ver1.1      : 検証予定

------------------------------ 
※1:Microsoft Visual C++ 2008 Redistributable が必要
※2:SetFileValidDataを利用している為、公式にはWindowsXP以降のOSが必須
※3:有効なWin32アプリケーションではありません(VC++2010起因)
※4:シングルコアで実行されます。
※5:日本語が正しく表示されません(ReactOS 0.3.10 では日本語表示OK)
※6:有効なWindowsNTアプリケーションではありません(VC++2008起因)
※7:改造にあたりI/F部分のリバースエンジニアリングをされていますが、こういったケースでのI/F部分のリバースエンジニアリングは法律で許容されている様です
※8:残念な事にLinux向けのy-cruncherは64bit版しか公開されていませんので、WindowsNT/2000での検証ですが、良好な結果が得られない場合の最終手段として Linux + Wine も検討しています。
 
プロフィール

DualSocketTheWorld

Author:DualSocketTheWorld
自作を始めて20台目くらいになりますが、最初からデュアルソケット限定(始めた当時はデュアルスロット)で自作しており、近年になってAMD K6を試したくなりSocket7でK6-2+のシングル構成で組んだのがシングル初です。

シングルマザー(含:シングルソケットマルチコア)や4ソケット以上の自作は基本的にしませんし、メーカー製PCの改造も基本的にはしません(ノートPCのSSD化くらいはしますが・・・)

基本路線はワークステーションと呼ばれる分野での自作で、OSもWindows系であればProfesionalが主な対象に成ります。

ゲーマーの様なOverClockは行わず、WS路線としてハイエンドCPUとハイエンドGPUの組み合わせで定格或いはDownClockで発熱を抑えつつ、その時のアーキテクチャに置いて爆速かつ静音を目指し、30年以上の長期に渡り稼動状態をキープする事を目指します。

※基本的にリンクフリーです。どこでも自由にどうぞ。

※画像は時々変ります。

※お決まりの文章ですが、改造は個人の責任で行ってください。ここに記載された情報は間違いを含んでいる可能性が有り、それを元に製作や改造などをして失敗しても筆者は一切責任持てませんので悪しからず。

筆者略歴:
小学生時代にゴミ捨て場で拾ったジャンクテレビ数台を分解して部品を取り出し真空管アンプを自作、中学生時代にPC8801mkⅡsrでZ80アセンブラを始める。社会人になって初のプログラムは弾道計算、後に医療系・金融系プログラマ~SEを経て100~200人規模プロジェクトのジェネラルマネジャを数年経験、独立して起業。現在は不動産所得で半引退生活。
(人物特定を避ける目的で一部経歴を変更しています)

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
アクセスカウンター
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR