Ask Your Question

OpenCL can not detect my AMD GPU using OpenCV

asked 2018-02-26 17:30:00 -0500

MarineBiologist gravatar image

updated 2018-03-01 08:30:10 -0500

I am using AMD Radeon R9 M375. I tried following this answer but it didn't work for me.

I followed this:

and my output shows this:

 Platform Name: Intel(R) OpenCL
 Platform Name: AMD Accelerated Parallel Processing

I am not able to implement the initializeContextFromHandlersuggested at the bottom of that post.

Here is my output from clinfo.exe

  Platform Name:                 AMD Accelerated Parallel Processing
Number of devices:               2
  Device Type:                   CL_DEVICE_TYPE_GPU
  Vendor ID:                     1002h
  Board name:                    AMD Radeon (TM) R9 M375
  Device Topology:               PCI[ B#4, D#0, F#0 ]
  Max compute units:                 10
  Max work items dimensions:             3
    Max work items[0]:               256
    Max work items[1]:               256
    Max work items[2]:               256
  Max work group size:               256
  Preferred vector width char:           4
  Preferred vector width short:          2
  Preferred vector width int:            1
  Preferred vector width long:           1
  Preferred vector width float:          1
  Preferred vector width double:         1
  Native vector width char:          4
  Native vector width short:             2
  Native vector width int:           1
  Native vector width long:          1
  Native vector width float:             1
  Native vector width double:            1
  Max clock frequency:               1015Mhz
  Address bits:                  32
  Max memory allocation:             3019898880
  Image support:                 Yes
  Max number of images read arguments:       128
  Max number of images write arguments:      8
  Max image 2D width:                16384
  Max image 2D height:               16384
  Max image 3D width:                2048
  Max image 3D height:               2048
  Max image 3D depth:                2048
  Max samplers within kernel:            16
  Max size of kernel argument:           1024
  Alignment (bits) of base address:      2048
  Minimum alignment (bytes) for any datatype:    128
  Single precision floating point capability
    Denorms:                     No
    Quiet NaNs:                  Yes
    Round to nearest even:           Yes
    Round to zero:               Yes
    Round to +ve and infinity:           Yes
    IEEE754-2008 fused multiply-add:         Yes
  Cache type:                    Read/Write
  Cache line size:               64
  Cache size:                    16384
  Global memory size:                3221225472
  Constant buffer size:              65536
  Max number of constant args:           8
  Local memory type:                 Scratchpad
  Local memory size:                 32768
  Max pipe arguments:                0
  Max pipe active reservations:          0
  Max pipe packet size:              0
  Max global variable size:          0
  Max global variable preferred total size:  0
  Max read/write image args:             0
  Max on device events:              0
  Queue on device max size:          0
  Max on device queues:              0
  Queue on device preferred size:        0
  SVM capabilities:              
    Coarse grain buffer:             No
    Fine grain buffer:               No
    Fine grain system:               No
    Atomics:                     No
  Preferred platform atomic alignment:       0
  Preferred global atomic alignment:         0
  Preferred local atomic alignment:      0
  Kernel Preferred work group size multiple:     64
  Error correction support:          0
  Unified memory for Host and Device:        0
  Profiling timer resolution:            1
  Device endianess:              Little
  Available:                     Yes
  Compiler available:                Yes
  Execution capabilities:                
    Execute OpenCL kernels:          Yes
    Execute native function:             No
  Queue on Host properties:              
    Out-of-Order:                No
    Profiling :                  Yes
  Queue on Device properties:                
    Out-of-Order:                No
    Profiling :                  No
  Platform ID:                   00007FFF209D0188
  Name:                      Capeverde
  Vendor:                    Advanced Micro Devices, Inc.
  Device OpenCL C version:           OpenCL C 1.2 
  Driver version:                2348.3
  Profile:                   FULL_PROFILE
  Version:                   OpenCL 1.2 ...
edit retag flag offensive close merge delete


your so question is from 2015, the other one from 2016, all outdated.

there's no more cv::ocl, or the nessecity to do something like initializeContextFromHandler in the 1st place, now.

the output from clinfo is dandy, but entirely useless here. the only relevant lines seem to be:

  Platform ID:                   00007FFF209D0188
  Name:                      Intel(R) Core(TM) i5-5200U CPU @ 2.20GHz
  Device OpenCL C version:           OpenCL C 1.2 
  Driver version:                2348.3 (sse2,avx)

but we probably need to see your cmake output !

also: opencv version ? if that's really 3.0, please update to latest master (or 3.4.1) noone can help you with such an outdated thing

berak gravatar imageberak ( 2018-03-01 12:00:50 -0500 )edit

Please look at the SO thread at the bottom of the post. It is resolved now.

MarineBiologist gravatar imageMarineBiologist ( 2018-03-02 11:31:39 -0500 )edit

if you could mention, how so here, we'd have an answer !

berak gravatar imageberak ( 2018-03-02 11:33:06 -0500 )edit

Should I answer my own question? Is that what you mean?

MarineBiologist gravatar imageMarineBiologist ( 2018-03-02 12:28:17 -0500 )edit

lol, why would i look at an SO post ?

yes, please either do write an answer, or at least a comment (we'll propell that to an answer)

berak gravatar imageberak ( 2018-03-02 12:30:39 -0500 )edit

Sure, no problem.

MarineBiologist gravatar imageMarineBiologist ( 2018-03-02 12:34:01 -0500 )edit

1 answer

Sort by ยป oldest newest most voted

answered 2018-03-02 12:34:47 -0500

MarineBiologist gravatar image

Issue is resolved. I don't know what I did but AMD is working now.

Current settings (On Windows):

  1. Environment Variable:

    Value: AMD:GPU:Capeverde
  2. Using setUseOpenCL(bool foo) present in ocl.hpp to select whether to use GPU or CPU.

Most likely problem: In my actual code, I wasn't doing any computation but when I wrote a simple code for subtraction of two matrices, AMD started working.


#include <opencv2/core/ocl.hpp>
#include <opencv2/opencv.hpp>

int main() {
    cv::UMat mat1 = cv::UMat::ones(10, 10, CV_32F);
    cv::UMat mat2 = cv::UMat::zeros(10, 10, CV_32F);
    cv::UMat output = cv::UMat(10, 10, CV_32F);
    cv::subtract(mat1, mat2, output);
    std::cout << output << "\n";
edit flag offensive delete link more



thank you ;)

berak gravatar imageberak ( 2018-03-02 12:50:02 -0500 )edit

Question Tools

1 follower


Asked: 2018-02-26 17:30:00 -0500

Seen: 4,020 times

Last updated: Mar 02 '18