2017-02-05 21 views
1

私はMagick.NETを使用してイメージのスペックル除去を行っています。比較的小さい画像(1000 * 1500ピクセル)の場合、1〜2秒かかる。私はImageMagickがOpenCLを使っていくつかの操作をスピードアップし、デスペックルがその1つだと読んでいます。だから、最近のグラフィックカード(GTX 960)ではなぜそんなに遅いのだろう?Magick.NETでOpenCLを有効にする

OpenCLを有効にするMagick.NETの設定はありますか?

+0

このページには、「高度な設定」のhttps://magick.codeplex.com/wikipage?title=Magick.NET.Webに記載されています。 – Bonzo

答えて

4

OpenCLを有効または無効にするには、OpenCL.IsEnabledを設定します。 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> 

最低のスコアを有するデバイスが勝つと、アルゴリズムの内部のOpenCLを使用することが可能であるときに使用されます。

すでにベンチマークが実行されており、CPUが高速である可能性があります。つまり、OpenCLが有効になっていても、CPUが使用されます。

+0

私は 'OpenCL.IsEnabled = true'を試みましたが、' false'値とまったく同じ時間がかかります。私は '%LOCALAPPDATA%\ ImageMagick \ ImagemagickOpenCLDeviceProfile.xml'をチェックしました.2つのエントリ、20.07と0.2197のそれぞれのスコアを持つCPUとGPUがあるので、GPUを選択する必要があります。私がデバッグすると、MSI AfterburnerでGPUの使用状況をチェックし、CPUが明らかに負荷をかけている間に1〜2%のままになります。だから、どこに問題があるのだろうか。 –

+1

AccelerateDespeckleImageの現在の実装では、RGBAイメージが必要であり、RGBイメージでは動作しません。私はそれをサポートするためにOpenCLカーネルを変更する必要があります。 – dlemstra

+0

'AccelerateDespeckleImage'はあなたが使っているImageMagickのメソッドですよね?私は 'MagickReadSettings.ColorSpace'を変更しようとしましたが、列挙には' RGBA'エントリはありません。あなたはそれがいつサポートされると思いますか(私はあなたを圧迫するわけではなく、ただ知っています)? –

関連する問題