cancel
Showing results for 
Search instead for 
Did you mean: 

Archives Discussions

unix_d00d
Journeyman III

Catalyst 10.9 problems installing on CentOS

centos catalyst stream opencl problems

Hi all. I'm new to the GPU scene and I'm trying to set up an OpenCL development environment. I have an ASUS M4A89GTD Pro motherboard with AMD x4 605e processor. This board has an integrated Radeon HD 4290 GPU. After much searching, I learned this is not supported by the ATI Stream/SDK. I purchased a XFX Radeon HD 5550 graphics card. I downloaded the latest Catalyst 10.9 driver and got the following error:

jim@lonewolf[/usr/share/ati]$ cat fglrx-install.log 

[Message] Kernel Module : Trying to install a precompiled kernel module.

[Message] Kernel Module : Precompiled kernel module version mismatched.

[Error] Kernel Module : Kernel module build environment not found - please consult readme.

[Message] Kernel Module : update initramfs not required

jim@lonewolf[/usr/share/ati]$ uname -a
Linux lonewolf.code4fun.us 2.6.18-194.11.3.el5 #1 SMP Mon Aug 30 16:19:16 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux
jim@lonewolf[/usr/share/ati]$ lspci
00:00.0 Host bridge: Advanced Micro Devices [AMD] RS780 Host Bridge Alternate
00:02.0 PCI bridge: Advanced Micro Devices [AMD] RS780 PCI to PCI bridge (ext gfx port 0)
00:11.0 SATA controller: ATI Technologies Inc SB700/SB800 SATA Controller [AHCI mode] (rev 40)
00:12.0 USB Controller: ATI Technologies Inc SB700/SB800 USB OHCI0 Controller
00:12.2 USB Controller: ATI Technologies Inc SB700/SB800 USB EHCI Controller
00:13.0 USB Controller: ATI Technologies Inc SB700/SB800 USB OHCI0 Controller
00:13.2 USB Controller: ATI Technologies Inc SB700/SB800 USB EHCI Controller
00:14.0 SMBus: ATI Technologies Inc SBx00 SMBus Controller (rev 41)
00:14.1 IDE interface: ATI Technologies Inc SB700/SB800 IDE Controller (rev 40)
00:14.3 ISA bridge: ATI Technologies Inc SB700/SB800 LPC host controller (rev 40)
00:14.4 PCI bridge: ATI Technologies Inc SBx00 PCI to PCI Bridge (rev 40)
00:14.5 USB Controller: ATI Technologies Inc SB700/SB800 USB OHCI2 Controller
00:15.0 PCI bridge: ATI Technologies Inc Unknown device 43a0
00:16.0 USB Controller: ATI Technologies Inc SB700/SB800 USB OHCI0 Controller
00:16.2 USB Controller: ATI Technologies Inc SB700/SB800 USB EHCI Controller
00:18.0 Host bridge: Advanced Micro Devices [AMD] K10 [Opteron, Athlon64, Sempron] HyperTransport Configuration
00:18.1 Host bridge: Advanced Micro Devices [AMD] K10 [Opteron, Athlon64, Sempron] Address Map
00:18.2 Host bridge: Advanced Micro Devices [AMD] K10 [Opteron, Athlon64, Sempron] DRAM Controller
00:18.3 Host bridge: Advanced Micro Devices [AMD] K10 [Opteron, Athlon64, Sempron] Miscellaneous Control
00:18.4 Host bridge: Advanced Micro Devices [AMD] K10 [Opteron, Athlon64, Sempron] Link Control
01:00.0 VGA compatible controller: ATI Technologies Inc Unknown device 68da
01:00.1 Audio device: ATI Technologies Inc Redwood HDMI Audio [Radeon HD 5600 Series]
03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 06)
Can't wait to play with ATI Stream SDK and OpenGL so any help would be greatly appreciated. Thanks in advance.
Jim


0 Likes
8 Replies
unix_d00d
Journeyman III

I got a little farther with Catalyst 10.9 installation by using a Xen kernel. However, the kernel module doesn't want to load. I see the following generated on the console:

fglrx: module license 'Proprietary. (C) 2002 - ATI Technologies, Starnberg, GERMANY' taints kernel.

fglrx: Unknown symbol flush_tlb_page

