เจฎเฉเจ เจเจธเจจเฉเฉฐ Github 'เจคเฉ เจชเฉเจธเจ เจเฉเจคเจพ เจนเฉ
เจเจน เจเฉฑเจ เจธเจงเจพเจฐเจจ GPU เจนเฉเจธเจผ เจเฉเจฌเจฒ เจนเฉ เจเฉ เจชเฉเจฐเจคเฉ เจธเจเจฟเฉฐเจ เจฒเฉฑเจเจพเจ เจธเฉฐเจฎเจฟเจฒเจจเจพเจ เจฆเฉ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจเจฐเจจ เจฆเฉ เจธเจฎเจฐเฉฑเจฅ เจนเฉเฅค เจฎเฉเจฐเฉ NVIDIA GTX 1060 เจฒเฉเจชเจเจพเจช 'เจคเฉ, เจเฉเจก เจฒเจเจญเจ 64 ms เจตเจฟเฉฑเจ 210 เจฎเจฟเจฒเฉเจ เจจ เจฌเฉเจคเจฐเจคเฉเจฌเฉ เจคเฉเจฐ 'เจคเฉ เจคเจฟเจเจฐ เจเฉเจคเฉ เจเฉเฉฐเจเฉ-เจฎเฉเฉฑเจฒ เจเฉเฉเจฟเจเจ เจจเฉเฉฐ เจธเจผเจพเจฎเจฒ เจเจฐเจฆเจพ เจนเฉ เจ เจคเฉ เจฒเจเจญเจ 32 ms เจตเจฟเฉฑเจ 64 เจฎเจฟเจฒเฉเจ เจจ เจเฉเฉเจฟเจเจ เจจเฉเฉฐ เจนเจเจพ เจฆเจฟเฉฐเจฆเจพ เจนเฉเฅค
เจญเจพเจต, เจเฉฑเจ เจฒเฉเจชเจเจพเจช 'เจคเฉ เจธเจชเฉเจก เจฒเจเจญเจ 300 เจฎเจฟเจฒเฉเจ เจจ เจเจจเจธเจฐเจเจธ/เจธเฉเจเฉฐเจก เจ เจคเฉ 500 เจฎเจฟเจฒเฉเจ เจจ เจกเจฟเจฒเฉเจ/เจธเฉเจเฉฐเจก เจนเฉเฅค
เจธเจพเจฐเจฃเฉ เจจเฉเฉฐ CUDA เจตเจฟเฉฑเจ เจฒเจฟเจเจฟเจ เจเจฟเจ เจนเฉ, เจนเจพเจฒเจพเจเจเจฟ เจเจนเฉ เจคเจเจจเฉเจ HLSL เจเจพเจ GLSL 'เจคเฉ เจฒเจพเจเฉ เจเฉเจคเฉ เจเจพ เจธเจเจฆเฉ เจนเฉเฅค เจตเฉเจกเฉเจ เจเจพเจฐเจก 'เจคเฉ เจเฉฑเจ เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจจเฉเฉฐ เจฏเจเฉเจจเฉ เจฌเจฃเจพเจเจฃ เจฒเจ เจฒเจพเจเฉ เจเจฐเจจ เจฆเฉเจเจ เจเจ เจธเฉเจฎเจพเจตเจพเจ เจนเจจ:
- เจธเจฟเจฐเจซเจผ 32-เจฌเจฟเฉฑเจ เจเฉเฉฐเจเฉเจเจ เจ เจคเฉ เจธเจฎเจพเจจ เจฎเฉเฉฑเจฒเจพเจ 'เจคเฉ เจเจพเจฐเจตเจพเจ เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเฉเฅค
- เจนเฉเจธเจผ เจเฉเจฌเจฒ เจฆเจพ เจเฉฑเจ เจจเจฟเจธเจผเจเจฟเจค เจเจเจพเจฐ เจนเฉเฅค
- เจ เจคเฉ เจเจน เจเจเจพเจฐ เจธเจผเจเจคเฉ เจฆเฉ เจฆเฉ เจฆเฉ เจฌเจฐเจพเจฌเจฐ เจนเฉเจฃเจพ เจเจพเจนเฉเจฆเจพ เจนเฉ.
เจเฉเฉฐเจเฉเจเจ เจ
เจคเฉ เจฎเฉเฉฑเจฒเจพเจ เจฒเจ, เจคเฉเจนเจพเจจเฉเฉฐ เจเฉฑเจ เจธเจงเจพเจฐเจจ เจกเฉเจฒเฉเจฎเฉเจเจฐ เจฎเจพเจฐเจเจฐ เจจเฉเฉฐ เจฐเจฟเจเจผเจฐเจต เจเจฐเจจ เจฆเฉ เจฒเฉเฉ เจนเฉ (เจเจชเจฐเฉเจเจค เจเฉเจก เจตเจฟเฉฑเจ เจเจน 0xffffffff เจนเฉ)เฅค
เจคเจพเจฒเฉ เจคเฉเจ เจฌเจฟเจจเจพเจ เจนเฉเจธเจผ เจเฉเจฌเจฒ
เจนเฉเจธเจผ เจเฉเจฌเจฒ เจเจชเจจ เจเจกเจฐเฉเจธเจฟเฉฐเจ เจฆเฉ เจจเจพเจฒ เจตเจฐเจคเจฆเจพ เจนเฉ KeyValue
:
struct KeyValue
{
uint32_t key;
uint32_t value;
};
เจเฉเจฌเจฒ เจฆเจพ เจเจเจพเจฐ เจฆเฉ เจฆเฉ เจธเจผเจเจคเฉ เจนเฉ, เจจเจพ เจเจฟ เจเฉฑเจ เจชเฉเจฐเจฎเฉเฉฑเจ เจธเฉฐเจเจฟเจ, เจเจฟเจเจเจเจฟ เจเฉฑเจ เจคเฉเจเจผ เจนเจฆเจพเจเจค pow2/AND เจฎเจพเจธเจ เจจเฉเฉฐ เจฒเจพเจเฉ เจเจฐเจจ เจฒเจ เจเจพเจซเจผเฉ เจนเฉ, เจชเจฐ เจฎเจพเจกเจฟเจเจฒเจธ เจเจชเจฐเฉเจเจฐ เจฌเจนเฉเจค เจนเฉเจฒเฉ เจนเฉเฅค เจเจน เจฒเฉเจจเฉเจ เจฐ เจชเฉเจฐเฉเจฌเจฟเฉฐเจ เจฆเฉ เจฎเจพเจฎเจฒเฉ เจตเจฟเฉฑเจ เจฎเจนเฉฑเจคเจตเจชเฉเจฐเจจ เจนเฉ, เจเจฟเจเจเจเจฟ เจเฉฑเจ เจฒเฉเจจเฉเจ เจฐ เจเฉเจฌเจฒ เจฒเฉเฉฑเจเจ เฉฑเจช เจตเจฟเฉฑเจ เจธเจฒเจพเจ เจธเฉเจเจเจพเจเจ เจจเฉเฉฐ เจนเจฐเฉเจ เจธเจฒเจพเจ เจตเจฟเฉฑเจ เจฒเจชเฉเจเจฟเจ เจเจพเจฃเจพ เจเจพเจนเฉเจฆเจพ เจนเฉเฅค เจ เจคเฉ เจจเจคเฉเจเฉ เจตเจเฉเจ, เจเจพเจฐเจตเจพเจ เจฆเฉ เจฒเจพเจเจค เจจเฉเฉฐ เจนเจฐเฉเจ เจธเจฒเจพเจ เจตเจฟเฉฑเจ เจฎเฉเจกเจฟเจเจฒเฉ เจเฉเฉเจฟเจ เจเจพเจเจฆเจพ เจนเฉเฅค
เจธเจพเจฐเจฃเฉ เจธเจฟเจฐเจซเจผ เจนเจฐเฉเจ เจคเฉฑเจค เจฒเจ เจเฉเฉฐเจเฉ เจ เจคเฉ เจฎเฉเฉฑเจฒ เจจเฉเฉฐ เจธเจเฉเจฐ เจเจฐเจฆเฉ เจนเฉ, เจเฉเฉฐเจเฉ เจฆเจพ เจนเฉเจธเจผ เจจเจนเฉเจเฅค เจเจฟเจเจเจเจฟ เจธเจพเจฐเจฃเฉ เจธเจฟเจฐเจซเจผ 32-เจฌเจฟเฉฑเจ เจเฉเฉฐเจเฉเจเจ เจจเฉเฉฐ เจธเจเฉเจฐ เจเจฐเจฆเฉ เจนเฉ, เจนเฉเจธเจผ เจฆเฉ เจเจฃเจจเจพ เจฌเจนเฉเจค เจคเฉเจเจผเฉ เจจเจพเจฒ เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเฉเฅค เจเจชเจฐเฉเจเจค เจเฉเจก Murmur3 เจนเฉเจธเจผ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเจพ เจนเฉ, เจเฉ เจธเจฟเจฐเจซ เจเฉเจ เจธเจผเจฟเจซเจเจพเจ, XORs เจ เจคเฉ เจเฉเจฃเจพ เจเจฐเจฆเจพ เจนเฉเฅค
เจนเฉเจธเจผ เจเฉเจฌเจฒ เจฒเจพเจเจฟเฉฐเจ เจธเฉเจฐเฉฑเจเจฟเจ เจคเจเจจเฉเจเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเจพ เจนเฉ เจเฉ เจฎเฉเจฎเฉเจฐเฉ เจเจฐเจกเจฐ เจคเฉเจ เจธเฉเจคเฉฐเจคเจฐ เจนเจจเฅค เจญเจพเจตเฉเจ เจเฉเจ เจฐเจพเจเจ เจเจชเจฐเฉเจธเจผเจจ เจ เจเจฟเจนเฉ เจนเฉเจฐ เจเจชเจฐเฉเจธเจผเจจเจพเจ เจฆเฉ เจเฉเจฐเจฎ เจตเจฟเฉฑเจ เจตเจฟเจเจจ เจชเจพเจเจเจฆเฉ เจนเจจ, เจนเฉเจธเจผ เจเฉเจฌเจฒ เจ เจเฉ เจตเฉ เจธเจนเฉ เจธเจฅเจฟเจคเฉ เจจเฉเฉฐ เจฌเจฐเจเจฐเจพเจฐ เจฐเฉฑเจเฉเจเจพเฅค เจ เจธเฉเจ เจนเฉเจ เจพเจ เจเจธ เจฌเจพเจฐเฉ เจเฉฑเจฒ เจเจฐเจพเจเจเฉเฅค เจเจน เจคเจเจจเฉเจ เจตเฉเจกเฉเจ เจเจพเจฐเจกเจพเจ เจจเจพเจฒ เจตเจงเฉเจ เจเฉฐเจฎ เจเจฐเจฆเฉ เจนเฉ เจเฉ เจเฉฑเจเฉ เจธเจฎเฉเจ เจนเจเจผเจพเจฐเจพเจ เจฅเจฐเจฟเฉฑเจกเจพเจ เจจเฉเฉฐ เจเจฒเจพเจเจเจฆเฉ เจนเจจเฅค
เจนเฉเจธเจผ เจเฉเจฌเจฒ เจตเจฟเฉฑเจ เจเฉเฉฐเจเฉเจเจ เจ เจคเฉ เจฎเฉเฉฑเจฒเจพเจ เจจเฉเฉฐ เจเจพเจฒเฉ เจเจฐเจจ เจฒเจ เจธเจผเฉเจฐเฉ เจเฉเจคเจพ เจเจพเจเจฆเจพ เจนเฉเฅค
เจเฉเจก เจจเฉเฉฐ 64-เจฌเจฟเฉฑเจ เจเฉเฉฐเจเฉเจเจ เจ
เจคเฉ เจฎเฉเฉฑเจฒเจพเจ เจจเฉเฉฐ เจตเฉ เจธเฉฐเจญเจพเจฒเจฃ เจฒเจ เจธเฉเจงเจฟเจ เจเจพ เจธเจเจฆเจพ เจนเฉเฅค เจเฉเฉฐเจเฉเจเจ เจจเฉเฉฐ เจชเจฐเจฎเจพเจฃเฉ เจชเฉเฉเจนเจจ, เจฒเจฟเจเจฃ เจ
เจคเฉ เจคเฉเจฒเจจเจพ-เจ
เจคเฉ-เจธเจตเฉเจช เจเจชเจฐเฉเจธเจผเจจเจพเจ เจฆเฉ เจฒเฉเฉ เจนเฉเฉฐเจฆเฉ เจนเฉเฅค เจ
เจคเฉ เจฎเฉเฉฑเจฒเจพเจ เจฒเจ เจชเจฐเจฎเจพเจฃเฉ เจชเฉเฉเจนเจจ เจ
เจคเฉ เจฒเจฟเจเจฃ เจฆเฉเจเจ เจเจพเจฐเจตเจพเจเจเจ เจฆเฉ เจฒเฉเฉ เจนเฉเฉฐเจฆเฉ เจนเฉเฅค เจเฉเจธเจผเจเจฟเจธเจฎเจคเฉ เจจเจพเจฒ, CUDA เจตเจฟเฉฑเจ, 32- เจ
เจคเฉ 64-เจฌเจฟเฉฑเจ เจฎเฉเฉฑเจฒเจพเจ เจฒเจ เจฐเฉเจก-เจฐเจพเจเจ เจเจชเจฐเฉเจธเจผเจจ เจชเจฐเจฎเจพเจฃเฉ เจนเฉเฉฐเจฆเฉ เจนเจจ เจเจฆเฉเจ เจคเฉฑเจ เจเจน เจเฉเจฆเจฐเจคเฉ เจคเฉเจฐ 'เจคเฉ เจเจเจธเจพเจฐ เจนเฉเฉฐเจฆเฉ เจนเจจ (เจนเฉเจ เจพเจ เจฆเฉเจเฉ)เฅค
เจนเฉเจธเจผ เจเฉเจฌเจฒ เจธเจฅเจฟเจคเฉ
เจนเฉเจธเจผ เจเฉเจฌเจฒ เจตเจฟเฉฑเจ เจนเจฐเฉเจ เจเฉเฉฐเจเฉ-เจฎเฉเฉฑเจฒ เจเฉเฉเฉ เจตเจฟเฉฑเจ เจเจพเจฐ เจ เจตเจธเจฅเจพเจตเจพเจ เจตเจฟเฉฑเจเฉเจ เจเฉฑเจ เจนเฉ เจธเจเจฆเฉ เจนเฉ:
- เจเฉเฉฐเจเฉ เจ เจคเฉ เจฎเฉเฉฑเจฒ เจเจพเจฒเฉ เจนเจจเฅค เจเจธ เจธเจฅเจฟเจคเฉ เจตเจฟเฉฑเจ, เจนเฉเจธเจผ เจธเจพเจฐเจฃเฉ เจธเจผเฉเจฐเฉ เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเฉเฅค
- เจเฉเฉฐเจเฉ เจฒเจฟเจเฉ เจเจ เจนเฉ, เจชเจฐ เจฎเฉเฉฑเจฒ เจ เจเฉ เจคเฉฑเจ เจจเจนเฉเจ เจฒเจฟเจเจฟเจ เจเจฟเจ เจนเฉ. เจเฉเจเจฐ เจเฉเจ เจนเฉเจฐ เจฅเฉเจฐเฉเจก เจตเจฐเจคเจฎเจพเจจ เจตเจฟเฉฑเจ เจกเจพเจเจพ เจชเฉเฉเจน เจฐเจฟเจนเจพ เจนเฉ, เจคเจพเจ เจเจน เจเจพเจฒเฉ เจตเจพเจชเจธ เจเจเจเจฆเจพ เจนเฉเฅค เจเจน เจเจฎ เจเฉฑเจฒ เจนเฉ, เจเจนเฉ เจเฉฑเจฒ เจนเฉเจฃเฉ เจธเฉ เจเฉเจเจฐ เจเจเจเจผเฉเจเจฟเจเจธเจผเจจ เจฆเจพ เจเฉเจ เจนเฉเจฐ เจฅเฉเจฐเฉเจก เจฅเฉเฉเจพ เจชเจนเจฟเจฒเจพเจ เจเฉฐเจฎ เจเจฐเจฆเจพ, เจ เจคเฉ เจ เจธเฉเจ เจเฉฑเจ เจธเจฎเจเจพเจฒเฉ เจกเฉเจเจพ เจขเจพเจเจเฉ เจฌเจพเจฐเฉ เจเฉฑเจฒ เจเจฐ เจฐเจนเฉ เจนเจพเจเฅค
- เจเฉเฉฐเจเฉ เจ เจคเฉ เจฎเฉเฉฑเจฒ เจฆเฉเจตเฉเจ เจฐเจฟเจเจพเจฐเจก เจเฉเจคเฉ เจเจ เจนเจจเฅค
- เจฎเฉเฉฑเจฒ เจเจเจเจผเฉเจเจฟเจเจธเจผเจจ เจฆเฉ เจนเฉเจฐ เจฅเฉเจฐเฉเจกเจพเจ เจฒเจ เจเจชเจฒเจฌเจง เจนเฉ, เจชเจฐ เจเฉเฉฐเจเฉ เจ เจเฉ เจจเจนเฉเจ เจนเฉเฅค เจเจน เจเจธ เจฒเจ เจนเฉ เจธเจเจฆเจพ เจนเฉ เจเจฟเจเจเจเจฟ CUDA เจชเฉเจฐเฉเจเจฐเจพเจฎเจฟเฉฐเจ เจฎเจพเจกเจฒ เจตเจฟเฉฑเจ เจเฉฑเจ เจขเจฟเฉฑเจฒเฉ เจเฉเจฐเจฎเจฌเฉฑเจง เจฎเฉเจฎเฉเจฐเฉ เจฎเจพเจกเจฒ เจนเฉเฅค เจเจน เจเจฎ เจนเฉ; เจเจฟเจธเฉ เจตเฉ เจธเจฅเจฟเจคเฉ เจตเจฟเฉฑเจ, เจเฉเฉฐเจเฉ เจ เจเฉ เจตเฉ เจเจพเจฒเฉ เจนเฉ, เจญเจพเจตเฉเจ เจฎเฉเฉฑเจฒ เจนเฉเจฃ เจ เจเจฟเจนเจพ เจจเจนเฉเจ เจนเฉเฅค
เจเฉฑเจ เจฎเจนเฉฑเจคเจตเจชเฉเจฐเจฃ เจธเฉเจเจฎเจคเจพ เจเจน เจนเฉ เจเจฟ เจเฉฑเจ เจตเจพเจฐ เจธเจฒเจพเจ เจตเจฟเฉฑเจ เจเฉเฉฐเจเฉ เจฒเจฟเจเฉ เจเจพเจฃ เจคเฉเจ เจฌเจพเจ เจฆ, เจเจน เจ เฉฑเจเฉ เจจเจนเฉเจ เจเจฒเจฆเฉ - เจญเจพเจตเฉเจ เจเฉเฉฐเจเฉ เจจเฉเฉฐ เจฎเจฟเจเจพเจเจ เจเจพเจเจฆเจพ เจนเฉ, เจ เจธเฉเจ เจนเฉเจ เจพเจ เจเจธ เจฌเจพเจฐเฉ เจเฉฑเจฒ เจเจฐเจพเจเจเฉเฅค
เจนเฉเจธเจผ เจเฉเจฌเจฒ เจเฉเจก เจขเจฟเฉฑเจฒเฉ เจขเฉฐเจ เจจเจพเจฒ เจเจฐเจกเจฐ เจเฉเจคเฉ เจฎเฉเจฎเฉเจฐเฉ เจฎเจพเจกเจฒเจพเจ เจจเจพเจฒ เจตเฉ เจเฉฐเจฎ เจเจฐเจฆเจพ เจนเฉ เจเจฟเจธ เจตเจฟเฉฑเจ เจฎเฉเจฎเฉเจฐเฉ เจจเฉเฉฐ เจชเฉเฉเจนเจจ เจ เจคเฉ เจฒเจฟเจเจฃ เจฆเจพ เจเฉเจฐเจฎ เจ เจฃเจเจพเจฃ เจนเฉเฅค เจเจฟเจตเฉเจ เจเจฟ เจ เจธเฉเจ เจนเฉเจธเจผ เจเฉเจฌเจฒ เจตเจฟเฉฑเจ เจธเฉฐเจฎเจฟเจฒเจจ, เจเฉเจ เจ เจคเฉ เจฎเจฟเจเจพเจเจฃ เจจเฉเฉฐ เจฆเฉเจเจฆเฉ เจนเจพเจ, เจฏเจพเจฆ เจฐเฉฑเจเฉ เจเจฟ เจนเจฐเฉเจ เจเฉเฉฐเจเฉ-เจฎเฉเฉฑเจฒ เจเฉเฉเจพ เจเฉฑเจชเจฐ เจฆเฉฑเจธเฉ เจเจ เจเจพเจฐ เจฐเจพเจเจพเจ เจตเจฟเฉฑเจเฉเจ เจเฉฑเจ เจตเจฟเฉฑเจ เจนเฉเฅค
เจเฉฑเจ เจนเฉเจธเจผ เจเฉเจฌเจฒ เจตเจฟเฉฑเจ เจธเฉฐเจฎเจฟเจฒเจฟเจค เจเจฐเจจเจพ
CUDA เจซเฉฐเจเจธเจผเจจ เจเฉ เจนเฉเจธเจผ เจเฉเจฌเจฒ เจตเจฟเฉฑเจ เจเฉเฉฐเจเฉ-เจฎเฉเฉฑเจฒ เจฆเฉ เจเฉเฉเจฟเจเจ เจจเฉเฉฐ เจธเฉฐเจฎเจฟเจฒเจฟเจค เจเจฐเจฆเจพ เจนเฉ เจเจธ เจคเจฐเฉเจนเจพเจ เจฆเจฟเจเจพเจ เจฆเจฟเฉฐเจฆเจพ เจนเฉ:
void gpu_hashtable_insert(KeyValue* hashtable, uint32_t key, uint32_t value)
{
uint32_t slot = hash(key);
while (true)
{
uint32_t prev = atomicCAS(&hashtable[slot].key, kEmpty, key);
if (prev == kEmpty || prev == key)
{
hashtable[slot].value = value;
break;
}
slot = (slot + 1) & (kHashTableCapacity-1);
}
}
เจเฉฑเจ เจเฉเฉฐเจเฉ เจชเจพเจเจฃ เจฒเจ, เจเฉเจก เจธเฉฐเจฎเจฟเจฒเจฟเจค เจเฉเฉฐเจเฉ เจฆเฉ เจนเฉเจธเจผ เจจเจพเจฒ เจธเจผเฉเจฐเฉ เจนเฉเฉฐเจฆเฉ เจนเฉเจ เจนเฉเจธเจผ เจเฉเจฌเจฒ เจเจฐเฉ เจฐเจพเจนเฉเจ เจฆเฉเจนเจฐเจพเจเจเจฆเจพ เจนเฉเฅค เจเจฐเฉ เจตเจฟเฉฑเจ เจนเจฐเฉเจ เจธเจฒเจพเจ เจเฉฑเจ เจชเจฐเจฎเจพเจฃเฉ เจคเฉเจฒเจจเจพ-เจ เจคเฉ-เจธเจตเฉเจช เจเจพเจฐเจตเจพเจ เจเจฐเจฆเจพ เจนเฉ เจเฉ เจเจธ เจธเจฒเจพเจ เจตเจฟเฉฑเจ เจเฉเฉฐเจเฉ เจฆเฉ เจเจพเจฒเฉ เจจเจพเจฒ เจคเฉเจฒเจจเจพ เจเจฐเจฆเจพ เจนเฉเฅค เจเฉเจเจฐ เจเฉเจ เจฎเฉเจฒ เจเจพเจเจฆเจพ เจนเฉ, เจคเจพเจ เจธเจฒเจพเจ เจฆเฉ เจเฉเฉฐเจเฉ เจจเฉเฉฐ เจธเฉฐเจฎเจฟเจฒเจฟเจค เจเฉเฉฐเจเฉ เจจเจพเจฒ เจ เฉฑเจชเจกเฉเจ เจเฉเจคเจพ เจเจพเจเจฆเจพ เจนเฉ, เจ เจคเฉ เจซเจฟเจฐ เจ เจธเจฒเฉ เจธเจฒเจพเจ เจเฉเฉฐเจเฉ เจตเจพเจชเจธ เจเจฐ เจฆเจฟเฉฑเจคเฉ เจเจพเจเจฆเฉ เจนเฉเฅค เจเฉเจเจฐ เจเจน เจฎเฉเจฒ เจเฉเฉฐเจเฉ เจเจพเจฒเฉ เจธเฉ เจเจพเจ เจธเฉฐเจฎเจฟเจฒเจฟเจค เจเฉเฉฐเจเฉ เจจเจพเจฒ เจฎเฉเจฒ เจเจพเจเจฆเฉ เจธเฉ, เจคเจพเจ เจเฉเจก เจจเฉ เจธเฉฐเจฎเจฟเจฒเจจ เจฒเจ เจเฉฑเจ เจขเฉเจเจตเจพเจ เจธเจฒเจพเจ เจฒเฉฑเจญเจฟเจ เจ เจคเฉ เจธเฉฐเจฎเจฟเจฒเจฟเจค เจฎเฉเฉฑเจฒ เจจเฉเฉฐ เจธเจฒเจพเจ เจตเจฟเฉฑเจ เจธเจผเจพเจฎเจฒ เจเฉเจคเจพเฅค
เจเฉเจเจฐ เจเฉฑเจ เจเจฐเจจเจฒ เจเจพเจฒ เจตเจฟเฉฑเจ เจนเฉ gpu_hashtable_insert()
เจเฉฑเจเฉ เจเฉเฉฐเจเฉ เจฆเฉ เจจเจพเจฒ เจเจ เจคเฉฑเจค เจนเจจ, เจซเจฟเจฐ เจเจนเจจเจพเจ เจฆเฉ เจฎเฉเฉฑเจฒเจพเจ เจตเจฟเฉฑเจเฉเจ เจเฉเจ เจตเฉ เจเฉเฉฐเจเฉ เจธเจฒเจพเจ เจตเจฟเฉฑเจ เจฒเจฟเจเจฟเจ เจเจพ เจธเจเจฆเจพ เจนเฉเฅค เจเจน เจเจฎ เจฎเฉฐเจจเจฟเจ เจเจพเจเจฆเจพ เจนเฉ: เจเจพเจฒ เจฆเฉ เจฆเฉเจฐเจพเจจ เจเฉฑเจ เจเฉเฉฐเจเฉ-เจฎเฉเฉฑเจฒ เจฐเจพเจเจ เจธเจซเจฒ เจนเฉ เจเจพเจตเฉเจเจพ, เจชเจฐ เจเจฟเจเจเจเจฟ เจเจน เจธเจญ เจเฉเจ เจเจเจเจผเฉเจเจฟเจเจธเจผเจจ เจฆเฉ เจเจ เจฅเฉเจฐเฉเฉฑเจกเจพเจ เจตเจฟเฉฑเจ เจธเจฎเจพเจจเจพเจเจคเจฐ เจนเฉเฉฐเจฆเจพ เจนเฉ, เจ
เจธเฉเจ เจเจน เจ
เฉฐเจฆเจพเจเจผเจพ เจจเจนเฉเจ เจฒเจเจพ เจธเจเจฆเฉ เจนเจพเจ เจเจฟ เจเจฟเจนเฉเฉ เจฎเฉเจฎเฉเจฐเฉ เจฐเจพเจเจ เจเจเจฐเฉ เจนเฉเจตเฉเจเฉเฅค
เจนเฉเจธเจผ เจเฉเจฌเจฒ เจเฉเจ
เจเฉเจ เจเฉเฉฐเจเฉเจเจ เจฒเจ เจเฉเจก:
uint32_t gpu_hashtable_lookup(KeyValue* hashtable, uint32_t key)
{
uint32_t slot = hash(key);
while (true)
{
if (hashtable[slot].key == key)
{
return hashtable[slot].value;
}
if (hashtable[slot].key == kEmpty)
{
return kEmpty;
}
slot = (slot + 1) & (kHashTableCapacity - 1);
}
}
เจเฉฑเจ เจธเจพเจฐเจฃเฉ เจตเจฟเฉฑเจ เจธเจเฉเจฐ เจเฉเจคเฉ เจเฉฑเจ เจเฉเฉฐเจเฉ เจฆเจพ เจฎเฉเฉฑเจฒ เจฒเฉฑเจญเจฃ เจฒเจ, เจ เจธเฉเจ เจเจธ เจเฉเฉฐเจเฉ เจฆเฉ เจนเฉเจธเจผ เจจเจพเจฒ เจธเจผเฉเจฐเฉ เจนเฉเจฃ เจตเจพเจฒเฉ เจเจฐเฉ เจฐเจพเจนเฉเจ เจฆเฉเจนเจฐเจพเจเจเจฆเฉ เจนเจพเจ เจเจฟเจธ เจฆเฉ เจ เจธเฉเจ เจญเจพเจฒ เจเจฐ เจฐเจนเฉ เจนเจพเจเฅค เจนเจฐเฉเจ เจธเจฒเจพเจ เจตเจฟเฉฑเจ, เจ เจธเฉเจ เจเจพเจเจ เจเจฐเจฆเฉ เจนเจพเจ เจเจฟ เจเฉ เจเจน เจเฉเฉฐเจเฉ เจนเฉ เจเจฟเจธ เจฆเฉ เจ เจธเฉเจ เจญเจพเจฒ เจเจฐ เจฐเจนเฉ เจนเจพเจ, เจ เจคเฉ เจเฉเจเจฐ เจ เจเจฟเจนเจพ เจนเฉ, เจคเจพเจ เจ เจธเฉเจ เจเจธเจฆเจพ เจฎเฉเฉฑเจฒ เจตเจพเจชเจธ เจเจฐเจฆเฉ เจนเจพเจเฅค เจ เจธเฉเจ เจเจน เจตเฉ เจเจพเจเจเจฆเฉ เจนเจพเจ เจเจฟ เจเฉ เจเฉเฉฐเจเฉ เจเจพเจฒเฉ เจนเฉ, เจ เจคเฉ เจเฉเจเจฐ เจ เจเจฟเจนเจพ เจนเฉ, เจคเจพเจ เจ เจธเฉเจ เจเฉเจ เจจเฉเฉฐ เจเฉฑเจก เจฆเจฟเฉฐเจฆเฉ เจนเจพเจเฅค
เจเฉเจเจฐ เจ เจธเฉเจ เจเฉเฉฐเจเฉ เจจเจนเฉเจ เจฒเฉฑเจญ เจธเจเจฆเฉ, เจคเจพเจ เจเฉเจก เจเฉฑเจ เจเจพเจฒเฉ เจฎเฉเฉฑเจฒ เจตเจพเจชเจธ เจเจฐเจฆเจพ เจนเฉเฅค
เจเจน เจธเจพเจฐเฉ เจเฉเจ เจเจพเจฐเจ เจธเฉฐเจฎเจฟเจฒเจจ เจ เจคเฉ เจฎเจฟเจเจพเจเจฃ เจฆเฉเจเจฐเจพ เจเฉฑเจเฉ เจธเจฎเฉเจ เจเฉเจคเฉ เจเจพ เจธเจเจฆเฉ เจนเจจเฅค เจธเจพเจฐเจฃเฉ เจตเจฟเฉฑเจ เจนเจฐเฉเจ เจเฉเฉเฉ เจตเจฟเฉฑเจ เจชเฉเจฐเจตเจพเจน เจฒเจ เจเฉฑเจชเจฐ เจฆเฉฑเจธเฉ เจเจ เจเจพเจฐ เจฐเจพเจเจพเจ เจตเจฟเฉฑเจเฉเจ เจเฉฑเจ เจนเฉเจตเฉเจเจพเฅค
เจเฉฑเจ เจนเฉเจธเจผ เจเฉเจฌเจฒ เจตเจฟเฉฑเจ เจฎเจฟเจเจพเจเจฃเจพ
เจเฉเฉฐเจเฉเจเจ เจจเฉเฉฐ เจฎเจฟเจเจพเจเจฃ เจฒเจ เจเฉเจก:
void gpu_hashtable_delete(KeyValue* hashtable, uint32_t key, uint32_t value)
{
uint32_t slot = hash(key);
while (true)
{
if (hashtable[slot].key == key)
{
hashtable[slot].value = kEmpty;
return;
}
if (hashtable[slot].key == kEmpty)
{
return;
}
slot = (slot + 1) & (kHashTableCapacity - 1);
}
}
เจเฉฑเจ เจเฉเฉฐเจเฉ เจจเฉเฉฐ เจฎเจฟเจเจพเจเจฃเจพ เจเฉฑเจ เจ
เจธเจพเจงเจพเจฐเจจ เจคเจฐเฉเจเฉ เจจเจพเจฒ เจเฉเจคเจพ เจเจพเจเจฆเจพ เจนเฉ: เจ
เจธเฉเจ เจธเจพเจฐเจฃเฉ เจตเจฟเฉฑเจ เจเฉเฉฐเจเฉ เจจเฉเฉฐ เจเฉฑเจก เจฆเจฟเฉฐเจฆเฉ เจนเจพเจ เจ
เจคเฉ เจเจธเจฆเฉ เจฎเฉเฉฑเจฒ (เจเฉเฉฐเจเฉ เจจเฉเฉฐ เจเจชเจฃเฉ เจเจช เจจเจนเฉเจ) เจเจพเจฒเฉ เจตเจเฉเจ เจเจฟเฉฐเจจเฉเจนเจฟเจค เจเจฐเจฆเฉ เจนเจพเจเฅค เจเจน เจเฉเจก เจฌเจนเฉเจค เจธเจฎเจพเจจ เจนเฉ lookup()
, เจเจธ เจคเฉเจ เจเจฒเจพเจตเจพ เจเจฆเฉเจ เจเฉฑเจ เจเฉเฉฐเจเฉ 'เจคเฉ เจเฉเจ เจฎเฉเจฒ เจฎเจฟเจฒเจฆเจพ เจนเฉ, เจเจน เจเจธเจฆเฉ เจฎเฉเฉฑเจฒ เจจเฉเฉฐ เจเจพเจฒเฉ เจฌเจฃเจพเจเจเจฆเจพ เจนเฉเฅค
เจเจฟเจตเฉเจ เจเจฟ เจเฉฑเจชเจฐ เจฆเฉฑเจธเจฟเจ เจเจฟเจ เจนเฉ, เจเฉฑเจ เจตเจพเจฐ เจเฉฑเจ เจธเจฒเจพเจ เจตเจฟเฉฑเจ เจเฉฑเจ เจเฉเฉฐเจเฉ เจฒเจฟเจเฉ เจเจพเจเจฆเฉ เจนเฉ, เจเจน เจนเฉเจฃ เจ เฉฑเจเฉ เจจเจนเฉเจ เจเจพเจเจฆเฉ เจนเฉเฅค เจเฉฑเจฅเฉเจ เจคเฉฑเจ เจเจฟ เจเจฆเฉเจ เจเฉฑเจ เจคเฉฑเจค เจธเจพเจฐเจฃเฉ เจคเฉเจ เจฎเจฟเจเจพ เจฆเจฟเฉฑเจคเจพ เจเจพเจเจฆเจพ เจนเฉ, เจคเจพเจ เจเฉเฉฐเจเฉ เจเจเฉเจนเจพ เจตเจฟเฉฑเจ เจฐเจนเจฟเฉฐเจฆเฉ เจนเฉ, เจเจธเจฆเจพ เจฎเฉเฉฑเจฒ เจธเจฟเจฐเจซเจผ เจเจพเจฒเฉ เจนเฉ เจเจพเจเจฆเจพ เจนเฉเฅค เจเจธเจฆเจพ เจฎเจคเจฒเจฌ เจนเฉ เจเจฟ เจธเจพเจจเฉเฉฐ เจธเจฒเจพเจ เจฎเฉเฉฑเจฒ เจฒเจ เจเฉฑเจ เจชเจฐเจฎเจพเจฃเฉ เจฒเจฟเจเจฃ เจฆเฉ เจเจพเจฐเจตเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจจ เจฆเฉ เจฒเฉเฉ เจจเจนเฉเจ เจนเฉ, เจเจฟเจเจเจเจฟ เจเจธ เจจเจพเจฒ เจเฉเจ เจซเจฐเจ เจจเจนเฉเจ เจชเฉเจเจฆเจพ เจเจฟ เจฎเฉเจเฉเจฆเจพ เจฎเฉเฉฑเจฒ เจเจพเจฒเฉ เจนเฉ เจเจพเจ เจจเจนเฉเจ - เจเจน เจ เจเฉ เจตเฉ เจเจพเจฒเฉ เจนเฉ เจเจพเจตเฉเจเจพเฅค
เจนเฉเจธเจผ เจเฉเจฌเจฒ เจฆเจพ เจเจเจพเจฐ เจฌเจฆเจฒเจฃเจพ
เจคเฉเจธเฉเจ เจเฉฑเจ เจตเฉฑเจกเฉ เจเฉเจฌเจฒ เจฌเจฃเจพ เจเฉ เจนเฉเจธเจผ เจเฉเจฌเจฒ เจฆเจพ เจเจเจพเจฐ เจฌเจฆเจฒ เจธเจเจฆเฉ เจนเฉ เจ เจคเฉ เจเจธ เจตเจฟเฉฑเจ เจชเฉเจฐเจพเจฃเฉ เจเฉเจฌเจฒ เจคเฉเจ เจเฉเจฐ-เจเจพเจฒเฉ เจคเฉฑเจค เจชเจพ เจธเจเจฆเฉ เจนเฉเฅค เจฎเฉเจ เจเจธ เจเจพเจฐเจเจเฉเจธเจผเจฒเจคเจพ เจจเฉเฉฐ เจฒเจพเจเฉ เจจเจนเฉเจ เจเฉเจคเจพ เจเจฟเจเจเจเจฟ เจฎเฉเจ เจจเจฎเฉเจจเจพ เจเฉเจก เจจเฉเฉฐ เจธเจงเจพเจฐเจจ เจฐเฉฑเจเจฃเจพ เจเจพเจนเฉเฉฐเจฆเจพ เจธเฉเฅค เจเจธ เจคเฉเจ เจเจฒเจพเจตเจพ, CUDA เจชเฉเจฐเฉเจเจฐเจพเจฎเจพเจ เจตเจฟเฉฑเจ, เจฎเฉเจฎเฉเจฐเฉ เจตเฉฐเจก เจ เจเจธเจฐ CUDA เจเจฐเจจเจฒ เจฆเฉ เจฌเจเจพเจ เจนเฉเจธเจ เจเฉเจก เจตเจฟเฉฑเจ เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเฉเฅค
เจฒเฉเจ
เจฎเฉเจเจพเจฌเจฒเฉเจฌเจพเจเจผเฉ
เจเจชเจฐเฉเจเจค เจซเฉฐเจเจธเจผเจจ เจเฉเจก เจธเจจเจฟเฉฑเจชเจ เจตเจฟเฉฑเจ gpu_hashtable_insert()
, _lookup()
ะธ _delete()
เจเฉฑเจ เจธเจฎเฉเจ เจตเจฟเฉฑเจ เจเฉฑเจ เจเฉเฉฐเจเฉ-เจฎเฉเฉฑเจฒ เจเฉเฉเฉ เจฆเฉ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจเจฐเฉเฅค เจ
เจคเฉ เจนเฉเจ เจฒเฉ gpu_hashtable_insert()
, _lookup()
ะธ _delete()
เจธเจฎเจพเจจเจพเจเจคเจฐ เจตเจฟเฉฑเจ เจเฉเฉเจฟเจเจ เจฆเฉ เจเฉฑเจ เจเจฐเฉ เจฆเฉ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจเจฐเฉ, เจนเจฐเฉเจ เจเฉเฉเจพ เจเฉฑเจ เจตเฉฑเจเจฐเฉ GPU เจเจเจเจผเฉเจเจฟเจเจธเจผเจจ เจฅเฉเจฐเฉเจก เจตเจฟเฉฑเจ:
// CPU code to invoke the CUDA kernel on the GPU
uint32_t threadblocksize = 1024;
uint32_t gridsize = (numkvs + threadblocksize - 1) / threadblocksize;
gpu_hashtable_insert_kernel<<<gridsize, threadblocksize>>>(hashtable, kvs, numkvs);
// GPU code to process numkvs key/values in parallel
void gpu_hashtable_insert_kernel(KeyValue* hashtable, const KeyValue* kvs, unsigned int numkvs)
{
unsigned int threadid = blockIdx.x*blockDim.x + threadIdx.x;
if (threadid < numkvs)
{
gpu_hashtable_insert(hashtable, kvs[threadid].key, kvs[threadid].value);
}
}
เจฒเจพเจ-เจฐเฉเจงเจ เจนเฉเจธเจผ เจเฉเจฌเจฒ เจธเจฎเจเจพเจฒเฉ เจธเฉฐเจฎเจฟเจฒเจจเจพเจ, เจฒเฉเฉฑเจเจ เจชเจธ เจ เจคเฉ เจฎเจฟเจเจพเจเจฃ เจฆเจพ เจธเจฎเจฐเจฅเจจ เจเจฐเจฆเจพ เจนเฉเฅค เจเจฟเจเจเจเจฟ เจเฉเฉฐเจเฉ-เจฎเฉเฉฑเจฒ เจฆเฉ เจเฉเฉเฉ เจนเจฎเฉเจธเจผเจพ เจเจพเจฐ เจ เจตเจธเจฅเจพเจตเจพเจ เจตเจฟเฉฑเจเฉเจ เจเฉฑเจ เจตเจฟเฉฑเจ เจนเฉเฉฐเจฆเฉ เจนเจจ เจ เจคเฉ เจเฉเฉฐเจเฉเจเจ เจจเจนเฉเจ เจเจฒเจฆเฉเจเจ, เจธเจพเจฐเจฃเฉ เจธเจนเฉ เจนเฉเจฃ เจฆเฉ เจเจพเจฐเฉฐเจเฉ เจฆเจฟเฉฐเจฆเฉ เจนเฉ เจญเจพเจตเฉเจ เจตเฉฑเจ-เจตเฉฑเจ เจเจฟเจธเจฎเจพเจ เจฆเฉ เจเจชเจฐเฉเจธเจผเจจ เจเฉฑเจเฉ เจธเจฎเฉเจ เจตเจฐเจคเฉ เจเจพเจเจฆเฉ เจนเจจเฅค
เจนเจพเจฒเจพเจเจเจฟ, เจเฉเจเจฐ เจ
เจธเฉเจ เจธเจฎเจพเจจเจพเจเจคเจฐ เจฐเฉเจช เจตเจฟเฉฑเจ เจธเฉฐเจฎเจฟเจฒเจจเจพเจ เจ
เจคเฉ เจฎเจฟเจเจพเจเจฃ เจฆเฉ เจเฉฑเจ เจฌเฉเจ เจฆเฉ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจเจฐเจฆเฉ เจนเจพเจ, เจ
เจคเฉ เจเฉเจเจฐ เจเฉเฉเจฟเจเจ เจฆเฉ เจเจจเจชเฉเจ เจเจฐเฉ เจตเจฟเฉฑเจ เจกเฉเจชเจฒเฉเจเฉเจ เจเฉเฉฐเจเฉเจเจ เจธเจผเจพเจฎเจฒ เจนเฉเฉฐเจฆเฉเจเจ เจนเจจ, เจคเจพเจ เจ
เจธเฉเจ เจเจน เจ
เฉฐเจฆเจพเจเจผเจพ เจจเจนเฉเจ เจฒเจเจพ เจธเจเจพเจเจเฉ เจเจฟ เจเจฟเจนเฉเฉ เจเฉเฉเฉ "เจเจฟเฉฑเจคเจฃเจเฉ" - เจเจเจฐเฉ เจตเจพเจฐ เจนเฉเจธเจผ เจเฉเจฌเจฒ เจตเจฟเฉฑเจ เจฒเจฟเจเจฟเจ เจเจพเจตเฉเจเจพเฅค เจฎเฉฐเจจ เจฒเจ เจเจฟ เจ
เจธเฉเจ เจเฉเฉเจพเจ เจฆเฉ เจเฉฑเจ เจเจจเจชเฉเจ เจเจฐเฉ เจจเจพเจฒ เจธเฉฐเจฎเจฟเจฒเจจ เจเฉเจก เจจเฉเฉฐ เจเจพเจฒ เจเจฐเจฆเฉ เจนเจพเจ A/0 B/1 A/2 C/3 A/4
. เจเจฆเฉเจ เจเฉเจก เจชเฉเจฐเจพ เจนเฉเฉฐเจฆเจพ เจนเฉ, เจเฉเฉเฉ B/1
ะธ C/3
เจธเจพเจฐเจฃเฉ เจตเจฟเฉฑเจ เจฎเฉเจเฉเจฆ เจนเฉเจฃ เจฆเฉ เจเจพเจฐเฉฐเจเฉ เจฆเจฟเฉฑเจคเฉ เจเจพเจเจฆเฉ เจนเฉ, เจชเจฐ เจเจธเฉ เจธเจฎเฉเจ เจเจธ เจตเจฟเฉฑเจ เจเฉเจ เจตเฉ เจเฉเฉเจพ เจฆเจฟเจเจพเจ เจฆเฉเจตเฉเจเจพ A/0
, A/2
เจ A/4
. เจเจน เจธเจฎเฉฑเจธเจฟเจ เจนเฉ เจธเจเจฆเฉ เจนเฉ เจเจพเจ เจจเจนเฉเจ - เจเจน เจธเจญ เจเจชเจฒเฉเจเฉเจธเจผเจจ 'เจคเฉ เจจเจฟเจฐเจญเจฐ เจเจฐเจฆเจพ เจนเฉเฅค เจคเฉเจนเจพเจจเฉเฉฐ เจชเจนเจฟเจฒเจพเจ เจนเฉ เจชเจคเจพ เจฒเฉฑเจ เจธเจเจฆเจพ เจนเฉ เจเจฟ เจเจจเจชเฉเจ เจเจฐเฉ เจตเจฟเฉฑเจ เจเฉเจ เจกเฉเจชเจฒเฉเจเฉเจ เจเฉเฉฐเจเฉเจเจ เจจเจนเฉเจ เจนเจจ, เจเจพเจ เจนเฉ เจธเจเจฆเจพ เจนเฉ เจเจฟ เจคเฉเจธเฉเจ เจเจธ เจเฉฑเจฒ เจฆเฉ เจชเจฐเจตเจพเจน เจจเจพ เจเจฐเฉ เจเจฟ เจเจฟเจนเฉเจพ เจฎเฉเฉฑเจฒ เจเจเจฐเฉ เจตเจพเจฐ เจฒเจฟเจเจฟเจ เจเจฟเจ เจธเฉเฅค
เจเฉเจเจฐ เจเจน เจคเฉเจนเจพเจกเฉ เจฒเจ เจเฉฑเจ เจธเจฎเฉฑเจธเจฟเจ เจนเฉ, เจคเจพเจ เจคเฉเจนเจพเจจเฉเฉฐ เจกเฉเจชเจฒเฉเจเฉเจ เจเฉเฉเจฟเจเจ เจจเฉเฉฐ เจตเฉฑเจ-เจตเฉฑเจ CUDA เจธเจฟเจธเจเจฎ เจเจพเจฒเจพเจ เจตเจฟเฉฑเจ เจตเฉฑเจ เจเจฐเจจ เจฆเฉ เจฒเฉเฉ เจนเฉเฅค CUDA เจตเจฟเฉฑเจ, เจเฉเจ เจตเฉ เจเจชเจฐเฉเจธเจผเจจ เจเฉ เจเจฐเจจเจฒ เจจเฉเฉฐ เจเจพเจฒ เจเจฐเจฆเจพ เจนเฉ เจนเจฎเฉเจธเจผเจพ เจ
เจเจฒเฉ เจเจฐเจจเจฒ เจเจพเจฒ เจคเฉเจ เจชเจนเจฟเจฒเจพเจ เจชเฉเจฐเจพ เจนเฉเฉฐเจฆเจพ เจนเฉ (เจเฉฑเจเฉ-เจเฉฑเจ เจเฉฑเจ เจฅเฉเจฐเฉเจก เจฆเฉ เจ
เฉฐเจฆเจฐเฅค เจตเฉฑเจ-เจตเฉฑเจ เจฅเจฐเจฟเฉฑเจกเจพเจ เจตเจฟเฉฑเจ, เจเจฐเจจเจฒ เจธเจฎเจพเจจเจพเจเจคเจฐ เจคเฉเจฐ 'เจคเฉ เจเจฒเจพเจเจ เจเจพเจเจฆเจพ เจนเฉ)เฅค เจเจชเจฐเฉเจเจค เจเจฆเจพเจนเจฐเจจ เจตเจฟเฉฑเจ, เจเฉเจเจฐ เจคเฉเจธเฉเจ เจเฉฑเจ เจเจฐเจจเจฒ เจจเจพเจฒ เจเจพเจฒ เจเจฐเจฆเฉ เจนเฉ A/0 B/1 A/2 C/3
, เจ
เจคเฉ เจฆเฉเจเฉ เจจเจพเจฒ A/4
, เจซเจฟเจฐ เจเฉเฉฐเจเฉ A
เจฎเฉเฉฑเจฒ เจชเฉเจฐเจพเจชเจค เจเจฐเฉเจเจพ 4
.
เจนเฉเจฃ เจเจธ เจฌเจพเจฐเฉ เจเฉฑเจฒ เจเจฐเฉเจ เจเจฟ เจเฉ เจซเฉฐเจเจธเจผเจจ เจนเฉเจฃเจพ เจเจพเจนเฉเจฆเจพ เจนเฉ lookup()
ะธ delete()
เจนเฉเจธเจผ เจเฉเจฌเจฒ เจตเจฟเฉฑเจ เจเฉเฉเจฟเจเจ เจฆเฉ เจเฉฑเจ เจเจฐเฉ เจฒเจ เจเฉฑเจ เจธเจพเจฆเฉ เจเจพเจ เจ
เจธเจฅเจฟเจฐ เจชเฉเจเจเฉฐเจเจฐ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเฉเฅค
เจเฉฐเจชเจพเจเจฒเจฐ เจเจฒเฉเจฌเจฒ เจเจพเจ เจธเจผเฉเจ เจฐเจก เจฎเฉเจฎเฉเจฐเฉ เจฒเจ เจฐเฉเจกเจฟเฉฐเจ เจ เจคเฉ เจฐเจพเจเจเจธ เจจเฉเฉฐ เจ เจจเฉเจเฉเจฒ เจฌเจฃเจพเจเจฃ เจฆเฉ เจเฉเจฃ เจเจฐ เจธเจเจฆเจพ เจนเฉ... เจเจน เจ เจจเฉเจเฉเจฒเจจ เจเฉเจตเจฐเจก เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจ เจฏเฉเจ เจเฉเจคเฉ เจเจพ เจธเจเจฆเฉ เจนเจจ
volatile
: ... เจเจธ เจตเฉเจฐเฉเจเจฌเจฒ เจฆเจพ เจเฉเจ เจตเฉ เจนเจตเจพเจฒเจพ เจเฉฑเจ เจ เจธเจฒเฉ เจฎเฉเจฎเฉเจฐเฉ เจชเฉเฉเจนเจจ เจเจพเจ เจฒเจฟเจเจฃ เจฆเฉ เจนเจฆเจพเจเจค เจตเจฟเฉฑเจ เจเฉฐเจชเจพเจเจฒ เจเฉเจคเจพ เจเจพเจเจฆเจพ เจนเฉเฅค
เจธเจผเฉเฉฑเจงเจคเจพ เจฆเฉ เจตเจฟเจเจพเจฐเจพเจ เจฒเจ เจ
เจฐเจเจผเฉ เจฆเฉ เจฒเฉเฉ เจจเจนเฉเจ เจนเฉ volatile
. เจเฉเจเจฐ เจเจเจเจผเฉเจเจฟเจเจธเจผเจจ เจฅเฉเจฐเฉเจก เจชเจนเจฟเจฒเจพเจ เจฐเฉเจก เจเจชเจฐเฉเจธเจผเจจ เจคเฉเจ เจเฉฑเจ เจเฉเจธเจผ เจฎเฉเฉฑเจฒ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเจพ เจนเฉ, เจคเจพเจ เจเจน เจฅเฉเฉเฉ เจชเฉเจฐเจพเจฃเฉ เจเจพเจฃเจเจพเจฐเฉ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเฉเจเจพเฅค เจชเจฐ เจซเจฟเจฐ เจตเฉ, เจเจน เจเจฐเจจเจฒ เจเจพเจฒ เจฆเฉ เจเฉฑเจ เจเจพเจธ เจชเจฒ 'เจคเฉ เจนเฉเจธเจผ เจเฉเจฌเจฒ เจฆเฉ เจธเจนเฉ เจธเจฅเจฟเจคเฉ เจคเฉเจ เจเจพเจฃเจเจพเจฐเฉ เจนเฉเฅค เจเฉ เจคเฉเจนเจพเจจเฉเฉฐ เจจเจตเฉเจจเจคเจฎ เจเจพเจฃเจเจพเจฐเฉ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจจ เจฆเฉ เจฒเฉเฉ เจนเฉ, เจคเจพเจ เจคเฉเจธเฉเจ เจธเฉเจเจเจพเจเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐ เจธเจเจฆเฉ เจนเฉ volatile
, เจชเจฐ เจซเจฟเจฐ เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจฅเฉเฉเฉเจนเจพ เจเฉฑเจ เจเจพเจตเฉเจเจพ: เจฎเฉเจฐเฉ เจเฉเจธเจเจพเจ เจฆเฉ เจ
เจจเฉเจธเจพเจฐ, 32 เจฎเจฟเจฒเฉเจ
เจจ เจเจฒเฉเจฎเฉเจเจเจธ เจจเฉเฉฐ เจฎเจฟเจเจพเจเจฃ เจตเฉเจฒเฉ, เจเจคเฉ 500 เจฎเจฟเจฒเฉเจ
เจจ เจกเจฟเจฒเฉเจธเจผเจจ/เจธเจเจฟเฉฐเจ เจคเฉเจ เจเจ เจเฉ 450 เจฎเจฟเจฒเฉเจ
เจจ เจกเจฟเจฒเฉเจธเจผเจจ/เจธเฉเจเฉฐเจก เจนเฉ เจเจเฅค
เจเจคเจชเจพเจฆเจเจคเจพ
64 เจฎเจฟเจฒเฉเจ
เจจ เจคเฉฑเจค เจชเจพเจเจฃ เจ
เจคเฉ เจเจนเจจเจพเจ เจตเจฟเฉฑเจเฉเจ 32 เจฎเจฟเจฒเฉเจ
เจจ เจจเฉเฉฐ เจฎเจฟเจเจพเจเจฃ เจฒเจ เจเฉเจธเจ เจตเจฟเฉฑเจ, เจตเจฟเจเจเจพเจฐ เจฎเฉเจเจพเจฌเจฒเจพ std::unordered_map
เจ
เจคเฉ GPU เจฒเจ เจ
เจธเจฒ เจตเจฟเฉฑเจ เจเฉเจ เจนเฉเจธเจผ เจเฉเจฌเจฒ เจจเจนเฉเจ เจนเฉ:
std::unordered_map
เจคเฉฑเจคเจพเจ เจจเฉเฉฐ เจชเจพเจเจฃ เจ
เจคเฉ เจนเจเจพเจเจฃ เจ
เจคเฉ เจซเจฟเจฐ เจเจนเจจเจพเจ เจจเฉเฉฐ เจฎเฉเจเจค เจเจฐเจจ เจฒเจ 70 ms เจเจฐเจ เจเฉเจคเฉ unordered_map
(เจฒเฉฑเจเจพเจ เจคเฉฑเจคเจพเจ เจคเฉเจ เจเฉเจเจเจพเจฐเจพ เจชเจพเจเจฃ เจตเจฟเฉฑเจ เจฌเจนเฉเจค เจธเจฎเจพเจ เจฒเฉฑเจเจฆเจพ เจนเฉ, เจเจฟเจเจเจเจฟ เจ
เฉฐเจฆเจฐ unordered_map
เจฎเจฒเจเฉเจชเจฒ เจฎเฉเจฎเฉเจฐเฉ เจตเฉฐเจก เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเฉ)เฅค เจเจฎเจพเจจเจฆเจพเจฐเฉ เจจเจพเจฒ เจเจนเจพเจ เจคเจพเจ, std:unordered_map
เจชเฉเจฐเฉ เจคเจฐเฉเจนเจพเจ เจตเฉฑเจเจฐเฉเจเจ เจชเจพเจฌเฉฐเจฆเฉเจเจ. เจเจน เจเจเจเจผเฉเจเจฟเจเจธเจผเจจ เจฆเจพ เจเฉฑเจ เจธเจฟเฉฐเจเจฒ CPU เจฅเจฐเจฟเฉฑเจก เจนเฉ, เจเจฟเจธเฉ เจตเฉ เจเจเจพเจฐ เจฆเฉ เจฎเฉเฉฑเจ-เจฎเฉเฉฑเจฒเจพเจ เจฆเจพ เจธเจฎเจฐเจฅเจจ เจเจฐเจฆเจพ เจนเฉ, เจเฉฑเจ เจเจชเจฏเฉเจเจคเจพ เจฆเจฐเจพเจ 'เจคเฉ เจตเจงเฉเจ เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจเจฐเจฆเจพ เจนเฉ, เจ
เจคเฉ เจเจ เจฎเจฟเจเจพเจเจฃ เจคเฉเจ เจฌเจพเจ
เจฆ เจธเจฅเจฟเจฐ เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจฆเจฟเจเจพเจเจเจฆเจพ เจนเฉเฅค
GPU เจ เจคเฉ เจ เฉฐเจคเจฐ-เจชเฉเจฐเฉเจเจฐเจพเจฎ เจธเฉฐเจเจพเจฐ เจฒเจ เจนเฉเจธเจผ เจเฉเจฌเจฒ เจฆเฉ เจฎเจฟเจเจฆ 984 ms เจธเฉเฅค เจเจธ เจตเจฟเฉฑเจ เจเฉเจฌเจฒ เจจเฉเฉฐ เจฎเฉเจฎเฉเจฐเฉ เจตเจฟเฉฑเจ เจฐเฉฑเจเจฃ เจ เจคเฉ เจเจธเจจเฉเฉฐ เจฎเจฟเจเจพเจเจฃ เจตเจฟเฉฑเจ เจฌเจฟเจคเจพเจเจ เจเจฟเจ เจธเจฎเจพเจ เจธเจผเจพเจฎเจฒ เจนเฉ (เจเฉฑเจ เจตเจพเจฐ 1 GB เจฎเฉเจฎเฉเจฐเฉ เจจเจฟเจฐเจงเจพเจฐเจค เจเจฐเจจเจพ, เจเฉ เจเจฟ CUDA เจตเจฟเฉฑเจ เจเฉเจ เจธเจฎเจพเจ เจฒเฉเจเจฆเจพ เจนเฉ), เจคเฉฑเจค เจธเจผเจพเจฎเจฒ เจเจฐเจจเจพ เจ เจคเฉ เจฎเจฟเจเจพเจเจฃเจพ, เจ เจคเฉ เจเจนเจจเจพเจ เจจเฉเฉฐ เจฆเฉเจนเจฐเจพเจเจฃเจพเฅค เจตเฉเจกเฉเจ เจเจพเจฐเจก เจฎเฉเจฎเฉเจฐเฉ เจฆเฉเจเจ เจธเจพเจฐเฉเจเจ เจเจพเจชเฉเจเจ เจจเฉเฉฐ เจตเฉ เจงเจฟเจเจจ เจตเจฟเฉฑเจ เจฐเฉฑเจเจฟเจ เจเจพเจเจฆเจพ เจนเฉเฅค
เจนเฉเจธเจผ เจเฉเจฌเจฒ เจจเฉ เจเจชเจฃเฉ เจเจช เจจเฉเฉฐ เจชเฉเจฐเจพ เจเจฐเจจ เจตเจฟเฉฑเจ 271 ms เจฆเจพ เจธเจฎเจพเจ เจฒเจฟเจเฅค เจเจธ เจตเจฟเฉฑเจ เจตเฉเจกเฉเจ เจเจพเจฐเจก เจฆเฉเจเจฐเจพ เจคเฉฑเจค เจชเจพเจเจฃ เจ เจคเฉ เจฎเจฟเจเจพเจเจฃ เจตเจฟเฉฑเจ เจฌเจฟเจคเจพเจเจ เจเจฟเจ เจธเจฎเจพเจ เจธเจผเจพเจฎเจฒ เจนเฉ, เจ เจคเฉ เจฎเฉเจฎเฉเจฐเฉ เจตเจฟเฉฑเจ เจจเจเจฒ เจเจฐเจจ เจ เจคเฉ เจจเจคเฉเจเฉ เจธเจพเจฐเจฃเฉ เจเฉฑเจคเฉ เจฆเฉเจนเจฐเจพเจเจฃ เจตเจฟเฉฑเจ เจฌเจฟเจคเจพเจ เจเจ เจธเจฎเฉเจ เจจเฉเฉฐ เจงเจฟเจเจจ เจตเจฟเฉฑเจ เจจเจนเฉเจ เจฐเฉฑเจเจฆเจพเฅค เจเฉ GPU เจเฉเจฌเจฒ เจฒเฉฐเจฌเฉ เจธเจฎเฉเจ เจฒเจ เจฐเจนเจฟเฉฐเจฆเจพ เจนเฉ, เจเจพเจ เจเฉเจเจฐ เจนเฉเจธเจผ เจเฉเจฌเจฒ เจชเฉเจฐเฉ เจคเจฐเฉเจนเจพเจ เจตเฉเจกเฉเจ เจเจพเจฐเจก เจฆเฉ เจฎเฉเจฎเฉเจฐเฉ เจตเจฟเฉฑเจ เจธเจผเจพเจฎเจฒ เจนเฉ (เจเจฆเจพเจนเจฐเจฃ เจตเจเฉเจ, เจเฉฑเจ เจนเฉเจธเจผ เจเฉเจฌเจฒ เจฌเจฃเจพเจเจฃ เจฒเจ เจเฉ เจฆเฉเจเฉ GPU เจเฉเจก เจฆเฉเจเจฐเจพ เจตเจฐเจคเจฟเจ เจเจพเจตเฉเจเจพ เจจเจพ เจเจฟ เจเฉเจเจฆเจฐเฉ เจชเฉเจฐเฉเจธเฉเจธเจฐ เจฆเฉเจเจฐเจพ), เจคเจพเจ เจเฉเจธเจ เจฆเจพ เจจเจคเฉเจเจพ เจขเฉเจเจตเจพเจ เจนเฉเฅค
เจตเฉเจกเฉเจ เจเจพเจฐเจก เจฒเจ เจนเฉเจธเจผ เจเฉเจฌเจฒ เจเฉฑเจ เจฅเฉเจฐเจฐเฉเจชเฉเจ เจ เจคเฉ เจเจฟเจฐเจฟเจเจธเจผเฉเจฒ เจธเจฎเจพเจจเจคเจพ เจฆเฉ เจเจพเจฐเจจ เจเฉฑเจ เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจจเฉเฉฐ เจฆเจฐเจธเจพเจเจเจฆเจพ เจนเฉเฅค
shortcomings
เจนเฉเจธเจผ เจเฉเจฌเจฒ เจเจฐเจเฉเจเฉเจเจเจฐ เจตเจฟเฉฑเจ เจธเฉเจเฉเจค เจนเฉเจฃ เจฒเจ เจเฉเจ เจฎเฉเฉฑเจฆเฉ เจนเจจ:
- เจฒเฉเจจเฉเจ เจฐ เจชเฉเจฐเฉเจฌเจฟเฉฐเจ เจจเฉเฉฐ เจเจฒเฉฑเจธเจเจฐเจฟเฉฐเจ เจฆเฉเจเจฐเจพ เจ เฉเจฟเฉฑเจเจพ เจฌเจฃเจพเจเจ เจเจพเจเจฆเจพ เจนเฉ, เจเจฟเจธ เจเจพเจฐเจจ เจธเจพเจฐเจฃเฉ เจตเจฟเฉฑเจ เจเฉเฉฐเจเฉเจเจ เจชเฉเจฐเฉ เจคเจฐเฉเจนเจพเจ เจเฉฑเจ เจฐเฉฑเจเฉเจเจ เจเจพเจเจฆเฉเจเจ เจนเจจเฅค
- เจซเฉฐเจเจธเจผเจจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจเฉเฉฐเจเฉเจเจ เจจเฉเฉฐ เจจเจนเฉเจ เจนเจเจพเจเจ เจเจพเจเจฆเจพ เจนเฉ
delete
เจ เจคเฉ เจธเจฎเฉเจ เจฆเฉ เจจเจพเจฒ เจเจน เจฎเฉเจเจผ เจตเจฟเฉฑเจ เจเฉเจฌเฉ เจเจฐเจฆเฉ เจนเจจเฅค
เจจเจคเฉเจเฉ เจตเจเฉเจ, เจนเฉเจธเจผ เจเฉเจฌเจฒ เจฆเฉ เจเจพเจฐเจเฉเจเจผเจพเจฐเฉ เจนเฉเจฒเฉ-เจนเฉเจฒเฉ เจเจ เจธเจเจฆเฉ เจนเฉ, เจเจพเจธ เจคเฉเจฐ 'เจคเฉ เจเฉ เจเจน เจฒเฉฐเจฌเฉ เจธเจฎเฉเจ เจฒเจ เจฎเฉเจเฉเจฆ เจนเฉ เจ เจคเฉ เจเจธ เจตเจฟเฉฑเจ เจฌเจนเฉเจค เจธเจพเจฐเฉ เจธเฉฐเจฎเจฟเจฒเจจ เจ เจคเฉ เจฎเจฟเจเจพเจ เจเจ เจนเจจเฅค เจเจนเจจเจพเจ เจจเฉเจเจธเจพเจจเจพเจ เจจเฉเฉฐ เจเฉฑเจ เจเจฐเจจ เจฆเจพ เจเฉฑเจ เจคเจฐเฉเจเจพ เจนเฉ เจเฉฑเจ เจจเจตเฉเจ เจเฉเจฌเจฒ เจตเจฟเฉฑเจ เจเจพเจซเจผเฉ เจเฉฑเจ เจเจชเจฏเฉเจเจคเจพ เจฆเจฐ เจฆเฉ เจจเจพเจฒ เจฐเฉเจนเฉเจธเจผ เจเจฐเจจเจพ เจ เจคเฉ เจฐเฉเจนเฉเจธเจผเจฟเฉฐเจ เจฆเฉเจฐเจพเจจ เจนเจเจพเจเจเจ เจเจเจเจ เจเฉเฉฐเจเฉเจเจ เจจเฉเฉฐ เจซเจฟเจฒเจเจฐ เจเจฐเจจเจพเฅค
เจตเจฐเจฃเจฟเจค เจฎเฉเฉฑเจฆเจฟเจเจ เจจเฉเฉฐ เจฆเจฐเจธเจพเจเจฃ เจฒเจ, เจฎเฉเจ เจเจชเจฐเฉเจเจค เจเฉเจก เจฆเฉ เจตเจฐเจคเฉเจ 128 เจฎเจฟเจฒเฉเจ เจจ เจเจฒเฉเจฎเฉเจเจเจธ เจจเจพเจฒ เจเฉฑเจ เจเฉเจฌเจฒ เจฌเจฃเจพเจเจฃ เจฒเจ เจเจฐเจพเจเจเจพ เจ เจคเฉ 4 เจฎเจฟเจฒเฉเจ เจจ เจเจฒเฉเจฎเฉเจเจเจธ เจฆเฉเจเจฐเจพ เจฒเฉเจช เจเจฐเจพเจเจเจพ เจเจฆเฉเจ เจคเฉฑเจ เจฎเฉเจ 124 เจฎเจฟเจฒเฉเจ เจจ เจธเจฒเจพเจ (เจฒเจเจญเจ 0,96 เจฆเฉ เจเจชเจฏเฉเจเจคเจพ เจฆเจฐ) เจจเจนเฉเจ เจญเจฐเจฆเจพเฅค เจเฉฑเจฅเฉ เจจเจคเฉเจเจพ เจธเจพเจฐเจฃเฉ เจนเฉ, เจนเจฐเฉเจ เจเจคเจพเจฐ เจเฉฑเจ เจนเฉเจธเจผ เจเฉเจฌเจฒ เจตเจฟเฉฑเจ 4 เจฎเจฟเจฒเฉเจ เจจ เจจเจตเฉเจ เจคเฉฑเจค เจธเจผเจพเจฎเจฒ เจเจฐเจจ เจฒเจ เจเฉฑเจ CUDA เจเจฐเจจเจฒ เจเจพเจฒ เจนเฉ:
เจตเจฐเจคเฉเจ เจฆเจฐ
เจธเฉฐเจฎเจฟเจฒเจจ เจฆเฉ เจฎเจฟเจเจฆ 4 เจคเฉฑเจค
0,00
11,608448 ms (361,314798 เจฎเจฟเจฒเฉเจ
เจจ เจเฉเฉฐเจเฉเจเจ/เจธเจเจฟเฉฐเจเฅค)
0,03
11,751424 ms (356,918799 เจฎเจฟเจฒเฉเจ
เจจ เจเฉเฉฐเจเฉเจเจ/เจธเจเจฟเฉฐเจเฅค)
0,06
11,942592 ms (351,205515 เจฎเจฟเจฒเฉเจ
เจจ เจเฉเฉฐเจเฉเจเจ/เจธเจเจฟเฉฐเจเฅค)
0,09
12,081120 ms (347,178429 เจฎเจฟเจฒเฉเจ
เจจ เจเฉเฉฐเจเฉเจเจ/เจธเจเจฟเฉฐเจเฅค)
0,12
12,242560 ms (342,600233 เจฎเจฟเจฒเฉเจ
เจจ เจเฉเฉฐเจเฉเจเจ/เจธเจเจฟเฉฐเจเฅค)
0,16
12,396448 ms (338,347235 เจฎเจฟเจฒเฉเจ
เจจ เจเฉเฉฐเจเฉเจเจ/เจธเจเจฟเฉฐเจเฅค)
0,19
12,533024 ms (334,660176 เจฎเจฟเจฒเฉเจ
เจจ เจเฉเฉฐเจเฉเจเจ/เจธเจเจฟเฉฐเจเฅค)
0,22
12,703328 ms (330,173626 เจฎเจฟเจฒเฉเจ
เจจ เจเฉเฉฐเจเฉเจเจ/เจธเจเจฟเฉฐเจเฅค)
0,25
12,884512 ms (325,530693 เจฎเจฟเจฒเฉเจ
เจจ เจเฉเฉฐเจเฉเจเจ/เจธเจเจฟเฉฐเจเฅค)
0,28
13,033472 ms (321,810182 เจฎเจฟเจฒเฉเจ
เจจ เจเฉเฉฐเจเฉเจเจ/เจธเจเจฟเฉฐเจเฅค)
0,31
13,239296 ms (316,807174 เจฎเจฟเจฒเฉเจ
เจจ เจเฉเฉฐเจเฉเจเจ/เจธเจเจฟเฉฐเจเฅค)
0,34
13,392448 ms (313,184256 เจฎเจฟเจฒเฉเจ
เจจ เจเฉเฉฐเจเฉเจเจ/เจธเจเจฟเฉฐเจเฅค)
0,37
13,624000 ms (307,861434 เจฎเจฟเจฒเฉเจ
เจจ เจเฉเฉฐเจเฉเจเจ/เจธเจเจฟเฉฐเจเฅค)
0,41
13,875520 ms (302,280855 เจฎเจฟเจฒเฉเจ
เจจ เจเฉเฉฐเจเฉเจเจ/เจธเจเจฟเฉฐเจเฅค)
0,44
14,126528 ms (296,909756 เจฎเจฟเจฒเฉเจ
เจจ เจเฉเฉฐเจเฉเจเจ/เจธเจเจฟเฉฐเจเฅค)
0,47
14,399328 ms (291,284699 เจฎเจฟเจฒเฉเจ
เจจ เจเฉเฉฐเจเฉเจเจ/เจธเจเจฟเฉฐเจเฅค)
0,50
14,690304 ms (285,515123 เจฎเจฟเจฒเฉเจ
เจจ เจเฉเฉฐเจเฉเจเจ/เจธเจเจฟเฉฐเจเฅค)
0,53
15,039136 ms (278,892623 เจฎเจฟเจฒเฉเจ
เจจ เจเฉเฉฐเจเฉเจเจ/เจธเจเจฟเฉฐเจเฅค)
0,56
15,478656 ms (270,973402 เจฎเจฟเจฒเฉเจ
เจจ เจเฉเฉฐเจเฉเจเจ/เจธเจเจฟเฉฐเจเฅค)
0,59
15,985664 ms (262,379092 เจฎเจฟเจฒเฉเจ
เจจ เจเฉเฉฐเจเฉเจเจ/เจธเจเจฟเฉฐเจเฅค)
0,62
16,668673 ms (251,627968 เจฎเจฟเจฒเฉเจ
เจจ เจเฉเฉฐเจเฉเจเจ/เจธเจเจฟเฉฐเจเฅค)
0,66
17,587200 ms (238,486174 เจฎเจฟเจฒเฉเจ
เจจ เจเฉเฉฐเจเฉเจเจ/เจธเจเจฟเฉฐเจเฅค)
0,69
18,690048 ms (224,413765 เจฎเจฟเจฒเฉเจ
เจจ เจเฉเฉฐเจเฉเจเจ/เจธเจเจฟเฉฐเจเฅค)
0,72
20,278816 ms (206,831789 เจฎเจฟเจฒเฉเจ
เจจ เจเฉเฉฐเจเฉเจเจ/เจธเจเจฟเฉฐเจเฅค)
0,75
22,545408 ms (186,038058 เจฎเจฟเจฒเฉเจ
เจจ เจเฉเฉฐเจเฉเจเจ/เจธเจเจฟเฉฐเจเฅค)
0,78
26,053312 ms (160,989275 เจฎเจฟเจฒเฉเจ
เจจ เจเฉเฉฐเจเฉเจเจ/เจธเจเจฟเฉฐเจเฅค)
0,81
31,895008 ms (131,503463 เจฎเจฟเจฒเฉเจ
เจจ เจเฉเฉฐเจเฉเจเจ/เจธเจเจฟเฉฐเจเฅค)
0,84
42,103294 ms (99,619378 เจฎเจฟเจฒเฉเจ
เจจ เจเฉเฉฐเจเฉเจเจ/เจธเจเจฟเฉฐเจเฅค)
0,87
61,849056 ms (67,815164 เจฎเจฟเจฒเฉเจ
เจจ เจเฉเฉฐเจเฉเจเจ/เจธเจเจฟเฉฐเจเฅค)
0,90
105,695999 ms (39,682713 เจฎเจฟเจฒเฉเจ
เจจ เจเฉเฉฐเจเฉเจเจ/เจธเจเจฟเฉฐเจเฅค)
0,94
240,204636 ms (17,461378 เจฎเจฟเจฒเฉเจ
เจจ เจเฉเฉฐเจเฉเจเจ/เจธเจเจฟเฉฐเจเฅค)
เจเจฟเจตเฉเจ เจเจฟ เจเจชเจฏเฉเจเจคเจพ เจตเจงเจฆเฉ เจนเฉ, เจเจพเจฐเจเฉเจเจผเจพเจฐเฉ เจเจเจฆเฉ เจนเฉ. เจเจน เจเจผเจฟเจเจฆเจพเจคเจฐ เจฎเจพเจฎเจฒเจฟเจเจ เจตเจฟเฉฑเจ เจซเจพเจเจฆเฉเจฎเฉฐเจฆ เจจเจนเฉเจ เจนเฉเฅค เจเฉเจเจฐ เจเฉเจ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจคเฉฑเจค เจเฉฑเจ เจธเจพเจฐเจฃเฉ เจตเจฟเฉฑเจ เจธเจผเจพเจฎเจฒ เจเจฐเจฆเฉ เจนเฉ เจ เจคเฉ เจซเจฟเจฐ เจเจนเจจเจพเจ เจจเฉเฉฐ เจฐเฉฑเจฆ เจเจฐเจฆเฉ เจนเฉ (เจเจฆเจพเจนเจฐเจฃ เจตเจเฉเจ, เจเจฆเฉเจ เจเฉฑเจ เจเจฟเจคเจพเจฌ เจตเจฟเฉฑเจ เจธเจผเจฌเจฆเจพเจ เจฆเฉ เจเจฟเจฃเจคเฉ เจเจฐเจฆเฉ เจนเฉ), เจคเจพเจ เจเจน เจเฉเจ เจธเจฎเฉฑเจธเจฟเจ เจจเจนเฉเจ เจนเฉเฅค เจชเจฐ เจเฉ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจฒเฉฐเจฌเฉ เจธเจฎเฉเจ เจฒเจ เจนเฉเจธเจผ เจเฉเจฌเจฒ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเฉ (เจเจฆเจพเจนเจฐเจฃ เจตเจเฉเจ, เจเจฟเฉฑเจคเจฐเจพเจ เจฆเฉ เจเฉเจฐ-เจเจพเจฒเฉ เจนเจฟเฉฑเจธเจฟเจเจ เจจเฉเฉฐ เจธเจเฉเจฐ เจเจฐเจจ เจฒเจ เจเฉฑเจ เจเฉเจฐเจพเจซเจฟเจเจธ เจธเฉฐเจชเจพเจฆเจ เจตเจฟเฉฑเจ เจเจฟเฉฑเจฅเฉ เจเจชเจญเฉเจเจคเจพ เจ เจเจธเจฐ เจเจพเจฃเจเจพเจฐเฉ เจธเจผเจพเจฎเจฒ เจเจฐเจฆเจพ เจนเฉ เจ เจคเฉ เจฎเจฟเจเจพเจเจเจฆเจพ เจนเฉ), เจคเจพเจ เจเจน เจตเจฟเจตเจนเจพเจฐ เจธเจฎเฉฑเจธเจฟเจ เจตเจพเจฒเจพ เจนเฉ เจธเจเจฆเจพ เจนเฉเฅค
เจ เจคเฉ 64 เจฎเจฟเจฒเฉเจ เจจ เจเจจเจธเจฐเจเจธ (เจเจชเจฏเฉเจเจคเจพ เจเจพเจฐเจ 0,5) เจคเฉเจ เจฌเจพเจ เจฆ เจนเฉเจธเจผ เจเฉเจฌเจฒ เจฆเฉ เจเจพเจเจ เจฆเฉ เจกเฉเฉฐเจเจพเจ เจจเฉเฉฐ เจฎเจพเจชเจฟเจเฅค เจเจธเจค เจกเฉเฉฐเจเจพเจ 0,4774 เจธเฉ, เจเจธเจฒเจ เจเจผเจฟเจเจฆเจพเจคเจฐ เจเฉเฉฐเจเฉเจเจ เจเจพเจ เจคเจพเจ เจธเจญ เจคเฉเจ เจตเจงเฉเจ เจธเฉฐเจญเจต เจธเจฒเจพเจ เจตเจฟเฉฑเจ เจธเจจ เจเจพเจ เจตเจงเฉเจ เจธเจฅเจฟเจคเฉ เจคเฉเจ เจเฉฑเจ เจธเจฒเจพเจ เจฆเฉเจฐ เจธเจจเฅค เจตเฉฑเจง เจคเฉเจ เจตเฉฑเจง เจเจตเจพเจเจผ เจฆเฉ เจกเฉเฉฐเจเจพเจ 60 เจธเฉเฅค
เจฎเฉเจ เจซเจฟเจฐ 124 เจฎเจฟเจฒเฉเจ เจจ เจเจจเจธเจฐเจเจธ (เจเจชเจฏเฉเจเจคเจพ เจเจพเจฐเจ 0,97) เจฆเฉ เจจเจพเจฒ เจเฉฑเจ เจเฉเจฌเจฒ 'เจคเฉ เจเจพเจเจ เจฆเฉ เจกเฉเฉฐเจเจพเจ เจจเฉเฉฐ เจฎเจพเจชเจฟเจเฅค เจเจธเจค เจกเฉเฉฐเจเจพเจ เจชเจนเจฟเจฒเจพเจ เจนเฉ 10,1757 เจธเฉ, เจ เจคเฉ เจตเฉฑเจง เจคเฉเจ เจตเฉฑเจง - 6474 (!!)เฅค เจเฉฑเจ เจเจชเจฏเฉเจเจคเจพ เจฆเจฐเจพเจ 'เจคเฉ เจฒเฉเจจเฉเจ เจฐ เจธเฉเจเจธเจฟเฉฐเจ เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจฎเจนเฉฑเจคเจตเจชเฉเจฐเจจ เจคเฉเจฐ 'เจคเฉ เจเจเจฆเจพ เจนเฉเฅค
เจเจธ เจนเฉเจธเจผ เจเฉเจฌเจฒ เจฆเฉ เจเจชเจฏเฉเจเจคเจพ เจฆเจฐ เจจเฉเฉฐ เจเฉฑเจ เจฐเฉฑเจเจฃเจพ เจธเจญ เจคเฉเจ เจตเจงเฉเจ เจนเฉเฅค เจชเจฐ เจซเจฟเจฐ เจ เจธเฉเจ เจฎเฉเจฎเฉเจฐเฉ เจฆเฉ เจเจชเจค เจฆเฉ เจเฉเจฎเจค 'เจคเฉ เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจจเฉเฉฐ เจตเจงเจพเจเจเจฆเฉ เจนเจพเจ. เจเฉเจธเจผเจเจฟเจธเจฎเจคเฉ เจจเจพเจฒ, 32-เจฌเจฟเฉฑเจ เจเฉเฉฐเจเฉเจเจ เจ เจคเฉ เจฎเฉเฉฑเจฒเจพเจ เจฆเฉ เจฎเจพเจฎเจฒเฉ เจตเจฟเฉฑเจ, เจเจธ เจจเฉเฉฐ เจเจพเจเจเจผ เจ เจนเจฟเจฐเจพเจเจ เจเจพ เจธเจเจฆเจพ เจนเฉ. เจเฉเจเจฐ เจเจชเจฐเฉเจเจค เจเจฆเจพเจนเจฐเจจ เจตเจฟเฉฑเจ, 128 เจฎเจฟเจฒเฉเจ เจจ เจคเฉฑเจคเจพเจ เจตเจพเจฒเฉ เจเฉฑเจ เจธเจพเจฐเจฃเฉ เจตเจฟเฉฑเจ, เจ เจธเฉเจ 0,25 เจฆเจพ เจเจชเจฏเฉเจเจคเจพ เจซเฉเจเจเจฐ เจฐเฉฑเจเจฆเฉ เจนเจพเจ, เจคเจพเจ เจ เจธเฉเจ เจเจธ เจตเจฟเฉฑเจ 32 เจฎเจฟเจฒเฉเจ เจจ เจคเฉเจ เจตเฉฑเจง เจคเฉฑเจค เจจเจนเฉเจ เจฐเฉฑเจ เจธเจเจฆเฉ, เจ เจคเฉ เจฌเจพเจเฉ 96 เจฎเจฟเจฒเฉเจ เจจ เจธเจฒเจพเจ เจเจคเจฎ เจนเฉ เจเจพเจฃเจเฉ - เจนเจฐเฉเจ เจเฉเฉเฉ เจฒเจ 8 เจฌเจพเจเจ , 768 MB เจเฉเฉฐเจฎ เจนเฉเจ เจฎเฉเจฎเฉเจฐเฉเฅค
เจเจฟเจฐเจชเจพ เจเจฐเจเฉ เจงเจฟเจเจจ เจฆเจฟเจ เจเจฟ เจ เจธเฉเจ เจตเฉเจกเฉเจ เจเจพเจฐเจก เจฎเฉเจฎเฉเจฐเฉ เจฆเฉ เจจเฉเจเจธเจพเจจ เจฌเจพเจฐเฉ เจเฉฑเจฒ เจเจฐ เจฐเจนเฉ เจนเจพเจ, เจเฉ เจเจฟ เจธเจฟเจธเจเจฎ เจฎเฉเจฎเฉเจฐเฉ เจจเจพเจฒเฉเจ เจตเจงเฉเจฐเฉ เจเฉเจฎเจคเฉ เจธเจฐเฉเจค เจนเฉ. เจนเจพเจฒเจพเจเจเจฟ เจเจผเจฟเจเจฆเจพเจคเจฐ เจเจงเฉเจจเจฟเจ เจกเฉเจธเจเจเฉเจช เจเฉเจฐเจพเจซเจฟเจเจธ เจเจพเจฐเจก เจเฉ CUDA เจฆเจพ เจธเจฎเจฐเจฅเจจ เจเจฐเจฆเฉ เจนเจจ เจเฉฑเจเฉ เจเฉฑเจ 4 GB เจฆเฉ เจฎเฉเจฎเฉเจฐเฉ เจนเฉ (เจฒเจฟเจเจฃ เจฆเฉ เจธเจฎเฉเจ, NVIDIA 2080 Ti เจเฉเจฒ 11 GB เจนเฉ), เจเจน เจ เจเฉ เจตเฉ เจ เจเจฟเจนเฉ เจฎเจพเจคเจฐเจพ เจจเฉเฉฐ เจเฉเจเจเจฃ เจฆเจพ เจธเจญ เจคเฉเจ เจตเจงเฉเจ เจซเฉเจธเจฒเจพ เจจเจนเฉเจ เจนเฉเจตเฉเจเจพเฅค
เจฌเจพเจ เจฆ เจตเจฟเฉฑเจ เจฎเฉเจ เจตเฉเจกเฉเจ เจเจพเจฐเจกเจพเจ เจฒเจ เจนเฉเจธเจผ เจเฉเจฌเจฒ เจฌเจฃเจพเจเจฃ เจฌเจพเจฐเฉ เจนเฉเจฐ เจฒเจฟเจเจพเจเจเจพ เจเจฟเจจเฉเจนเจพเจ เจตเจฟเฉฑเจ เจกเฉเฉฐเจเจพเจ เจฆเฉ เจเจพเจเจ เจเจฐเจจ เจตเจฟเฉฑเจ เจเฉเจ เจธเจฎเฉฑเจธเจฟเจ เจจเจนเฉเจ เจนเฉ, เจ เจคเฉ เจจเจพเจฒ เจนเฉ เจฎเจฟเจเจพเจ เจเจ เจธเจฒเจพเจเจพเจ เจฆเฉ เจฎเฉเฉ เจตเจฐเจคเฉเจ เจเจฐเจจ เจฆเฉ เจคเจฐเฉเจเจฟเจเจ เจฌเจพเจฐเฉ เจตเฉ.
เจเจตเจพเจเจผ เจฆเฉ เจกเฉเฉฐเจเจพเจ เจฎเจพเจช
เจเฉฑเจ เจเฉเฉฐเจเฉ เจฆเฉ เจชเฉเจคเจพเจฒ เจกเฉเฉฐเจเจพเจ เจจเฉเฉฐ เจจเจฟเจฐเจงเจพเจฐเจค เจเจฐเจจ เจฒเจ, เจ เจธเฉเจ เจเฉเฉฐเจเฉ เจฆเฉ เจนเฉเจธเจผ (เจเจธเจฆเฉ เจเจฆเจฐเจธเจผ เจธเจพเจฐเจฃเฉ เจธเฉเจเจเจพเจเจ) เจจเฉเฉฐ เจเจธเจฆเฉ เจ เจธเจฒ เจเฉเจฌเจฒ เจธเฉเจเจเจพเจเจ เจคเฉเจ เจเฉฑเจข เจธเจเจฆเฉ เจนเจพเจ:
// get_key_index() -> index of key in hash table
uint32_t probelength = (get_key_index(key) - hash(key)) & (hashtablecapacity-1);
เจฆเฉ เจฆเฉ เจฆเฉ เจฆเฉ เจชเฉเจฐเจ เจฌเจพเจเจจเจฐเฉ เจธเฉฐเจเจฟเจเจตเจพเจ เจฆเฉ เจเจพเจฆเฉ เจ
เจคเฉ เจเจธ เจคเฉฑเจฅ เจฆเฉ เจเจพเจฐเจจ เจเจฟ เจนเฉเจธเจผ เจเฉเจฌเจฒ เจฆเฉ เจธเจฎเจฐเฉฑเจฅเจพ เจฆเฉ เจฆเฉ เจธเจผเจเจคเฉ เจฆเฉ เจนเฉ, เจเจน เจชเจนเฉเฉฐเจ เจเจฆเฉเจ เจตเฉ เจเฉฐเจฎ เจเจฐเฉเจเฉ เจเจฆเฉเจ เจเฉเฉฐเจเฉ เจธเฉเจเจเจพเจเจ เจจเฉเฉฐ เจธเจพเจฐเจฃเฉ เจฆเฉ เจธเจผเฉเจฐเฉ เจตเจฟเฉฑเจ เจญเฉเจเจฟเจ เจเจพเจเจฆเจพ เจนเฉเฅค เจเจฒเฉ เจเฉฑเจ เจเฉเฉฐเจเฉ เจฒเฉเจเจฆเฉ เจนเจพเจ เจเฉ 1 เจจเฉเฉฐ เจนเฉเจธเจผ เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเฉ, เจชเจฐ เจธเจฒเจพเจ 3 เจตเจฟเฉฑเจ เจชเจพเจ เจเจพเจเจฆเฉ เจนเฉเฅค เจซเจฟเจฐ 4 เจธเจฎเจฐเฉฑเจฅเจพ เจตเจพเจฒเฉ เจเฉเจฌเจฒ เจฒเจ เจธเจพเจจเฉเฉฐ เจฎเจฟเจฒเจฆเจพ เจนเฉเฅค (3 โ 1) & 3
, เจเฉ เจเจฟ 2 เจฆเฉ เจฌเจฐเจพเจฌเจฐ เจนเฉเฅค
เจธเจฟเฉฑเจเจพ
เจเฉ เจคเฉเจนเจพเจกเฉ เจเฉเจ เจธเจตเจพเจฒ เจเจพเจ เจเจฟเฉฑเจชเจฃเฉเจเจ เจนเจจ, เจคเจพเจ เจเจฟเจฐเจชเจพ เจเจฐเจเฉ เจฎเฉเจจเฉเฉฐ เจเจธ 'เจคเฉ เจเจฎเฉเจฒ เจเจฐเฉ
เจเจน เจเฉเจก เจธเจผเจพเจจเจฆเจพเจฐ เจฒเฉเจเจพเจ เจคเฉเจ เจชเฉเจฐเฉเจฐเจจเจพ เจฒเฉ เจเฉ เจฒเจฟเจเจฟเจ เจเจฟเจ เจธเฉ:
เจฆเฉเจจเฉเจ เจฆเจพ เจธเจญ เจคเฉเจ เจธเจฐเจฒ เจฒเจพเจ-เจฎเฉเจเจค เจนเฉเจธเจผ เจเฉเจฌเจฒ เจเฉฑเจ เจฒเจพเจ-เจฎเฉเจเจค เจเจกเฉเจ-เจฎเฉเจเจค เจนเฉเจธเจผ เจเฉเจฌเจฒ
เจญเจตเจฟเฉฑเจ เจตเจฟเฉฑเจ, เจฎเฉเจ เจตเฉเจกเฉเจ เจเจพเจฐเจกเจพเจ เจฒเจ เจนเฉเจธเจผ เจเฉเจฌเจฒ เจฒเจพเจเฉ เจเจฐเจจ เจฌเจพเจฐเฉ เจฒเจฟเจเจฃเจพ เจเจพเจฐเฉ เจฐเฉฑเจเจพเจเจเจพ เจ
เจคเฉ เจเจนเจจเจพเจ เจฆเฉ เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจฆเจพ เจตเจฟเจธเจผเจฒเฉเจธเจผเจฃ เจเจฐเจพเจเจเจพ. เจฎเฉเจฐเฉเจเจ เจฏเฉเจเจจเจพเจตเจพเจ เจตเจฟเฉฑเจ เจธเจผเจพเจฎเจฒ เจนเจจ เจเฉเจจเจฟเฉฐเจ, เจฐเฉเจฌเจฟเจจ เจนเฉเฉฑเจก เจนเฉเจธเจผเจฟเฉฐเจ, เจ
เจคเฉ เจกเจพเจเจพ เจธเจเฉเจฐเจเจเจฐเจเจผ เจตเจฟเฉฑเจ เจชเจฐเจฎเจพเจฃเฉ เจเจชเจฐเฉเจธเจผเจจเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเฉเจ เจเฉเจเฉ เจนเฉเจธเจผเจฟเฉฐเจ เจเฉ GPU เจ
เจจเฉเจเฉเจฒ เจนเจจเฅค
เจธเจฐเฉเจค: www.habr.com