cuda::experimental::launch

Defined in include/cuda/experimental/__launch/launch.cuh

template<typename ...Args, typename ...Levels, typename Kernel>
void cuda::experimental::launch(::cuda::stream_ref stream, const hierarchy_dimensions<Levels...> &dims, const Kernel &kernel, Args&&... args)

Launch a kernel functor with specified thread hierarchy and arguments.

Launches a kernel functor object on the specified stream and with specified thread hierarchy. Kernel functor object is a type with device operator(). Functor might or might not accept the hierarchy as its first argument.

Snippet

#include <cstdio>
#include <cuda/experimental/launch.cuh>

struct kernel {
    template <typename Dimensions>
    __device__ void operator()(Dimensions dims, unsigned int thread_to_print) {
        if (dims.rank(cudax::thread, cudax::grid) == thread_to_print) {
            printf("Hello from the GPU\n");
        }
    }
};

void launch_kernel(cuda::stream_ref stream) {
    auto dims = cudax::make_hierarchy(cudax::block_dims<128>(), cudax::grid_dims(4));

    cudax::launch(stream, dims, kernel(), 42);
}

Parameters
  • stream – cuda::stream_ref to launch the kernel into

  • dims – thread hierarchy dimensions for this launch

  • kernel – kernel functor to be launched

  • args – arguments to be passed into the kernel functor