Как запустить программу CNTK C# EvalDLL Wrapper на графическом процессоре?

Я был успешным в обучении и оценке сетей на основе образцов CIFAR-10. Я использую свои собственные изображения с определенным размером. Сети были обучены с помощью графического процессора и способны оценивать с помощью процессора. Однако я не могу оценить это с помощью графического процессора. Для оценки используется C# EvalDLL Wrapper. DeviceID изменяется с -1 на 0, чтобы указать номер графического процессора, как показано ниже:

model0.CreateNetwork (string.Format ("modelPath = \" {0} \ "", modelFilePath), ID устройства: 0);

Я что-то пропустил? Кто-нибудь может запустить GPU на программе C# EvalDLL Wrapper?

Я использую бинарную версию CNTK (не CPU_Only).

2 ответа

Решение

Я могу запустить EvalWrapper на GPU, используя именно тот код, который вы опубликовали ниже. Я только что проверил через CsEvalClient:

  • При запуске моего CNN через EvalWrapper на коробке графического процессора, журналы говорят, что он использовал cuDNN двигатель свертки, который только для графического процессора. Я воспринимаю это как знак того, что он действительно работает на GPU.
  • При запуске кода на блоке только для процессора он кричит, что не может найти драйвер CUDA, как я и ожидал.
  • При переключении обратно на deviceId:-1 и запустить на поле только для процессора, журналы говорят, что использует GEMM двигатель свертки, и этот двигатель только для процессора.

Что вы видите в журналах, когда CNTK загружает модель?

Я не уверен, что это правильная процедура. Вот что я сделал. Вместо использования двоичного видения установите исходный код, следуя инструкции по установке, и скомпилируйте исходный код. Скопируйте библиотеки DLL из каталога "x64.release" в каталог, где находится файл "exe" (текущий https://github.com/Microsoft/CNTK/issues/394). Примечание: для нескольких проектов в решении убедитесь, что конфигурация одинакова (например, режим выпуска в x64). С GTX 960 скорость обработки изображения от 770 мс до 1 мс.

Другие вопросы по тегам