内部メモリが 32KB しかないプロセッサ用の Litecoin Miner を開発しています。だから私はSCryptアルゴリズムを見ていて、Litecoinの場合はN = 1024を使用しているため、2 ^ 10 * 1 * 128 = 128KBのメモリ使用量が概算になります。
そこで、パラメータ Lookup Gap を持つ GPU アルゴリズムを調べていました。読むために、CudaMiner のケプラー コードを使用しています: https://github.com/cbuchner1/CudaMiner/blob/master/kepler_kernel.cu (535 行目)
したがって、ルックアップ ギャップは CPU とメモリの間のトレードオフであることを理解しています。それが高いほど、CPU使用率が高くなり、メモリが低下します。私が理解していなかったのは、それが正確にどのように機能するかです。
私が持っているコードで
int pos = c_N_1/LOOKUP_GAP, loop = 1 + (c_N_1-pos*LOOKUP_GAP);
これにより、LOOKUP_GAP バイトごとにスクラッチパッドが表示されます (2 の場合、0、2、4、6、8、10 になります)。ただし、アルゴリズムの CPU 使用率が高いのはどこですか?
私の実装は高度に最適化されるわけではなく、try to runのようなものです。
補間を使用する FPGA 実装 ( https://github.com/kramble/FPGA-Litecoin-Miner )も見ましたが、これは私にはもっと奇妙です。スクラッチパッドで値の補間を行う方法がわかりません。
ありがとう!