P2P Kernels with OpenGL Interop

I have 2 devices (geforce 680s) with peer to peer access enabled and verified between them. However, I am unable to edit a buffer on “device 0” from “device 1”. This is my code:

// map 2 pixel buffer objects to primary device

uchar4* dev0_buffer0=NULL;

uchar4* dev0_buffer1=NULL;

cudaSetDevice(0);

cudaGLMapBufferObject((void**)&dev0_buffer0, m_pbo0);

cudaGLMapBufferObject((void**)&dev0_buffer1, m_pbo1);

kernel<<< nBlocks, nThreads>>>(dev0_buffer0, width, height);

	

// write to a pbo on device 0 using device 1

cudaSetDevice(1);

kernel<<< nBlocks, nThreads>>>(dev0_buffer1, width, height);

Device 0 can write to both buffers mapped to it, but if I try to write to one of the buffers using Device 1 (like in the code above), nothing happens. No errors or crashes, it just doesn’t affect the buffer (which I am rendering to screen to check)

Is this not possible? Any help would be greatly appreciated.