takaptさんの最適化談義

1
前へ 1 2 ・・ 7 次へ
くりんぺっと @climpet

2箇所ほど問題を見つけた

2014-09-01 01:47:54
くりんぺっと @climpet

data[1] が短い場合に,data[1][i] にアクセスして死ぬ

2014-09-01 01:50:19
ぷち@プログラマ日本一です @takapt0226

キャッシュメモリはメモリからばらばらに1バイトずつキャッシュに確保されるわけではない あるアドレスから連続した領域(さっきの本では64byte)がキャッシュメモリに確保される

2014-09-01 01:50:42
くりんぺっと @climpet

行列積のキャッシュ高速化,ikjじゃなくてjikの順でも良いのかしら

2014-09-01 01:53:10
ぷち@プログラマ日本一です @takapt0226

入れ替え前だと、 k = 0: b[0][j], b[0][j + 1], .., b[0][j + 63] k = 1: b[1][j], b[1][j + 1],..., b[1][j + 2], ...

2014-09-01 01:53:21
ぷち@プログラマ日本一です @takapt0226

というふうにキャッシュメモリが確保されるけど、j + 1, ..j + 63はすぐには利用しないので、キャッシュメモリが無駄になる

2014-09-01 01:53:24
まーす @__math

@takapt0226 visual studio 2013だと,releaseビルドで(win32 ->x64)に変えることで 19s -> 10s になりました.

2014-09-01 01:54:28
まーす @__math

@takapt0226 32bitと64bitじゃ,longlongの演算で使われる命令が違うので,割と影響があるかも?

2014-09-01 01:55:26
ぷち@プログラマ日本一です @takapt0226

入れ替え後だと、 for j=0->n-1: b[k][0], b[k][1], b[k][2], ... これは連続してるからキャッシュメモリに確保されたデータは無駄なく活用される

2014-09-01 01:55:48
いしかど @ISIKADO

Cプログラム高速化研究班自分も読んでみようかな

2014-09-01 01:55:52
ぷち@プログラマ日本一です @takapt0226

さっきのリンクアフィにしとけばよかったな!

2014-09-01 01:56:40
まーす @__math

@takapt0226 あ,takaptさんのコードとは関係ないコードです(project eulerゴリ押しのやつ)

2014-09-01 01:56:53
いしかど @ISIKADO

ちょっと興味あったけど何も知らないSIMDの話もありそうだし

2014-09-01 01:57:00
いしかど @ISIKADO

読まなくてもtakaptさんにクエリ投げたら教えてくれそう

2014-09-01 01:57:42
まーす @__math

visual studioどこで32bitと64bit切り替えるのか分かりにくいし,戻そうとしたら32bitから64bitにならなくて大変

2014-09-01 01:58:15
ぷち@プログラマ日本一です @takapt0226

@__math 自分がライブラリで持ってるmatrixはvector使って値はmod取ってるやつで順序入れ替えすると2倍高速な感じでした

2014-09-01 01:58:24
ぷち@プログラマ日本一です @takapt0226

ウンコ理解なので僕に質問せずに本を読みましょう

2014-09-01 01:58:51
まーす @__math

@takapt0226 matrixのキャッシュで思い出したんですけど,キャッシュサイズに合うように行列演算するともっと速くなるはず(wikipediaのどっかのページに乗ってる

2014-09-01 01:59:21
くりんぺっと @climpet

kijの順でもa[i][j]がキャッシュに載ってそこそこの速度出るかと思ったけどそういうわけでもなくてむしろ遅くなったし,どういうことなんだろう

2014-09-01 01:59:26
hirokazu @hirokazu1020

空間的局所性ぐらい情報系なら習うと思ったけどそうでもないのか

2014-09-01 01:59:28
ぷち@プログラマ日本一です @takapt0226

@__math たぶんそれがさっきいった部分行列にするやつですかね(頭良すぎる)

2014-09-01 01:59:50
まーす @__math

行列演算for6重ループの画像wikipediaにあったと思うんだけど

2014-09-01 02:00:06
前へ 1 2 ・・ 7 次へ