8 Replies Latest reply on Oct 4, 2010 4:26 AM by HarryH

    Catalyst 10.9 problems installing on CentOS

    unix_d00d
      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


        • Catalyst 10.9 problems installing on CentOS
          unix_d00d

          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 [M]  /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 [M]  /lib/modules/fglrx/build_mod/2.6.x/kcl_acpi.o
            CC [M]  /lib/modules/fglrx/build_mod/2.6.x/kcl_agp.o
            CC [M]  /lib/modules/fglrx/build_mod/2.6.x/kcl_debug.o
            CC [M]  /lib/modules/fglrx/build_mod/2.6.x/kcl_ioctl.o
            CC [M]  /lib/modules/fglrx/build_mod/2.6.x/kcl_io.o
            CC [M]  /lib/modules/fglrx/build_mod/2.6.x/kcl_pci.o
            CC [M]  /lib/modules/fglrx/build_mod/2.6.x/kcl_str.o
            CC [M]  /lib/modules/fglrx/build_mod/2.6.x/kcl_wait.o
            LD [M]  /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 [M]  /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?


            • Catalyst 10.9 problems installing on CentOS
              unix_d00d

              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[A] -> 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.


                • Catalyst 10.9 problems installing on CentOS
                  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?

                   

                    • Catalyst 10.9 problems installing on CentOS
                      unix_d00d

                       

                      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...