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