Я использую OpenCL для программирования GPGPU, но, к сожалению, нет встроенной поддержки 256-битных целых чисел. Я решил разделить 256-битное целое число на четыре 64-битных целых числа. Довольно хорошее решение для базовых операций, но как я могу получить их по модулю?
Мне нужно сделать это:
(uint256) % (uint256)
Но с OpenCL у меня может быть только это:
[ (uint64), (uint64), (uint64), (uint64) ] % [ (uint64), (uint64), (uint64), (uint64) ]
Итак, как я могу этого добиться? Какой алгоритм мне использовать, и самое главное — какой проще всего реализовать?
P.S. Мне это нужно для криптографии с открытым ключом.
EDIT: у меня не реализовано ни сложение, ни вычитание.