Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Jul 15th, 2012  |  syntax: None  |  size: 0.56 KB  |  hits: 9  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. Pass CUDA stream containers through a C API?
  2. enum QDPCudaStream { TRANSFER=0 , KERNEL=1 };
  3.  
  4.   cudaStream_t * Wcudastreams;
  5.   cudaEvent_t * WCopied;
  6.  
  7.   void * CudaGetKernelStream() {
  8.     return (void*)&Wcudastreams[KERNEL];
  9.   }
  10.  
  11.   void CudaCreateStreams() {
  12.     Wcudastreams = new cudaStream_t[2];
  13.     for (int i=0; i<2; i++) {
  14.       cudaStreamCreate(&Wcudastreams[i]);
  15.     }
  16.     WCopied = new cudaEvent_t;
  17.     cudaEventCreate(WCopied);
  18.   }
  19.        
  20. void * ptr_cudaStream = CudaGetKernelStream();
  21.  
  22. kernel<<< bl,th,sh , *((cudaStream_t*)ptr_cudaStream) >>>( kernel_args );