2013-05-06 3 views
1

Я хотел бы прерывать «мягко» запущенное ядро, то есть: отправить ему какой-либо сигнал (через глобальную память?), Позволить ему делать свой материал для очистки и возвращаться на хост.Возможно ли прервать ядро ​​CUDA с хоста?

Я пробовал простую программу, используя функцию * nix signal(), чтобы изменить бит в глобальной памяти с помощью обычного cudaMemcpy, но безуспешно.

Возможно ли это? Возможно ли, чтобы хост записывал в память устройства во время работы ядра?

+0

Какова версия CUDA SDK? и возможности устройства? – RSFalcon7

+0

CUDA 5, возможность 2.1 и 3.0. – AkiRoss

ответ

3

Нет, это невозможно.

Хотя у вас может возникнуть соблазн думать, что нулевая копия позволяет это, нет гарантии согласованности памяти между хостом и устройством через шину PCI Express во время работы ядра.

+0

Означает ли это, что * нет способа * передачи данных с хоста и устройства без остановки ядра? Жаль :( – AkiRoss

+1

Вы можете передавать данные, CUDA полностью поддерживает одновременное выполнение ядра с передачей данных. Но то, что не поддерживается, - это любое понятие или гарантия согласованности данных между запущенным ядром и одновременной передачей данных. – talonmies

+0

@talonmies no гарантии не означает, что это невозможно. – RSFalcon7

Смежные вопросы