All other things equal, and using my tried and tested installation procedure for installing the catalyst driver (fglrx-8.67) shipped with the latest OpenCL GPU support, CAL and OpenCL detect only 1 GPU of 4:
OpenCL:
emuller@guava:~$ ipython
IPython 0.9.1 -- An enhanced Interactive Python.
In [1]: import pyopencl as cl
In [2]: ctx = cl.Context(dev_type=cl.device_type.GPU)
For test only: Expires on Sun Feb 28 00:00:00 2010
In [3]: ctx.devices
Out[3]: [<pyopencl.Device 'ATI RV770' at 0x1ac9446>]
CAL:
emuller@guava:~$ ./caltest
CAL Runtime version 1.4.467
Found 1 devices. Using device 0.
Device Type = GPU RV770
Max 1D Width 8192.
Max 2D Width 8192.
Max 2D Height 8192.
Found 1024 MB GPU RAM.
Found 625 MHz GPU device clock.
Found 993 MHz GPU memory clock.
Found 10 SIMDs.
Wavefront Size 64 .
Device open and ready.
Found 987 MB available GPU RAM.
Found 1261 MB available uncached remote RAM.
Found 507 MB available cached remote RAM.
Kernel compile and link sucessful.
Device sucessfully closed.
However, amdcccle reveals all 4 screens are detected and enabled, so everything looks fine here. It is perhaps a CAL bug.
On another system with the older driver and CAL Runtime everything is fine
emuller@coconut:~$ ./caltest
CAL Runtime version 1.4.344
Found 4 devices. Using device 0.
Device Type = GPU RV770
Max 1D Width 4294967295.
Max 2D Width 8192.
Max 2D Height 8192.
Found 512 MB GPU RAM.
Found 640 MHz GPU device clock.
Found 993 MHz GPU memory clock.
Found 10 SIMDs.
Wavefront Size 64 .
Device open and ready.
Found 451 MB available GPU RAM.
Found 1260 MB available uncached remote RAM.
Found 507 MB available cached remote RAM.
Kernel compile and link sucessful.
Device sucessfully closed.
The system is Ubuntu 9.04, 64bit, 2x 4850x2