Formal Parameter Space Overflowed error

Hello Everyone,

I am programming a kernel that has the need to modify a variety of arrays.
when i try to compile my program i get the following error:

Error: Formal parameter space overflowed in function Z13stream_kerneli14cudaPitchedPtrS_S_S_S_S_S_S_S_S_S_S_S_S
S_S_S_S_S_S_S_S_S_S_S_S_S_10cudaExtent

CAn anybody tell me why am i getting this error?
is there a way to fix it?

i would relly apreciate any help i am stuck and i dont know what to do.
please help!
ceers,
C.

Probably means your argument list is longer than 256 bytes. Either use a structure to hold the arguments, or write the pointers onto constant memory variables and read them in at the beginning of the kernel.

Probably means your argument list is longer than 256 bytes. Either use a structure to hold the arguments, or write the pointers onto constant memory variables and read them in at the beginning of the kernel.

Hi,

Do you know how many bites long is a cudapitchedptr ?

and a cuda extet?

here is my kernel prototype:

global void stream_kernel (int nj, cudaPitchedPtr f0_ptr, cudaPitchedPtr f1_ptr, cudaPitchedPtr f2_ptr, cudaPitchedPtr f3_ptr, cudaPitchedPtr f4_ptr, cudaPitchedPtr f5_ptr, cudaPitchedPtr *f6_ptr, cudaPitchedPtr f7_ptr, cudaPitchedPtr f8_ptr, cudaPitchedPtr f9_ptr, cudaPitchedPtr *f10_ptr, cudaPitchedPtr f11_ptr, cudaPitchedPtr f12_ptr, cudaPitchedPtr f13_ptr, cudaPitchedPtr f14_ptr, cudaPitchedPtr f15_ptr, cudaPitchedPtr f16_ptr, cudaPitchedPtr f17_ptr, cudaPitchedPtr f18_ptr, cudaPitchedPtr f19_ptr, cudaPitchedPtr f20_ptr, cudaPitchedPtr f21_ptr, cudaPitchedPtr f22_ptr, cudaPitchedPtr f23_ptr, cudaPitchedPtr f24_ptr, cudaPitchedPtr f25_ptr, cudaPitchedPtr f26_ptr, cudaExtent extent2);

do you think there should be a problem?

thanks a bunch.

C.

Hi,

Do you know how many bites long is a cudapitchedptr ?

and a cuda extet?

here is my kernel prototype:

global void stream_kernel (int nj, cudaPitchedPtr f0_ptr, cudaPitchedPtr f1_ptr, cudaPitchedPtr f2_ptr, cudaPitchedPtr f3_ptr, cudaPitchedPtr f4_ptr, cudaPitchedPtr f5_ptr, cudaPitchedPtr *f6_ptr, cudaPitchedPtr f7_ptr, cudaPitchedPtr f8_ptr, cudaPitchedPtr f9_ptr, cudaPitchedPtr *f10_ptr, cudaPitchedPtr f11_ptr, cudaPitchedPtr f12_ptr, cudaPitchedPtr f13_ptr, cudaPitchedPtr f14_ptr, cudaPitchedPtr f15_ptr, cudaPitchedPtr f16_ptr, cudaPitchedPtr f17_ptr, cudaPitchedPtr f18_ptr, cudaPitchedPtr f19_ptr, cudaPitchedPtr f20_ptr, cudaPitchedPtr f21_ptr, cudaPitchedPtr f22_ptr, cudaPitchedPtr f23_ptr, cudaPitchedPtr f24_ptr, cudaPitchedPtr f25_ptr, cudaPitchedPtr f26_ptr, cudaExtent extent2);

do you think there should be a problem?

thanks a bunch.

C.

A pitched pointer contains a pointer and 3 size_t according to this. So it should be 16 bytes per pitched pointer on 32 bit and 32 bytes on 64 bit. Either way, that argument list is far too long.

A pitched pointer contains a pointer and 3 size_t according to this. So it should be 16 bytes per pitched pointer on 32 bit and 32 bytes on 64 bit. Either way, that argument list is far too long.

You forgot the other solution: spring for a Fermi ;)

You forgot the other solution: spring for a Fermi ;)

Hi,

I cant believe it, it means that i need to pass around 480 bytes of data.

Do you think theres a way to overcome this issue?

I need to modify the data of all the arrays in the same kernel.

thanks a lot.

C.

Hi,

I cant believe it, it means that i need to pass around 480 bytes of data.

Do you think theres a way to overcome this issue?

I need to modify the data of all the arrays in the same kernel.

thanks a lot.

C.

Don’t pass the arguments by value, pass them by pointer

Don’t pass the arguments by value, pass them by pointer

problems is: does kernel code running on device can access memory of host?