2017-02-05 6 views
1

Magick.NET을 사용하여 이미지의 얼룩을 제거합니다. 상대적으로 작은 이미지 (1000 * 1500 픽셀)의 경우 1-2 초 정도 걸립니다. 나는 ImageMagick이 OpenCL을 사용하여 일부 작업의 속도를 높이고 얼룩 제거 (despeckle)가 그 중 하나라는 것을 읽었습니다. 그래서, 나는 아주 최근 그래픽 카드 (GTX 960)로 왜 그렇게 느린지 궁금해.Magick.NET에서 OpenCL 사용

OpenCL을 활성화하는 Magick.NET 설정이 있습니까?

+0

이 페이지에는 고급 구성의 https://magick.codeplex.com/wikipage?title=Magick.NET.Web에 대한 언급이 있습니다. – Bonzo

답변

4

OpenCL.IsEnabled을 설정하여 OpenCL을 사용하거나 사용하지 않도록 설정할 수 있습니다. OpenCL 작업을 처음 사용하면 GPU 또는 CPU를 사용하는 것이 더 나은지를 결정하기 위해 벤치 마크가 실행됩니다. 벤치 마크는 %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> 

최저 점수 승 장치와는 그 내부에 오픈 CL 알고리즘을 사용할 수있는 경우에 사용한다.

이미 벤치 마크가 컴퓨터에서 실행되어 CPU가 더 빠르다고 판단 될 수 있습니다. 즉, OpenCL이 활성화되어 있어도 CPU가 사용됩니다.

+0

'OpenCL.IsEnabled = true'를 시도했지만'false' 값과 정확히 같은 시간이 걸립니다. 나는'% LOCALAPPDATA % \ ImageMagick \ ImagemagickOpenCLDeviceProfile.xml'을 검사했습니다. GPU를 선택해야하므로 2 개의 항목, 20.07과 0.2197의 각 점수를 가진 CPU와 GPU가 있습니다. 내가 디버깅 할 때, 나는 MSI Afterburner로 GPU 사용을 확인하고 CPU가 분명히 부하를받는 동안 1-2 %를 유지한다. 그래서 나는 어디에 문제가 될 수 있는지 궁금합니다. –

+1

AccelerateDespeckleImage의 현재 구현에는 RGBA 이미지가 필요하며 RGB 이미지에는 사용할 수 없습니다. OpenCL 커널을 수정하여이를 지원해야합니다. – dlemstra

+0

'AccelerateDespeckleImage'는 사용하는 ImageMagick의 메소드입니다. 맞습니까? 'MagickReadSettings.ColorSpace'를 변경하려했지만 열거 형에 RGBA 항목이 없습니다. 그게 도움이 될 거라고 생각하니? (나는 단지 너를 짜내는 것이 아니라 단지 알기 위해서)? –