2017-02-05 31 views
1

Я использую Magick.NET для удаления изображения. Требуется ~ 1-2 секунды для относительно небольшого изображения (1000 * 1500 пикселей). Я прочитал, что ImageMagick использует OpenCL для ускорения некоторых операций, а despeckle - один из них. Итак, интересно, почему это так медленно с довольно недавней графической картой (GTX 960).Включить OpenCL с Magick.NET

Есть ли настройка Magick.NET для включения OpenCL?

+0

Упоминание об этом на этой странице: https://magick.codeplex.com/wikipage?title=Magick.NET.Web в разделе Расширенная настройка. – Bonzo

ответ

4

Вы можете включить или отключить OpenCL, установив OpenCL.IsEnabled. В первый раз, когда вы используете OpenCL-операцию, будет проведен тест, чтобы определить, лучше ли использовать графический процессор или процессор. Эталон написан в следующем файле: %LOCALAPPDATA%\ImageMagick\ImagemagickOpenCLDeviceProfile.xml. Пример этого теста является:

<devices> 
    <device name="CPU" score="4.914"/> 
    <device platform="AMD Accelerated Parallel Processing" score="0.165" vendor="Advanced Micro Devices, Inc." name="Ellesmere" version="2117.14 (VM)" maxClockFrequency="1266" maxComputeUnits="36" /> 
    <device platform="AMD Accelerated Parallel Processing" score="1.326" vendor="Advanced Micro Devices, Inc." name="Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz" version="2117.14 (sse2,avx)" maxClockFrequency="3998" maxComputeUnits="8" /> 
</devices> 

Устройства с самыми низкими выигрышами счетов и будет использоваться, когда можно использовать OpenCL внутри алгоритма.

Возможно, что эталон уже запущен на вашей машине и решил, что процессор работает быстрее. Это означает, что даже если OpenCL включен, процессор будет использоваться.

+0

Я попробовал 'OpenCL.IsEnabled = true', но он принимает то же самое время, что и с значением' false'. Я проверил '% LOCALAPPDATA% \ ImageMagick \ ImagemagickOpenCLDeviceProfile.xml', у меня есть 2 записи, процессор и графический процессор с соответствующими значениями 20.07 и 0.2197, поэтому нужно выбрать GPU. Когда я отлаживаю, я проверяю использование GPU на «MSI Afterburner», и он остается на 1-2%, в то время как процессор явно принимает нагрузку. Итак, я задаюсь вопросом, где может быть проблема. –

+1

Текущая реализация AccelerateDespeckleImage требует изображения RGBA и не работает с изображением RGB. Мне нужно изменить ядро ​​OpenCL, чтобы добавить поддержку для этого. – dlemstra

+0

'AccelerateDespeckleImage' - это метод ImageMagick, который вы используете, не так ли? Я попытался изменить «MagickReadSettings.ColorSpace», но в перечислении нет записи «RGBA». Когда вы думаете, что это будет поддерживаться (я не сжимаю вас, просто чтобы узнать)? –

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

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