Skip to content

Outerbeast/Kooduh

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

gpu_execute Cheat Sheet

A compact reference for all valid call shapes supported by:

gpu_execute<T>(int N, F functor, int threads_per_block, const T*... inputs);

✔️ Zero Inputs (K = 0)

auto out = gpu_execute<float>(N, Functor{}, 256);
auto out = gpu_execute<int>(N, Functor{param}, 128);

✔️ One Input (K = 1)

auto out = gpu_execute<float>(N, Functor{}, 256, A);
auto out = gpu_execute<int>(N, Functor{N}, 512, arr);
auto out = gpu_execute<double>(N, Functor{}, 64, vec.data());

✔️ Two Inputs (K = 2)

auto out = gpu_execute<int>(N, Functor{}, 256, A, B);
auto out = gpu_execute<float>(N, Functor{5}, 128, A, B);
auto out = gpu_execute<float>(N, Functor{}, 512, A.data(), B.data());

✔️ Three Inputs (K = 3)

auto out = gpu_execute<float>(N, Functor{}, 256, A, B, C);

✔️ N Inputs (K = any number)

All inputs must be const T*.

auto out = gpu_execute<float>(N, Functor{}, 256, A, B, C, D, E);

✔️ Functor Variants

Stateless functor

auto out = gpu_execute<float>(N, Functor{}, 256, A);

Stateful functor

auto out = gpu_execute<float>(N, Functor{param1, param2}, 256, A, B);

Device lambda

auto out = gpu_execute<float>(
    N,
    [] __device__ (float* const ptrs[], int i) { /* ... */ },
    256,
    A, B
);

✔️ Pointer Source Variants

Raw pointer

gpu_execute<float>(N, F{}, 256, rawPtr);

std::vector

gpu_execute<float>(N, F{}, 256, vec.data());

Temporary vector

gpu_execute<float>(N, F{}, 256, std::vector<float>(N, 1.0f).data());

Mixed expressions

gpu_execute<float>(N, F{}, 256, A, B + 10, &C[5]);

✔️ Thread Count Variants

gpu_execute<float>(N, F{}, 64,  A);
gpu_execute<float>(N, F{}, 128, A, B);
gpu_execute<float>(N, F{}, 512, A, B, C);

❌ Invalid Calls (for clarity)

gpu_execute<float>(N, F{}, 256, vec);          // not a pointer
gpu_execute<float>(N, F{}, 256, (int*)A);      // wrong type
gpu_execute<float>(N, F{}, 256, &someFloat);   // not an array