I originally had a Ubuntu 9.10 x64 system set up with a Radeon 5870 and a GeForce GTX 280 running Stream SDK 2.2 and CUDA 3.2. I recently re-installed the OS and migrated to Ubuntu 10.04 server x64. After installing Stream SDK 2.3, I am only able to run CAL and OpenCL programs (on the Radeon) as root and not as a regular user. CUDA works fine on user accounts.
I followed the same Stream SDK setup procedure as before, including the additions to /etc/gdm/Init/Default to enable access over SSH (the machine is headless). However, I noticed that the device node is now /dev/ati/card0 instead of /dev/dri/card0.
User Account Example:
$ ./OpenCloseDevice
Supported CAL Runtime Version: 1.3.185
Found CAL Runtime Version: 1.4.900
Use -? for help
No protocol specified
Opening Device : 0
There was an error opening device 0.
Press enter to exit...
Root Example:
$ sudo ./OpenCloseDevice
Supported CAL Runtime Version: 1.3.185
Found CAL Runtime Version: 1.4.900
Use -? for help
Opening Device : 0
Device Handle = 268435456
== Device Info ==
Target Device : Unknown
Maximum resource 1D width : 16384
Maximum resource 2D width : 16384
Maximum resource 2D height : 16384
Press enter to exit...
Running strace seems to indicate the problem is that a call to ioctl() on /dev/ati/card0 is failing:
open("/dev/ati/card0", O_RDWR) = 3
ioctl(3, 0xc0506450, 0x7fff07a283c0) = -1 EACCES (Permission denied)
This error does not occur when running as root. However, the permissions on that device are world readable/writable:
$ ll /dev/ati/card0
crw-rw-rw- 1 root root 251, 0 2011-01-19 11:35 /dev/ati/card0
Any clues as to what the problem may be?