memory addressing and multi device GPUs 9800 GX2

I’m attempting to modify an existing CUDA program to use the 9800 GX2 card.
I’m using pthreads and linux.

Before starting the child threads, I would like to copy a single array to the GPU and pass the child threads pointers to the starting location of the data they should process in that array. Is this possible?

On the 9800 GX2 is there one common location of memory or does each device have its own individual memory?

Each device has independent memory.
You should switch contextes and run the same memcpy command on both.

Did you try using the GPU Worker class (available on the internet)? It really simplifies the usage of multiple GPUs, and latency is really low.

This is a small example of usage with GPU Worker:

GPUWorker g(0); //GPU #0
GPUWorker g1(1); //GPU #1

g.call(bind( cudaMemcpy, pointerondev1, array, size, cudaMemcpyHostToDevice ));
g1.call(bind( … ));

g.call(bind( cudaFree, pointer on device ));

PS: you also need Boost libraries to use GPUWorker class.