I would like to determine the maximum int
value in a CUDA kernel. Unfortunately I can't find anything similar to std::numeric_limits
for CUDA. Trying to use the ::std
function results in a error:
error : calling a __host__ function("std::numeric_limits<int> ::max") from a __global__ function("xyz_kernel") is not allowed C:\cuda.cu(153) (col. 10)
Is there a way to determine the desired value from withing a kernel, or should I just pass it as a parameter?
It exists but it is not as generic as std::numeric_limits
. See this page for the list.
For example, you can have NPP_MAX_32U
but this is specific to 32-bit unsigned
rather than to the int
type, whose width is system-dependent.
I've written something like that:
<limits>
(named limits.cuh
)Essentially this means adding __host__ __device__
to a bunch of functions, and putting all of the structures within a namespace other than std
.
Notes:
<limits>
from libstdc++, so GPL with the standard library exception.<limits>
(I'm not sure).If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With