Хобрук: Ваш путь к мастерству в программировании

Как правильно сбросить ошибку cuda с помощью Driver API?

У меня есть ядро, которое может вызывать asm("trap;") внутри ядра. Но когда это происходит, код ошибки CUDA устанавливается на сбой при запуске, и я не могу его сбросить.

В CUDA Runtime API мы можем использовать cudaGetLastError, чтобы получить последнюю ошибку, а тем временем сбросить ее до cudaSuccess.

Есть ли способ сделать это с помощью Driver API?

27.04.2017

Ответы:


1

Этот тип ошибки нельзя сбросить с помощью функции CUDA Runtime API cudaGetLastError().

Есть два типа ошибок времени выполнения CUDA: «липкие» и «не липкие». "не липкие" ошибки - это те, которые не повреждают контекст. Например, cudaMalloc запрос, запрашивающий больше доступной памяти, завершится ошибкой, но не повредит контекст. Такая ошибка "не липнет".

Ошибки, связанные с неожиданным завершением работы ядра CUDA (включая ваш trap пример, также assert() сбои в ядре, а также ошибки выполнения, обнаруженные во время выполнения, такие как доступ за пределы допустимого диапазона), являются «липкими». Вы не можете удалить "липкие" ошибки с помощью cudaGetLastError(). Единственный метод устранения этих ошибок в API среды выполнения - cudaDeviceReset() (который удаляет все распределения устройств и стирает контекст).

Соответствующая функция API драйвера: 27.04.2017

  • это звучит ужасно, вся выделенная память потеряна. 27.04.2017
  • Верно. Итак, вывод / вывод: случайное использование trap на самом деле не очень хорошая идея. Единственный раз, когда я использую assert() в ядре, что похоже, это когда у меня катастрофический сбой. 27.04.2017
  • Новые материалы

    Как свинг-трейдеры могут использовать ИИ для больших выигрышей
    По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

    Как построить любой стол
    Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...

    Обзор: Машинное обучение: классификация
    Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

    Разработка расширений Qlik Sense с qExt
    Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..

    React Hooks: основы деструктуризации массива
    Kent C. Dodds написал классный пост о том, как грядущая функция React под названием Hooks работает на капоте. Предстоящий хук React useState основан на деструктурировании массива, давайте..

    Пакеты R, используемые в Tesla
    Добро пожаловать обратно! R — очень популярный язык программирования, используемый множеством компаний, включая Tesla! Итак, давайте взглянем на некоторые пакеты R, которые использует Tesla...

    Сокращение и слияние токенов для эффективных моделей VL: обзор
    Часто в задачах, связанных с компьютерным зрением и НЛП, вычислительно затратная и требующая большого объема памяти обработка становится препятствием для более быстрого логического вывода модели, а..


    Метки
    Machine Learning JavaScript Data Science Artificial Intelligence Software Development Web Development Python Coding Deep Learning AI React Software Engineering Nodejs Development Typescript Data Java NLP Front End Development Algorithms Computer Science Learning Programming Languages ChatGPT Tech Tutorial Angular Reactjs React Native Productivity Cybersecurity Python Programming Javascript Development Developer Neural Networks Learning To Code Javascript Tips CSS