Paper 2012/137

Usable assembly language for GPUs: a success story

Daniel J. Bernstein, Hsieh-Chung Chen, Chen-Mou Cheng, Tanja Lange, Ruben Niederhagen, Peter Schwabe, and Bo-Yin Yang

Abstract

The NVIDIA compilers nvcc and ptxas leave the programmer with only very limited control over register allocation, register spills, instruction selection, and instruction scheduling. In theory a programmer can gain control by writing an entire kernel in van der Laan's cudasm assembly language, but this requires tedious, error-prone tracking of register assignments. This paper introduces a higher-level assembly language, qhasm-cudasm, that allows much faster programming while providing the same amount of control over the GPU. This language has been used successfully to build a 90000-machine-instruction kernel for a computation described in detail in the paper, the largest public cryptanalytic project in history. The best GTX 295 speed that has been obtained for this computation with nvcc and ptxas is 25 million iterations per second; the best GTX 295 speed that has been obtained with qhasm-cudasm is 63 million iterations per second.

Metadata
Available format(s)
PDF
Category
Implementation
Publication info
Published elsewhere. Unknown where it was published
Keywords
GPUsassembly languageECC2K-130Pollard rhoregister allocation.
Contact author(s)
tanja @ hyperelliptic org
History
2012-03-22: received
Short URL
https://ia.cr/2012/137
License
Creative Commons Attribution
CC BY

BibTeX

@misc{cryptoeprint:2012/137,
      author = {Daniel J.  Bernstein and Hsieh-Chung Chen and Chen-Mou Cheng and Tanja Lange and Ruben Niederhagen and Peter Schwabe and Bo-Yin Yang},
      title = {Usable assembly language for {GPUs}: a success story},
      howpublished = {Cryptology {ePrint} Archive, Paper 2012/137},
      year = {2012},
      url = {https://eprint.iacr.org/2012/137}
}
Note: In order to protect the privacy of readers, eprint.iacr.org does not use cookies or embedded third party content.