jim@lonewolf[/usr/share/ati]$ uname -a
Linux lonewolf.code4fun.us 2.6.18-194.11.3.el5xen #1 SMP Mon Aug 30 16:55:32 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux
jim@lonewolf[/usr/share/ati]$ cat fglrx-install.log
[Message] Kernel Module : Trying to install a precompiled kernel module.
[Message] Kernel Module : Precompiled kernel module version mismatched.
[Message] Kernel Module : Found kernel module build environment, generating kernel module now.
AMD kernel module generator version 2.1
doing Makefile based build for kernel 2.6.x and higher
rm -rf *.c *.h *.o *.ko *.GCC* .??* *.symvers
make -C /lib/modules/2.6.18-194.11.3.el5xen/build SUBDIRS=/lib/modules/fglrx/build_mod/2.6.x modules
make[1]: Entering directory `/usr/src/kernels/2.6.18-194.11.3.el5-xen-x86_64'
  CC  /lib/modules/fglrx/build_mod/2.6.x/firegl_public.o
/lib/modules/fglrx/build_mod/2.6.x/firegl_public.c:2445: warning: ?kcl_flush_tlb_one? defined but not used
  CC  /lib/modules/fglrx/build_mod/2.6.x/kcl_acpi.o
  CC  /lib/modules/fglrx/build_mod/2.6.x/kcl_agp.o
  CC  /lib/modules/fglrx/build_mod/2.6.x/kcl_debug.o
  CC  /lib/modules/fglrx/build_mod/2.6.x/kcl_ioctl.o
  CC  /lib/modules/fglrx/build_mod/2.6.x/kcl_io.o
  CC  /lib/modules/fglrx/build_mod/2.6.x/kcl_pci.o
  CC  /lib/modules/fglrx/build_mod/2.6.x/kcl_str.o
  CC  /lib/modules/fglrx/build_mod/2.6.x/kcl_wait.o
  LD  /lib/modules/fglrx/build_mod/2.6.x/fglrx.o
  Building modules, stage 2.
  MODPOST
WARNING: "flush_tlb_page" [/lib/modules/fglrx/build_mod/2.6.x/fglrx.ko] undefined!
  CC      /lib/modules/fglrx/build_mod/2.6.x/fglrx.mod.o
  LD  /lib/modules/fglrx/build_mod/2.6.x/fglrx.ko
make[1]: Leaving directory `/usr/src/kernels/2.6.18-194.11.3.el5-xen-x86_64'
build succeeded with return value 0
duplicating results into driver repository...
done.
You must change your working directory to /lib/modules/fglrx
and then call ./make_install.sh in order to install the built module.
- recreating module dependency list
- trying a sample load of the kernel modules
failed.
[Error] Kernel Module : Failed to install compiled kernel module - please consult readme.
[Message] Kernel Module : update initramfs not required
Thoughts?


0 Likes

Looked at the module code. There is a function in firegl_public.c referencing flush_tlb_page():

void ATI_API_CALL KCL_flush_tlb_onepage(struct vm_area_struct * vma, unsigned lo

ng va)

{

/* Some kernel developer removed the export of symbol "flush_tlb_page" on 2.6.25 x86_64 SMP kernel.

 * Define a simple version here.

 * kernel <  2.6.27, on_each_cpu has 4 parameters.

 * kernel >= 2.6.27, on_each_cpu has 3 parameters (removed the "retry" parameter)

 */

#if ( defined(__x86_64__) && (defined(__SMP__) || defined(CONFIG_SMP)) && (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,25))) || \

    (!defined(__x86_64__) && (defined(__SMP__) || defined(CONFIG_SMP)) && (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29)))

#   if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,27))

        on_each_cpu(kcl_flush_tlb_one, &va, 1, 1);

#   else

        on_each_cpu(kcl_flush_tlb_one, &va, 1);

#   endif

#else

    flush_tlb_page(vma, va);

#endif

}

