1 Reply Latest reply on Sep 27, 2009 7:42 AM by empty_knapsack

    CAL run time, Multi-core and 4850 x2

    ddmulhal
      Does CAL run time support multiple processes ?

      Hello:

      I'm new to ATI Stream and have a question about using multiple GPU's.

      Most of the documentation talks about thread safety but I have found little information telling me if the CAL run time supports multiple processes.

      In particular I would like to use a dual core CPU with a 4850 X2 and map a process to each core such that each one uses it's own CPU/GPU pair.

      Process A -> Core 0  -> 4850 X2 GPU 0

      Process B -> Core 1 -> 4850 X2 GPU 1


      As a simple test I tried using the simple_matmult executable that came with the 1.4 beta CAL SDK.

      Basic system setup

      Fedora Core 10 x86_64
      CAL SDK 1.4 beta
      Catalyst 9.8


      After disabling crossfire I try to execute two copies of simple_matmult simultaneously.

      In one terminal session I execute:

      simple_matmult -r 10000 -d 0

      In a separate terminal session I execute:

      simple_matmult -r 10000 -d 1

      After a few tries I will get a lock-up and eventually the kernel reports something similar to the following.

      node00 kernel: BUG: soft lockup - CPU#1 stuck for 61s! [simple_matmult:7830]
      node00 kernel: BUG: soft lockup - CPU#0 stuck for 61s! [Xorg:6299]


      Before I delve farther into the kernel dumps and try figure out what happened I'm curious if the CAL run time even supports what I am trying to do ?


      Additional Info:
      I have been able to successfully execute simple_matmult on each GPU individually and even simultaneously run multiple copies on the same GPU. It's just when I try to run a copy on each GPU that I get the lock up.

        • CAL run time, Multi-core and 4850 x2
          empty_knapsack

          Try to use Catalyst 9.9. I don't know much about linux drivers but I had several problems with driver lock-ups under Vista64 related to memcopy routines (calResMap & calMemCopy). Also you can try to remove all memcopy to/from devices to check out if it's a reason.

          In theory it's no problem to run multiple processes/threads with CAL. In practice you need to fight through CAL SDK and its bugs. I've finished with using only pinned memory when running multiple CAL devices.