 	// device memory
 	//------------------------------------------------------------------------//
 	cufftComplex *d_sig, *d_result;
-	cudaMalloc((void **) &d_sig,    sizeof(cufftComplex) * sig_len * sig_len);
-	cudaMalloc((void **) &d_result, sizeof(cufftComplex) * sig_len * sig_len);
+	// ToDo : allocate 2d space
+	cudaMalloc((void **) &d_sig,    );
+	cudaMalloc((void **) &d_result, );
 
 	//------------------------------------------------------------------------//
 	// copy data from host to device 
 	//------------------------------------------------------------------------//
-	cudaMemcpyAsync(d_sig, h_sig, sizeof(cufftComplex) * sig_len * sig_len, 
-			cudaMemcpyHostToDevice);
+	// ToDo: copy data
+	cudaMemcpyAsync(d_sig, h_sig, , );
 
 	//------------------------------------------------------------------------//
 	// set up cuda fft env 


	cufftHandle cufft_plan2d;

	cufftPlan2d(&cufft_plan2d, sig_len, sig_len, CUFFT_C2C);

	//------------------------------------------------------------------------//
	// gpu timer 

	// host memory
	//------------------------------------------------------------------------//
	cufftComplex *h_sig;
	// ToDo: allocate 2d space
	cudaMallocHost((void **) &h_sig, );

	srand(time(NULL));
	for (int i = 0; i < sig_len * sig_len; i++) {
