Skip to main content

KernelArgs

Trait KernelArgs 

Source
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_ptrs returns valid pointers to the argument values.
  • The pointed-to values remain valid for the duration of the kernel launch (i.e., until cuLaunchKernel returns).
  • The argument types and sizes match what the kernel expects.

Required Methods§

Source

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.

§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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

Implementors§