cudafunc.cu
760 Bytes
#include "gaussian_blur3.cuh"
#include "gradient3.cuh"
void ivote3(float* out, float* img, float sigma, unsigned int x, unsigned int y, unsigned int z){
//cpu_gaussian_blur_conv3<float>(Ib, img, rhs, x, y, z);
unsigned int bytes = x * y * z * sizeof(float);
float* gpuI0;
cudaMalloc(&gpuI0, bytes);
//copy the image data to the GPU
cudaMemcpy(gpuI0, img, bytes, cudaMemcpyHostToDevice);
gpu_gaussian_blur3<float>(gpuI0, sigma, x, y, z);
float* gpu_grad;
cudaMalloc(&gpu_grad, bytes*3);
gpu_gradient3(gpu_grad, gpuI0, x, y, z);
//copy the image data back to the cpu
cudaMemcpy(img, gpuI0, x*y*z*sizeof(float), cudaMemcpyDeviceToHost);
cudaMemcpy(out, gpu_grad, bytes*3, cudaMemcpyDeviceToHost);
cudaFree(gpuI0);
cudaFree(gpu_grad);
}