2013-09-29 2 views
1

Скажем, у меня есть множество ядер CUDA, которые я могу попросить выполнить графический процессор. Я вообще не хочу изменять код ядра (например, включить ловушку).Можно ли убить запущенное ядро ​​CUDA?

Есть ли способ убить такое запущенное ядро?

Я намерен автоматически генерировать ядра (генетическое программирование). Эти ядра, скорее всего, будут иметь поведение, когда они могут занять очень много времени. Если я могу убить ядро ​​во время его работы, я могу поддерживать таймер и убивать, если потребуется.

+0

Вам нужно будет проверить вывод ядер, чтобы определить, должны ли они быть убиты? Тогда имеет смысл использовать обычную модель, в которой вы создаете ядра, которые запускаются в течение коротких периодов времени, и анализируют их вывод, чтобы определить, следует ли их перезапустить. –

+0

В моем примере использования вывод не может быть интерпретирован для принятия действий. Мне нужен механизм для запуска в качестве ядра. –

+3

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

ответ

4

cudaDeviceReset() убьет любое запущенное ядро ​​(и).

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

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

  • Нет связанных вопросов^_^