#gpu #metal
#графический процессор #Металлические
Вопрос:
Я создаю инструмент командной строки с использованием Metal. Я намеренно вставил for(;;)
в свою функцию ядра, и я ожидаю увидеть, что дисплей Mac будет зависать, пока timeout
этого не произойдет. Я попробовал в каком-то металлическом приложении с MTLView
, и машина зависла.
Сообщение об ошибке
Execution of the command buffer was aborted due to an error during execution.
Caused GPU Timeout Error (IOAF code 2)
Но этого не происходит с инструментом командной строки, который я создаю. Я не знаю, почему это не блокирует графический процессор. Я думал, что все мои потоки будут продолжать использовать ресурс GPU, и, следовательно, дисплей зависнет.
Почему этого не происходит?
Комментарии:
1. Какой Mac / графический процессор вы используете и какую версию операционной системы используете?
2. Какой код находится в цикле? Возможно, это было оптимизировано.
3. @ldoogy Я использую Radeon 460, Mojave
4. @KenThomases Просто для (;;), но это работает для примера, такого как Hello Compute, это приведет к зависанию компьютера
5. И команда, которую вы запускаете, является командой вычисления или командой рендеринга? Кроме того, инструменту командной строки требуется некоторое время для завершения (чтобы увидеть, оптимизируется ли ваш цикл, как предлагает @KenThomases?)