Недавно мне нужно реализовать генератор последовательностей Sobol Cuda. < /p>
Теперь, чтобы предварительно хранить таблицу Sobol, я могу либо использовать нативный ContexPR C ++, как ниже: < /p>
или использовать Cuda __constant __ , как ниже:
__constant__ unsigned int sobol_table[NUM_DIMENSIONS][32] = {
{1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072, 262144, 524288, 1048576, 2097152, 4194304, 8388608, 16777216, 33554432, 67108864, 134217728, 268435456, 536870912, 1073741824, 2147483648},
{1, 3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047, 4095, 8191, 16383, 32767, 65535, 131071, 262143, 524287, 1048575, 2097151, 4194303, 8388607, 16777215, 33554431, 67108863, 134217727, 268435455, 536870911, 1073741823, 2147483647, 4294967295},
// skipped for higher dim...
};
< /code>
Интересно, каковы компромиссы? Есть ли что -то, что мне нужно беспокоиться, кроме увеличения размера двоичного файла с помощью ContexPR, постоянной памяти графического процессора и т. Д. Причина, по которой мне нужно построить колесо, состоит в том, чтобы соответствовать предыдущему поведению инструмента, который, возможно, использовал, возможно, мутированную последовательность Sobol для его жизненного цикла ...
Недавно мне нужно реализовать генератор последовательностей Sobol Cuda.
Теперь, чтобы предварительно хранить таблицу Sobol, я могу либо использовать нативный ContexPR C ++, как ниже:
constexpr unsigned int sobol_table = {
{1, 2, 4, 8, 16, 32, 64,...
В функции get_stream_container_status, если использование переменной contexpr bool, компилятор дает ошибку в отношении «stream_container», не является постоянным выражением. Но вызовите функцию в кортеже и без переменной, она успешно компилируется....
В функции get_stream_container_status, если использование переменной contexpr bool, компилятор дает ошибку в отношении «stream_container», не является постоянным выражением. Но вызовите функцию в кортеже и без переменной, она успешно компилируется....