while making a call to my kernel function from the main.cu file ,i get the below error :
mainfactor.cu(289): error: expression must have integral or enum type
The error is repeated twice when i try to make the project.
Can Any one advice what i am missing/doing wrong here?
P S : Here is a snippet of the kernel call
while ((p<MaxP+1)&&(pass==0))
{
// calling kernel to be executed on Device
main_kernel<<480,128>>(
all req parameters);
CUT_CHECK_ERROR(“mainfactoronGPU() execution failed\n”);
CUDA_SAFE_CALL( cudaThreadSynchronize() );
That is a compilation error, not a runtime error. Where is line 289 in your code? (I am guessing it is the call to the kernel you didn’t include using the arguments you didn’t show).
“mainfactor.cu(289): error: expression must have integral or enum type” suggest that nvcc expect integral type, One case of this will be when u declared an array in kernel whose dimension is not known at compile time.
Thanks , seems I had a couple of device inline undeclared in my main file and also jumbled up the kernel arguments called from host and the one’s referred in the actual _kernel file…will rectify…
Out of Curiosity : can i refer a constant value for an array as a parameter in my host call to kernel function.
something like
main_kernel<<480,128>>(0.0,arr2);
global void main_kernel(double *arr1,double arr2 *);