2016-10-05 13 views
0

Я пишу ядро ​​CUDA для выполнения хэширования. Как только я получу ввод, я сначала попробую хэшировать его с предопределенным размером хэша и во время хэширования, если происходит переполнение, тогда мне нужно повторить хеширование с использованием большего размера ведра. Поэтому мне интересно, есть ли встроенная функция cuda, которая позволяет мне сообщать об ошибке в код хоста, если происходит переполнение контейнера. Я знаю, что могу написать что-то в предопределенном месте памяти, а затем сделать хост-код прочитанным, но я бы предпочел использовать некоторые встроенные примитивы, если они доступны.Есть ли встроенные функции CUDA, которые позволяют ядру CUDA сообщать об ошибке в код хоста?

+0

Я не думаю, что нет ничего. Как вы сказали, вам нужно что-то написать, а затем прочитать его с хоста. – leo

ответ

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); 
} 

Вы можете быть в состоянии использовать это для сигнализации состояния ошибки в вызывающий хост-кода.