     // these buffers are used in the call to saxpy_kernel below
     // without being initialized.
     //
+    cudaMalloc(&device_x, bufferSize);
+    cudatMalloc(&device_y, bufferSize);
+    cudaMalloc(&device_result, buffersize);
 
     // start timing after allocation of device memory.
     double startTime = CycleTimer::currentSeconds();

       result[index] = alpha * x[index] + y[index];
}

void
saxpyCuda(int N, float alpha, float* xarray, float* yarray, float* resultarray) {

    int totalBytes = sizeof(float) * 3 * N;

    // compute number of blocks and threads per block
    const int threadsPerBlock = 512;

    }

    double overallDuration = endTime - startTime;
    double kernelDuration = kernelEndTime - kernelStartTime;
    printf("Overall time: %.3f ms\t\t[%.3f GB/s]\n", 1000.f * overallDuration, toBW(totalBytes, overallDuration));
    printf("Kernel time: %.3f ms\n", 1000.f * kernelDuration);

    //
    // TODO free memory buffers on the GPU
    //
    cudaFree(device_x);
    cudaFree(device_y);
    cudaFree(device_result);
}

void printCudaInfo() {

    // for fun, just print out some stats on the machine

