Esempio n. 1
0
cudaError_t cudaSetupArgument(const void *arg, size_t size, size_t offset)
{
	static cudaError_t (*nv_cudaSetupArgument)(const void *, size_t, size_t) = NULL;
	cudaError_t ret;
	int i;
	struct timeval t;

	if(!nv_cudaSetupArgument) {
		nv_cudaSetupArgument = dlsym(RTLD_NEXT, "cudaSetupArgument");
		if(!nv_cudaSetupArgument) {
			fprintf(stderr, "failed to find symbol cudaSetupArgument: %s\n", dlerror());
			return cudaErrorSharedObjectSymbolNotFound;
		}
	}

	gettimeofday(&t, NULL);
	printf("[gvm] %lf intercepting cudaSetupArgument\n", t.tv_sec + t.tv_usec / 1000000.0);

	ret = nv_cudaSetupArgument(arg, size, offset);

	gettimeofday(&t, NULL);
	printf("[gvm] %lf intercepted cudaSetupArgument( %ld", t.tv_sec + t.tv_usec / 1000000.0, size);
	for(i = 0; i < size; i++) {
		printf(" %x", ((unsigned char *)arg)[i]);
	}
	printf(" ) = %d\n", ret);

	return ret;
}
Esempio n. 2
0
GMM_EXPORT
cudaError_t cudaSetupArgument(
		const void *arg,
		size_t size,
		size_t offset)
{
	cudaError_t ret;

	if (initialized)
		ret = gmm_cudaSetupArgument(arg, size, offset);
	else {
		gprint(WARN, "cudaSetupArgument called outside GMM\n");
		ret = nv_cudaSetupArgument(arg, size, offset);
	}

	return ret;
}