- 【トリップ検索】CUDA SHA-1 Tripper【GeForce】
228 : ◆MERIKEN4.k [sage]:2011/08/19(金) 04:45:58.58 ID:WHpJPhX30 - >>227
|ヘ⌒ヽフズズー | ・ω・) |つC□) ありがとうございます。ほかの特殊文字も追加したら 大絶賛エンバク中ですw 今日中に治るといいなあ。
|
- 【トリップ検索】CUDA SHA-1 Tripper【GeForce】
229 : ◆MERIKEN4.k [sage]:2011/08/19(金) 04:48:12.74 ID:WHpJPhX30 - でもこれ、ヒット率を理論値と較べる機能がついてなかったら
完全にバクを見逃してたよな。つけといてよかった。 理論値はかなり真面目に計算してるので、またぜひコードを みてやってください。
|
- 【トリップ検索】CUDA SHA-1 Tripper【GeForce】
230 : ◆MERIKEN4.k [sage]:2011/08/19(金) 05:01:53.28 ID:WHpJPhX30 - 特殊文字を比較してるルーチンでとんでもない打ち間違いを発見。
こりゃヒット率が落ちるわけだ。 で、バクをひとつ直したと思ったら今度は謎のスピード低下。 すんなり行くかと思ったけど、やはり一筋縄ではいかないですね。
|
- 【トリップ検索】CUDA SHA-1 Tripper【GeForce】
231 : ◆MERIKEN4.k [sage]:2011/08/19(金) 05:10:03.61 ID:WHpJPhX30 - スピード低下は勘違いでしたw いろいろ実験してる時にGPUに
無茶させすぎてるせいかpower throttlingがかかりまくりです。 GPU-Zの特殊オプションでいちいち解除してるんですけど メンドクサイので、GUIをつけるときには解除する機能を つけたいです。
|
- 【トリップ検索】CUDA SHA-1 Tripper【GeForce】
232 : ◆MERIKEN4.k [sage]:2011/08/19(金) 05:40:35.71 ID:WHpJPhX30 - GUIアプリならPCを使ってない時だけフルスピードで走らせるとか、
色々アイディアはあるんですけど… とりあえず必要な機能を 揃えてからですね。
|
- 【トリップ検索】CUDA SHA-1 Tripper【GeForce】
233 : ◆MERIKEN4.k [sage]:2011/08/19(金) 12:16:14.90 ID:WHpJPhX30 - 今日は仕上げとして展開されたパターンのコリジョンを処理するコードを書きました。
特殊文字を使うと効率はよくなるのですが、次のような正規表現の場合に困った事になります。 NUL.PO NULLPA この場合どちらが先になるかわからないので、ヒット判定の時のCPU側のbinary searchの ルーチンが正しく動作しません。これは正規表現に対応していないオリジナルにはなかった 問題ですが、'.'を展開するルーチンを組み込んで解決しました。思わないところで問題が でてくるものですが、うまくいったと思います。
|
- 【トリップ検索】CUDA SHA-1 Tripper【GeForce】
234 : ◆MERIKEN4.k [sage]:2011/08/19(金) 12:25:57.34 ID:WHpJPhX30 - というわけで、正規表現の対応はこれで完了しました。
前方一致でない検索で極端に遅くなるケースが確認されましたが、 この問題への対処はランタイムでの最適化に対応するまで後回しにする予定です。 これから新しいバージョンのパッケージを用意するのでちょっと待っていて下さい。
|
- 【トリップ検索】CUDA SHA-1 Tripper【GeForce】
236 : ◆MERIKEN4.k []:2011/08/19(金) 14:24:37.03 ID:WHpJPhX30 - というわけで新しいバージョンをうpしました。開発版のバージョン0.02bが
それにあたります。(安定版の0.01は0.01bとまったく同じです) これまで書いた通り、正規表現への対応等、かなり使い勝手が よくなっています。使っていただけたら動作報告をしていただけると 非常に嬉しいです。 http://www.meriken2ch.com/programming/cuda-sha-1-tripper-merikens-branch >>235 お待たせしましたw ぜひ楽しんでくださいな。
|
- 【トリップ検索】CUDA SHA-1 Tripper【GeForce】
238 : ◆MERIKEN4.k []:2011/08/19(金) 14:41:49.07 ID:WHpJPhX30 - >>237
> ども〜 > > CUDA_SHA1_Tripper_MERIKEN: ERROR: There is an invalid character in a target pattern. > > > ・・・・ 早速助かります。これ、ターゲットには何を設定されました? 正規表現のターゲットは"target_regex.txt"にお願いします。
|
- 【トリップ検索】CUDA SHA-1 Tripper【GeForce】
240 : ◆MERIKEN4.k []:2011/08/19(金) 14:59:13.81 ID:WHpJPhX30 - そっちはちゃんと動いてますね。
正規表現もぜひぜひw試してみてください。 こんどからサンプルには面白そうな正規表現を入れておこう。 さて、ひと段楽したけど、これからどうしようかな… もう一回スピードテストしてみようかな。
|
- 【トリップ検索】CUDA SHA-1 Tripper【GeForce】
241 : ◆MERIKEN4.k []:2011/08/19(金) 15:57:17.76 ID:WHpJPhX30 - というわけで最高速の測定です。
> Searching for 1 pattern (1 chunk) with 7 characters. > 0.060T tripcodes were generated in 0.020 hours at: > 845.63M tripcodes/s (current) > 845.63M tripcodes/s (maximum) > 843.56M tripcodes/s (average) > On average, it takes 59.3 minutes to find one match at this speed. 最高速の推移: 810.83M → 815.35M → 836.84M → 845.02M → 845.63M 平均の推移: N/A → 813.56M → 836.08M → 836.98M → 843.56M (過去の記録: >>18 >>30 >>62 >>166) 速度測定の間隔を再調整したため今回は最高速はそれほどあがってませんが、 平均が6.5M TPSあがっているのは非常に大きいです。 Shift-JIS関連の条件文を一つ減らして、ヒット判定用の変数を ひとつグローバルメモリからローカルメモリに移しただけなんですが… やはりHoro氏がおっしゃられたように条件文とグローバルメモリへの アクセスは相当なペナルティになるようです。ループ内でグローバル メモリにアクセスしている場所は数箇所あるので、シェアードメモリを うまく使ってやればまだまだ最適化の余地はありそうです。
|
- 【トリップ検索】CUDA SHA-1 Tripper【GeForce】
243 : ◆MERIKEN4.k []:2011/08/19(金) 16:17:00.44 ID:WHpJPhX30 - >>242
> 小一時間ほどマワシテミタ あ、いい感じですねえ。 > 3% higher これが0%、 > 9% of matching tripcodes were invalid. これが7%に近ければ近いほどよいということになってるので、 なかなかよい具合に収束しています。今回はプログラムの内部に めちゃくちゃに手を加えたのでちと心配だったので、安心しました。
|
- 【トリップ検索】CUDA SHA-1 Tripper【GeForce】
244 : ◆MERIKEN4.k []:2011/08/19(金) 16:26:27.64 ID:WHpJPhX30 - さっきループの中を調べてみたんですが、
インデックスからShift-JISコードへの変換テーブルが無駄に大きい ことが判明。気前よくグローバルメモリに65536バイトの配列を 3つ用意してたんですが、最初の400バイトちょっとしかアクセスして ませんでしたw 余裕を持ってサイズを設定しても2Kすらいかないので、 こいつをシェアードメモリに移してやれば高速化できるかもしれません。 もうこのプログラムのことは手に取るようにわかるようになったので、 もう一回見直してみたらかなり無駄が省ける気がします。楽しみだ…
|
- 【トリップ検索】CUDA SHA-1 Tripper【GeForce】
246 : ◆MERIKEN4.k []:2011/08/19(金) 16:36:18.22 ID:WHpJPhX30 - メモリが許す限りいけるはずです。
前方一致で正規表現を使わないなら数百万でも大丈夫じゃ ないでしょうか。
|
- 【トリップ検索】CUDA SHA-1 Tripper【GeForce】
247 : ◆MERIKEN4.k []:2011/08/19(金) 17:05:49.75 ID:WHpJPhX30 - 今ソースを見てて気づいたんですが、なぜか全位置検索でキービットマップを
使わない設定になっていました。おかしいと思ったんだよな… 明日不具合を修正したBeta 2をうpします。
|
- 【トリップ検索】CUDA SHA-1 Tripper【GeForce】
248 : ◆MERIKEN4.k []:2011/08/19(金) 17:29:36.75 ID:WHpJPhX30 - 最高速測定の話の続きですが、ループ内のグローバルメモリへの
アクセスをもう2つ削除したら、さらに速くなりました。 > Searching for 1 pattern (1 chunk) with 7 characters. > 0.063T tripcodes were generated in 0.021 hours at: > 852.07M tripcodes/s (current) > 852.50M tripcodes/s (maximum) > 850.53M tripcodes/s (average) > On average, it takes 58.8 minutes to find one match at this speed. OC耐性も上がって(967/1934/2103)、非常においしい結果に。 まだまだいけそうです。
|
- 【トリップ検索】CUDA SHA-1 Tripper【GeForce】
249 : ◆MERIKEN4.k []:2011/08/19(金) 18:13:33.52 ID:WHpJPhX30 - CUDA側のコードのループの回数を倍にして、もう一回だけ試してみました。
> Searching for 1 pattern (1 chunk) with 7 characters. > 0.061T tripcodes were generated in 0.020 hours at: > 852.18M tripcodes/s (current) > 858.99M tripcodes/s (maximum) > 852.42M tripcodes/s (average) > On average, it takes 58.7 minutes to find one match at this speed. OC耐性は落ちましたが(965/1930/2103)、確実に速くなっています。 まだまだ伸びそうですが、とりあえずこれが今日までのところの 最高速です。今日だけでmax, averageとも13M TPS以上伸びたので 上出来でしょう。
|