It looks like I'm falling in the else portion which references flush_tlb_page(). This appears to be for a single processor path. I have SMP so the if conditional failed and built the wrong code. I worked around it by removing the check and rebuilt the module.
void ATI_API_CALL KCL_flush_tlb_onepage(struct vm_area_struct * vma, unsigned long va)
{
/* Some kernel developer removed the export of symbol "flush_tlb_page" on 2.6.25 x86_64 SMP kernel.
 * Define a simple version here.
 * kernel <  2.6.27, on_each_cpu has 4 parameters.
 * kernel >= 2.6.27, on_each_cpu has 3 parameters (removed the "retry" parameter)
 */
#   if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,27))
        on_each_cpu(kcl_flush_tlb_one, &va, 1, 1);
#   else
        on_each_cpu(kcl_flush_tlb_one, &va, 1);
#   endif
}
Rebooted the system and now I see fglrx module loading:
fglrx: module license 'Proprietary. (C) 2002 - ATI Technologies, Starnberg, GERMANY' taints kernel.
[fglrx] Maximum main memory to use for locked dma buffers: 7269 MBytes.
[fglrx]   vendor: 1002 device: 68da count: 1
[fglrx] ioport: bar 4, base 0xd000, size: 0x100
ACPI: PCI Interrupt 0000:01:00.0 -> GSI 18 (level, low) -> IRQ 16
PCI: Setting latency timer of device 0000:01:00.0 to 64
[fglrx] Driver built-in PAT support is enabled successfully
[fglrx] module loaded - fglrx 8.77.5 [Aug 25 2010] with 1 minors
However, my XFX Radeon HD 5550 device is still not recognized by ATI Stream. Ugh.
jim@lonewolf[/work/jim/ati-stream-sdk-v2.2-lnx64/samples/opencl/bin/x86_64]$ ./C
LInfo 
Number of platforms:                             1
  Platform Profile:                              FULL_PROFILE
  Platform Version:                              OpenCL 1.1 ATI-Stream-v2.2 (302
)
  Platform Name:                                         ATI Stream
  Platform Vendor:                               Advanced Micro Devices, Inc.
  Platform Extensions:                   cl_khr_icd cl_amd_event_callback
  Platform Name:                                         ATI Stream
Number of devices:                               1
  Device Type:                                   CL_DEVICE_TYPE_CPU
  Device ID:                                     4098
  Max compute units:                             4
  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
  Max clock frequency:                           800Mhz
  Address bits:                                  64
  Max memory allocation:                         1073741824
  Image support:                                 No
  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:                            3221225472
  Constant buffer size:                          65536
  Max number of constant args:                   8
  Local memory type:                             Global
  Local memory size:                             32768
  Profiling timer resolution:                    4000250
  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:                                   0x2ae12fe8bb20
  Name:                                          AMD Athlon(tm) II X4 605e Proce
ssor
  Vendor:                                        AuthenticAMD
  Driver version:                                2.0
  Profile:                                       FULL_PROFILE
  Version:                                       OpenCL 1.1 ATI-Stream-v2.2 (302
)
  Extensions:                                    cl_amd_fp64 cl_khr_global_int32
_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomi
cs cl_khr_local_int32_extended_atomics cl_khr_int64_base_atomics cl_khr_int64_ex
tended_atomics cl_khr_byte_addressable_store cl_khr_gl_sharing cl_ext_device_fis
sion cl_amd_device_attribute_query cl_amd_printf 
Passed!
Any ATI/AMD developer that can help me out? Thanks in advance.


0 Likes

unixd00d,

Are you able to run OpenCL/CAL sample with 10.8 driver or not.  with what driver are you  able to run OpenCL samples on GPU?

 

0 Likes

Originally posted by: himanshu.gautam

 

unixd00d,

Are you able to run OpenCL/CAL sample with 10.8 driver or not.  with what driver are you  able to run OpenCL samples on GPU?

 

No, I haven't tried Catalyst 10.8. I was a bit discouraged by the lack of support/response. I tried to go through the vendor route, XFX, and they basically said they didn't support Linux even though it lists both Linux and FreeBSD as supported on their box label. I don't mind hacking the driver to try and resolve the undefined symbol references, but to get beyond requires assistance from AMD/ATI. I'm sure that Catalyst driver worked with RHEL Linux at one time, but they have not kept up with its development as it is clear from my experience. I like AMD support and documentation and is partly the reason why I bought a board with ATI chip, but this is my first exposure to ATI on Linux and so far have not made much of an impression. I'll give 10.8 a shot, but I have no reason to believe this will be any better. At this point, I have not been able to verify ATI Stream/OpenCL on my integrated Radeon HD 4290 nor the XFX Radeon HD 5550 I purchased separately. I spent $500 total in the hopes that I could leverage this technology. So far, I'm really happy with the Athlon II x4 as a long overdue upgrade from an Athlon Socket 939. That is working as advertised. I may just have to put OpenCL on hold until a newer version of Catalyst software is available. At that point, I'll probably have to buy yet another graphics card because the older models are no longer supported...

0 Likes

10.8 works on RHEL.try that out.

0 Likes

Originally posted by: himanshu.gautam 10.8 works on RHEL.try that out.

 

I tried 10.8 and it fails the same way as 10.9. I guess I'll wait for 10.10. We need ATI's help to resolve this. Thanks for the reply though.

0 Likes

Hi unix_d00d

It seems to be that there is no kernel source. Please install kernel source from your distribution CD because ATI driver needs to build kernel source at the the time of installing the driver.

--Ramandeep

VizExperts

0 Likes

Actually just the kernel headers are sufficient

0 Likes