cuda::experimental::stf::run_once

Defined in include/cuda/experimental/__stf/utility/run_once.cuh

template<typename ...Ts>
class run_once

A class that ensures a function is executed only once for a given set of arguments (including none).

The run_once class is a utility that caches the result of a function call based on its arguments, ensuring that the function is only run once for each unique set of arguments. It is particularly useful in scenarios where a function call is expensive and the result is invariant for the same input parameters.

Template Parameters

Ts – Types of the arguments used to uniquely identify the function call.

Public Functions

inline run_once(Ts... val)

Constructs the run_once object with given arguments.

These arguments are used to uniquely identify the function call.

Parameters

val – Arguments that are used to determine if the function has been run before.

template<typename Fun>
inline auto &operator->*(Fun &&fun) &&

Invokes the function if it has not been run with the stored arguments before.

If the function has been run before with the same arguments, returns the cached result.

Template Parameters

Fun – The type of the function to be executed.

Parameters

fun – The function to be executed.

Returns

The result of the function call. The type of the result is determined by the return type of the function.