cudaError_t cudaMemcpy (void *p1, const void *p2, size_t p3, enum cudaMemcpyKind p4) { cudaError_t res; #if defined(DEBUG) fprintf (stderr, PACKAGE_NAME": THREAD %d cudaMemcpy is at %p\n", THREADID, real_cudaMemcpy); fprintf (stderr, PACKAGE_NAME": THREAD %d cudaMemcpy params %p %p %d %d\n", THREADID, p1, p2, p3, p4); #endif if (real_cudaMemcpy != NULL && mpitrace_on && Extrae_get_trace_CUDA()) { Extrae_cudaMemcpy_Enter (p1, p2, p3, p4); res = real_cudaMemcpy (p1, p2, p3, p4); Extrae_cudaMemcpy_Exit (); } else if (real_cudaMemcpy != NULL && !(mpitrace_on && Extrae_get_trace_CUDA())) { res = real_cudaMemcpy (p1, p2, p3, p4); } else { fprintf (stderr, "Unable to find cudaMemcpy in DSOs!! Dying...\n"); exit (0); } return res; }
cudaError_t cudaMemcpy (void *dst, const void *src, size_t count, enum cudaMemcpyKind kind) { cudaError_t retcode = real_cudaMemcpy(dst, src, count, kind); handle_cudaMemcpy(dst, src, count, kind, (void *) -1); return retcode; }
cudaError_t cudaMemcpy( void *dst, void *src, size_t size, enum cudaMemcpyKind kind) { CUDATRACE_INTERPOSE(cudaMemcpy); fprintf(stderr, "TRACE: cudaMemcpy %p %p %lu %d\n", dst, src, size, kind); return real_cudaMemcpy( dst, src, size, kind); }
int cuda_getBufferContent (struct ld_mem_s *ldBuffer, void *buffer, size_t offset, size_t size) { cudaError_t err = cudaSuccess; if (offset != 0) { /* need to use the type to multiply correctly the buffer handle. */ warning("offset == %zu != 0, not handled yet in Cuda's ldChecker\n", offset); } err = real_cudaMemcpy (buffer, ldBuffer->handle, size, cudaMemcpyDeviceToHost); return err == cudaSuccess; }