I have the following simple program to test cudaMemset
#include <iostream>
#include <cuda.h>
using namespace std;
__global__ void kernel(int *input){
input[threadIdx.x] += threadIdx.x;
}
int main() {
size_t size = 5;
int *h_ptr, *d_ptr;
h_ptr = new int[size];
cudaMalloc((void **)&d_ptr, sizeof(int) * size);
cudaMemset(d_ptr, 10, sizeof(int) * size);
kernel<<<1, size>>>(d_ptr);
cudaDeviceSynchronize();
cudaMemcpy(h_ptr, d_ptr, sizeof(int)*size, cudaMemcpyDeviceToHost);
for(int i = 0; i < size; i++)
cout<<h_ptr[i]<<" ";
cout<<endl;
return 0;
}
I expected the result would be [10 11 12 13 14]
instead I'm getting garbage values.
What is it that I am missing?
Thanks!