/CUDA-uint128

A 128 bit unsigned integer class for CUDA

Primary LanguageC++GNU General Public License v3.0GPL-3.0

CUDA-uint128

A 128 bit unsigned integer class for CUDA. Due to inefficiencies in linking device code with nvcc, this is a header-only library. This library seeks to provide a convenient uint128_t type for use in CUDA code with most functions and operators defined. At this point, nearly all operators have been overloaded for the uint128_t class, all common arithmetic and bit arithmetic functions (including several roots) are defined. Additionally, more functions have been defined to increase the usability of this class, including typecasts to and from float and double, ostream insert (on the host), and string->uint128_t conversion (also host). The file "cuda_uint128.h" can be #included in both .cu and .cpp source files without compiler errors.

I am currently working on a few basic parallel primitives to increase the usability of this class. So far, this is limited to a highly optimized reduce. "cuda_uint128_primitives.cuh" can only be #included in .cu source files. There may be more in the future based on whether or not I need them for other projects.