pub unsafe trait KernelArgs {
// Required method
fn as_param_ptrs(&self) -> Vec<*mut c_void>;
}Expand description
Trait for types that can be passed as kernel arguments.
Kernel arguments must be convertible to an array of void pointers
that cuLaunchKernel accepts. Each pointer points to the argument
value on the host; the CUDA driver copies the values to the GPU
before the kernel executes.
§Safety
Implementors must ensure that:
as_param_ptrsreturns valid pointers to the argument values.- The pointed-to values remain valid for the duration of the kernel launch
(i.e., until
cuLaunchKernelreturns). - The argument types and sizes match what the kernel expects.
Required Methods§
Sourcefn as_param_ptrs(&self) -> Vec<*mut c_void>
fn as_param_ptrs(&self) -> Vec<*mut c_void>
Convert arguments to an array of void pointers for cuLaunchKernel.
Each element in the returned Vec is a pointer to one kernel argument.
The CUDA driver reads the value through each pointer and copies it
to the GPU.
Implementations on Foreign Types§
Source§impl KernelArgs for ()
Implementation for kernels that take no arguments.
impl KernelArgs for ()
Implementation for kernels that take no arguments.
§Safety
Returns an empty pointer array, which is valid for zero-argument kernels.
Source§impl<A: Copy> KernelArgs for (A,)
§Safety
The pointers returned point into self, which must remain
valid (i.e., not moved or dropped) until cuLaunchKernel returns.
impl<A: Copy> KernelArgs for (A,)
§Safety
The pointers returned point into self, which must remain
valid (i.e., not moved or dropped) until cuLaunchKernel returns.
Source§impl<A: Copy, B: Copy> KernelArgs for (A, B)
§Safety
The pointers returned point into self, which must remain
valid (i.e., not moved or dropped) until cuLaunchKernel returns.
impl<A: Copy, B: Copy> KernelArgs for (A, B)
§Safety
The pointers returned point into self, which must remain
valid (i.e., not moved or dropped) until cuLaunchKernel returns.
Source§impl<A: Copy, B: Copy, C: Copy> KernelArgs for (A, B, C)
§Safety
The pointers returned point into self, which must remain
valid (i.e., not moved or dropped) until cuLaunchKernel returns.
impl<A: Copy, B: Copy, C: Copy> KernelArgs for (A, B, C)
§Safety
The pointers returned point into self, which must remain
valid (i.e., not moved or dropped) until cuLaunchKernel returns.
Source§impl<A: Copy, B: Copy, C: Copy, D: Copy> KernelArgs for (A, B, C, D)
§Safety
The pointers returned point into self, which must remain
valid (i.e., not moved or dropped) until cuLaunchKernel returns.
impl<A: Copy, B: Copy, C: Copy, D: Copy> KernelArgs for (A, B, C, D)
§Safety
The pointers returned point into self, which must remain
valid (i.e., not moved or dropped) until cuLaunchKernel returns.
Source§impl<A: Copy, B: Copy, C: Copy, D: Copy, E: Copy> KernelArgs for (A, B, C, D, E)
§Safety
The pointers returned point into self, which must remain
valid (i.e., not moved or dropped) until cuLaunchKernel returns.
impl<A: Copy, B: Copy, C: Copy, D: Copy, E: Copy> KernelArgs for (A, B, C, D, E)
§Safety
The pointers returned point into self, which must remain
valid (i.e., not moved or dropped) until cuLaunchKernel returns.
Source§impl<A: Copy, B: Copy, C: Copy, D: Copy, E: Copy, F: Copy> KernelArgs for (A, B, C, D, E, F)
§Safety
The pointers returned point into self, which must remain
valid (i.e., not moved or dropped) until cuLaunchKernel returns.
impl<A: Copy, B: Copy, C: Copy, D: Copy, E: Copy, F: Copy> KernelArgs for (A, B, C, D, E, F)
§Safety
The pointers returned point into self, which must remain
valid (i.e., not moved or dropped) until cuLaunchKernel returns.
Source§impl<A: Copy, B: Copy, C: Copy, D: Copy, E: Copy, F: Copy, G: Copy> KernelArgs for (A, B, C, D, E, F, G)
§Safety
The pointers returned point into self, which must remain
valid (i.e., not moved or dropped) until cuLaunchKernel returns.
impl<A: Copy, B: Copy, C: Copy, D: Copy, E: Copy, F: Copy, G: Copy> KernelArgs for (A, B, C, D, E, F, G)
§Safety
The pointers returned point into self, which must remain
valid (i.e., not moved or dropped) until cuLaunchKernel returns.
Source§impl<A: Copy, B: Copy, C: Copy, D: Copy, E: Copy, F: Copy, G: Copy, H: Copy> KernelArgs for (A, B, C, D, E, F, G, H)
§Safety
The pointers returned point into self, which must remain
valid (i.e., not moved or dropped) until cuLaunchKernel returns.
impl<A: Copy, B: Copy, C: Copy, D: Copy, E: Copy, F: Copy, G: Copy, H: Copy> KernelArgs for (A, B, C, D, E, F, G, H)
§Safety
The pointers returned point into self, which must remain
valid (i.e., not moved or dropped) until cuLaunchKernel returns.
Source§impl<A: Copy, B: Copy, C: Copy, D: Copy, E: Copy, F: Copy, G: Copy, H: Copy, I: Copy> KernelArgs for (A, B, C, D, E, F, G, H, I)
§Safety
The pointers returned point into self, which must remain
valid (i.e., not moved or dropped) until cuLaunchKernel returns.
impl<A: Copy, B: Copy, C: Copy, D: Copy, E: Copy, F: Copy, G: Copy, H: Copy, I: Copy> KernelArgs for (A, B, C, D, E, F, G, H, I)
§Safety
The pointers returned point into self, which must remain
valid (i.e., not moved or dropped) until cuLaunchKernel returns.
Source§impl<A: Copy, B: Copy, C: Copy, D: Copy, E: Copy, F: Copy, G: Copy, H: Copy, I: Copy, J: Copy> KernelArgs for (A, B, C, D, E, F, G, H, I, J)
§Safety
The pointers returned point into self, which must remain
valid (i.e., not moved or dropped) until cuLaunchKernel returns.
impl<A: Copy, B: Copy, C: Copy, D: Copy, E: Copy, F: Copy, G: Copy, H: Copy, I: Copy, J: Copy> KernelArgs for (A, B, C, D, E, F, G, H, I, J)
§Safety
The pointers returned point into self, which must remain
valid (i.e., not moved or dropped) until cuLaunchKernel returns.
Source§impl<A: Copy, B: Copy, C: Copy, D: Copy, E: Copy, F: Copy, G: Copy, H: Copy, I: Copy, J: Copy, K: Copy> KernelArgs for (A, B, C, D, E, F, G, H, I, J, K)
§Safety
The pointers returned point into self, which must remain
valid (i.e., not moved or dropped) until cuLaunchKernel returns.
impl<A: Copy, B: Copy, C: Copy, D: Copy, E: Copy, F: Copy, G: Copy, H: Copy, I: Copy, J: Copy, K: Copy> KernelArgs for (A, B, C, D, E, F, G, H, I, J, K)
§Safety
The pointers returned point into self, which must remain
valid (i.e., not moved or dropped) until cuLaunchKernel returns.
Source§impl<A: Copy, B: Copy, C: Copy, D: Copy, E: Copy, F: Copy, G: Copy, H: Copy, I: Copy, J: Copy, K: Copy, L: Copy> KernelArgs for (A, B, C, D, E, F, G, H, I, J, K, L)
§Safety
The pointers returned point into self, which must remain
valid (i.e., not moved or dropped) until cuLaunchKernel returns.
impl<A: Copy, B: Copy, C: Copy, D: Copy, E: Copy, F: Copy, G: Copy, H: Copy, I: Copy, J: Copy, K: Copy, L: Copy> KernelArgs for (A, B, C, D, E, F, G, H, I, J, K, L)
§Safety
The pointers returned point into self, which must remain
valid (i.e., not moved or dropped) until cuLaunchKernel returns.
Source§impl<A: Copy, B: Copy, C: Copy, D: Copy, E: Copy, F: Copy, G: Copy, H: Copy, I: Copy, J: Copy, K: Copy, L: Copy, M: Copy> KernelArgs for (A, B, C, D, E, F, G, H, I, J, K, L, M)
§Safety
The pointers returned point into self, which must remain
valid (i.e., not moved or dropped) until cuLaunchKernel returns.
impl<A: Copy, B: Copy, C: Copy, D: Copy, E: Copy, F: Copy, G: Copy, H: Copy, I: Copy, J: Copy, K: Copy, L: Copy, M: Copy> KernelArgs for (A, B, C, D, E, F, G, H, I, J, K, L, M)
§Safety
The pointers returned point into self, which must remain
valid (i.e., not moved or dropped) until cuLaunchKernel returns.
Source§impl<A: Copy, B: Copy, C: Copy, D: Copy, E: Copy, F: Copy, G: Copy, H: Copy, I: Copy, J: Copy, K: Copy, L: Copy, M: Copy, N: Copy> KernelArgs for (A, B, C, D, E, F, G, H, I, J, K, L, M, N)
§Safety
The pointers returned point into self, which must remain
valid (i.e., not moved or dropped) until cuLaunchKernel returns.
impl<A: Copy, B: Copy, C: Copy, D: Copy, E: Copy, F: Copy, G: Copy, H: Copy, I: Copy, J: Copy, K: Copy, L: Copy, M: Copy, N: Copy> KernelArgs for (A, B, C, D, E, F, G, H, I, J, K, L, M, N)
§Safety
The pointers returned point into self, which must remain
valid (i.e., not moved or dropped) until cuLaunchKernel returns.
Source§impl<A: Copy, B: Copy, C: Copy, D: Copy, E: Copy, F: Copy, G: Copy, H: Copy, I: Copy, J: Copy, K: Copy, L: Copy, M: Copy, N: Copy, O: Copy> KernelArgs for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O)
§Safety
The pointers returned point into self, which must remain
valid (i.e., not moved or dropped) until cuLaunchKernel returns.
impl<A: Copy, B: Copy, C: Copy, D: Copy, E: Copy, F: Copy, G: Copy, H: Copy, I: Copy, J: Copy, K: Copy, L: Copy, M: Copy, N: Copy, O: Copy> KernelArgs for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O)
§Safety
The pointers returned point into self, which must remain
valid (i.e., not moved or dropped) until cuLaunchKernel returns.
Source§impl<A: Copy, B: Copy, C: Copy, D: Copy, E: Copy, F: Copy, G: Copy, H: Copy, I: Copy, J: Copy, K: Copy, L: Copy, M: Copy, N: Copy, O: Copy, P: Copy> KernelArgs for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P)
§Safety
The pointers returned point into self, which must remain
valid (i.e., not moved or dropped) until cuLaunchKernel returns.
impl<A: Copy, B: Copy, C: Copy, D: Copy, E: Copy, F: Copy, G: Copy, H: Copy, I: Copy, J: Copy, K: Copy, L: Copy, M: Copy, N: Copy, O: Copy, P: Copy> KernelArgs for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P)
§Safety
The pointers returned point into self, which must remain
valid (i.e., not moved or dropped) until cuLaunchKernel returns.
Source§impl<A: Copy, B: Copy, C: Copy, D: Copy, E: Copy, F: Copy, G: Copy, H: Copy, I: Copy, J: Copy, K: Copy, L: Copy, M: Copy, N: Copy, O: Copy, P: Copy, Q: Copy> KernelArgs for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q)
§Safety
The pointers returned point into self, which must remain
valid (i.e., not moved or dropped) until cuLaunchKernel returns.
impl<A: Copy, B: Copy, C: Copy, D: Copy, E: Copy, F: Copy, G: Copy, H: Copy, I: Copy, J: Copy, K: Copy, L: Copy, M: Copy, N: Copy, O: Copy, P: Copy, Q: Copy> KernelArgs for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q)
§Safety
The pointers returned point into self, which must remain
valid (i.e., not moved or dropped) until cuLaunchKernel returns.
Source§impl<A: Copy, B: Copy, C: Copy, D: Copy, E: Copy, F: Copy, G: Copy, H: Copy, I: Copy, J: Copy, K: Copy, L: Copy, M: Copy, N: Copy, O: Copy, P: Copy, Q: Copy, R: Copy> KernelArgs for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R)
§Safety
The pointers returned point into self, which must remain
valid (i.e., not moved or dropped) until cuLaunchKernel returns.
impl<A: Copy, B: Copy, C: Copy, D: Copy, E: Copy, F: Copy, G: Copy, H: Copy, I: Copy, J: Copy, K: Copy, L: Copy, M: Copy, N: Copy, O: Copy, P: Copy, Q: Copy, R: Copy> KernelArgs for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R)
§Safety
The pointers returned point into self, which must remain
valid (i.e., not moved or dropped) until cuLaunchKernel returns.
Source§impl<A: Copy, B: Copy, C: Copy, D: Copy, E: Copy, F: Copy, G: Copy, H: Copy, I: Copy, J: Copy, K: Copy, L: Copy, M: Copy, N: Copy, O: Copy, P: Copy, Q: Copy, R: Copy, S: Copy> KernelArgs for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S)
§Safety
The pointers returned point into self, which must remain
valid (i.e., not moved or dropped) until cuLaunchKernel returns.
impl<A: Copy, B: Copy, C: Copy, D: Copy, E: Copy, F: Copy, G: Copy, H: Copy, I: Copy, J: Copy, K: Copy, L: Copy, M: Copy, N: Copy, O: Copy, P: Copy, Q: Copy, R: Copy, S: Copy> KernelArgs for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S)
§Safety
The pointers returned point into self, which must remain
valid (i.e., not moved or dropped) until cuLaunchKernel returns.
Source§impl<A: Copy, B: Copy, C: Copy, D: Copy, E: Copy, F: Copy, G: Copy, H: Copy, I: Copy, J: Copy, K: Copy, L: Copy, M: Copy, N: Copy, O: Copy, P: Copy, Q: Copy, R: Copy, S: Copy, T: Copy> KernelArgs for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T)
§Safety
The pointers returned point into self, which must remain
valid (i.e., not moved or dropped) until cuLaunchKernel returns.
impl<A: Copy, B: Copy, C: Copy, D: Copy, E: Copy, F: Copy, G: Copy, H: Copy, I: Copy, J: Copy, K: Copy, L: Copy, M: Copy, N: Copy, O: Copy, P: Copy, Q: Copy, R: Copy, S: Copy, T: Copy> KernelArgs for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T)
§Safety
The pointers returned point into self, which must remain
valid (i.e., not moved or dropped) until cuLaunchKernel returns.
Source§impl<A: Copy, B: Copy, C: Copy, D: Copy, E: Copy, F: Copy, G: Copy, H: Copy, I: Copy, J: Copy, K: Copy, L: Copy, M: Copy, N: Copy, O: Copy, P: Copy, Q: Copy, R: Copy, S: Copy, T: Copy, U: Copy> KernelArgs for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U)
§Safety
The pointers returned point into self, which must remain
valid (i.e., not moved or dropped) until cuLaunchKernel returns.
impl<A: Copy, B: Copy, C: Copy, D: Copy, E: Copy, F: Copy, G: Copy, H: Copy, I: Copy, J: Copy, K: Copy, L: Copy, M: Copy, N: Copy, O: Copy, P: Copy, Q: Copy, R: Copy, S: Copy, T: Copy, U: Copy> KernelArgs for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U)
§Safety
The pointers returned point into self, which must remain
valid (i.e., not moved or dropped) until cuLaunchKernel returns.
Source§impl<A: Copy, B: Copy, C: Copy, D: Copy, E: Copy, F: Copy, G: Copy, H: Copy, I: Copy, J: Copy, K: Copy, L: Copy, M: Copy, N: Copy, O: Copy, P: Copy, Q: Copy, R: Copy, S: Copy, T: Copy, U: Copy, V: Copy> KernelArgs for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V)
§Safety
The pointers returned point into self, which must remain
valid (i.e., not moved or dropped) until cuLaunchKernel returns.
impl<A: Copy, B: Copy, C: Copy, D: Copy, E: Copy, F: Copy, G: Copy, H: Copy, I: Copy, J: Copy, K: Copy, L: Copy, M: Copy, N: Copy, O: Copy, P: Copy, Q: Copy, R: Copy, S: Copy, T: Copy, U: Copy, V: Copy> KernelArgs for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V)
§Safety
The pointers returned point into self, which must remain
valid (i.e., not moved or dropped) until cuLaunchKernel returns.
Source§impl<A: Copy, B: Copy, C: Copy, D: Copy, E: Copy, F: Copy, G: Copy, H: Copy, I: Copy, J: Copy, K: Copy, L: Copy, M: Copy, N: Copy, O: Copy, P: Copy, Q: Copy, R: Copy, S: Copy, T: Copy, U: Copy, V: Copy, W: Copy> KernelArgs for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W)
§Safety
The pointers returned point into self, which must remain
valid (i.e., not moved or dropped) until cuLaunchKernel returns.
impl<A: Copy, B: Copy, C: Copy, D: Copy, E: Copy, F: Copy, G: Copy, H: Copy, I: Copy, J: Copy, K: Copy, L: Copy, M: Copy, N: Copy, O: Copy, P: Copy, Q: Copy, R: Copy, S: Copy, T: Copy, U: Copy, V: Copy, W: Copy> KernelArgs for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W)
§Safety
The pointers returned point into self, which must remain
valid (i.e., not moved or dropped) until cuLaunchKernel returns.
Source§impl<A: Copy, B: Copy, C: Copy, D: Copy, E: Copy, F: Copy, G: Copy, H: Copy, I: Copy, J: Copy, K: Copy, L: Copy, M: Copy, N: Copy, O: Copy, P: Copy, Q: Copy, R: Copy, S: Copy, T: Copy, U: Copy, V: Copy, W: Copy, X: Copy> KernelArgs for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X)
§Safety
The pointers returned point into self, which must remain
valid (i.e., not moved or dropped) until cuLaunchKernel returns.
impl<A: Copy, B: Copy, C: Copy, D: Copy, E: Copy, F: Copy, G: Copy, H: Copy, I: Copy, J: Copy, K: Copy, L: Copy, M: Copy, N: Copy, O: Copy, P: Copy, Q: Copy, R: Copy, S: Copy, T: Copy, U: Copy, V: Copy, W: Copy, X: Copy> KernelArgs for (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X)
§Safety
The pointers returned point into self, which must remain
valid (i.e., not moved or dropped) until cuLaunchKernel returns.