トップ «前の日(11-02) 最新 次の日(11-04)» 追記

Orz日記 by Akio Morita

ToDo:

  • 15 SAD Fit[]回りの障害事例の解析
  • 10 smart pointer版PEGクラスの再実装(Left Recursionまわり)
2006|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|06|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|07|08|09|10|11|12|
2013|01|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|06|07|08|10|12|
2016|01|02|03|05|06|08|10|11|
2017|01|02|03|04|05|06|07|09|10|11|12|
2018|01|02|03|04|06|07|08|09|10|11|12|
2019|01|03|04|05|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|10|11|

2007-11-03

_ [SAD]SFMT plugin最適化

SSE2を有効にして ICC 8.1のループ展開やらベクトル化を投入、 さらに32bitの疑似乱数取り出し関数をマクロ化してインライン展開する。

結果、SFMT pluginは爆速です

ベンチマーク結果の SAD Coreは SAD標準の Random[]関数、SADは Random[]関数のプラグイン版(ICCの最適化バージョン)です。

Random[]関数と同じ32bit精度(Random[]関数は実質 31bit精度ですが)なら 周期長 2^19937-1にもかかわらず 166%の実行時間ですんでいます

# Revision:	850
# Compiler:	ICC 8.1
# CPU:		CoreDuo L3200
# OS:		FreeBSD 6.3-PRERELEASE
Speed Test of Randum Number Generator Plugins...
Batch Size:           1048576
Number of Statistics: 200

Plugin Name
SAD Core         min=  14.304 typ=  15.517 max=  39.138 sigma= 3.152 nsec/rand
SAD              min=   6.778 typ=   6.949 max=   7.023 sigma= 0.035 nsec/rand
MT19937/53bit    min=  59.225 typ=  61.343 max=  65.398 sigma= 2.064 nsec/rand
MT19937/32bit    min=  32.089 typ=  33.377 max=  34.890 sigma= 0.598 nsec/rand
SFMT19937/53bit  min=  17.653 typ=  18.737 max=  19.561 sigma= 0.360 nsec/rand
SFMT19937/32bit  min=  10.235 typ=  10.881 max=  11.560 sigma= 0.259 nsec/rand

2010-11-03

_ [SAD]LinearSolveComplex実装

実装してみたものの性能が微妙 orz

比較対象は、LinearSolveRealで実装しているLinearSolveComplex1 (MxN 複素行列上の代数を、等価な 2Mx2N 実行列上で計算する) な訳ですが、ある程度の大きさの正方行列の逆行列を計算させた場合

  • Netlibの Reference BLAS/LAPACKでは、LinearSolveComplex1よりLinearSolveComplexが早い
  • GotoBLASだと、LinearSolveComplex1がLinearSolveComplexより早い
MxN BLAS LinearSolveComplex LinearSolveComplex1
128x128 Netlib .118 ± .001 sec .171 ± .001 sec
256x256 Netlib .945 ± .007 sec 1.449 ± .008 sec
512x512 Netlib 9.623 ± .290 sec 12.692 ± .103 sec
1024x1024 Netlib 111.400 ± 3.128 sec129.272 ± 3.877 sec
128x128 GotoBLAS .085 ± .004 sec .089 ± .001 sec
256x256 GotoBLAS .648 ± .004 sec .555 ± .004 sec
512x512 GotoBLAS 6.452 ± .129 sec 4.438 ± .024 sec
1024x1024GotoBLAS 84.66 ± .21 sec 40.71 ± .33 sec

(Core2 Duo T7200(2GHz))

演算精度は、小行列で試した範囲では、LinearSolveComplexの方が若干良いようです。

原因としては

  • 複素BLAS/LAPACKの最適化が実数BLAS/LAPACKほど進んでいない
  • 複素行列積などでメモリーアクセス・演算パターンが複雑化することによりキャッシュヒット率やパイプライン稼働率が悪化している

辺りが疑わしいです


2023-11-03

_ [FreeBSD]あれ、RC4でてる…

14.0-RC3以降大きな変更が入ってなかったので、このままリリースかと思ったら14.0-RC4が出ている模様


カテゴリー: Admin | Emacs | EPICS | Fortran | FreeBSD | GCC | hgsubversion | IPv6 | KEKB | LHC | Lisp | LLVM | MADX | Ryzen | SAD | samba | tDiary | unix | WWW | YaSAI | お仕事 | イベント | 出張 | 宴会 | 数学 | 艦これ | 買いもの | 追記 | 雑記