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

Go to the source code of this file.

Data Structures

struct  LuxDeviceInfo
 
struct  LuxEcrecoverInput
 
struct  LuxEcrecoverOutput
 
struct  LuxFr256
 

Macros

#define LUX_GPU_VERSION_MAJOR   0
 
#define LUX_GPU_VERSION_MINOR   2
 
#define LUX_GPU_VERSION_PATCH   0
 

Typedefs

typedef struct LuxGPU LuxGPU
 
typedef struct LuxTensor LuxTensor
 
typedef struct LuxStream LuxStream
 
typedef struct LuxEvent LuxEvent
 

Enumerations

enum  LuxBackend {
  LUX_BACKEND_AUTO = 0 , LUX_BACKEND_CPU = 1 , LUX_BACKEND_METAL = 2 , LUX_BACKEND_CUDA = 3 ,
  LUX_BACKEND_DAWN = 4
}
 
enum  LuxDtype {
  LUX_FLOAT32 = 0 , LUX_FLOAT16 = 1 , LUX_BFLOAT16 = 2 , LUX_INT32 = 3 ,
  LUX_INT64 = 4 , LUX_UINT32 = 5 , LUX_UINT64 = 6 , LUX_BOOL = 7
}
 
enum  LuxError {
  LUX_OK = 0 , LUX_ERROR_INVALID_ARGUMENT = 1 , LUX_ERROR_OUT_OF_MEMORY = 2 , LUX_ERROR_BACKEND_NOT_AVAILABLE = 3 ,
  LUX_ERROR_DEVICE_NOT_FOUND = 4 , LUX_ERROR_KERNEL_FAILED = 5 , LUX_ERROR_NOT_SUPPORTED = 6
}
 
enum  LuxCurve { LUX_CURVE_BLS12_381 = 0 , LUX_CURVE_BN254 = 1 , LUX_CURVE_SECP256K1 = 2 , LUX_CURVE_ED25519 = 3 }
 

Functions

LuxGPUlux_gpu_create (void)
 
LuxGPUlux_gpu_create_with_backend (LuxBackend backend)
 
LuxGPUlux_gpu_create_with_device (LuxBackend backend, int device_index)
 
void lux_gpu_destroy (LuxGPU *gpu)
 
LuxBackend lux_gpu_backend (LuxGPU *gpu)
 
const char * lux_gpu_backend_name (LuxGPU *gpu)
 
LuxError lux_gpu_set_backend (LuxGPU *gpu, LuxBackend backend)
 
LuxError lux_gpu_device_info (LuxGPU *gpu, LuxDeviceInfo *info)
 
LuxError lux_gpu_sync (LuxGPU *gpu)
 
const char * lux_gpu_error (LuxGPU *gpu)
 
int lux_backend_count (void)
 
bool lux_backend_available (LuxBackend backend)
 
const char * lux_backend_name (LuxBackend backend)
 
int lux_device_count (LuxBackend backend)
 
LuxError lux_device_info (LuxBackend backend, int index, LuxDeviceInfo *info)
 
LuxTensorlux_tensor_zeros (LuxGPU *gpu, const int64_t *shape, int ndim, LuxDtype dtype)
 
LuxTensorlux_tensor_ones (LuxGPU *gpu, const int64_t *shape, int ndim, LuxDtype dtype)
 
LuxTensorlux_tensor_full (LuxGPU *gpu, const int64_t *shape, int ndim, LuxDtype dtype, double value)
 
LuxTensorlux_tensor_from_data (LuxGPU *gpu, const void *data, const int64_t *shape, int ndim, LuxDtype dtype)
 
void lux_tensor_destroy (LuxTensor *tensor)
 
int lux_tensor_ndim (LuxTensor *tensor)
 
int64_t lux_tensor_shape (LuxTensor *tensor, int dim)
 
int64_t lux_tensor_size (LuxTensor *tensor)
 
LuxDtype lux_tensor_dtype (LuxTensor *tensor)
 
LuxError lux_tensor_to_host (LuxTensor *tensor, void *data, size_t size)
 
LuxTensorlux_tensor_add (LuxGPU *gpu, LuxTensor *a, LuxTensor *b)
 
LuxTensorlux_tensor_sub (LuxGPU *gpu, LuxTensor *a, LuxTensor *b)
 
LuxTensorlux_tensor_mul (LuxGPU *gpu, LuxTensor *a, LuxTensor *b)
 
LuxTensorlux_tensor_div (LuxGPU *gpu, LuxTensor *a, LuxTensor *b)
 
LuxTensorlux_tensor_matmul (LuxGPU *gpu, LuxTensor *a, LuxTensor *b)
 
LuxTensorlux_tensor_neg (LuxGPU *gpu, LuxTensor *t)
 
LuxTensorlux_tensor_exp (LuxGPU *gpu, LuxTensor *t)
 
LuxTensorlux_tensor_log (LuxGPU *gpu, LuxTensor *t)
 
LuxTensorlux_tensor_sqrt (LuxGPU *gpu, LuxTensor *t)
 
LuxTensorlux_tensor_abs (LuxGPU *gpu, LuxTensor *t)
 
LuxTensorlux_tensor_tanh (LuxGPU *gpu, LuxTensor *t)
 
LuxTensorlux_tensor_sigmoid (LuxGPU *gpu, LuxTensor *t)
 
LuxTensorlux_tensor_relu (LuxGPU *gpu, LuxTensor *t)
 
LuxTensorlux_tensor_gelu (LuxGPU *gpu, LuxTensor *t)
 
float lux_tensor_reduce_sum (LuxGPU *gpu, LuxTensor *t)
 
float lux_tensor_reduce_max (LuxGPU *gpu, LuxTensor *t)
 
float lux_tensor_reduce_min (LuxGPU *gpu, LuxTensor *t)
 
float lux_tensor_reduce_mean (LuxGPU *gpu, LuxTensor *t)
 
LuxTensorlux_tensor_sum (LuxGPU *gpu, LuxTensor *t, const int *axes, int naxes)
 
LuxTensorlux_tensor_mean (LuxGPU *gpu, LuxTensor *t, const int *axes, int naxes)
 
LuxTensorlux_tensor_max (LuxGPU *gpu, LuxTensor *t, const int *axes, int naxes)
 
LuxTensorlux_tensor_min (LuxGPU *gpu, LuxTensor *t, const int *axes, int naxes)
 
LuxTensorlux_tensor_softmax (LuxGPU *gpu, LuxTensor *t, int axis)
 
LuxTensorlux_tensor_log_softmax (LuxGPU *gpu, LuxTensor *t, int axis)
 
LuxTensorlux_tensor_layer_norm (LuxGPU *gpu, LuxTensor *t, LuxTensor *gamma, LuxTensor *beta, float eps)
 
LuxTensorlux_tensor_rms_norm (LuxGPU *gpu, LuxTensor *t, LuxTensor *weight, float eps)
 
LuxTensorlux_tensor_transpose (LuxGPU *gpu, LuxTensor *t)
 
LuxTensorlux_tensor_copy (LuxGPU *gpu, LuxTensor *t)
 
LuxError lux_poseidon2_hash (LuxGPU *gpu, const uint64_t *inputs, uint64_t *outputs, size_t rate, size_t num_hashes)
 
LuxError lux_blake3_hash (LuxGPU *gpu, const uint8_t *inputs, uint8_t *outputs, const size_t *input_lens, size_t num_hashes)
 
LuxError lux_gpu_keccak256_batch (LuxGPU *gpu, const uint8_t *inputs, uint8_t *outputs, const size_t *input_lens, size_t num_inputs)
 
LuxError lux_gpu_ecrecover_batch (LuxGPU *gpu, const LuxEcrecoverInput *signatures, LuxEcrecoverOutput *addresses, size_t num_signatures)
 
LuxError lux_msm (LuxGPU *gpu, const void *scalars, const void *points, void *result, size_t count, LuxCurve curve)
 
LuxError lux_bls12_381_add (LuxGPU *gpu, const void *a, const void *b, void *out, size_t count, bool is_g2)
 
LuxError lux_bls12_381_mul (LuxGPU *gpu, const void *points, const void *scalars, void *out, size_t count, bool is_g2)
 
LuxError lux_bls12_381_pairing (LuxGPU *gpu, const void *g1_points, const void *g2_points, void *out, size_t count)
 
LuxError lux_bls_verify (LuxGPU *gpu, const uint8_t *sig, size_t sig_len, const uint8_t *msg, size_t msg_len, const uint8_t *pubkey, size_t pubkey_len, bool *result)
 
LuxError lux_bls_verify_batch (LuxGPU *gpu, const uint8_t *const *sigs, const size_t *sig_lens, const uint8_t *const *msgs, const size_t *msg_lens, const uint8_t *const *pubkeys, const size_t *pubkey_lens, int count, bool *results)
 
LuxError lux_bls_aggregate (LuxGPU *gpu, const uint8_t *const *sigs, const size_t *sig_lens, int count, uint8_t *out, size_t *out_len)
 
LuxError lux_bn254_add (LuxGPU *gpu, const void *a, const void *b, void *out, size_t count, bool is_g2)
 
LuxError lux_bn254_mul (LuxGPU *gpu, const void *points, const void *scalars, void *out, size_t count, bool is_g2)
 
LuxError lux_kzg_commit (LuxGPU *gpu, const void *coeffs, const void *srs, void *commitment, size_t degree, LuxCurve curve)
 
LuxError lux_kzg_open (LuxGPU *gpu, const void *coeffs, const void *srs, const void *point, void *proof, size_t degree, LuxCurve curve)
 
LuxError lux_kzg_verify (LuxGPU *gpu, const void *commitment, const void *proof, const void *point, const void *value, const void *srs_g2, bool *result, LuxCurve curve)
 
LuxError lux_ntt_forward (LuxGPU *gpu, uint64_t *data, size_t n, uint64_t modulus)
 
LuxError lux_ntt_inverse (LuxGPU *gpu, uint64_t *data, size_t n, uint64_t modulus)
 
LuxError lux_ntt_batch (LuxGPU *gpu, uint64_t **polys, size_t count, size_t n, uint64_t modulus)
 
LuxError lux_poly_mul (LuxGPU *gpu, const uint64_t *a, const uint64_t *b, uint64_t *result, size_t n, uint64_t modulus)
 
LuxError lux_tfhe_bootstrap (LuxGPU *gpu, const uint64_t *lwe_in, uint64_t *lwe_out, const uint64_t *bsk, const uint64_t *test_poly, uint32_t n_lwe, uint32_t N, uint32_t k, uint32_t l, uint32_t base_log, uint64_t q)
 
LuxError lux_tfhe_keyswitch (LuxGPU *gpu, const uint64_t *lwe_in, uint64_t *lwe_out, const uint64_t *ksk, uint32_t n_in, uint32_t n_out, uint32_t l, uint32_t base_log, uint64_t q)
 
LuxError lux_blind_rotate (LuxGPU *gpu, uint64_t *acc, const uint64_t *bsk, const uint64_t *lwe_a, uint32_t n_lwe, uint32_t N, uint32_t k, uint32_t l, uint32_t base_log, uint64_t q)
 
bool lux_fhe_is_valid_N (uint32_t N)
 
bool lux_fhe_is_valid_gadget (uint32_t l, uint32_t base_log)
 
bool lux_fhe_is_valid_pbs (uint32_t n_lwe, uint32_t N, uint32_t k, uint32_t l, uint32_t base_log, uint64_t q)
 
size_t lux_fhe_bsk_words (uint32_t n_lwe, uint32_t N, uint32_t k, uint32_t l)
 
size_t lux_fhe_ksk_words (uint32_t n_in, uint32_t n_out, uint32_t l, uint32_t base_log)
 
size_t lux_fhe_lwe_out_words (uint32_t N, uint32_t k)
 
size_t lux_fhe_acc_words (uint32_t N, uint32_t k)
 
uint32_t lux_fhe_suggest_base_log (uint32_t l, uint64_t q)
 
int64_t lux_fhe_signed_decomp_digit (uint64_t value, uint32_t level, uint32_t base_log)
 
bool lux_fhe_signed_decomp_all (uint64_t value, uint32_t l, uint32_t base_log, int64_t *out)
 
uint32_t lux_fhe_compute_a_tilde (uint64_t a, uint32_t N, uint64_t q)
 
uint64_t lux_fhe_encode_message (uint64_t m, uint64_t modulus, uint64_t q)
 
uint64_t lux_fhe_decode_phase (uint64_t phase, uint64_t modulus, uint64_t q)
 
bool lux_fhe_test_poly_plateau (uint32_t N, uint64_t Delta, uint64_t *out)
 
bool lux_fhe_test_poly_half (uint32_t N, uint64_t Delta, uint64_t *out)
 
uint64_t lux_fhe_gadget_value (uint32_t level, uint32_t base_log, uint64_t q)
 
uint64_t lux_fhe_gadget_reconstruct (const int64_t *digits, uint32_t l, uint32_t base_log, uint64_t q)
 
size_t lux_fhe_decomp_words (uint32_t N, uint32_t k, uint32_t l)
 
bool lux_fhe_is_valid_keyswitch (uint32_t n_in, uint32_t n_out, uint32_t l, uint32_t base_log, uint64_t q)
 
size_t lux_fhe_keyswitch_in_words (uint32_t n_in)
 
size_t lux_fhe_keyswitch_out_words (uint32_t n_out)
 
uint32_t lux_fhe_abi_revision (void)
 
LuxError lux_gpu_poseidon2 (LuxGPU *gpu, LuxFr256 *out, const LuxFr256 *left, const LuxFr256 *right, size_t n)
 
LuxError lux_gpu_merkle_root (LuxGPU *gpu, LuxFr256 *out, const LuxFr256 *leaves, size_t n)
 
LuxError lux_gpu_commitment (LuxGPU *gpu, LuxFr256 *out, const LuxFr256 *values, const LuxFr256 *blindings, const LuxFr256 *salts, size_t n)
 
LuxError lux_gpu_nullifier (LuxGPU *gpu, LuxFr256 *out, const LuxFr256 *keys, const LuxFr256 *commitments, const LuxFr256 *indices, size_t n)
 
LuxError lux_gpu_mldsa_verify_batch (LuxGPU *gpu, const uint8_t *const *pubkeys, const uint8_t *const *messages, const uint8_t *const *signatures, bool *results, size_t count)
 
LuxError lux_gpu_mlkem_decapsulate_batch (LuxGPU *gpu, const uint8_t *const *secret_keys, const uint8_t *const *ciphertexts, uint8_t **shared_secrets, size_t count)
 
LuxError lux_gpu_slhdsa_verify_batch (LuxGPU *gpu, const uint8_t *const *pubkeys, const uint8_t *const *messages, const uint8_t *const *signatures, bool *results, size_t count)
 
LuxError lux_gpu_ringtail_partial_sign_batch (LuxGPU *gpu, const uint8_t *const *shares, const uint8_t *const *messages, uint8_t **partial_sigs, size_t count)
 
LuxError lux_gpu_ringtail_combine_batch (LuxGPU *gpu, const uint8_t *const *partial_sigs, const int32_t *lagrange_coeffs, uint8_t **combined_sigs, size_t threshold, size_t count)
 
LuxError lux_gpu_frost_partial_verify_batch (LuxGPU *gpu, const uint8_t *const *commitments, const uint8_t *const *signatures, const uint8_t *const *pubkeys, const uint8_t *const *challenges, bool *results, size_t count)
 
LuxError lux_gpu_cggmp21_partial_sign_batch (LuxGPU *gpu, const uint8_t *const *inputs, const uint8_t *r_x, uint8_t **partial_sigs, size_t count)
 
LuxError lux_gpu_ed25519_verify_batch (LuxGPU *gpu, const uint8_t *const *pubkeys, const uint8_t *const *messages, const uint8_t *const *signatures, bool *results, size_t count)
 
LuxError lux_gpu_sr25519_verify_batch (LuxGPU *gpu, const uint8_t *const *pubkeys, const uint8_t *const *messages, const uint8_t *const *signatures, bool *results, size_t count)
 
LuxStreamlux_stream_create (LuxGPU *gpu)
 
void lux_stream_destroy (LuxStream *stream)
 
LuxError lux_stream_sync (LuxStream *stream)
 
LuxEventlux_event_create (LuxGPU *gpu)
 
void lux_event_destroy (LuxEvent *event)
 
LuxError lux_event_record (LuxEvent *event, LuxStream *stream)
 
LuxError lux_event_wait (LuxEvent *event, LuxStream *stream)
 
float lux_event_elapsed (LuxEvent *start, LuxEvent *end)
 

Macro Definition Documentation

◆ LUX_GPU_VERSION_MAJOR

#define LUX_GPU_VERSION_MAJOR   0

Definition at line 40 of file gpu.h.

◆ LUX_GPU_VERSION_MINOR

#define LUX_GPU_VERSION_MINOR   2

Definition at line 41 of file gpu.h.

◆ LUX_GPU_VERSION_PATCH

#define LUX_GPU_VERSION_PATCH   0

Definition at line 42 of file gpu.h.

Typedef Documentation

◆ LuxEvent

typedef struct LuxEvent LuxEvent

Definition at line 95 of file gpu.h.

◆ LuxGPU

typedef struct LuxGPU LuxGPU

Definition at line 92 of file gpu.h.

◆ LuxStream

typedef struct LuxStream LuxStream

Definition at line 94 of file gpu.h.

◆ LuxTensor

typedef struct LuxTensor LuxTensor

Definition at line 93 of file gpu.h.

Enumeration Type Documentation

◆ LuxBackend

enum LuxBackend
Enumerator
LUX_BACKEND_AUTO 
LUX_BACKEND_CPU 
LUX_BACKEND_METAL 
LUX_BACKEND_CUDA 
LUX_BACKEND_DAWN 

Definition at line 48 of file gpu.h.

◆ LuxCurve

enum LuxCurve
Enumerator
LUX_CURVE_BLS12_381 
LUX_CURVE_BN254 
LUX_CURVE_SECP256K1 
LUX_CURVE_ED25519 

Definition at line 81 of file gpu.h.

◆ LuxDtype

enum LuxDtype
Enumerator
LUX_FLOAT32 
LUX_FLOAT16 
LUX_BFLOAT16 
LUX_INT32 
LUX_INT64 
LUX_UINT32 
LUX_UINT64 
LUX_BOOL 

Definition at line 56 of file gpu.h.

◆ LuxError

enum LuxError
Enumerator
LUX_OK 
LUX_ERROR_INVALID_ARGUMENT 
LUX_ERROR_OUT_OF_MEMORY 
LUX_ERROR_BACKEND_NOT_AVAILABLE 
LUX_ERROR_DEVICE_NOT_FOUND 
LUX_ERROR_KERNEL_FAILED 
LUX_ERROR_NOT_SUPPORTED 

Definition at line 67 of file gpu.h.

Function Documentation

◆ lux_backend_available()

bool lux_backend_available ( LuxBackend  backend)

◆ lux_backend_count()

int lux_backend_count ( void  )

◆ lux_backend_name()

const char * lux_backend_name ( LuxBackend  backend)

◆ lux_blake3_hash()

LuxError lux_blake3_hash ( LuxGPU gpu,
const uint8_t *  inputs,
uint8_t *  outputs,
const size_t *  input_lens,
size_t  num_hashes 
)

◆ lux_blind_rotate()

LuxError lux_blind_rotate ( LuxGPU gpu,
uint64_t *  acc,
const uint64_t *  bsk,
const uint64_t *  lwe_a,
uint32_t  n_lwe,
uint32_t  N,
uint32_t  k,
uint32_t  l,
uint32_t  base_log,
uint64_t  q 
)

◆ lux_bls12_381_add()

LuxError lux_bls12_381_add ( LuxGPU gpu,
const void *  a,
const void *  b,
void *  out,
size_t  count,
bool  is_g2 
)

◆ lux_bls12_381_mul()

LuxError lux_bls12_381_mul ( LuxGPU gpu,
const void *  points,
const void *  scalars,
void *  out,
size_t  count,
bool  is_g2 
)

◆ lux_bls12_381_pairing()

LuxError lux_bls12_381_pairing ( LuxGPU gpu,
const void *  g1_points,
const void *  g2_points,
void *  out,
size_t  count 
)

◆ lux_bls_aggregate()

LuxError lux_bls_aggregate ( LuxGPU gpu,
const uint8_t *const *  sigs,
const size_t *  sig_lens,
int  count,
uint8_t *  out,
size_t *  out_len 
)

◆ lux_bls_verify()

LuxError lux_bls_verify ( LuxGPU gpu,
const uint8_t *  sig,
size_t  sig_len,
const uint8_t *  msg,
size_t  msg_len,
const uint8_t *  pubkey,
size_t  pubkey_len,
bool *  result 
)

◆ lux_bls_verify_batch()

LuxError lux_bls_verify_batch ( LuxGPU gpu,
const uint8_t *const *  sigs,
const size_t *  sig_lens,
const uint8_t *const *  msgs,
const size_t *  msg_lens,
const uint8_t *const *  pubkeys,
const size_t *  pubkey_lens,
int  count,
bool *  results 
)

◆ lux_bn254_add()

LuxError lux_bn254_add ( LuxGPU gpu,
const void *  a,
const void *  b,
void *  out,
size_t  count,
bool  is_g2 
)

◆ lux_bn254_mul()

LuxError lux_bn254_mul ( LuxGPU gpu,
const void *  points,
const void *  scalars,
void *  out,
size_t  count,
bool  is_g2 
)

◆ lux_device_count()

int lux_device_count ( LuxBackend  backend)

◆ lux_device_info()

LuxError lux_device_info ( LuxBackend  backend,
int  index,
LuxDeviceInfo info 
)

◆ lux_event_create()

LuxEvent * lux_event_create ( LuxGPU gpu)

◆ lux_event_destroy()

void lux_event_destroy ( LuxEvent event)

◆ lux_event_elapsed()

float lux_event_elapsed ( LuxEvent start,
LuxEvent end 
)

◆ lux_event_record()

LuxError lux_event_record ( LuxEvent event,
LuxStream stream 
)

◆ lux_event_wait()

LuxError lux_event_wait ( LuxEvent event,
LuxStream stream 
)

◆ lux_fhe_abi_revision()

uint32_t lux_fhe_abi_revision ( void  )

◆ lux_fhe_acc_words()

size_t lux_fhe_acc_words ( uint32_t  N,
uint32_t  k 
)

◆ lux_fhe_bsk_words()

size_t lux_fhe_bsk_words ( uint32_t  n_lwe,
uint32_t  N,
uint32_t  k,
uint32_t  l 
)

◆ lux_fhe_compute_a_tilde()

uint32_t lux_fhe_compute_a_tilde ( uint64_t  a,
uint32_t  N,
uint64_t  q 
)

◆ lux_fhe_decode_phase()

uint64_t lux_fhe_decode_phase ( uint64_t  phase,
uint64_t  modulus,
uint64_t  q 
)

◆ lux_fhe_decomp_words()

size_t lux_fhe_decomp_words ( uint32_t  N,
uint32_t  k,
uint32_t  l 
)

◆ lux_fhe_encode_message()

uint64_t lux_fhe_encode_message ( uint64_t  m,
uint64_t  modulus,
uint64_t  q 
)

◆ lux_fhe_gadget_reconstruct()

uint64_t lux_fhe_gadget_reconstruct ( const int64_t *  digits,
uint32_t  l,
uint32_t  base_log,
uint64_t  q 
)

◆ lux_fhe_gadget_value()

uint64_t lux_fhe_gadget_value ( uint32_t  level,
uint32_t  base_log,
uint64_t  q 
)

◆ lux_fhe_is_valid_gadget()

bool lux_fhe_is_valid_gadget ( uint32_t  l,
uint32_t  base_log 
)

◆ lux_fhe_is_valid_keyswitch()

bool lux_fhe_is_valid_keyswitch ( uint32_t  n_in,
uint32_t  n_out,
uint32_t  l,
uint32_t  base_log,
uint64_t  q 
)

◆ lux_fhe_is_valid_N()

bool lux_fhe_is_valid_N ( uint32_t  N)

◆ lux_fhe_is_valid_pbs()

bool lux_fhe_is_valid_pbs ( uint32_t  n_lwe,
uint32_t  N,
uint32_t  k,
uint32_t  l,
uint32_t  base_log,
uint64_t  q 
)

◆ lux_fhe_keyswitch_in_words()

size_t lux_fhe_keyswitch_in_words ( uint32_t  n_in)

◆ lux_fhe_keyswitch_out_words()

size_t lux_fhe_keyswitch_out_words ( uint32_t  n_out)

