- 【トリップ検索】CUDA SHA-1 Tripper【GeForce】
440 : ◆MERIKEN4.k [sage]:2011/09/06(火) 01:21:28.01 ID:v0jogezS0 - >>419
> こんな数値でもちゃんと動いてるぜ。てゆか、もう一桁大きくしても大丈夫だし。 > Kernel details: Grid size: [700 1 1], Block size: [1024 1 1] > Register Ratio: 0.875 ( 28672 / 32768 ) [27 registers per thread] これ、SHA-1の話ですよね? Bitslice DESだとper threadのレジスタ数が最大の63になって、 なかなかOccupancyが上がらないのです。スレッドの数を増やしたら 性能は2割ほど上がったけどOccupancyが0.10から0.06に下がってしまいました。
|
- 【トリップ検索】CUDA SHA-1 Tripper【GeForce】
442 : ◆MERIKEN4.k [sage]:2011/09/06(火) 09:30:50.33 ID:v0jogezS0 - >>421
遅くなりましたが、ようやく試すことができました。 >>361に比べてちょっと遅くなってるのはOSを変えてから OCを切ったままにしてあるからです。 【GPU】GTX 580 (OCなし: 772/1544/2004) 【CPU】Phenom II X6 1100T 3.30GHz 【OS】Windows 7 Ultimate SP1 64bit 【バージョン】CUDA SHA-1 Tripper 0.4.0 【オプション】なし 【Display Driver】270.81 【速度】 2147479 kTrips in 3.354 sec - 640.274 MTrips/sec 2147477 kTrips in 3.370 sec - 637.234 MTrips/sec 2147482 kTrips in 3.354 sec - 640.275 MTrips/sec 2147483 kTrips in 3.369 sec - 637.425 MTrips/sec 【その他】配布パッケージのtrip.txt (5完1タゲ) Device 0: "GeForce GTX 580" Compute Capability revision number: 2.0 Total amount of global memory: 1503 Mbytes Number of multiprocessors: 16 Number of cores: 512 Clock rate: 1.54 GHz Use device 0, grid is 128 blocks, 8 blocks/SM (default is 8 blocks/SM) Reading target file "target.txt"... 1 targets found
|
- 【トリップ検索】CUDA SHA-1 Tripper【GeForce】
443 : ◆MERIKEN4.k [sage]:2011/09/06(火) 09:47:58.92 ID:v0jogezS0 - >>421
>>441 多ターゲット時の速度低下はある程度は仕方が無いと思います。 英単語のリストだと、付属のtarget_large.txtよりも target_intの数が増えるのが大きいと思われますです。 【GPU】GTX 580 (OCなし: 772/1544/2004) 【CPU】Phenom II X6 1100T 3.30GHz 【OS】Windows 7 Ultimate SP1 64bit 【バージョン】CUDA SHA-1 Tripper 0.4.0 【オプション】なし 【Display Driver】270.81 【速度】 2044474 kTrips in 3.495 sec - 584.971 MTrips/sec 2044614 kTrips in 3.479 sec - 587.702 MTrips/sec 2044527 kTrips in 3.478 sec - 587.846 MTrips/sec 【その他】英単語のリスト(196962タゲ) Device 0: "GeForce GTX 580" Compute Capability revision number: 2.0 Total amount of global memory: 1503 Mbytes Number of multiprocessors: 16 Number of cores: 512 Clock rate: 1.54 GHz Use device 0, grid is 128 blocks, 8 blocks/SM (default is 8 blocks/SM) Reading target file "target.txt"... 196962 targets found
|
- 【トリップ検索】CUDA SHA-1 Tripper【GeForce】
444 : ◆MERIKEN4.k [sage]:2011/09/06(火) 09:54:08.33 ID:v0jogezS0 - >>441
> 正規表現のサブセット等への対応も考えたほうがいいのかの・・・ 前方一致だけなら自分の改造版のソースを流用していただければ すぐにプリプロセッサが出きるはずです。 後方一致や任意の位置での検索をしようとするとプリプロセッサだけでは きびしくなってきますが…
|
- 【トリップ検索】CUDA SHA-1 Tripper【GeForce】
445 : ◆MERIKEN4.k [sage]:2011/09/06(火) 10:30:57.45 ID:v0jogezS0 - 10桁トリップのGPU検索の話の続きです。
Visual Profilerで調べた結果、Occupancyが1スレッドあたりのレジスタ数のせいで 低いことがわかったので、CUDA GPU Occupancy Calculatorで調べてみました。 http://developer.download.nvidia.com/compute/cuda/CUDA_Occupancy_calculator.xls 結果はこんな感じです。 http://www.meriken2ch.com/files/2011-09-05-CUDA-occupancy-current.JPG やはり1スレッドあたりのレジスタ数が邪魔をしてたようで、1SMが同時処理できるブロックの数が4に なってしまっています。これではOccupancyが上がらないのは当たり前です。 今後の予定としては、共有メモリを1スレッドあたり32 * 4 bytes使って 使用するレジスタの数を半分にすることです。レジスタの数をやみくもに減らしても スピードが落ちるだけだし、1スレッドに割り当てる共有メモリの量を 増やしても同時処理できるブロックの数が減ってコアが有効利用できないので、 ここらへんがぎりぎりのラインでしょう。下のグラフのようになれば理想的ですが、 はたしてどうなることやら… http://www.meriken2ch.com/files/2011-09-05-CUDA-occupancy-ideal.JPG Threads per Block: 128 → 128 Registers per Thread: 63 → 32 Shared Memory per Block: 0 → 6144 Active Threads per Multiprocessor: 512 → 1024 Active Warps per Multiprocessor: 16 → 32 Occupancy of each Multiprocessor: 33% → 67%
|
- 【トリップ検索】CUDA SHA-1 Tripper【GeForce】
446 : ◆MERIKEN4.k [sage]:2011/09/06(火) 12:00:20.08 ID:v0jogezS0 - あれ、計算間違えてるぞ。共有メモリは1スレッドあたり6144 / 128 = 12 * 4バイトか。
うーん、これは厳しいなあ。できるだけ節約しないと駄目だな、これは。 1スレッドあたりのレジスタ数を20、共有メモリを8 * 4バイトまで削ることができれば 1SMあたり192スレッドまで詰め込んでtheoretical occupancyが100%になるけど、 これは無理そうだしな… しかし共有メモリが1SMあたり48Kしかないというのはなかなか厳しいです。 もうなるべくローカル変数を減らしてレジスタ数を削るしかないですね。
|