Blame view

cpp/cudafunc.cu 2.05 KB
a60dc7ad   Laila Saadatifard   commenting out th...
1
2
3
  //#include "cuda_fp16.h"
  //#include "float_to_half.cuh"
  //#include "half_to_float.cuh"
c9aba18a   Laila Saadatifard   ivote3 on the GPU...
4
5
  #include "gaussian_blur3.cuh"
  #include "gradient3.cuh"
f12505fb   Laila Saadatifard   upload the ivote ...
6
7
8
9
  #include "mag3.cuh"
  #include "vote3.cuh"
  #include "update_dir3.cuh"
  #include "local_max3.cuh"
c9aba18a   Laila Saadatifard   ivote3 on the GPU...
10
11
  
  
94d437dd   Laila Saadatifard   ivote3 code compi...
12
  void ivote3(float* center, float* img, float sigma[], float anisotropy, float phi, float d_phi, unsigned int r[],
f12505fb   Laila Saadatifard   upload the ivote ...
13
14
  			int iter, float t, unsigned int conn[], unsigned int x, unsigned int y, unsigned int z){
  
94d437dd   Laila Saadatifard   ivote3 code compi...
15
16
  	
  	cudaSetDevice(0);
f12505fb   Laila Saadatifard   upload the ivote ...
17
  	// compute the number of bytes in the input data
c9aba18a   Laila Saadatifard   ivote3 on the GPU...
18
  	unsigned int bytes = x * y * z * sizeof(float);
f12505fb   Laila Saadatifard   upload the ivote ...
19
20
  
  	//assign memory on gpu for the input data.
c9aba18a   Laila Saadatifard   ivote3 on the GPU...
21
  	float* gpuI0;
f12505fb   Laila Saadatifard   upload the ivote ...
22
23
24
  	cudaMalloc(&gpuI0, bytes);	
  
  	//copy the image data to the GPU.
c9aba18a   Laila Saadatifard   ivote3 on the GPU...
25
26
  	cudaMemcpy(gpuI0, img, bytes, cudaMemcpyHostToDevice);
  
f12505fb   Laila Saadatifard   upload the ivote ...
27
  	//call the blurring function from the gpu.
c9aba18a   Laila Saadatifard   ivote3 on the GPU...
28
  	gpu_gaussian_blur3<float>(gpuI0, sigma, x, y, z);
94d437dd   Laila Saadatifard   ivote3 code compi...
29
  	//cudaMemcpy(img, gpuI0, bytes, cudaMemcpyDeviceToHost);
f12505fb   Laila Saadatifard   upload the ivote ...
30
31
  	cudaDeviceSynchronize();
  		
f12505fb   Laila Saadatifard   upload the ivote ...
32
  	//assign memory on the gpu for the gradient along the X, y, z.
c9aba18a   Laila Saadatifard   ivote3 on the GPU...
33
34
35
  	float* gpu_grad;
  	cudaMalloc(&gpu_grad, bytes*3);
  	
f12505fb   Laila Saadatifard   upload the ivote ...
36
  	//call the gradient function from the gpu.
94d437dd   Laila Saadatifard   ivote3 code compi...
37
  	gpu_gradient3<float>(gpu_grad, gpuI0, anisotropy, x, y, z);
f12505fb   Laila Saadatifard   upload the ivote ...
38
39
  	cudaFree(gpuI0);
  	
f12505fb   Laila Saadatifard   upload the ivote ...
40
41
  	float* gpu_vote;
  	cudaMalloc(&gpu_vote, bytes);
c9aba18a   Laila Saadatifard   ivote3 on the GPU...
42
  
f12505fb   Laila Saadatifard   upload the ivote ...
43
44
45
46
47
  	float cos_phi = cos(phi);
  
  	//call the vote function.
  	for (int i = 0; i < iter; i++){
  
02fb26b3   Laila Saadatifard   change the vote a...
48
  		gpu_vote3<float>(gpu_vote, gpu_grad, cos_phi, r, x, y, z);
f12505fb   Laila Saadatifard   upload the ivote ...
49
  		cudaDeviceSynchronize();
94d437dd   Laila Saadatifard   ivote3 code compi...
50
  		if (i==7)
f12505fb   Laila Saadatifard   upload the ivote ...
51
52
53
54
55
56
57
58
59
60
  			cudaMemcpy(img, gpu_vote, bytes, cudaMemcpyDeviceToHost);
  		
  		if (phi >= d_phi){	
  			gpu_update_dir3<float>(gpu_grad, gpu_vote, cos_phi, r, x, y, z);
  			cudaDeviceSynchronize();
  			phi = phi - d_phi;
  			cos_phi = cos(phi);
  		}
  	
  	}
c9aba18a   Laila Saadatifard   ivote3 on the GPU...
61
  
02fb26b3   Laila Saadatifard   change the vote a...
62
  	cudaFree(gpu_grad);	
94d437dd   Laila Saadatifard   ivote3 code compi...
63
  	//cudaMemcpy(center, gpu_grad, bytes, cudaMemcpyDeviceToHost);
f12505fb   Laila Saadatifard   upload the ivote ...
64
65
66
67
68
69
70
71
72
  
  	//allocate space on the gpu for the final detected cells.
  	float* gpu_output;
  	cudaMalloc(&gpu_output, bytes);
  
  	//call the local max function
  	gpu_local_max3<float>(gpu_output, gpu_vote, t, conn, x, y, z);
  
  	//copy the final result to the cpu.
94d437dd   Laila Saadatifard   ivote3 code compi...
73
  	cudaMemcpy(center, gpu_output, bytes, cudaMemcpyDeviceToHost);
f12505fb   Laila Saadatifard   upload the ivote ...
74
75
76
77
78
  		
  	
  	cudaFree(gpu_vote);
  	cudaFree(gpu_output);
  	
c9aba18a   Laila Saadatifard   ivote3 on the GPU...
79
  }