Короткий ответ: здесь нет решения этой проблемы.
Все, что обычно выполняется на процессоре, должно быть адаптировано для среды CUDA без каких-либо гарантий, что это вообще возможно сделать. Функции хоста - это просто другое имя в CUDA для обычных функций языка Си. То есть функции, работающие на архитектуре фон Неймана с процессорной памятью, как и все C / C ++, были до этого момента в ПК. Графические процессоры дают вам огромные вычислительные мощности, но цена заключается в том, что они не так гибки или совместимы. Самое главное, что функции выполняются без возможности доступа к основной памяти, а доступ к памяти ограничен.
Если вы пытаетесь получить генератор случайных чисел, вам повезло, учитывая, что Nvidia столкнулась с проблемой конкретной реализации высокоэффективного Mersenne Twister, который может поддерживать до 256 потоков на SMP. Он вызывается внутри функции устройства, описанной в моем предыдущем посте здесь . Если кто-то найдет лучшую ссылку, описывающую эту функцию, удалите мою и замените соответствующий текст здесь вместе со ссылкой.
Одна вещь, которую я постоянно удивляю, это то, как много программистов, похоже, не знают, насколько стандартизированы высококачественные генераторы псевдослучайных чисел. «Бросать свои собственные» на самом деле не очень хорошая идея, учитывая, сколько художественных псевдослучайных чисел. Проверка генератора как обеспечивающего приемлемо непредсказуемые числа требует большой работы и академического таланта ...