Если вы хотите реализовать генератор псевдослучайных чисел с использованием CUDA, посмотрите здесь .Если вы хотите сгенерировать char
s из заранее определенного набора символов, вы можете просто поместить все возможные char
s в этот массив и создать случайный индекс (как вы это делаете прямо сейчас).
Но я думаю, что это может быть более ценным сравнением, которое использует грубую силу.Следовательно, вы можете адаптировать свою программу, чтобы она пробовала не случайные строки, а пробовала одну строку за другой в любом значимом порядке.
Затем, с другой стороны, вы могли бы реализовать грубую силу на GPU, используя CUDA,Это может быть сложно, так как вы можете остановить все потоки CUDA, как только один из них найдет решение.Я мог бы представить процесс грубой силы с использованием CUDA следующим образом: один поток пытается aa
в качестве первых двух букв и грубой силы все следующие цифры, следующий поток пытается ab
в качестве первых двух букв и грубой силы все следующие цифры,следующий поток пытается ac
в качестве первых двух букв и грубой силы всех последующих цифр и так далее.Все эти потоки работают параллельно.Конечно, вы можете изменить количество предопределенных char
с таким, что, например, первый поток пытается aaaa
, второй aaab
.Затем вы можете сравнить различные входные значения.
В любом случае, если вы никогда не имели дело с CUDA, я рекомендую пример сложения векторов , очень простой пример CUDA, который очень хорошо подходит дляполучить общее представление о том, что происходит с CUDA.Кроме того, вы должны прочитать Руководство по программированию CUDA , чтобы ознакомиться с концепцией CUDA для сетки потоковых блоков, содержащих сетку потоков.Как только вы поймете это, я думаю, станет понятнее, как CUDA организовывает вещи.Короче говоря, в CUDA вы должны заменить циклы ядром, которое выполняется несколько раз одновременно.