Время ожидания приложений CUDA & amp; потерпеть неудачу через несколько секунд - как обойти это?

Intent intent = new Intent(Intent.CALL_ACTION);   
intent.setData(Uri.parse("tel:09999"));    
startActivity(intent);

Я хочу использовать этот метод вне метода onClick

30
задан einpoklum 2 December 2013 в 07:13
поделиться

5 ответов

Самое основное решение состоит в том, чтобы выбрать точку в вычислении некоторый процент пути через это, я уверен GPU, с которым я работаю, может завершиться вовремя, сохранить всю информацию состояния и остановку, затем запуститься снова.

Обновление: Для Linux: Выход X позволит Вам запускать приложения CUDA, пока Вы хотите. Никакая Tesla не потребовала (9600 использовался в тестировании этого)

, Одна вещь отметить, однако, состоит в том, что, если X никогда не вводится, драйверы, вероятно, не будут загружены, и оно не будет работать.

также кажется, что для Linux, просто не имея никаких X дисплеев в то время будет также работать, таким образом, X не должен выйтись, пока Вы экранируете к non-X полноэкранному терминалу.

5
ответ дан rck 2 December 2013 в 18:13
поделиться
  • 1
    Хорошо. В этом случае я не уверен, почему это было брошено к Any и не AnyVal. Но кроме этого, я думаю, что понимаю. – Karel Bílek 4 July 2012 в 08:40

В Windows графический драйвер имеет сторожевой таймер, который закрывает любые программы программы построения теней, которые работают больше 5 секунд. Обратите внимание, что драйверы Xorg/XFree86 не делают этого, таким образом, одно возможное обходное решение должно запустить приложения CUDA на Linux.

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

10
ответ дан ConcernedOfTunbridgeWells 2 December 2013 в 18:13
поделиться
  • 1
    @CarlosVerdes - Я don' t думают, что Вы читаете мой ответ достаточно тщательно. В абзаце после блока в качестве примера я объяснил точно, что Вы сказали, что точка была. Кроме я не только объяснил, чем проблема была, но также и почему. – Rex Kerr 28 July 2016 в 05:33

Это не возможно. Тайм-аут там для предотвращения ошибок в вычислениях от приведения в рабочее состояние GPU в течение долгих промежутков времени.

при использовании специальной карты для работы CUDA ограничение по времени снято. Я не уверен, требует ли это карты Tesla, или если GeForce без подключенного монитора может использоваться.

4
ответ дан Branan 2 December 2013 в 18:13
поделиться
  • 1
    Это почти прекрасно. A1 супертип A - то есть, я могу пойти от Int до Any (например), но не от Any до Int. – Daniel C. Sobral 4 July 2012 в 08:34

Я не эксперт CUDA,---я разрабатывал с Потоком AMD SDK, какой AFAIK примерно сопоставим.

можно отключить сторожевой таймер Windows, но это высоко не рекомендовано по причинам, которые должны быть очевидными. Для отключения его Вы нуждаетесь к regedit HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Watchdog\Display\DisableBugCheck, создаете REG_DWORD и устанавливаете его на 1. Вы, возможно, также должны сделать что-то в панели управления Nvidia. Ищите некоторую ссылку на "Восстановление VPU" в документах CUDA.

Идеально, необходимо смочь расстаться операции ядра в несколько передает по данным для разбивания его в операции, которые работают в ограничении по времени.

, С другой стороны, можно разделить проблемную область так, чтобы она вычислила меньше выходных пикселей на команду. Т.е. вместо того, чтобы вычислить 1 000 000 выходных пикселей одним махом, выпуск 10 управляет к gpu для вычислений 100,000 каждый.

основная единица, которая должна соответствовать в интервале времени, не является Вашим целым приложением, но выполнением единственного буфера команд. В Потоке AMD SDK длинная последовательность операций может быть разбита в несколько интервалов времени путем явного сбрасывания очереди команды с CtxFlush () вызов. Возможно, CUDA имеет что-то подобное?

Вы должны не , должны считать все Ваши данные назад и вперед через шину PCIX на каждом интервале времени; можно оставить структуры, и т.д. в gpu локальной памяти; у Вас просто есть некоторые буферы команд, завершенные иногда, чтобы доказать ОС, что Вы не застреваете в бесконечном цикле.

Наконец, GPU быстры , поэтому если бы Ваше приложение не может сделать полезную работу в тех 5 или 10 секунд, я взял бы это в качестве знака, что что-то неправильно.

[РЕДАКТИРУЮТ март 2010 для обновления: ] (устаревший снова, посмотрите обновления ниже для новой информации) , ключ реестра выше является устаревшим. Я думаю, что это было ключом для 64-разрядного Windows XP. Существуют новые ключи реестра для Vista и Windows 7. Можно найти их здесь: http://www.microsoft.com/whdc/device/display/wddm_timeout.mspx или здесь: http://msdn.microsoft.com/en-us/library/ee817001.aspx

[РЕДАКТИРУЕТ апрель 2015 для обновления: ] Это становится действительно устаревшим. Самому легкому способу отключить TDR для программирования Cuda, принимая Вас установили инструменты NVIDIA Nsight, должен открыть Nsight Monitor, нажать на "Nsight Monitor options", и под "Общим" набором "WDDM TDR включил" ко лжи. Это изменит настройки реестра для Вас. Близко и перезагрузка. Любое изменение в установке реестра TDR не вступит в силу, пока Вы не перезагрузите.

[РЕДАКТИРУЮТ август 2018 для обновления:] , Хотя инструменты NVIDIA позволяют отключать TDR теперь, тот же вопрос важен для разработчиков AMD/OpenCL. Для тех: текущая ссылка, которая документирует настройки TDR, в https://docs.microsoft.com/en-us/windows-hardware/drivers/display/tdr-registry-keys

27
ответ дан Marco13 2 December 2013 в 18:13
поделиться
  • 1
    Мне нравятся объяснение, хорошая работа, но это doesn' t отвечают на вопрос. Вопросом был " почему действительно сворачивает пример doesn' t работа? ". точка, которая сгиб параллельно, делает это, значение init и результат должны быть супер типом набора, that' s причина, почему этот пример сгиба doesn' t работа. – Carlos Verdes 17 July 2016 в 16:20

Я использую следующее решение:

1. Передайте всю информацию на устройство.
2. Запускать итерационные версии алгоритмов, где каждая итерация вызывает ядро ​​в памяти, уже хранящейся в устройстве.
3. Наконец, переносите память на хост только после того, как все итерации закончились.

Это позволяет управлять итерациями от ЦП (включая возможность прерывания), без дорогостоящего устройства <--> передачи памяти хоста между итерациями.

3
ответ дан 27 November 2019 в 22:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: