Lux GPU Core 0.2.0
Lightweight plugin-based GPU acceleration for blockchain and ML
Loading...
Searching...
No Matches
kernel_loader.h File Reference
#include <stddef.h>
#include <stdint.h>
#include <stdbool.h>

Go to the source code of this file.

Data Structures

struct  LuxKernelVariant
 
struct  LuxKernelSource
 
struct  LuxEmbeddedKernel
 
struct  LuxKernelRegistry
 

Macros

#define LUX_DECLARE_KERNEL(name, lang)
 
#define LUX_DEFINE_KERNEL(name, source_str)
 
#define LUX_KERNEL_ENTRY(name, entry, lang)    { #name, entry, lang, lux_kernel_##name##_source, lux_kernel_##name##_source_len, NULL, 0 }
 
#define LUX_KERNEL_ENTRY_BINARY(name, entry, lang, bin, bin_len)    { #name, entry, lang, NULL, 0, bin, bin_len }
 

Typedefs

typedef struct LuxKernel LuxKernel
 
typedef struct LuxKernelCache LuxKernelCache
 

Enumerations

enum  LuxKernelSourceType { LUX_KERNEL_SOURCE_EMBEDDED = 0 , LUX_KERNEL_SOURCE_FILE = 1 , LUX_KERNEL_SOURCE_BINARY = 2 }
 
enum  LuxKernelLanguage {
  LUX_KERNEL_LANG_METAL = 0 , LUX_KERNEL_LANG_CUDA = 1 , LUX_KERNEL_LANG_PTX = 2 , LUX_KERNEL_LANG_WGSL = 3 ,
  LUX_KERNEL_LANG_SPIRV = 4
}
 

Functions

const LuxKernelRegistrylux_kernel_registry_get (const char *backend)
 
const LuxEmbeddedKernellux_kernel_registry_find (const LuxKernelRegistry *registry, const char *name)
 
LuxKernelCachelux_kernel_cache_create (void)
 
void lux_kernel_cache_destroy (LuxKernelCache *cache)
 
LuxKernellux_kernel_cache_get (LuxKernelCache *cache, const LuxKernelVariant *variant)
 
void lux_kernel_cache_put (LuxKernelCache *cache, const LuxKernelVariant *variant, LuxKernel *kernel)
 
void lux_kernel_cache_clear (LuxKernelCache *cache)
 
void lux_kernel_cache_stats (LuxKernelCache *cache, size_t *count, size_t *memory_bytes)
 
LuxKernellux_kernel_compile (void *device_context, const LuxKernelSource *source)
 
LuxKernellux_kernel_load_binary (void *device_context, const void *binary, size_t binary_len, const char *entry_point)
 
void lux_kernel_destroy (LuxKernel *kernel)
 
const char * lux_kernel_entry_point (LuxKernel *kernel)
 

Macro Definition Documentation

◆ LUX_DECLARE_KERNEL

#define LUX_DECLARE_KERNEL (   name,
  lang 
)
Value:
extern const char lux_kernel_##name##_source[]; \
extern const size_t lux_kernel_##name##_source_len;

Definition at line 161 of file kernel_loader.h.

◆ LUX_DEFINE_KERNEL

#define LUX_DEFINE_KERNEL (   name,
  source_str 
)
Value:
const char lux_kernel_##name##_source[] = source_str; \
const size_t lux_kernel_##name##_source_len = sizeof(lux_kernel_##name##_source) - 1;

Definition at line 166 of file kernel_loader.h.

◆ LUX_KERNEL_ENTRY

#define LUX_KERNEL_ENTRY (   name,
  entry,
  lang 
)     { #name, entry, lang, lux_kernel_##name##_source, lux_kernel_##name##_source_len, NULL, 0 }

Definition at line 171 of file kernel_loader.h.

◆ LUX_KERNEL_ENTRY_BINARY

#define LUX_KERNEL_ENTRY_BINARY (   name,
  entry,
  lang,
  bin,
  bin_len 
)     { #name, entry, lang, NULL, 0, bin, bin_len }

Definition at line 175 of file kernel_loader.h.

Typedef Documentation

◆ LuxKernel

typedef struct LuxKernel LuxKernel

Definition at line 63 of file kernel_loader.h.

◆ LuxKernelCache

Definition at line 66 of file kernel_loader.h.

Enumeration Type Documentation

◆ LuxKernelLanguage

Enumerator
LUX_KERNEL_LANG_METAL 
LUX_KERNEL_LANG_CUDA 
LUX_KERNEL_LANG_PTX 
LUX_KERNEL_LANG_WGSL 
LUX_KERNEL_LANG_SPIRV 

Definition at line 34 of file kernel_loader.h.

◆ LuxKernelSourceType

Enumerator
LUX_KERNEL_SOURCE_EMBEDDED 
LUX_KERNEL_SOURCE_FILE 
LUX_KERNEL_SOURCE_BINARY 

Definition at line 28 of file kernel_loader.h.

Function Documentation

◆ lux_kernel_cache_clear()

void lux_kernel_cache_clear ( LuxKernelCache cache)

◆ lux_kernel_cache_create()

LuxKernelCache * lux_kernel_cache_create ( void  )

◆ lux_kernel_cache_destroy()

void lux_kernel_cache_destroy ( LuxKernelCache cache)

◆ lux_kernel_cache_get()

LuxKernel * lux_kernel_cache_get ( LuxKernelCache cache,
const LuxKernelVariant variant 
)

◆ lux_kernel_cache_put()

void lux_kernel_cache_put ( LuxKernelCache cache,
const LuxKernelVariant variant,
LuxKernel kernel 
)

◆ lux_kernel_cache_stats()

void lux_kernel_cache_stats ( LuxKernelCache cache,
size_t *  count,
size_t *  memory_bytes 
)

◆ lux_kernel_compile()

LuxKernel * lux_kernel_compile ( void *  device_context,
const LuxKernelSource source 
)

◆ lux_kernel_destroy()

void lux_kernel_destroy ( LuxKernel kernel)

◆ lux_kernel_entry_point()

const char * lux_kernel_entry_point ( LuxKernel kernel)

◆ lux_kernel_load_binary()

LuxKernel * lux_kernel_load_binary ( void *  device_context,
const void *  binary,
size_t  binary_len,
const char *  entry_point 
)

◆ lux_kernel_registry_find()

const LuxEmbeddedKernel * lux_kernel_registry_find ( const LuxKernelRegistry registry,
const char *  name 
)

◆ lux_kernel_registry_get()

const LuxKernelRegistry * lux_kernel_registry_get ( const char *  backend)