◆ lux_fhe_ksk_words()

size_t lux_fhe_ksk_words ( uint32_t  n_in,
uint32_t  n_out,
uint32_t  l,
uint32_t  base_log 
)

◆ lux_fhe_lwe_out_words()

size_t lux_fhe_lwe_out_words ( uint32_t  N,
uint32_t  k 
)

◆ lux_fhe_signed_decomp_all()

bool lux_fhe_signed_decomp_all ( uint64_t  value,
uint32_t  l,
uint32_t  base_log,
int64_t *  out 
)

◆ lux_fhe_signed_decomp_digit()

int64_t lux_fhe_signed_decomp_digit ( uint64_t  value,
uint32_t  level,
uint32_t  base_log 
)

◆ lux_fhe_suggest_base_log()

uint32_t lux_fhe_suggest_base_log ( uint32_t  l,
uint64_t  q 
)

◆ lux_fhe_test_poly_half()

bool lux_fhe_test_poly_half ( uint32_t  N,
uint64_t  Delta,
uint64_t *  out 
)

◆ lux_fhe_test_poly_plateau()

bool lux_fhe_test_poly_plateau ( uint32_t  N,
uint64_t  Delta,
uint64_t *  out 
)

◆ lux_gpu_backend()

LuxBackend lux_gpu_backend ( LuxGPU gpu)

◆ lux_gpu_backend_name()

const char * lux_gpu_backend_name ( LuxGPU gpu)

◆ lux_gpu_cggmp21_partial_sign_batch()

LuxError lux_gpu_cggmp21_partial_sign_batch ( LuxGPU gpu,
const uint8_t *const *  inputs,
const uint8_t *  r_x,
uint8_t **  partial_sigs,
size_t  count 
)

◆ lux_gpu_commitment()

LuxError lux_gpu_commitment ( LuxGPU gpu,
LuxFr256 out,
const LuxFr256 values,
const LuxFr256 blindings,
const LuxFr256 salts,
size_t  n 
)

◆ lux_gpu_create()

LuxGPU * lux_gpu_create ( void  )

◆ lux_gpu_create_with_backend()

LuxGPU * lux_gpu_create_with_backend ( LuxBackend  backend)

◆ lux_gpu_create_with_device()

LuxGPU * lux_gpu_create_with_device ( LuxBackend  backend,
int  device_index 
)

◆ lux_gpu_destroy()

void lux_gpu_destroy ( LuxGPU gpu)

◆ lux_gpu_device_info()

LuxError lux_gpu_device_info ( LuxGPU gpu,
LuxDeviceInfo info 
)

◆ lux_gpu_ecrecover_batch()

LuxError lux_gpu_ecrecover_batch ( LuxGPU gpu,
const LuxEcrecoverInput signatures,
LuxEcrecoverOutput addresses,
size_t  num_signatures 
)

◆ lux_gpu_ed25519_verify_batch()

LuxError lux_gpu_ed25519_verify_batch ( LuxGPU gpu,
const uint8_t *const *  pubkeys,
const uint8_t *const *  messages,
const uint8_t *const *  signatures,
bool *  results,
size_t  count 
)

◆ lux_gpu_error()

const char * lux_gpu_error ( LuxGPU gpu)

◆ lux_gpu_frost_partial_verify_batch()

LuxError lux_gpu_frost_partial_verify_batch ( LuxGPU gpu,
const uint8_t *const *  commitments,
const uint8_t *const *  signatures,
const uint8_t *const *  pubkeys,
const uint8_t *const *  challenges,
bool *  results,
size_t  count 
)

◆ lux_gpu_keccak256_batch()

LuxError lux_gpu_keccak256_batch ( LuxGPU gpu,
const uint8_t *  inputs,
uint8_t *  outputs,
const size_t *  input_lens,
size_t  num_inputs 
)

◆ lux_gpu_merkle_root()

LuxError lux_gpu_merkle_root ( LuxGPU gpu,
LuxFr256 out,
const LuxFr256 leaves,
size_t  n 
)

◆ lux_gpu_mldsa_verify_batch()

LuxError lux_gpu_mldsa_verify_batch ( LuxGPU gpu,
const uint8_t *const *  pubkeys,
const uint8_t *const *  messages,
const uint8_t *const *  signatures,
bool *  results,
size_t  count 
)

◆ lux_gpu_mlkem_decapsulate_batch()

LuxError lux_gpu_mlkem_decapsulate_batch ( LuxGPU gpu,
const uint8_t *const *  secret_keys,
const uint8_t *const *  ciphertexts,
uint8_t **  shared_secrets,
size_t  count 
)

◆ lux_gpu_nullifier()

LuxError lux_gpu_nullifier ( LuxGPU gpu,
LuxFr256 out,
const LuxFr256 keys,
const LuxFr256 commitments,
const LuxFr256 indices,
size_t  n 
)

◆ lux_gpu_poseidon2()

LuxError lux_gpu_poseidon2 ( LuxGPU gpu,
LuxFr256 out,
const LuxFr256 left,
const LuxFr256 right,
size_t  n 
)

◆ lux_gpu_ringtail_combine_batch()

LuxError lux_gpu_ringtail_combine_batch ( LuxGPU gpu,
const uint8_t *const *  partial_sigs,
const int32_t *  lagrange_coeffs,
uint8_t **  combined_sigs,
size_t  threshold,
size_t  count 
)

◆ lux_gpu_ringtail_partial_sign_batch()

LuxError lux_gpu_ringtail_partial_sign_batch ( LuxGPU gpu,
const uint8_t *const *  shares,
const uint8_t *const *  messages,
uint8_t **  partial_sigs,
size_t  count 
)

◆ lux_gpu_set_backend()

LuxError lux_gpu_set_backend ( LuxGPU gpu,
LuxBackend  backend 
)

◆ lux_gpu_slhdsa_verify_batch()

LuxError lux_gpu_slhdsa_verify_batch ( LuxGPU gpu,
const uint8_t *const *  pubkeys,
const uint8_t *const *  messages,
const uint8_t *const *  signatures,
bool *  results,
size_t  count 
)

◆ lux_gpu_sr25519_verify_batch()

LuxError lux_gpu_sr25519_verify_batch ( LuxGPU gpu,
const uint8_t *const *  pubkeys,
const uint8_t *const *  messages,
const uint8_t *const *  signatures,
bool *  results,
size_t  count 
)

◆ lux_gpu_sync()

LuxError lux_gpu_sync ( LuxGPU gpu)

◆ lux_kzg_commit()

LuxError lux_kzg_commit ( LuxGPU gpu,
const void *  coeffs,
const void *  srs,
void *  commitment,
size_t  degree,
LuxCurve  curve 
)

◆ lux_kzg_open()

LuxError lux_kzg_open ( LuxGPU gpu,
const void *  coeffs,
const void *  srs,
const void *  point,
void *  proof,
size_t  degree,
LuxCurve  curve 
)

◆ lux_kzg_verify()

LuxError lux_kzg_verify ( LuxGPU gpu,
const void *  commitment,
const void *  proof,
const void *  point,
const void *  value,
const void *  srs_g2,
bool *  result,
LuxCurve  curve 
)

◆ lux_msm()

LuxError lux_msm ( LuxGPU gpu,
const void *  scalars,
const void *  points,
void *  result,
size_t  count,
LuxCurve  curve 
)

◆ lux_ntt_batch()

LuxError lux_ntt_batch ( LuxGPU gpu,
uint64_t **  polys,
size_t  count,
size_t  n,
uint64_t  modulus 
)

◆ lux_ntt_forward()

LuxError lux_ntt_forward ( LuxGPU gpu,
uint64_t *  data,
size_t  n,
uint64_t  modulus 
)

◆ lux_ntt_inverse()

LuxError lux_ntt_inverse ( LuxGPU gpu,
uint64_t *  data,
size_t  n,
uint64_t  modulus 
)

◆ lux_poly_mul()

LuxError lux_poly_mul ( LuxGPU gpu,
const uint64_t *  a,
const uint64_t *  b,
uint64_t *  result,
size_t  n,
uint64_t  modulus 
)

◆ lux_poseidon2_hash()

LuxError lux_poseidon2_hash ( LuxGPU gpu,
const uint64_t *  inputs,
uint64_t *  outputs,
size_t  rate,
size_t  num_hashes 
)

◆ lux_stream_create()

LuxStream * lux_stream_create ( LuxGPU gpu)

◆ lux_stream_destroy()

void lux_stream_destroy ( LuxStream stream)

◆ lux_stream_sync()

LuxError lux_stream_sync ( LuxStream stream)

◆ lux_tensor_abs()

LuxTensor * lux_tensor_abs ( LuxGPU gpu,
LuxTensor t 
)

◆ lux_tensor_add()

LuxTensor * lux_tensor_add ( LuxGPU gpu,
LuxTensor a,
LuxTensor b 
)

◆ lux_tensor_copy()

LuxTensor * lux_tensor_copy ( LuxGPU gpu,
LuxTensor t 
)

◆ lux_tensor_destroy()

void lux_tensor_destroy ( LuxTensor tensor)

◆ lux_tensor_div()

LuxTensor * lux_tensor_div ( LuxGPU gpu,
LuxTensor a,
LuxTensor b 
)

◆ lux_tensor_dtype()

LuxDtype lux_tensor_dtype ( LuxTensor tensor)

◆ lux_tensor_exp()

LuxTensor * lux_tensor_exp ( LuxGPU gpu,
LuxTensor t 
)

◆ lux_tensor_from_data()

LuxTensor * lux_tensor_from_data ( LuxGPU gpu,
const void *  data,
const int64_t *  shape,
int  ndim,
LuxDtype  dtype 
)

◆ lux_tensor_full()

LuxTensor * lux_tensor_full ( LuxGPU gpu,
const int64_t *  shape,
int  ndim,
LuxDtype  dtype,
double  value 
)

◆ lux_tensor_gelu()

LuxTensor * lux_tensor_gelu ( LuxGPU gpu,
LuxTensor t 
)

