PiRSquared17 / aparapi

Automatically exported from code.google.com/p/aparapi
Other
0 stars 0 forks source link

Does not detect AMD GPU #17

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
What steps will reproduce the problem?
1. Run Aparapi program on AMD Linux 64bit
2. Set device to GPU.

What is the expected output? What do you see instead?
Expected to execute on GPU, runs JTP.

verboseJNI gives:
platform name    0 Advanced Micro Devices, Inc.
platform version 0 OpenCL 1.1 AMD-APP-SDK-v2.5 (684.213)
platform Advanced Micro Devices, Inc. does not support requested device type 
skipping!

What version of the product are you using? On what operating system?
Aparapi 2011-10-13
Linux 3.0.0-12-generic #20-Ubuntu SMP Fri Oct 7 14:56:25 UTC 2011 x86_64 x86_64 
x86_64 GNU/Linux

Please provide any additional information below.
The machine has two Radeon cards, and lshw reports them as this:
*-display
    description: VGA compatible controller
    product: Antilles [AMD Radeon HD 6990]
    vendor: ATI Technologies Inc
    physical id: 0
    bus info: pci@0000:0c:00.0
    version: 00
    width: 64 bits
    clock: 33MHz
    capabilities: pm pciexpress msi vga_controller bus_master cap_list rom
    configuration: driver=fglrx_pci latency=0
    resources: irq:95 memory:d0000000-dfffffff memory:fe9e0000-fe9fffff ioport:e000(size=256) memory:fe9c0000-fe9dffff

Any special tricks I can use to figure out why it fails to recognize the cards?

Original issue reported on code.google.com by kenneth@hexad.dk on 11 Nov 2011 at 11:28

GoogleCodeExporter commented 9 years ago
Kenneth

That is weird.

Can you turn on enableVerboseJNI
(-Dcom.amd.aparapi.enableVerboseJNI=true) and scan the output.  This
should cause a roll-call of the available platforms and devices.

Also AMD APP SDK install includes a program called clinfo which will
list the available devices.  Can you confirm that this program is
seeing your device?

It almost looks like OpenCL is not installed.

Original comment by frost.g...@gmail.com on 11 Nov 2011 at 4:10

GoogleCodeExporter commented 9 years ago
Sorry I just reread this issue.  Clearly you had already tried verboseJNI.  

.. and OpenCL is installed or verboseJNI would not report the way it does. 

Can you email/post the result of running clinfo?

Original comment by frost.g...@gmail.com on 11 Nov 2011 at 4:30

GoogleCodeExporter commented 9 years ago
The JOCL binding works, so I am pretty sure OpenCL is installed.
The output from clinfo:

Number of platforms:                             1
  Platform Profile:                              FULL_PROFILE
  Platform Version:                              OpenCL 1.1 AMD-APP-SDK-v2.5 (684.213)
  Platform Name:                                 AMD Accelerated Parallel Processing
  Platform Vendor:                               Advanced Micro Devices, Inc.
  Platform Extensions:                           cl_khr_icd cl_amd_event_callback cl_amd_offline_devices

  Platform Name:                                 AMD Accelerated Parallel Processing
