Is it impossible to install driver for secondary Nvidia card in Linux?

If my primary card is ATI, which musn’t be changed, does it mean that my secondary NVidia card simply cannot run under Linux? The driver somehow seems to require the primary card to be an NVidia card.

Is there a way to get around this problem? My primary card has to be the ATI card.

The surprising part is that the driver works very well under Windows 7, but not under Linux.

I haven’t tried mixing vendors on Linux before, but other people have reported success in the past. When you say the driver requires the primary card to be an NVIDIA card, what do you mean? Is the driver installation script refusing to run, or is the kernel module reporting weird errors when you try to load it?

The kernel module does not load. It says that 10de:0e22 (GTX 460) installed on the system is not supported by the driver. The additional information of the linux driver download page says that for notebooks and all-in-one computers, the integrated graphics card card must be disabled in hardware before the driver could work.

but it seems to me that as long as the primary card is not NVidia, the driver would not work

Do you have any links to those successful reports? I searched quite a while on google and did not come to much useful result.

I think that warning has to do with the way that many OEMs setup their integrated graphics, which interferes with the discrete graphics until the integrated chip is disabled. I recall at least one thread about people having problems with older Dell computers until they shut off the integrated graphics in the BIOS.

Is your ATI graphics on the motherboard?

No, this is just my memory from the early years of the CUDA forum. (And searching the forum is remarkably hard given the volume of posts and lack of PageRank-assisting linkage.) However, I don’t think the successful ATI + NVIDIA Linux reports were using integrated ATI GPUs, just discrete ones. It was also not clear whether the ATI or the NVIDIA card was the primary device.

Yeah my ATI card is on the board. But it’s an X1600 on a PCIe x16 link. The two cards just work so well under Windows 7 External Image

External Image would it be possible to run CUDA programs without the driver module?
This seems to indicate that it could work… I’ll try

cuInit gives error. No device found.

Do you want to use the NVIDIA device for compute or for display as well? If you only want compute, then you can run thenistaller in “advanced mode” and only install the kernel driver and support libraries, without touching X11 at all. What chipset are you using here?

An aside, but for future reference, if you google for something linux and or cuda and it returns something posted by Newport_j, then you should ignore it. Perhaps read it for it’s entertainment value, but nothing more than that.

I use the card for compute only. I managed to load the kernel module by removing an extra PCI dump load in my set-up.
Now lspci -k shows that the nvidia kernel module is indeed in use for my device, but when I run a random CUDA program it still says no CUDA-capable device found

Also, nvcc (or ld?) simply refuses to find the library files for me
nvcc *.cu will result in unresolved references.
I thought I wouldn’t have to manually add in the library file when using nvcc. Anyway, when I add the library files through -L and -l, it says that ld cannot find the library file which is apparently there (in /usr/lib and /usr/local/cuda/lib)
Anyway, I managed to compile the program by using
nvcc -c *.cu
and then
g++ *.o /usr/lib/libcuda.so /usr/local/cuda/lib/libcudart.so

but the compiled program reports cudaError_t with this code: no CUDA-capable device is detected

Another thing is that despite the nvidia kernel module that is already in use, the Additional Drivers in my ubuntu says no proprietary drivers are in use and recommands me to install nvidia-current…

What’s wrong??

You will need to either script or hand create the /dev entries to support the driver. How to do this is discussed both in the toolkit release notes and the linux getting started pdf.

As for the linking problem, a correctly installed nvcc instance should never require directives to find either the runtime or driver libraries. If ld is reporting a error, something is wrong with the installation (like mixed 32bit/64bit toolchains and libraries for example).

I ran the script provided:

#!/bin/bash

/sbin/modprobe nvidia

if [ "$?" -eq 0 ]; then

# Count the number of NVIDIA controllers found.

  N3D=`/sbin/lspci | grep -i NVIDIA | grep "3D controller" | wc -l`

  NVGA=`/sbin/lspci | grep -i NVIDIA | grep "VGA compatible controller" | wc -l`

N=`expr $N3D + $NVGA - 1`

  for i in `seq 0 $N`; do

  mknod -m 666 /dev/nvidia$i c 195 $i;

  done

mknod -m 666 /dev/nvidiactl c 195 255

else

  exit 1

  fi

the nvidia0 in /dev is created, but my program reports invalid device ordinal.

I don’t quite understand the mknod part, especially the numbers. Is it something wrong with the script or is it something else? I can see in /proc/modules that nvidia is already loaded

The mknod commands assign kernel device numbers and file types to a filesystem entry. NVIDIA use device major 195 for their driver. Minor values 0-254 are used for individual devices, 255 is used by the driver. These device files are how user space processes, like X11, CUDA apps, OpenCL apps, etc talk to the driver. The driver can be loaded and have enumerated the hardware correctly, but if the device file entries don’t exist, user space processes have no access to the hardware. You should have something like these:

$ ls -l /dev/nv*

crw-rw-rw- 1 root root 195,   0 2011-04-02 22:55 /dev/nvidia0

crw-rw-rw- 1 root root 195,   1 2011-04-02 22:55 /dev/nvidia1

crw-rw-rw- 1 root root 195, 255 2011-04-02 22:55 /dev/nvidiactl

Note the permissions, major and minor device numbers of each (I have two cards in this particular box).

You still haven’t answered the question about what board you are using. The fact you said the ATI gpu is an onboard X1600 makes me assume this is a laptop with some sort of home brew expresscard to PCI-e adaptor hosting a desktop card. Am I warm, or should I keep guessing?

Sorry for not answering that… Yes it’s a notebook just as you imagined! It’s based on Intel 945M. The ATI X1600 is on 1:0.0 and the GTX 460 is on 2:0.0. I posted about this set up on this forum for quite a few times I guess you must have seen them before :)

So looks like the problem is not only with the dev file, if 666 represents the correct permission.

BTW, avidday, are we in the same time zone? Nobody ever replied my questions as fast as you! I’m in GMT+8