Reference support for kernel launch arguments

  • To capture the argument lifetime of kernel launch (for !88 (merged)), we cannot use pointer because it drop lifetime information

  • This MR add a support for reference to kernel definitions, e.g.

    #[kernel]
    fn f(a: &i32, b: &mut i32) { ... }
  • Drop ArgRef trait and ArgRefN structs introduced in !87 (merged), and introduce specialized LaunchableN traits

    • It can capture only immutable reference &'arg T. We need to also capture &'arg mut T
    • We may extend ArgRefN like
      struct ArgRef101<T1, T2, T3> {
        arg1: &'arg mut T1,
        arg2: &'arg T2,
        arg3: &'arg mut T3,
      }
      (1: mutable, 0: immutable) but it needs 2^N variations.
    • I revert it to use tuple as before !87 (merged), and specialize Launchable trait into LaunchableN traits instead
Edited by termoshtt

Merge request reports

Loading