Number of devices:                               1
  Device Type:                                   CL_DEVICE_TYPE_CPU
  Device ID:                                     4098
  Max compute units:                             6
  Max work items dimensions:                     3
    Max work items[0]:                           1024
    Max work items[1]:                           1024
    Max work items[2]:                           1024
  Max work group size:                           1024
  Preferred vector width char:                   16
  Preferred vector width short:                  8
  Preferred vector width int:                    4
  Preferred vector width long:                   2
  Preferred vector width float:                  4
  Preferred vector width double:                 0
  Native vector width char:                      16
  Native vector width short:                     8
  Native vector width int:                       4
  Native vector width long:                      2
  Native vector width float:                     4
  Native vector width double:                    0
  Max clock frequency:                           800Mhz
  Address bits:                                  64
  Max memory allocation:                         4215327744
  Image support:                                 Yes
  Max number of images read arguments:           128
  Max number of images write arguments:          8
  Max image 2D width:                            8192
  Max image 2D height:                           8192
  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:                   4096
  Alignment (bits) of base address:              1024
  Minimum alignment (bytes) for any datatype:    128
  Single precision floating point capability
    Denorms:                                     Yes
    Quiet NaNs:                                  Yes
    Round to nearest even:                       Yes
    Round to zero:                               Yes
    Round to +ve and infinity:                   Yes
    IEEE754-2008 fused multiply-add:             No
  Cache type:                                    Read/Write
  Cache line size:                               64
  Cache size:                                    65536
  Global memory size:                            16861310976
  Constant buffer size:                          65536
  Max number of constant args:                   8
  Local memory type:                             Global
  Local memory size:                             32768
  Kernel Preferred work group size multiple:     1
  Error correction support:                      0
  Unified memory for Host and Device:            1
  Profiling timer resolution:                    1
  Device endianess:                              Little
  Available:                                     Yes
  Compiler available:                            Yes
  Execution capabilities:
    Execute OpenCL kernels:                      Yes
    Execute native function:                     Yes
  Queue properties:
    Out-of-Order:                                No
    Profiling :                                  Yes
  Platform ID:                                   0x7ff4219a8060
  Name:                                          AMD Phenom(tm) II X6 1090T Processor
  Vendor:                                        AuthenticAMD
  Device OpenCL C version:                       OpenCL C 1.1
  Driver version:                                2.0
  Profile:                                       FULL_PROFILE
  Version:                                       OpenCL 1.1 AMD-APP-SDK-v2.5 (684.213)
  Extensions:                                    cl_khr_fp64 cl_amd_fp64 cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_int64_base_atomics cl_khr_int64_extended_atomics cl_khr_byte_addressable_store cl_khr_gl_sharing cl_ext_device_fission cl_amd_device_attribute_query cl_amd_vec3 cl_amd_media_ops cl_amd_popcnt cl_amd_printf

Original comment by kenneth@hexad.dk on 14 Nov 2011 at 10:44