◆ lux_tensor_layer_norm()

LuxTensor * lux_tensor_layer_norm ( LuxGPU gpu,
LuxTensor t,
LuxTensor gamma,
LuxTensor beta,
float  eps 
)

◆ lux_tensor_log()

LuxTensor * lux_tensor_log ( LuxGPU gpu,
LuxTensor t 
)

◆ lux_tensor_log_softmax()

LuxTensor * lux_tensor_log_softmax ( LuxGPU gpu,
LuxTensor t,
int  axis 
)

◆ lux_tensor_matmul()

LuxTensor * lux_tensor_matmul ( LuxGPU gpu,
LuxTensor a,
LuxTensor b 
)

◆ lux_tensor_max()

LuxTensor * lux_tensor_max ( LuxGPU gpu,
LuxTensor t,
const int *  axes,
int  naxes 
)

◆ lux_tensor_mean()

LuxTensor * lux_tensor_mean ( LuxGPU gpu,
LuxTensor t,
const int *  axes,
int  naxes 
)

◆ lux_tensor_min()

LuxTensor * lux_tensor_min ( LuxGPU gpu,
LuxTensor t,
const int *  axes,
int  naxes 
)

◆ lux_tensor_mul()

LuxTensor * lux_tensor_mul ( LuxGPU gpu,
LuxTensor a,
LuxTensor b 
)

◆ lux_tensor_ndim()

int lux_tensor_ndim ( LuxTensor tensor)

◆ lux_tensor_neg()

LuxTensor * lux_tensor_neg ( LuxGPU gpu,
LuxTensor t 
)

◆ lux_tensor_ones()

LuxTensor * lux_tensor_ones ( LuxGPU gpu,
const int64_t *  shape,
int  ndim,
LuxDtype  dtype 
)

◆ lux_tensor_reduce_max()

float lux_tensor_reduce_max ( LuxGPU gpu,
LuxTensor t 
)

◆ lux_tensor_reduce_mean()

float lux_tensor_reduce_mean ( LuxGPU gpu,
LuxTensor t 
)

◆ lux_tensor_reduce_min()

float lux_tensor_reduce_min ( LuxGPU gpu,
LuxTensor t 
)

◆ lux_tensor_reduce_sum()

float lux_tensor_reduce_sum ( LuxGPU gpu,
LuxTensor t 
)

◆ lux_tensor_relu()

LuxTensor * lux_tensor_relu ( LuxGPU gpu,
LuxTensor t 
)

◆ lux_tensor_rms_norm()

LuxTensor * lux_tensor_rms_norm ( LuxGPU gpu,
LuxTensor t,
LuxTensor weight,
float  eps 
)

◆ lux_tensor_shape()

int64_t lux_tensor_shape ( LuxTensor tensor,
int  dim 
)

◆ lux_tensor_sigmoid()

LuxTensor * lux_tensor_sigmoid ( LuxGPU gpu,
LuxTensor t 
)

◆ lux_tensor_size()

int64_t lux_tensor_size ( LuxTensor tensor)

◆ lux_tensor_softmax()

LuxTensor * lux_tensor_softmax ( LuxGPU gpu,
LuxTensor t,
int  axis 
)

◆ lux_tensor_sqrt()

LuxTensor * lux_tensor_sqrt ( LuxGPU gpu,
LuxTensor t 
)

◆ lux_tensor_sub()

LuxTensor * lux_tensor_sub ( LuxGPU gpu,
LuxTensor a,
LuxTensor b 
)

◆ lux_tensor_sum()

LuxTensor * lux_tensor_sum ( LuxGPU gpu,
LuxTensor t,
const int *  axes,
int  naxes 
)

◆ lux_tensor_tanh()

LuxTensor * lux_tensor_tanh ( LuxGPU gpu,
LuxTensor t 
)

◆ lux_tensor_to_host()

LuxError lux_tensor_to_host ( LuxTensor tensor,
void *  data,
size_t  size 
)

◆ lux_tensor_transpose()

LuxTensor * lux_tensor_transpose ( LuxGPU gpu,
LuxTensor t 
)

◆ lux_tensor_zeros()

LuxTensor * lux_tensor_zeros ( LuxGPU gpu,
const int64_t *  shape,
int  ndim,
LuxDtype  dtype 
)

◆ lux_tfhe_bootstrap()

LuxError lux_tfhe_bootstrap ( LuxGPU gpu,
const uint64_t *  lwe_in,
uint64_t *  lwe_out,
const uint64_t *  bsk,
const uint64_t *  test_poly,
uint32_t  n_lwe,
uint32_t  N,
uint32_t  k,
uint32_t  l,
uint32_t  base_log,
uint64_t  q 
)

◆ lux_tfhe_keyswitch()

LuxError lux_tfhe_keyswitch ( LuxGPU gpu,
const uint64_t *  lwe_in,
uint64_t *  lwe_out,
const uint64_t *  ksk,
uint32_t  n_in,
uint32_t  n_out,
uint32_t  l,
uint32_t  base_log,
uint64_t  q 
)