Targeting both x86 and x64 platforms - how?

I installed x64 variant of CUDA toolkit and now get
fatal error LNK1112: module machine type ‘x64’ conflicts with target machine type ‘X86’

What should I do to have ability to build both x64 and x86 applications with CUDA from single development host? (x64 toolkit version required uninstall of prev x86 one)…

I would be interested building for both 32 and 64 bit also, however, if it is not currently possible to have both toolsets installed on a single PC, which is recommended. I have a development machine with 32-bit XP (no CUDA board), and a lab PC with 64-bit XP and a Quadro FX 1700 in it. Can I develop for 64-bit from a 32-bit machine, and is one platform more tested and better supported than the other?


Not sure about XP (I am on Vista), but my understanding so far is that if you have win32 you need the 32bit toolkit in the first place, and even if you have the x64 SDK installed (and try to compile eg, the template), that would cause a conflict… so I guess the answer is no. You are stuck with the same target as the machine you are developing on (I know…).

hello. your x86 project configuration have to point to the x86 libs of cuda and sdk. the nvcc have to take x86 stuff. edit your building rules for both platforms. you need the libs and includes of both. after that you can choose “batch building” and building both or you change your target platform by hand.

As I described here…st&p=511315 there are more troubles with x64 platform builds than only access to x64 libs.

It seems x64 CUDA still in initial phase of development.

Eh? I can compile things on x64 no problem? Not sure what you ran into, but x64 works fine with the -ccbin from VS200x x64 command prompt thing.

I used VisualStudio IDE. And addition -ccbin to NVCC Command Line property didn’t help.

After all I found way to do x64 build (and it turned out no speed increase for now, so this way is on-hold now), but clear and easy way via VS IDE doesn’t work. That is, CUDA 2.1 x64 lack of VS compatibility.

i can only talk about VS08 and VS09 with CUDA 2.0 and CUDA 2.1. i dont have any problems to compile for both targets. i only fixed my cuda rules and point to the x86 libs. my builds dont have the same run time.

nvcc must take the x86 CUDA files. i described that here.

I used this method (with a little tweaking of course) on my x64 machine and it works fine. I can build both loads from the x64 box. The x64 box can run the nvcc from both the x64 and x86 toolkits.

However, I can’t figure out how to make it work with an x86 box. On the x86 box, it can’t run the x64 version of nvcc (of course). And whenever I try to use the x86 version of nvcc (simply copying the x86 nvcc to the x64 toolkit’s bin directory) to create x64 builds it blows up with a

“.\x64\Debug\ : fatal error LNK1112: module machine type ‘X86’ conflicts with target machine type ‘x64’”.

So my question is, can the x86 version of the nvcc compiler create x64 loads? If it can, then I just have something configured wrong and I can figure it out. If it can not, then I don’t see how I can build x64 loads from my x86 boxes (a show stopper in a office where everyone has x86 boxes at their desk and x64 for our fielded systems).

right now 32-bit toolkit compiles 32-bit binaries and the 64-bit toolkit creates 64-bit binaries. we’re working on improving this for a future release.

And both can be installed side by side?

(Hope they will in new release)