GoogleCodeExporter commented 9 years ago
Looks like OpenCL is not detecting your GPU device. It is detecting your 6 core 
CPU only (# of devices is 1)

I have the same CPU as you as well as a 5770 based GPU.  My clinfo output is 
shown below.

The default driver for your graphics card may not support OpenCL.

Start here http://support.amd.com/us/gpudownload/Pages/index.aspx but note that 
that you may have the option of installing OpenCL as an 'optional individual 
driver'. 

For example on this page 
http://sites.amd.com/us/game/downloads/Pages/radeon_win7-32.aspx the 
'individual driver' tab reveals an OpenCL driver. 

I can't explain JOCL working, unless JOCL is defaulting to use your GPU device 
(did you select GPU or ANY when you queried for suitable devices in your JOCL 
code?).

Here is my clinfo output. 

Number of platforms:                 1
  Platform Profile:              FULL_PROFILE
  Platform Version:              OpenCL 1.1 AMD-APP-SDK-v2.5 (684.213)
  Platform Name:                 AMD Accelerated Parallel Processing
  Platform Vendor:               Advanced Micro Devices, Inc.
  Platform Extensions:               cl_khr_icd cl_amd_event_callback cl_amd_offline_devices cl_khr_d3d10_sharing

  Platform Name:                 AMD Accelerated Parallel Processing
Number of devices:               2
  Device Type:                   CL_DEVICE_TYPE_GPU
  Device ID:                     4098
  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:           16
  Preferred vector width short:          8
  Preferred vector width int:            4
  Preferred vector width long:           2
  Preferred vector width float:          4
  Preferred vector width double:         0
  Native vector width char:          16
  Native vector width short:             8
  Native vector width int:           4
  Native vector width long:          2
  Native vector width float:             4
  Native vector width double:            0
  Max clock frequency:               950Mhz
  Address bits:                  32
  Max memory allocation:             209715200
  Image support:                 Yes
  Max number of images read arguments:       128
  Max number of images write arguments:      8
  Max image 2D width:                8192
  Max image 2D height:               8192
  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:      32768
  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:                    None
  Cache line size:               0
  Cache size:                    0
  Global memory size:                838860800
  Constant buffer size:              65536
  Max number of constant args:           8
  Local memory type:                 Scratchpad
  Local memory size:                 32768
  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 properties:              
    Out-of-Order:                No
    Profiling :                  Yes
  Platform ID:                   5C3141B4
  Name:                      Juniper
  Vendor:                    Advanced Micro Devices, Inc.
  Device OpenCL C version:           OpenCL C 1.1 
  Driver version:                CAL 1.4.1457 (VM)
  Profile:                   FULL_PROFILE
  Version:                   OpenCL 1.1 AMD-APP-SDK-v2.5 (684.213)
  Extensions:                    cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_3d_image_writes cl_khr_byte_addressable_store cl_khr_gl_sharing cl_ext_atomic_counters_32 cl_amd_device_attribute_query cl_amd_vec3 cl_amd_printf cl_amd_media_ops cl_amd_popcnt cl_khr_d3d10_sharing 

  Device Type:                   CL_DEVICE_TYPE_CPU
  Device ID:                     4098
  Max compute units:                 6
  Max work items dimensions:             3
    Max work items[0]:               1024
    Max work items[1]:               1024
    Max work items[2]:               1024
  Max work group size:               1024
  Preferred vector width char:           16
  Preferred vector width short:          8
  Preferred vector width int:            4
  Preferred vector width long:           2
  Preferred vector width float:          4
  Preferred vector width double:         0
  Native vector width char:          16
  Native vector width short:             8
  Native vector width int:           4
  Native vector width long:          2
  Native vector width float:             4
  Native vector width double:            0
  Max clock frequency:               3200Mhz
  Address bits:                  32
  Max memory allocation:             1073741824
  Image support:                 Yes
  Max number of images read arguments:       128
  Max number of images write arguments:      8
  Max image 2D width:                8192
  Max image 2D height:               8192
  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:           4096
  Alignment (bits) of base address:      1024
  Minimum alignment (bytes) for any datatype:    128
  Single precision floating point capability
    Denorms:                     Yes
    Quiet NaNs:                  Yes
    Round to nearest even:           Yes
    Round to zero:               Yes
    Round to +ve and infinity:           Yes
    IEEE754-2008 fused multiply-add:         No
  Cache type:                    Read/Write
  Cache line size:               64
  Cache size:                    65536
  Global memory size:                2147483648
  Constant buffer size:              65536
  Max number of constant args:           8
  Local memory type:                 Global
  Local memory size:                 32768
  Kernel Preferred work group size multiple:     1
  Error correction support:          0
  Unified memory for Host and Device:        1
  Profiling timer resolution:            69
  Device endianess:              Little
  Available:                     Yes
  Compiler available:                Yes
  Execution capabilities:                
    Execute OpenCL kernels:          Yes
    Execute native function:             Yes
  Queue properties:              
    Out-of-Order:                No
    Profiling :                  Yes
  Platform ID:                   5C3141B4
  Name:                      AMD Phenom(tm) II X6 1090T Processor
  Vendor:                    AuthenticAMD
  Device OpenCL C version:           OpenCL C 1.1 
  Driver version:                2.0
  Profile:                   FULL_PROFILE
  Version:                   OpenCL 1.1 AMD-APP-SDK-v2.5 (684.213)
  Extensions:                    cl_khr_fp64 cl_amd_fp64 cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_byte_addressable_store cl_khr_gl_sharing cl_ext_device_fission cl_amd_device_attribute_query cl_amd_vec3 cl_amd_media_ops cl_amd_popcnt cl_amd_printf cl_khr_d3d10_sharing 

Original comment by frost.g...@gmail.com on 14 Nov 2011 at 4:25

GoogleCodeExporter commented 9 years ago
The JOCL code I used had a small bug that caused it to select the CPU if there 
were no GPU present. After fixing that, it reports "No GPU" just like Aparapi. 

I will see if I can install new drivers. 

Feel free to close this issue, as it is likely a machine config issue, not a 
Aparapi specific issue.

Original comment by kenneth@hexad.dk on 15 Nov 2011 at 12:07

GoogleCodeExporter commented 9 years ago
I can add that the problem was that "X-Forwarding" was enabled for my SSH 
connection. Disabling XForwarding made CLInfo and Aparapi detect the cards.

Original comment by kenneth@hexad.dk on 15 Nov 2011 at 12:51

GoogleCodeExporter commented 9 years ago
Nice find.  I would never have thought of that. Glad you got it working. 

BTW how did you diagnose this?

I will close this issue. 

Original comment by frost.g...@gmail.com on 15 Nov 2011 at 3:15

GoogleCodeExporter commented 9 years ago
I asked the machine maintainer if I could upgrade the driver, and he said it 
works fine but that XForwarding messes up OpenCL. I have no idea how he found 
out though :)

Original comment by kenneth@hexad.dk on 15 Nov 2011 at 3:25