Я пишу ядро CUDA для выполнения хэширования. Как только я получу ввод, я сначала попробую хэшировать его с предопределенным размером хэша и во время хэширования, если происходит переполнение, тогда мне нужно повторить хеширование с использованием большего размера ведра. Поэтому мне интересно, есть ли встроенная функция cuda, которая позволяет мне сообщать об ошибке в код хоста, если происходит переполнение контейнера. Я знаю, что могу написать что-то в предопределенном месте памяти, а затем сделать хост-код прочитанным, но я бы предпочел использовать некоторые встроенные примитивы, если они доступны.Есть ли встроенные функции CUDA, которые позволяют ядру CUDA сообщать об ошибке в код хоста?
0
A
ответ
2
CUDA имеет assertion support на всем поддерживаемом аппаратном обеспечении (sm_20 и новее). Согласно документации, это законно, чтобы сделать что-то вроде этого:
__global__ void testAssert(void)
{
int is_one = 1;
int should_be_one = 0;
// This will have no effect
assert(is_one);
// This will halt kernel execution
assert(should_be_one);
}
Вы можете быть в состоянии использовать это для сигнализации состояния ошибки в вызывающий хост-кода.
Я не думаю, что нет ничего. Как вы сказали, вам нужно что-то написать, а затем прочитать его с хоста. – leo