| #ifndef DS4_GPU_H |
| #define DS4_GPU_H |
|
|
| #include <stdbool.h> |
| #include <stdint.h> |
|
|
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| #ifndef DS4_GPU_TENSOR_DEFINED |
| #define DS4_GPU_TENSOR_DEFINED |
| typedef struct ds4_gpu_tensor ds4_gpu_tensor; |
| #endif |
|
|
| #ifndef DS4_GPU_ATTENTION_DECODE_ROW_DEFINED |
| #define DS4_GPU_ATTENTION_DECODE_ROW_DEFINED |
| #define DS4_GPU_ATTENTION_DECODE_BATCH_MAX 32u |
| typedef struct { |
| uint64_t raw_kv; |
| uint64_t comp_kv; |
| uint64_t topk; |
| uint32_t pos; |
| uint32_t n_raw; |
| uint32_t raw_cap; |
| uint32_t raw_start; |
| uint32_t n_comp; |
| uint32_t top_k; |
| uint32_t window; |
| uint32_t ratio; |
| uint32_t indexed; |
| } ds4_gpu_attention_decode_row; |
| #endif |
|
|
| int ds4_gpu_init(void); |
| void ds4_gpu_cleanup(void); |
|
|
| ds4_gpu_tensor *ds4_gpu_tensor_alloc(uint64_t bytes); |
| ds4_gpu_tensor *ds4_gpu_tensor_alloc_managed(uint64_t bytes); |
| ds4_gpu_tensor *ds4_gpu_tensor_view(const ds4_gpu_tensor *base, uint64_t offset, uint64_t bytes); |
| void ds4_gpu_tensor_free(ds4_gpu_tensor *tensor); |
| uint64_t ds4_gpu_tensor_bytes(const ds4_gpu_tensor *tensor); |
| void *ds4_gpu_tensor_contents(ds4_gpu_tensor *tensor); |
| int ds4_gpu_tensor_fill_f32(ds4_gpu_tensor *tensor, float value, uint64_t count); |
| int ds4_gpu_tensor_write(ds4_gpu_tensor *tensor, uint64_t offset, const void *data, uint64_t bytes); |
| int ds4_gpu_tensor_read(const ds4_gpu_tensor *tensor, uint64_t offset, void *data, uint64_t bytes); |
| int ds4_gpu_tensor_copy(ds4_gpu_tensor *dst, uint64_t dst_offset, |
| const ds4_gpu_tensor *src, uint64_t src_offset, |
| uint64_t bytes); |
| int ds4_gpu_tensor_copy_f32_to_f16(ds4_gpu_tensor *dst, uint64_t dst_offset, |
| const ds4_gpu_tensor *src, uint64_t src_offset, |
| uint64_t count); |
| int ds4_gpu_moe_handoff_pack_tensor( |
| ds4_gpu_tensor *packed, |
| const ds4_gpu_tensor *ffn_norm, |
| const ds4_gpu_tensor *selected, |
| const ds4_gpu_tensor *weights, |
| uint32_t n_embd, |
| uint32_t n_expert); |
| int ds4_gpu_pack_slot_rows_f32_tensor( |
| ds4_gpu_tensor *out, |
| const ds4_gpu_tensor *slots, |
| uint32_t n_rows, |
| uint32_t width, |
| uint32_t n_slots, |
| uint32_t slot_cap); |
|
|
| int ds4_gpu_begin_commands(void); |
| int ds4_gpu_flush_encoder(void); |
| int ds4_gpu_flush_commands(void); |
| int ds4_gpu_commands_active(void); |
| int ds4_gpu_signal_selected_readback_ready(uint64_t *event_value); |
| int ds4_gpu_commit_and_wait_selected_readback(uint64_t event_value, const char *label); |
| int ds4_gpu_wait_selected_readback_ready(uint64_t event_value, const char *label); |
| #ifdef DS4_ROCM_BUILD |
| int ds4_gpu_tensor_read_after_selected_event(const ds4_gpu_tensor *tensor, |
| uint64_t offset, |
| void *data, |
| uint64_t bytes, |
| uint64_t event_value, |
| const char *label); |
| #endif |
| int ds4_gpu_end_commands(void); |
| int ds4_gpu_synchronize(void); |
|
|
| int ds4_gpu_set_model_map(const void *model_map, uint64_t model_size); |
| int ds4_gpu_set_model_fd(int fd); |
| int ds4_gpu_set_model_fd_for_map(int fd, const void *model_map); |
| int ds4_gpu_set_model_map_range(const void *model_map, uint64_t model_size, uint64_t map_offset, uint64_t map_size, uint64_t max_tensor_bytes); |
| int ds4_gpu_set_model_map_spans(const void *model_map, uint64_t model_size, const uint64_t *offsets, const uint64_t *sizes, uint32_t count, uint64_t max_tensor_bytes); |
| int ds4_gpu_cache_model_range(const void *model_map, uint64_t model_size, uint64_t offset, uint64_t bytes, const char *label); |
| int ds4_gpu_cache_q8_f16_range(const void *model_map, uint64_t model_size, uint64_t offset, uint64_t bytes, uint64_t in_dim, uint64_t out_dim, const char *label); |
| int ds4_gpu_q8_cache_suppressed(void); |
| void ds4_gpu_set_q8_cache_suppressed(int suppressed); |
| #ifdef DS4_ROCM_BUILD |
| void ds4_gpu_release_q8_f16_cache(void); |
| #endif |
|
|
| |
| |
| #ifndef DS4_MAX_GPUS |
| #define DS4_MAX_GPUS 16 |
| #endif |
| typedef struct { |
| uint64_t source_offset; |
| uint64_t bytes; |
| int target_device; |
| } ds4_tensor_range; |
|
|
| int ds4_gpu_device_cache_tensors(int device_id, |
| const ds4_tensor_range *ranges, |
| int n_ranges); |
| int ds4_gpu_register_support_map(const void *map, uint64_t size, uint64_t bias); |
| int ds4_gpu_device_cache_support_tensors(int device_id, |
| int entry_device_id, |
| const ds4_tensor_range *ranges, |
| int n_ranges, |
| int from_main_map); |
| uint64_t ds4_gpu_tier_free_vram(int logical_tier); |
| int ds4_gpu_lookup_cache(uint64_t source_offset, uint64_t bytes, |
| int *out_device_id, void **out_device_ptr); |
| int ds4_gpu_lookup_cache_device(uint64_t source_offset, uint64_t bytes); |
|
|
| int ds4_gpu_pro_q4_expert_table_auto_available(void); |
| int ds4_gpu_preload_q4_expert_tables(const void *model_map, uint64_t model_size, |
| uint64_t gate_offset, uint64_t up_offset, uint64_t down_offset, |
| uint64_t gate_expert_bytes, uint64_t down_expert_bytes, |
| uint32_t n_total_expert); |
| int ds4_gpu_should_use_managed_kv_cache(uint64_t kv_cache_bytes, uint64_t context_bytes); |
| void ds4_gpu_set_quality(bool quality); |
| void ds4_gpu_set_glm_model(bool enabled); |
| void ds4_gpu_set_ssd_streaming(bool enabled); |
| void ds4_gpu_set_glm_streaming_prefill_full_layer(bool enabled); |
| #ifdef __APPLE__ |
| void ds4_gpu_release_zero_prefix_prefill_mask_cache(void); |
| #endif |
| void ds4_gpu_set_streaming_expert_cache_budget(uint32_t experts); |
| void ds4_gpu_set_streaming_expert_cache_expert_bytes(uint64_t bytes); |
| uint64_t ds4_gpu_recommended_working_set_size(void); |
| uint32_t ds4_gpu_stream_expert_cache_configured_count(void); |
| uint32_t ds4_gpu_stream_expert_cache_current_count(void); |
| typedef struct ds4_gpu_stream_expert_table { |
| const void *model_map; |
| uint64_t model_size; |
| uint32_t layer; |
| uint32_t n_total_expert; |
| uint64_t gate_offset; |
| uint64_t up_offset; |
| uint64_t down_offset; |
| uint64_t gate_expert_bytes; |
| uint64_t down_expert_bytes; |
| } ds4_gpu_stream_expert_table; |
| |
| |
| void ds4_gpu_stream_expert_cache_reset_route_hotness(void); |
| void ds4_gpu_stream_expert_cache_release_resident(void); |
| uint32_t ds4_gpu_stream_expert_cache_budget_for_expert_size( |
| uint64_t gate_expert_bytes, |
| uint64_t down_expert_bytes); |
| int ds4_gpu_stream_expert_cache_seed_selected( |
| const ds4_gpu_stream_expert_table *table, |
| const int32_t *selected_ids, |
| uint32_t n_selected); |
| int ds4_gpu_stream_expert_cache_begin_selected_load( |
| const ds4_gpu_stream_expert_table *table, |
| const int32_t *selected_ids, |
| uint32_t n_selected); |
| int ds4_gpu_glm_stream_expert_cache_begin_selected_load_tensor( |
| const ds4_gpu_stream_expert_table *table, |
| const ds4_gpu_tensor *selected, |
| uint32_t n_selected); |
| #ifdef __APPLE__ |
| |
| |
| |
| void ds4_gpu_stream_expert_cache_note_service_thread(void); |
| #endif |
| #if defined(DS4_ROCM_BUILD) || (!defined(DS4_NO_GPU) && !defined(__APPLE__)) |
| int ds4_gpu_stream_expert_cache_prepare_selected_batch( |
| const ds4_gpu_stream_expert_table *table, |
| const int32_t *selected_ids, |
| uint32_t n_tokens, |
| uint32_t n_selected); |
| #endif |
| #ifdef DS4_ROCM_BUILD |
| int ds4_gpu_stream_expert_cache_load_layer( |
| const ds4_gpu_stream_expert_table *table); |
| int ds4_gpu_stream_expert_cache_seed_from_layer_selected( |
| const ds4_gpu_stream_expert_table *table, |
| const ds4_gpu_tensor *selected, |
| uint32_t n_tokens, |
| uint32_t n_seed_tokens, |
| uint32_t n_selected); |
| int ds4_gpu_stream_expert_cache_release_layer_cache(void); |
| #endif |
| int ds4_gpu_stream_expert_cache_seed_experts( |
| const ds4_gpu_stream_expert_table *table, |
| const int32_t *expert_ids, |
| const uint32_t *expert_priorities, |
| uint32_t n_experts); |
| void ds4_gpu_print_memory_report(const char *label); |
|
|
| |
| |
| |
| int ds4_rocm_warning_count(void); |
|
|
| |
| |
| |
| typedef struct ds4_rocm_model_load_estimate { |
| uint64_t model_bytes; |
| uint64_t ttm_limit_bytes; |
| uint64_t headroom_bytes; |
| int would_have_oomed; |
| int headroom_below_8g; |
| char gguf_magic[8]; |
| uint64_t gguf_tensor_count; |
| } ds4_rocm_model_load_estimate; |
|
|
| const ds4_rocm_model_load_estimate *ds4_rocm_last_model_load_estimate(void); |
|
|
| |
| |
| |
| size_t ds4_gpu_hip_free_bytes(void); |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| typedef int (*ds4_gpu_tp_exchange_fn)(void *ud, uint32_t layer, uint32_t gate, uint64_t seq); |
| |
| |
| int ds4_gpu_tp_init(uint32_t rank, |
| ds4_gpu_tensor *slab, uint64_t gpu_flags_off, |
| ds4_gpu_tp_exchange_fn fn, void *ud); |
| void ds4_gpu_tp_shutdown(void); |
| |
| |
| |
| void ds4_gpu_tp_set_session_batch_mode(int enabled); |
| |
| |
| |
| void ds4_gpu_tp_suspend_expert_sharding(int suspend); |
| int ds4_gpu_tp_gate_encode(uint32_t layer, uint32_t gate); |
| |
| |
| |
| typedef int (*ds4_gpu_tp_batch_exchange_fn)(void *ud, uint32_t layer, |
| uint32_t rows, uint64_t seq); |
| void ds4_gpu_tp_set_batch_exchange(ds4_gpu_tp_batch_exchange_fn fn); |
| int ds4_gpu_tp_batch_gate_encode(uint32_t layer, uint32_t rows); |
| |
| |
| typedef int (*ds4_gpu_tp_big_exchange_fn)(void *ud, uint32_t layer, |
| uint64_t seq, const void *out, |
| void *in, uint64_t bytes); |
| void ds4_gpu_tp_set_big_exchange(ds4_gpu_tp_big_exchange_fn fn); |
| int ds4_gpu_tp_big_gate_encode(uint32_t layer, uint32_t rows, |
| const ds4_gpu_tensor *out_t, |
| ds4_gpu_tensor *in_t, |
| uint64_t bytes); |
| |
| |
| |
| |
| |
| |
| uint64_t ds4_gpu_tp_big_gate_kick(uint32_t layer, uint32_t rows, |
| const ds4_gpu_tensor *out_t, |
| ds4_gpu_tensor *in_t, |
| uint64_t bytes); |
| int ds4_gpu_tp_big_gate_wait(uint64_t seq); |
| |
| |
| void ds4_gpu_tp_keepalive_pause(int paused); |
| |
| |
| |
| |
| void ds4_gpu_tp_set_attn_head_split(int enabled); |
| |
| |
| |
| void ds4_gpu_model_residency_skip(int skip); |
| |
| int ds4_gpu_tp_failed(void); |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| int ds4_gpu_matmul_q8_0_kslice_tensor( |
| ds4_gpu_tensor *out, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t weight_offset, |
| uint64_t full_in_dim, |
| uint64_t k_off, |
| uint64_t k_cnt, |
| uint64_t out_dim, |
| const ds4_gpu_tensor *x, |
| uint64_t x_elem_off); |
| |
| |
| int ds4_gpu_matmul_q8_0_kslice_rows_tensor( |
| ds4_gpu_tensor *out, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t weight_offset, |
| uint64_t full_in_dim, |
| uint64_t out_dim, |
| uint64_t k_off, |
| uint64_t k_cnt, |
| const ds4_gpu_tensor *x, |
| uint64_t n_rows); |
| int ds4_gpu_matmul_quant_kslice_tensor( |
| ds4_gpu_tensor *out, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t weight_offset, |
| uint32_t weight_type, |
| uint64_t full_in_dim, |
| uint64_t k_off, |
| uint64_t k_cnt, |
| uint64_t out_dim, |
| const ds4_gpu_tensor *x, |
| uint64_t x_elem_off); |
| int ds4_gpu_attention_output_q8_tp_tensor( |
| ds4_gpu_tensor *out, |
| ds4_gpu_tensor *low, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t out_a_offset, |
| uint64_t out_b_offset, |
| uint64_t group_dim, |
| uint64_t rank, |
| uint32_t n_groups_total, |
| uint32_t group0, |
| uint32_t group_cnt, |
| uint64_t out_dim, |
| const ds4_gpu_tensor *heads); |
|
|
| |
| |
| |
| |
| |
| |
| |
|
|
| int ds4_gpu_embed_token_hc_tensor( |
| ds4_gpu_tensor *out_hc, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t weight_offset, |
| uint32_t n_vocab, |
| uint32_t token, |
| uint32_t n_embd, |
| uint32_t n_hc); |
|
|
| int ds4_gpu_embed_tokens_hc_tensor( |
| ds4_gpu_tensor *out_hc, |
| const ds4_gpu_tensor *tokens, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t weight_offset, |
| uint32_t n_vocab, |
| uint32_t n_tokens, |
| uint32_t n_embd, |
| uint32_t n_hc); |
|
|
| int ds4_gpu_embed_token_q8_0_tensor( |
| ds4_gpu_tensor *out, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t weight_offset, |
| uint32_t n_vocab, |
| uint32_t token, |
| uint32_t n_embd); |
|
|
| int ds4_gpu_embed_tokens_q8_0_tensor( |
| ds4_gpu_tensor *out, |
| const ds4_gpu_tensor *tokens, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t weight_offset, |
| uint32_t n_vocab, |
| uint32_t n_tokens, |
| uint32_t n_embd); |
|
|
| int ds4_gpu_embed_token_quant_tensor( |
| ds4_gpu_tensor *out, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t weight_offset, |
| uint32_t weight_type, |
| uint32_t n_vocab, |
| uint32_t token, |
| uint32_t n_embd); |
|
|
| int ds4_gpu_embed_tokens_quant_tensor( |
| ds4_gpu_tensor *out, |
| const ds4_gpu_tensor *tokens, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t weight_offset, |
| uint32_t weight_type, |
| uint32_t n_vocab, |
| uint32_t n_tokens, |
| uint32_t n_embd); |
|
|
| int ds4_gpu_indexer_score_one_tensor( |
| ds4_gpu_tensor *scores, |
| const ds4_gpu_tensor *q, |
| const ds4_gpu_tensor *weights, |
| const ds4_gpu_tensor *index_comp, |
| uint32_t n_comp, |
| uint32_t n_head, |
| uint32_t head_dim, |
| float scale); |
|
|
| int ds4_gpu_indexer_scores_prefill_tensor( |
| ds4_gpu_tensor *scores, |
| const ds4_gpu_tensor *q, |
| const ds4_gpu_tensor *weights, |
| const ds4_gpu_tensor *index_comp, |
| uint32_t n_comp, |
| uint32_t n_tokens, |
| uint32_t n_head, |
| uint32_t head_dim, |
| uint32_t ratio, |
| float scale); |
|
|
| int ds4_gpu_indexer_scores_decode_batch_tensor( |
| ds4_gpu_tensor *scores, |
| const ds4_gpu_tensor *q, |
| const ds4_gpu_tensor *weights, |
| const ds4_gpu_tensor *index_comp, |
| uint32_t n_comp, |
| uint32_t n_tokens, |
| uint32_t pos0, |
| uint32_t n_head, |
| uint32_t head_dim, |
| uint32_t ratio, |
| float scale); |
|
|
| int ds4_gpu_dspark_markov_argmax_tensor(ds4_gpu_tensor *out_idx, |
| const ds4_gpu_tensor *logits_row, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t w1_offset, |
| uint64_t w2_offset, |
| uint32_t prev_token, |
| uint32_t vocab, |
| uint32_t rank); |
| int ds4_gpu_indexer_topk_tensor( |
| ds4_gpu_tensor *selected, |
| const ds4_gpu_tensor *scores, |
| uint32_t n_comp, |
| uint32_t n_tokens, |
| uint32_t top_k); |
|
|
| int ds4_gpu_indexer_top1_value_tensor( |
| ds4_gpu_tensor *selected, |
| ds4_gpu_tensor *values, |
| const ds4_gpu_tensor *scores, |
| uint32_t n_comp, |
| uint32_t n_tokens, |
| uint32_t index_offset); |
|
|
| int ds4_gpu_matmul_q8_0_top1_tensor( |
| ds4_gpu_tensor *selected, |
| ds4_gpu_tensor *values, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t weight_offset, |
| uint64_t in_dim, |
| uint64_t out_dim, |
| const ds4_gpu_tensor *x, |
| uint32_t index_offset); |
|
|
| int ds4_gpu_set_decode_fast_attention(int enabled); |
| int ds4_gpu_set_decode_score_vec4(int enabled); |
|
|
| |
| |
| int ds4_gpu_argmax_tensor( |
| ds4_gpu_tensor *out_idx, |
| const ds4_gpu_tensor *logits, |
| uint32_t n_vocab); |
|
|
| int ds4_gpu_dsv4_topk_mask_tensor( |
| ds4_gpu_tensor *mask, |
| const ds4_gpu_tensor *topk, |
| uint32_t n_comp, |
| uint32_t n_tokens, |
| uint32_t top_k); |
|
|
| |
| |
| |
| |
| |
| |
| |
|
|
| int ds4_gpu_matmul_q8_0_tensor( |
| ds4_gpu_tensor *out, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t weight_offset, |
| uint64_t in_dim, |
| uint64_t out_dim, |
| const ds4_gpu_tensor *x, |
| uint64_t n_tok); |
|
|
| int ds4_gpu_matmul_q8_0_decode_mpp_tensor( |
| ds4_gpu_tensor *out, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t weight_offset, |
| uint64_t in_dim, |
| uint64_t out_dim, |
| const ds4_gpu_tensor *x, |
| uint64_t n_tok); |
|
|
| int ds4_gpu_matmul_q8_0_decode_mpp_model_view_tensor( |
| ds4_gpu_tensor *out, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t weight_offset, |
| uint64_t in_dim, |
| uint64_t out_dim, |
| const ds4_gpu_tensor *x, |
| uint64_t n_tok); |
|
|
| int ds4_gpu_matmul_q8_0_rows_scalar_tensor( |
| ds4_gpu_tensor *out, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t weight_offset, |
| uint64_t in_dim, |
| uint64_t out_dim, |
| const ds4_gpu_tensor *x, |
| uint64_t n_tok); |
|
|
| int ds4_gpu_matmul_q4_k_tensor( |
| ds4_gpu_tensor *out, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t weight_offset, |
| uint64_t in_dim, |
| uint64_t out_dim, |
| const ds4_gpu_tensor *x, |
| uint64_t n_tok); |
|
|
| int ds4_gpu_matmul_quant_tensor( |
| ds4_gpu_tensor *out, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t weight_offset, |
| uint32_t weight_type, |
| uint64_t in_dim, |
| uint64_t out_dim, |
| const ds4_gpu_tensor *x, |
| uint64_t n_tok); |
|
|
| int ds4_gpu_matmul_quant_decode_mpp_model_view_tensor( |
| ds4_gpu_tensor *out, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t weight_offset, |
| uint32_t weight_type, |
| uint64_t in_dim, |
| uint64_t out_dim, |
| const ds4_gpu_tensor *x, |
| uint64_t n_tok); |
|
|
| int ds4_gpu_matmul_quant_rows_scalar_tensor( |
| ds4_gpu_tensor *out, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t weight_offset, |
| uint32_t weight_type, |
| uint64_t in_dim, |
| uint64_t out_dim, |
| const ds4_gpu_tensor *x, |
| uint64_t n_tok); |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| int ds4_gpu_matmul_q8_0_pair_tensor( |
| ds4_gpu_tensor *out0, |
| ds4_gpu_tensor *out1, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t weight0_offset, |
| uint64_t weight1_offset, |
| uint64_t in_dim, |
| uint64_t out0_dim, |
| uint64_t out1_dim, |
| const ds4_gpu_tensor *x, |
| uint64_t n_tok); |
|
|
| |
| int ds4_gpu_matmul_q8_0_decode_rows_exact_tensor( |
| ds4_gpu_tensor *out, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t weight_offset, |
| uint64_t in_dim, |
| uint64_t out_dim, |
| const ds4_gpu_tensor *x, |
| uint32_t n_rows); |
| int ds4_gpu_matmul_q8_0_pair_decode_rows_exact_tensor( |
| ds4_gpu_tensor *out0, |
| ds4_gpu_tensor *out1, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t weight0_offset, |
| uint64_t weight1_offset, |
| uint64_t in_dim, |
| uint64_t out0_dim, |
| uint64_t out1_dim, |
| const ds4_gpu_tensor *x, |
| uint32_t n_rows); |
|
|
| int ds4_gpu_matmul_q8_0_f16_out_tensor( |
| ds4_gpu_tensor *out_h, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t weight_offset, |
| uint64_t in_dim, |
| uint64_t out_dim, |
| const ds4_gpu_tensor *x, |
| uint64_t n_tok); |
|
|
| int ds4_gpu_shared_gate_up_swiglu_q8_0_tensor( |
| ds4_gpu_tensor *gate, |
| ds4_gpu_tensor *up, |
| ds4_gpu_tensor *mid, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t gate_offset, |
| uint64_t up_offset, |
| uint64_t in_dim, |
| uint64_t out_dim, |
| const ds4_gpu_tensor *x, |
| float clamp); |
| int ds4_gpu_shared_mid_swiglu_q8_0_decode_exact_tensor( |
| ds4_gpu_tensor *mid, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t gate_offset, |
| uint64_t up_offset, |
| uint64_t in_dim, |
| uint64_t out_dim, |
| const ds4_gpu_tensor *x, |
| float clamp, |
| const ds4_gpu_tensor *selected, |
| const ds4_gpu_tensor *prequant, |
| uint32_t expert_split, |
| bool home_rank); |
|
|
| int ds4_gpu_shared_mid_swiglu_q8_0_tensor( |
| ds4_gpu_tensor *mid, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t gate_offset, |
| uint64_t up_offset, |
| uint64_t in_dim, |
| uint64_t out_dim, |
| const ds4_gpu_tensor *x, |
| float clamp); |
|
|
| int ds4_gpu_shared_gate_up_swiglu_q8_0_model_view_tensor( |
| ds4_gpu_tensor *gate, |
| ds4_gpu_tensor *up, |
| ds4_gpu_tensor *mid, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t gate_offset, |
| uint64_t up_offset, |
| uint64_t in_dim, |
| uint64_t out_dim, |
| const ds4_gpu_tensor *x, |
| float clamp); |
|
|
| int ds4_gpu_shared_gate_up_swiglu_q8_0_rows_tensor( |
| ds4_gpu_tensor *gate, |
| ds4_gpu_tensor *up, |
| ds4_gpu_tensor *mid, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t gate_offset, |
| uint64_t up_offset, |
| uint64_t in_dim, |
| uint64_t out_dim, |
| const ds4_gpu_tensor *x, |
| uint64_t n_tok, |
| float clamp); |
|
|
| int ds4_gpu_shared_gate_up_swiglu_q8_0_rows_scalar_tensor( |
| ds4_gpu_tensor *gate, |
| ds4_gpu_tensor *up, |
| ds4_gpu_tensor *mid, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t gate_offset, |
| uint64_t up_offset, |
| uint64_t in_dim, |
| uint64_t out_dim, |
| const ds4_gpu_tensor *x, |
| uint64_t n_tok, |
| float clamp); |
|
|
| int ds4_gpu_matmul_f16_tensor( |
| ds4_gpu_tensor *out, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t weight_offset, |
| uint64_t in_dim, |
| uint64_t out_dim, |
| const ds4_gpu_tensor *x, |
| uint64_t n_tok); |
|
|
| |
| int ds4_gpu_matmul_f16_router_rows_exact_tensor( |
| ds4_gpu_tensor *out, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t weight_offset, |
| const ds4_gpu_tensor *x, |
| uint32_t n_rows); |
|
|
| int ds4_gpu_matmul_f16_pair_tensor( |
| ds4_gpu_tensor *out_a, |
| ds4_gpu_tensor *out_b, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t weight_a_offset, |
| uint64_t weight_b_offset, |
| uint64_t in_dim, |
| uint64_t out_dim, |
| const ds4_gpu_tensor *x, |
| uint64_t n_tok); |
|
|
| |
| |
| |
| int ds4_gpu_matmul_f16_pair_compressor_store_tensor( |
| ds4_gpu_tensor *out_kv, |
| ds4_gpu_tensor *out_score, |
| ds4_gpu_tensor *state_kv, |
| ds4_gpu_tensor *state_score, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t weight_kv_offset, |
| uint64_t weight_score_offset, |
| uint64_t ape_offset, |
| uint32_t ape_type, |
| uint64_t in_dim, |
| uint32_t width, |
| const ds4_gpu_tensor *x, |
| uint32_t ratio, |
| uint32_t pos); |
|
|
| int ds4_gpu_matmul_f32_tensor( |
| ds4_gpu_tensor *out, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t weight_offset, |
| uint64_t in_dim, |
| uint64_t out_dim, |
| const ds4_gpu_tensor *x, |
| uint64_t n_tok); |
|
|
| int ds4_gpu_matmul_bf16_tensor( |
| ds4_gpu_tensor *out, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t weight_offset, |
| uint64_t in_dim, |
| uint64_t out_dim, |
| const ds4_gpu_tensor *x, |
| uint64_t n_tok); |
|
|
| int ds4_gpu_repeat_hc_tensor( |
| ds4_gpu_tensor *out, |
| const ds4_gpu_tensor *row, |
| uint32_t n_embd, |
| uint32_t n_hc); |
|
|
| int ds4_gpu_repeat_hc_rows_tensor( |
| ds4_gpu_tensor *out, |
| const ds4_gpu_tensor *rows, |
| uint32_t n_tokens, |
| uint32_t n_embd, |
| uint32_t n_hc); |
|
|
| int ds4_gpu_rms_norm_plain_tensor( |
| ds4_gpu_tensor *out, |
| const ds4_gpu_tensor *x, |
| uint32_t n, |
| float eps); |
|
|
| int ds4_gpu_rms_norm_plain_rows_tensor( |
| ds4_gpu_tensor *out, |
| const ds4_gpu_tensor *x, |
| uint32_t n, |
| uint32_t rows, |
| float eps); |
|
|
| int ds4_gpu_rms_norm_weight_tensor( |
| ds4_gpu_tensor *out, |
| const ds4_gpu_tensor *x, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t weight_offset, |
| uint32_t n, |
| float eps); |
|
|
| int ds4_gpu_rms_norm_weight_rows_tensor( |
| ds4_gpu_tensor *out, |
| const ds4_gpu_tensor *x, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t weight_offset, |
| uint32_t n, |
| uint32_t rows, |
| float eps); |
|
|
| int ds4_gpu_add_rms_norm_weight_tensor( |
| ds4_gpu_tensor *norm_out, |
| ds4_gpu_tensor *sum_out, |
| const ds4_gpu_tensor *a, |
| const ds4_gpu_tensor *b, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t weight_offset, |
| uint32_t n, |
| float eps); |
|
|
| int ds4_gpu_dsv4_qkv_rms_norm_rows_tensor( |
| ds4_gpu_tensor *q_out, |
| const ds4_gpu_tensor *q, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t q_weight_offset, |
| uint32_t q_n, |
| ds4_gpu_tensor *kv_out, |
| const ds4_gpu_tensor *kv, |
| uint64_t kv_weight_offset, |
| uint32_t kv_n, |
| uint32_t rows, |
| float eps); |
|
|
| int ds4_gpu_dsv4_qkv_rms_norm_rows_kv_rope_tensor( |
| ds4_gpu_tensor *q_out, |
| const ds4_gpu_tensor *q, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t q_weight_offset, |
| uint32_t q_n, |
| ds4_gpu_tensor *kv_out, |
| const ds4_gpu_tensor *kv, |
| uint64_t kv_weight_offset, |
| uint32_t kv_n, |
| uint32_t rows, |
| uint32_t kv_n_head, |
| uint32_t kv_head_dim, |
| uint32_t n_rot, |
| uint32_t pos0, |
| uint32_t n_ctx_orig, |
| bool inverse, |
| float freq_base, |
| float freq_scale, |
| float ext_factor, |
| float attn_factor, |
| float beta_fast, |
| float beta_slow, |
| float eps); |
|
|
| int ds4_gpu_head_rms_norm_tensor( |
| ds4_gpu_tensor *x, |
| uint32_t n_tok, |
| uint32_t n_head, |
| uint32_t head_dim, |
| float eps); |
|
|
| int ds4_gpu_head_rms_norm_rope_tail_tensor( |
| ds4_gpu_tensor *x, |
| uint32_t n_tok, |
| uint32_t n_head, |
| uint32_t head_dim, |
| uint32_t n_rot, |
| uint32_t pos0, |
| uint32_t n_ctx_orig, |
| bool inverse, |
| float freq_base, |
| float freq_scale, |
| float ext_factor, |
| float attn_factor, |
| float beta_fast, |
| float beta_slow, |
| float eps); |
|
|
| int ds4_gpu_attn_q_b_f16_head_rms_rope_tail_tensor( |
| ds4_gpu_tensor *out, |
| ds4_gpu_tensor *q_half, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t weight_offset, |
| uint64_t in_dim, |
| uint64_t out_dim, |
| const ds4_gpu_tensor *x, |
| uint32_t n_tok, |
| uint32_t n_head, |
| uint32_t head_dim, |
| uint32_t n_rot, |
| uint32_t pos0, |
| uint32_t n_ctx_orig, |
| bool inverse, |
| float freq_base, |
| float freq_scale, |
| float ext_factor, |
| float attn_factor, |
| float beta_fast, |
| float beta_slow, |
| float eps); |
|
|
| int ds4_gpu_dsv4_fp8_kv_quantize_tensor( |
| ds4_gpu_tensor *x, |
| uint32_t n_tok, |
| uint32_t head_dim, |
| uint32_t n_rot); |
|
|
| int ds4_gpu_dsv4_indexer_qat_tensor( |
| ds4_gpu_tensor *x, |
| uint32_t n_rows, |
| uint32_t head_dim); |
|
|
| int ds4_gpu_rope_tail_tensor( |
| ds4_gpu_tensor *x, |
| uint32_t n_tok, |
| uint32_t n_head, |
| uint32_t head_dim, |
| uint32_t n_rot, |
| uint32_t pos0, |
| uint32_t n_ctx_orig, |
| bool inverse, |
| float freq_base, |
| float freq_scale, |
| float ext_factor, |
| float attn_factor, |
| float beta_fast, |
| float beta_slow); |
|
|
| int ds4_gpu_glm_rope_tail_tensor( |
| ds4_gpu_tensor *x, |
| uint32_t n_tokens, |
| uint32_t n_head, |
| uint32_t head_dim, |
| uint32_t rot_dim, |
| uint32_t pos0, |
| uint32_t n_ctx_orig, |
| float freq_base, |
| float freq_scale, |
| float ext_factor, |
| float attn_factor, |
| float beta_fast, |
| float beta_slow); |
|
|
| int ds4_gpu_glm_kv_lora_rms_norm_tensor( |
| ds4_gpu_tensor *out, |
| const ds4_gpu_tensor *kv_raw, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t weight_offset, |
| uint32_t n_tokens, |
| uint32_t kv_raw_dim, |
| uint32_t kv_lora_dim, |
| float eps); |
|
|
| int ds4_gpu_glm_k_b_project_tensor( |
| ds4_gpu_tensor *out, |
| const ds4_gpu_tensor *kv_norm, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t weight_offset, |
| uint32_t n_tokens, |
| uint32_t kv_lora_dim, |
| uint32_t qk_nope, |
| uint32_t n_head); |
|
|
| int ds4_gpu_glm_k_b_project_typed_tensor( |
| ds4_gpu_tensor *out, |
| const ds4_gpu_tensor *kv_norm, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t weight_offset, |
| uint32_t weight_type, |
| uint32_t n_tokens, |
| uint32_t kv_lora_dim, |
| uint32_t qk_nope, |
| uint32_t n_head); |
|
|
| int ds4_gpu_glm_store_compact_kv_tensor( |
| ds4_gpu_tensor *kv_lora_cache, |
| ds4_gpu_tensor *k_rope_cache, |
| const ds4_gpu_tensor *kv_norm, |
| const ds4_gpu_tensor *kv_raw, |
| uint32_t pos0, |
| uint32_t n_tokens, |
| uint32_t cache_cap, |
| uint32_t kv_raw_dim, |
| uint32_t kv_lora_dim, |
| uint32_t qk_rope, |
| bool cache_f16); |
|
|
| int ds4_gpu_glm_qkv_norm_store_compact_kv_tensor( |
| ds4_gpu_tensor *q_out, |
| const ds4_gpu_tensor *q, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t q_weight_offset, |
| uint32_t q_n, |
| ds4_gpu_tensor *kv_lora_cache, |
| ds4_gpu_tensor *k_rope_cache, |
| const ds4_gpu_tensor *kv_raw, |
| uint64_t kv_weight_offset, |
| uint32_t pos0, |
| uint32_t n_tokens, |
| uint32_t cache_cap, |
| uint32_t kv_raw_dim, |
| uint32_t kv_lora_dim, |
| uint32_t qk_rope, |
| bool cache_f16, |
| float eps); |
|
|
| int ds4_gpu_glm_store_indexer_k_tensor( |
| ds4_gpu_tensor *indexer_key_cache, |
| const ds4_gpu_tensor *raw_k, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t weight_offset, |
| uint64_t bias_offset, |
| uint32_t pos0, |
| uint32_t n_tokens, |
| uint32_t cache_cap, |
| uint32_t head_dim, |
| uint32_t rot_dim, |
| uint32_t n_ctx_orig, |
| float eps, |
| float freq_base, |
| float freq_scale, |
| float ext_factor, |
| float attn_factor, |
| float beta_fast, |
| float beta_slow, |
| bool cache_f16); |
|
|
| int ds4_gpu_glm_build_kv_cache_tensor( |
| ds4_gpu_tensor *key_cache, |
| ds4_gpu_tensor *value_cache, |
| const ds4_gpu_tensor *kv_raw, |
| const ds4_gpu_tensor *k_nope, |
| const ds4_gpu_tensor *value, |
| uint32_t pos0, |
| uint32_t n_tokens, |
| uint32_t cache_cap, |
| uint32_t n_head, |
| uint32_t kv_raw_dim, |
| uint32_t kv_lora_dim, |
| uint32_t qk_nope, |
| uint32_t qk_rope, |
| uint32_t value_dim, |
| uint32_t n_ctx_orig, |
| float freq_base, |
| float freq_scale, |
| float ext_factor, |
| float attn_factor, |
| float beta_fast, |
| float beta_slow, |
| bool cache_f16); |
|
|
| int ds4_gpu_glm_build_kv_cache_flash_tensor( |
| ds4_gpu_tensor *key_cache, |
| ds4_gpu_tensor *value_cache, |
| const ds4_gpu_tensor *kv_raw, |
| const ds4_gpu_tensor *k_nope, |
| const ds4_gpu_tensor *value, |
| uint32_t pos0, |
| uint32_t n_tokens, |
| uint32_t cache_cap, |
| uint32_t n_head, |
| uint32_t kv_raw_dim, |
| uint32_t kv_lora_dim, |
| uint32_t qk_nope, |
| uint32_t qk_rope, |
| uint32_t value_dim, |
| uint32_t n_ctx_orig, |
| float freq_base, |
| float freq_scale, |
| float ext_factor, |
| float attn_factor, |
| float beta_fast, |
| float beta_slow, |
| bool cache_f16); |
|
|
| int ds4_gpu_glm_attention_full_tensor( |
| ds4_gpu_tensor *heads, |
| const ds4_gpu_tensor *q, |
| const ds4_gpu_tensor *key_cache, |
| const ds4_gpu_tensor *value_cache, |
| uint32_t pos0, |
| uint32_t n_tokens, |
| uint32_t cache_len, |
| uint32_t cache_cap, |
| uint32_t n_head, |
| uint32_t qk_dim, |
| uint32_t value_dim, |
| bool cache_f16); |
|
|
| int ds4_gpu_glm_fill_selected_range_tensor( |
| ds4_gpu_tensor *selected, |
| uint32_t n_selected); |
|
|
| int ds4_gpu_glm_fill_selected_range_batch_tensor( |
| ds4_gpu_tensor *selected, |
| uint32_t n_tokens, |
| uint32_t pos0, |
| uint32_t n_selected, |
| uint32_t pad_row); |
|
|
| int ds4_gpu_glm_indexer_rope_tail_tensor( |
| ds4_gpu_tensor *x, |
| uint32_t n_tokens, |
| uint32_t n_head, |
| uint32_t head_dim, |
| uint32_t rot_dim, |
| uint32_t pos0, |
| uint32_t n_ctx_orig, |
| float freq_base, |
| float freq_scale, |
| float ext_factor, |
| float attn_factor, |
| float beta_fast, |
| float beta_slow); |
|
|
| int ds4_gpu_glm_indexer_score_one_tensor( |
| ds4_gpu_tensor *scores, |
| const ds4_gpu_tensor *q, |
| const ds4_gpu_tensor *weights, |
| const ds4_gpu_tensor *indexer_key_cache, |
| uint32_t n_rows, |
| uint32_t n_head, |
| uint32_t head_dim, |
| float scale, |
| bool cache_f16); |
|
|
| int ds4_gpu_glm_indexer_scores_batch_tensor( |
| ds4_gpu_tensor *scores, |
| const ds4_gpu_tensor *q, |
| const ds4_gpu_tensor *weights, |
| const ds4_gpu_tensor *indexer_key_cache, |
| uint32_t n_rows, |
| uint32_t n_tokens, |
| uint32_t pos0, |
| uint32_t n_head, |
| uint32_t head_dim, |
| float scale, |
| bool cache_f16); |
|
|
| int ds4_gpu_glm_qk_lowrank_q8_0_tensor( |
| ds4_gpu_tensor *qk_low, |
| const ds4_gpu_tensor *q, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t weight_offset, |
| uint32_t n_head, |
| uint32_t kv_lora_dim, |
| uint32_t qk_nope, |
| uint32_t qk_dim); |
|
|
| int ds4_gpu_glm_qk_lowrank_q8_0_batch_tensor( |
| ds4_gpu_tensor *qk_low, |
| const ds4_gpu_tensor *q, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t weight_offset, |
| uint32_t n_tokens, |
| uint32_t n_head, |
| uint32_t kv_lora_dim, |
| uint32_t qk_nope, |
| uint32_t qk_dim); |
|
|
| int ds4_gpu_glm_qk_lowrank_typed_tensor( |
| ds4_gpu_tensor *qk_low, |
| const ds4_gpu_tensor *q, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t weight_offset, |
| uint32_t weight_type, |
| uint32_t n_head, |
| uint32_t kv_lora_dim, |
| uint32_t qk_nope, |
| uint32_t qk_dim); |
|
|
| int ds4_gpu_glm_qk_lowrank_typed_batch_tensor( |
| ds4_gpu_tensor *qk_low, |
| const ds4_gpu_tensor *q, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t weight_offset, |
| uint32_t weight_type, |
| uint32_t n_tokens, |
| uint32_t n_head, |
| uint32_t kv_lora_dim, |
| uint32_t qk_nope, |
| uint32_t qk_dim); |
|
|
| int ds4_gpu_glm_value_project_q8_0_batch_heads_tensor( |
| ds4_gpu_tensor *heads, |
| const ds4_gpu_tensor *lora, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t weight_offset, |
| uint32_t n_tokens, |
| uint32_t n_head, |
| uint32_t kv_lora_dim, |
| uint32_t value_dim); |
|
|
| int ds4_gpu_glm_value_project_typed_batch_heads_tensor( |
| ds4_gpu_tensor *heads, |
| const ds4_gpu_tensor *lora, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t weight_offset, |
| uint32_t weight_type, |
| uint32_t n_tokens, |
| uint32_t n_head, |
| uint32_t kv_lora_dim, |
| uint32_t value_dim); |
|
|
| int ds4_gpu_glm_attention_indexed_decode_tensor( |
| ds4_gpu_tensor *heads, |
| const ds4_gpu_tensor *q, |
| const ds4_gpu_tensor *qk_low, |
| const ds4_gpu_tensor *kv_lora_cache, |
| const ds4_gpu_tensor *k_rope_cache, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t value_weight_offset, |
| const ds4_gpu_tensor *selected, |
| uint32_t n_selected, |
| uint32_t cache_cap, |
| bool cache_f16, |
| uint32_t n_head, |
| uint32_t kv_lora_dim, |
| uint32_t qk_nope, |
| uint32_t qk_rope, |
| uint32_t value_dim, |
| uint32_t n_ctx_orig, |
| float freq_base, |
| float freq_scale, |
| float ext_factor, |
| float attn_factor, |
| float beta_fast, |
| float beta_slow); |
|
|
| int ds4_gpu_rope_tail_decode_rows_tensor( |
| ds4_gpu_tensor *x, |
| const ds4_gpu_attention_decode_row *rows, |
| uint32_t n_rows, |
| uint32_t n_head, |
| uint32_t head_dim, |
| uint32_t n_rot, |
| uint32_t n_ctx_orig, |
| bool inverse, |
| float freq_base, |
| float freq_scale, |
| float ext_factor, |
| float attn_factor, |
| float beta_fast, |
| float beta_slow); |
|
|
| int ds4_gpu_glm_attention_indexed_decode_typed_tensor( |
| ds4_gpu_tensor *heads, |
| const ds4_gpu_tensor *q, |
| const ds4_gpu_tensor *qk_low, |
| const ds4_gpu_tensor *kv_lora_cache, |
| const ds4_gpu_tensor *k_rope_cache, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t value_weight_offset, |
| uint32_t value_weight_type, |
| const ds4_gpu_tensor *selected, |
| uint32_t n_selected, |
| uint32_t cache_cap, |
| bool cache_f16, |
| uint32_t n_head, |
| uint32_t kv_lora_dim, |
| uint32_t qk_nope, |
| uint32_t qk_rope, |
| uint32_t value_dim, |
| uint32_t n_ctx_orig, |
| float freq_base, |
| float freq_scale, |
| float ext_factor, |
| float attn_factor, |
| float beta_fast, |
| float beta_slow); |
|
|
| int ds4_gpu_glm_attention_indexed_decode_split_group8_tensor( |
| ds4_gpu_tensor *heads, |
| ds4_gpu_tensor *partial_lora, |
| ds4_gpu_tensor *partial_ms, |
| const ds4_gpu_tensor *q, |
| const ds4_gpu_tensor *qk_low, |
| const ds4_gpu_tensor *kv_lora_cache, |
| const ds4_gpu_tensor *k_rope_cache, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t value_weight_offset, |
| const ds4_gpu_tensor *selected, |
| uint32_t n_selected, |
| bool selected_rows_valid, |
| uint32_t cache_cap, |
| bool cache_f16, |
| uint32_t n_head, |
| uint32_t kv_lora_dim, |
| uint32_t qk_nope, |
| uint32_t qk_rope, |
| uint32_t value_dim, |
| uint32_t n_ctx_orig, |
| uint32_t block_rows, |
| uint32_t n_blocks, |
| float freq_base, |
| float freq_scale, |
| float ext_factor, |
| float attn_factor, |
| float beta_fast, |
| float beta_slow); |
|
|
| int ds4_gpu_glm_attention_indexed_decode_split_group8_typed_tensor( |
| ds4_gpu_tensor *heads, |
| ds4_gpu_tensor *partial_lora, |
| ds4_gpu_tensor *partial_ms, |
| const ds4_gpu_tensor *q, |
| const ds4_gpu_tensor *qk_low, |
| const ds4_gpu_tensor *kv_lora_cache, |
| const ds4_gpu_tensor *k_rope_cache, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t value_weight_offset, |
| uint32_t value_weight_type, |
| const ds4_gpu_tensor *selected, |
| uint32_t n_selected, |
| bool selected_rows_valid, |
| uint32_t cache_cap, |
| bool cache_f16, |
| uint32_t n_head, |
| uint32_t kv_lora_dim, |
| uint32_t qk_nope, |
| uint32_t qk_rope, |
| uint32_t value_dim, |
| uint32_t n_ctx_orig, |
| uint32_t block_rows, |
| uint32_t n_blocks, |
| float freq_base, |
| float freq_scale, |
| float ext_factor, |
| float attn_factor, |
| float beta_fast, |
| float beta_slow); |
|
|
| int ds4_gpu_glm_attention_indexed_batch_tensor( |
| ds4_gpu_tensor *heads, |
| const ds4_gpu_tensor *q, |
| const ds4_gpu_tensor *qk_low, |
| const ds4_gpu_tensor *kv_lora_cache, |
| const ds4_gpu_tensor *k_rope_cache, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t value_weight_offset, |
| const ds4_gpu_tensor *selected, |
| uint32_t n_tokens, |
| uint32_t n_selected, |
| uint32_t cache_cap, |
| bool cache_f16, |
| uint32_t n_head, |
| uint32_t kv_lora_dim, |
| uint32_t qk_nope, |
| uint32_t qk_rope, |
| uint32_t value_dim, |
| uint32_t n_ctx_orig, |
| float freq_base, |
| float freq_scale, |
| float ext_factor, |
| float attn_factor, |
| float beta_fast, |
| float beta_slow); |
|
|
| int ds4_gpu_glm_attention_indexed_batch_typed_tensor( |
| ds4_gpu_tensor *heads, |
| const ds4_gpu_tensor *q, |
| const ds4_gpu_tensor *qk_low, |
| const ds4_gpu_tensor *kv_lora_cache, |
| const ds4_gpu_tensor *k_rope_cache, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t value_weight_offset, |
| uint32_t value_weight_type, |
| const ds4_gpu_tensor *selected, |
| uint32_t n_tokens, |
| uint32_t n_selected, |
| uint32_t cache_cap, |
| bool cache_f16, |
| uint32_t n_head, |
| uint32_t kv_lora_dim, |
| uint32_t qk_nope, |
| uint32_t qk_rope, |
| uint32_t value_dim, |
| uint32_t n_ctx_orig, |
| float freq_base, |
| float freq_scale, |
| float ext_factor, |
| float attn_factor, |
| float beta_fast, |
| float beta_slow); |
|
|
| int ds4_gpu_sort_i32_rows_asc_tensor( |
| ds4_gpu_tensor *dst, |
| const ds4_gpu_tensor *src, |
| uint32_t row_width, |
| uint32_t n_rows); |
|
|
| int ds4_gpu_glm_attention_indexed_batch_lora_tensor( |
| ds4_gpu_tensor *lora_out, |
| const ds4_gpu_tensor *q, |
| const ds4_gpu_tensor *qk_low, |
| const ds4_gpu_tensor *kv_lora_cache, |
| const ds4_gpu_tensor *k_rope_cache, |
| const ds4_gpu_tensor *selected, |
| uint32_t n_tokens, |
| uint32_t n_selected, |
| uint32_t cache_cap, |
| bool cache_f16, |
| uint32_t n_head, |
| uint32_t kv_lora_dim, |
| uint32_t qk_nope, |
| uint32_t qk_rope, |
| uint32_t n_ctx_orig, |
| float freq_base, |
| float freq_scale, |
| float ext_factor, |
| float attn_factor, |
| float beta_fast, |
| float beta_slow); |
|
|
| int ds4_gpu_glm_attention_indexed_batch_lora_causal_tensor( |
| ds4_gpu_tensor *lora_out, |
| const ds4_gpu_tensor *q, |
| const ds4_gpu_tensor *qk_low, |
| const ds4_gpu_tensor *kv_lora_cache, |
| const ds4_gpu_tensor *k_rope_cache, |
| uint32_t n_tokens, |
| uint32_t pos0, |
| uint32_t n_selected, |
| uint32_t cache_cap, |
| bool cache_f16, |
| uint32_t n_head, |
| uint32_t kv_lora_dim, |
| uint32_t qk_nope, |
| uint32_t qk_rope, |
| uint32_t n_ctx_orig, |
| float freq_base, |
| float freq_scale, |
| float ext_factor, |
| float attn_factor, |
| float beta_fast, |
| float beta_slow); |
|
|
| int ds4_gpu_glm_attention_indexed_batch_lora_valid_tensor( |
| ds4_gpu_tensor *lora_out, |
| const ds4_gpu_tensor *q, |
| const ds4_gpu_tensor *qk_low, |
| const ds4_gpu_tensor *kv_lora_cache, |
| const ds4_gpu_tensor *k_rope_cache, |
| const ds4_gpu_tensor *selected, |
| uint32_t n_tokens, |
| uint32_t n_selected, |
| uint32_t cache_cap, |
| bool cache_f16, |
| uint32_t n_head, |
| uint32_t kv_lora_dim, |
| uint32_t qk_nope, |
| uint32_t qk_rope, |
| uint32_t n_ctx_orig, |
| float freq_base, |
| float freq_scale, |
| float ext_factor, |
| float attn_factor, |
| float beta_fast, |
| float beta_slow); |
|
|
| int ds4_gpu_glm_attention_flash_staged_tensor( |
| ds4_gpu_tensor *heads, |
| const ds4_gpu_tensor *q, |
| const ds4_gpu_tensor *key_cache, |
| const ds4_gpu_tensor *value_cache, |
| uint32_t pos0, |
| uint32_t n_tokens, |
| uint32_t cache_len, |
| uint32_t cache_cap, |
| uint32_t n_head, |
| uint32_t qk_dim, |
| uint32_t value_dim, |
| bool cache_f16); |
|
|
| int ds4_gpu_glm_attention_flash_tensor( |
| ds4_gpu_tensor *heads, |
| const ds4_gpu_tensor *q, |
| const ds4_gpu_tensor *key_cache, |
| const ds4_gpu_tensor *value_cache, |
| uint32_t pos0, |
| uint32_t n_tokens, |
| uint32_t cache_len, |
| uint32_t cache_cap, |
| uint32_t n_head, |
| uint32_t qk_dim, |
| uint32_t value_dim, |
| bool cache_f16); |
|
|
| |
| |
| |
| int ds4_gpu_kv_fp8_store_raw_tensor( |
| ds4_gpu_tensor *kv, |
| ds4_gpu_tensor *raw_cache, |
| uint32_t raw_cap, |
| uint32_t row, |
| uint32_t head_dim, |
| uint32_t n_rot); |
|
|
| |
| |
| int ds4_gpu_kv_fp8_store_raw_decode_rows_tensor( |
| ds4_gpu_tensor *kv, |
| ds4_gpu_tensor *const *raw_caches, |
| const uint32_t *raw_caps, |
| const uint32_t *raw_rows, |
| uint32_t n_rows, |
| uint32_t head_dim, |
| uint32_t n_rot); |
|
|
| |
| |
| |
| int ds4_gpu_store_raw_kv_tensor( |
| ds4_gpu_tensor *raw_cache, |
| const ds4_gpu_tensor *kv, |
| uint32_t raw_cap, |
| uint32_t row, |
| uint32_t head_dim); |
|
|
| int ds4_gpu_store_raw_kv_batch_tensor( |
| ds4_gpu_tensor *raw_cache, |
| const ds4_gpu_tensor *kv, |
| uint32_t raw_cap, |
| uint32_t pos0, |
| uint32_t n_tokens, |
| uint32_t head_dim); |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| int ds4_gpu_compressor_update_tensor( |
| const ds4_gpu_tensor *kv_cur, |
| const ds4_gpu_tensor *sc_cur, |
| ds4_gpu_tensor *state_kv, |
| ds4_gpu_tensor *state_score, |
| ds4_gpu_tensor *comp_cache, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t ape_offset, |
| uint32_t ape_type, |
| uint64_t norm_offset, |
| uint32_t norm_type, |
| uint32_t head_dim, |
| uint32_t ratio, |
| uint32_t pos, |
| uint32_t comp_row, |
| uint32_t n_rot, |
| uint32_t n_ctx_orig, |
| float freq_base, |
| float freq_scale, |
| float ext_factor, |
| float attn_factor, |
| float beta_fast, |
| float beta_slow, |
| float rms_eps, |
| bool state_already_stored); |
|
|
| int ds4_gpu_compressor_store_batch_tensor( |
| const ds4_gpu_tensor *kv, |
| const ds4_gpu_tensor *sc, |
| ds4_gpu_tensor *state_kv, |
| ds4_gpu_tensor *state_score, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t ape_offset, |
| uint32_t ape_type, |
| uint32_t head_dim, |
| uint32_t ratio, |
| uint32_t pos0, |
| uint32_t n_tokens); |
|
|
| int ds4_gpu_compressor_prefill_tensor( |
| ds4_gpu_tensor *comp_cache, |
| ds4_gpu_tensor *state_kv, |
| ds4_gpu_tensor *state_score, |
| const ds4_gpu_tensor *kv, |
| const ds4_gpu_tensor *sc, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t ape_offset, |
| uint32_t ape_type, |
| uint64_t norm_offset, |
| uint32_t norm_type, |
| uint32_t head_dim, |
| uint32_t ratio, |
| uint32_t pos0, |
| uint32_t n_tokens, |
| uint32_t n_rot, |
| uint32_t n_ctx_orig, |
| bool quantize_fp8, |
| float freq_base, |
| float freq_scale, |
| float ext_factor, |
| float attn_factor, |
| float beta_fast, |
| float beta_slow, |
| float rms_eps); |
|
|
| int ds4_gpu_compressor_prefill_ratio4_replay_tensor( |
| ds4_gpu_tensor *comp_cache, |
| ds4_gpu_tensor *state_kv, |
| ds4_gpu_tensor *state_score, |
| const ds4_gpu_tensor *kv, |
| const ds4_gpu_tensor *sc, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t ape_offset, |
| uint32_t ape_type, |
| uint64_t norm_offset, |
| uint32_t norm_type, |
| uint32_t head_dim, |
| uint32_t pos0, |
| uint32_t n_tokens, |
| uint32_t n_rot, |
| uint32_t n_ctx_orig, |
| bool quantize_fp8, |
| float freq_base, |
| float freq_scale, |
| float ext_factor, |
| float attn_factor, |
| float beta_fast, |
| float beta_slow, |
| float rms_eps); |
|
|
| int ds4_gpu_compressor_prefill_state_ratio4_tensor( |
| ds4_gpu_tensor *state_kv, |
| ds4_gpu_tensor *state_score, |
| const ds4_gpu_tensor *kv_tail, |
| const ds4_gpu_tensor *sc_tail, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t ape_offset, |
| uint32_t ape_type, |
| uint32_t head_dim, |
| uint32_t pos0); |
|
|
| int ds4_gpu_attention_decode_heads_tensor( |
| ds4_gpu_tensor *heads, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t sinks_offset, |
| const ds4_gpu_tensor *q, |
| const ds4_gpu_tensor *raw_kv, |
| uint32_t n_raw, |
| uint32_t raw_cap, |
| uint32_t raw_start, |
| const ds4_gpu_tensor *comp_kv, |
| uint32_t comp_kv_f16, |
| uint32_t n_comp, |
| const ds4_gpu_tensor *comp_mask, |
| uint32_t use_mask, |
| uint32_t n_head, |
| uint32_t head_dim); |
|
|
| int ds4_gpu_attention_decode_heads_rope_tensor( |
| ds4_gpu_tensor *heads, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t sinks_offset, |
| const ds4_gpu_tensor *q, |
| const ds4_gpu_tensor *raw_kv, |
| uint32_t n_raw, |
| uint32_t raw_cap, |
| uint32_t raw_start, |
| const ds4_gpu_tensor *comp_kv, |
| uint32_t comp_kv_f16, |
| uint32_t n_comp, |
| const ds4_gpu_tensor *comp_mask, |
| uint32_t use_mask, |
| uint32_t n_head, |
| uint32_t head_dim, |
| uint32_t n_rot, |
| uint32_t pos0, |
| uint32_t n_ctx_orig, |
| float freq_base, |
| float freq_scale, |
| float ext_factor, |
| float attn_factor, |
| float beta_fast, |
| float beta_slow, |
| int *fused_inv_rope); |
|
|
| |
| |
| |
| int ds4_gpu_attention_decode_rows_rope_tensor( |
| ds4_gpu_tensor *heads, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t sinks_offset, |
| const ds4_gpu_tensor *q, |
| const ds4_gpu_attention_decode_row *rows, |
| uint32_t n_rows, |
| uint32_t n_head, |
| uint32_t head_dim, |
| uint32_t n_rot, |
| uint32_t n_ctx_orig, |
| float freq_base, |
| float freq_scale, |
| float ext_factor, |
| float attn_factor, |
| float beta_fast, |
| float beta_slow); |
| |
| |
| |
| int ds4_gpu_flash_kv_stage_f16_tensor( |
| ds4_gpu_tensor *dst, |
| const ds4_gpu_tensor *raw, |
| uint32_t raw_cap, |
| uint32_t raw_start, |
| uint32_t n_raw, |
| const ds4_gpu_tensor *comp, |
| uint32_t comp_is_f16, |
| uint32_t n_comp, |
| uint32_t head_dim); |
|
|
| int ds4_gpu_attention_prefill_raw_heads_tensor( |
| ds4_gpu_tensor *heads, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t sinks_offset, |
| const ds4_gpu_tensor *q, |
| const ds4_gpu_tensor *raw_kv, |
| uint32_t n_tokens, |
| uint32_t window, |
| uint32_t n_head, |
| uint32_t head_dim); |
|
|
| |
| |
| |
| |
| int ds4_gpu_attention_prefill_raw_heads_range_tensor( |
| ds4_gpu_tensor *heads, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t sinks_offset, |
| const ds4_gpu_tensor *q, |
| const ds4_gpu_tensor *raw_kv, |
| uint32_t q_row0, |
| uint32_t n_q, |
| uint32_t n_kv, |
| uint32_t window, |
| uint32_t n_head, |
| uint32_t head_dim); |
|
|
| int ds4_gpu_attention_decode_raw_batch_heads_tensor( |
| ds4_gpu_tensor *heads, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t sinks_offset, |
| const ds4_gpu_tensor *q, |
| const ds4_gpu_tensor *raw_kv, |
| uint32_t n_tokens, |
| uint32_t pos0, |
| uint32_t n_raw, |
| uint32_t raw_cap, |
| uint32_t raw_start, |
| uint32_t window, |
| uint32_t n_head, |
| uint32_t head_dim); |
|
|
| int ds4_gpu_attention_noncausal_raw_batch_heads_tensor( |
| ds4_gpu_tensor *heads, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t sinks_offset, |
| const ds4_gpu_tensor *q, |
| const ds4_gpu_tensor *raw_kv, |
| uint32_t n_tokens, |
| uint32_t n_raw, |
| uint32_t raw_cap, |
| uint32_t raw_start, |
| uint32_t n_head, |
| uint32_t head_dim); |
|
|
| int ds4_gpu_attention_decode_mixed_batch_heads_tensor( |
| ds4_gpu_tensor *heads, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t sinks_offset, |
| const ds4_gpu_tensor *q, |
| const ds4_gpu_tensor *raw_kv, |
| const ds4_gpu_tensor *comp_kv, |
| uint32_t comp_kv_f16, |
| const ds4_gpu_tensor *comp_mask, |
| uint32_t use_comp_mask, |
| uint32_t n_tokens, |
| uint32_t pos0, |
| uint32_t n_raw, |
| uint32_t raw_cap, |
| uint32_t raw_start, |
| uint32_t n_comp, |
| uint32_t window, |
| uint32_t ratio, |
| uint32_t n_head, |
| uint32_t head_dim); |
|
|
| int ds4_gpu_attention_indexed_mixed_batch_heads_tensor( |
| ds4_gpu_tensor *heads, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t sinks_offset, |
| const ds4_gpu_tensor *q, |
| const ds4_gpu_tensor *raw_kv, |
| const ds4_gpu_tensor *comp_kv, |
| uint32_t comp_kv_f16, |
| const ds4_gpu_tensor *topk, |
| uint32_t n_tokens, |
| uint32_t pos0, |
| uint32_t n_raw, |
| uint32_t raw_cap, |
| uint32_t raw_start, |
| uint32_t n_comp, |
| uint32_t top_k, |
| uint32_t window, |
| uint32_t ratio, |
| uint32_t n_head, |
| uint32_t head_dim); |
|
|
| int ds4_gpu_attention_prefill_static_mixed_heads_tensor( |
| ds4_gpu_tensor *heads, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t sinks_offset, |
| const ds4_gpu_tensor *q, |
| const ds4_gpu_tensor *raw_kv, |
| const ds4_gpu_tensor *comp_kv, |
| uint32_t comp_kv_f16, |
| uint32_t n_tokens, |
| uint32_t n_comp, |
| uint32_t window, |
| uint32_t ratio, |
| uint32_t n_head, |
| uint32_t head_dim); |
|
|
| |
| |
| |
| |
| |
| int ds4_gpu_attention_prefill_static_mixed_heads_range_tensor( |
| ds4_gpu_tensor *heads, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t sinks_offset, |
| const ds4_gpu_tensor *q, |
| const ds4_gpu_tensor *raw_kv, |
| const ds4_gpu_tensor *comp_kv, |
| uint32_t comp_kv_f16, |
| uint32_t q_row0, |
| uint32_t n_q, |
| uint32_t n_tokens, |
| uint32_t n_comp, |
| uint32_t window, |
| uint32_t ratio, |
| uint32_t n_head, |
| uint32_t head_dim); |
|
|
| int ds4_gpu_attention_prefill_masked_mixed_heads_tensor( |
| ds4_gpu_tensor *heads, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t sinks_offset, |
| const ds4_gpu_tensor *q, |
| const ds4_gpu_tensor *raw_kv, |
| const ds4_gpu_tensor *comp_kv, |
| uint32_t comp_kv_f16, |
| const ds4_gpu_tensor *comp_mask, |
| uint32_t n_tokens, |
| uint32_t n_comp, |
| uint32_t window, |
| uint32_t ratio, |
| uint32_t n_head, |
| uint32_t head_dim); |
|
|
| int ds4_gpu_attention_output_q8_batch_tensor( |
| ds4_gpu_tensor *out, |
| ds4_gpu_tensor *low, |
| ds4_gpu_tensor *group_tmp, |
| ds4_gpu_tensor *low_tmp, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t out_a_offset, |
| uint64_t out_b_offset, |
| uint64_t group_dim, |
| uint64_t rank, |
| uint32_t n_groups, |
| uint64_t out_dim, |
| const ds4_gpu_tensor *heads, |
| uint32_t n_tokens); |
| int ds4_gpu_attention_output_q4_K_batch_tensor( |
| ds4_gpu_tensor *out, |
| ds4_gpu_tensor *low, |
| ds4_gpu_tensor *group_tmp, |
| ds4_gpu_tensor *low_tmp, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t out_a_offset, |
| uint64_t out_b_offset, |
| uint32_t out_b_type, |
| uint64_t group_dim, |
| uint64_t rank, |
| uint32_t n_groups, |
| uint64_t out_dim, |
| const ds4_gpu_tensor *heads, |
| uint32_t n_tokens); |
|
|
| int ds4_gpu_attention_output_q8_batch_f16_tensor( |
| ds4_gpu_tensor *out_h, |
| ds4_gpu_tensor *low, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t out_a_offset, |
| uint64_t out_b_offset, |
| uint64_t group_dim, |
| uint64_t rank, |
| uint32_t n_groups, |
| uint64_t out_dim, |
| const ds4_gpu_tensor *heads, |
| uint32_t n_tokens); |
|
|
| int ds4_gpu_attention_output_low_q8_tensor( |
| ds4_gpu_tensor *low, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t out_a_offset, |
| uint64_t group_dim, |
| uint64_t rank, |
| uint32_t n_groups, |
| const ds4_gpu_tensor *heads); |
| int ds4_gpu_attention_output_low_q4_K_slice_tensor( |
| ds4_gpu_tensor *low, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t out_a_offset, |
| uint64_t group_dim, |
| uint64_t rank, |
| uint32_t group0, |
| uint32_t group_cnt, |
| const ds4_gpu_tensor *heads); |
|
|
| int ds4_gpu_attention_output_low_q8_rows_exact_tensor( |
| ds4_gpu_tensor *low, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t out_a_offset, |
| uint64_t group_dim, |
| uint64_t rank, |
| uint32_t n_groups_total, |
| uint32_t group0, |
| uint32_t group_cnt, |
| const ds4_gpu_tensor *heads, |
| uint32_t n_rows); |
|
|
| int ds4_gpu_attention_output_q8_tp_tensor( |
| ds4_gpu_tensor *out, |
| ds4_gpu_tensor *low, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t out_a_offset, |
| uint64_t out_b_offset, |
| uint64_t group_dim, |
| uint64_t rank, |
| uint32_t n_groups_total, |
| uint32_t group0, |
| uint32_t group_cnt, |
| uint64_t out_dim, |
| const ds4_gpu_tensor *heads); |
|
|
| |
| |
| |
| |
| |
| |
| |
|
|
| int ds4_gpu_swiglu_tensor( |
| ds4_gpu_tensor *out, |
| const ds4_gpu_tensor *gate, |
| const ds4_gpu_tensor *up, |
| uint32_t n, |
| float clamp, |
| float weight); |
|
|
| int ds4_gpu_add_tensor( |
| ds4_gpu_tensor *out, |
| const ds4_gpu_tensor *a, |
| const ds4_gpu_tensor *b, |
| uint32_t n); |
|
|
| int ds4_gpu_add3_tensor( |
| ds4_gpu_tensor *out, |
| const ds4_gpu_tensor *a, |
| const ds4_gpu_tensor *b, |
| const ds4_gpu_tensor *c, |
| uint32_t n); |
|
|
| int ds4_gpu_directional_steering_project_tensor( |
| ds4_gpu_tensor *x, |
| const ds4_gpu_tensor *directions, |
| uint32_t layer, |
| uint32_t width, |
| uint32_t rows, |
| float scale); |
|
|
| int ds4_gpu_router_select_tensor( |
| ds4_gpu_tensor *selected, |
| ds4_gpu_tensor *weights, |
| ds4_gpu_tensor *probs, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t bias_offset, |
| uint64_t hash_offset, |
| uint32_t hash_rows, |
| uint32_t token, |
| uint32_t n_expert, |
| uint32_t n_expert_used, |
| float expert_weight_scale, |
| uint32_t n_expert_groups, |
| uint32_t n_group_used, |
| bool has_bias, |
| bool hash_mode, |
| const ds4_gpu_tensor *logits); |
|
|
| int ds4_gpu_router_select_batch_tensor( |
| ds4_gpu_tensor *selected, |
| ds4_gpu_tensor *weights, |
| ds4_gpu_tensor *probs, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t bias_offset, |
| uint64_t hash_offset, |
| uint32_t hash_rows, |
| uint32_t n_expert_groups, |
| uint32_t n_group_used, |
| bool has_bias, |
| bool hash_mode, |
| const ds4_gpu_tensor *logits, |
| const ds4_gpu_tensor *tokens, |
| uint32_t n_expert, |
| uint32_t n_expert_used, |
| float expert_weight_scale, |
| uint32_t n_tokens); |
|
|
| int ds4_gpu_glm_router_select_tensor( |
| ds4_gpu_tensor *selected, |
| ds4_gpu_tensor *weights, |
| ds4_gpu_tensor *probs, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t bias_offset, |
| const ds4_gpu_tensor *logits, |
| uint32_t n_expert, |
| uint32_t n_expert_used, |
| float expert_weight_scale); |
|
|
| int ds4_gpu_glm_router_select_batch_tensor( |
| ds4_gpu_tensor *selected, |
| ds4_gpu_tensor *weights, |
| ds4_gpu_tensor *probs, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t bias_offset, |
| const ds4_gpu_tensor *logits, |
| uint32_t n_expert, |
| uint32_t n_expert_used, |
| float expert_weight_scale, |
| uint32_t n_tokens); |
|
|
| int ds4_gpu_glm_routed_moe_one_tensor( |
| ds4_gpu_tensor *out, |
| ds4_gpu_tensor *mid, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t gate_offset, |
| uint64_t up_offset, |
| uint64_t down_offset, |
| uint32_t gate_type, |
| uint32_t up_type, |
| uint32_t down_type, |
| uint64_t gate_expert_bytes, |
| uint64_t gate_row_bytes, |
| uint64_t up_expert_bytes, |
| uint64_t up_row_bytes, |
| uint64_t down_expert_bytes, |
| uint64_t down_row_bytes, |
| uint32_t expert_in_dim, |
| uint32_t expert_mid_dim, |
| uint32_t out_dim, |
| const ds4_gpu_tensor *selected, |
| const ds4_gpu_tensor *weights, |
| uint32_t n_total_expert, |
| uint32_t n_expert, |
| uint32_t layer_index, |
| const ds4_gpu_tensor *x, |
| bool force_resident); |
|
|
| int ds4_gpu_glm_routed_moe_batch_tensor( |
| ds4_gpu_tensor *out, |
| ds4_gpu_tensor *mid, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t gate_offset, |
| uint64_t up_offset, |
| uint64_t down_offset, |
| uint32_t gate_type, |
| uint32_t up_type, |
| uint32_t down_type, |
| uint64_t gate_expert_bytes, |
| uint64_t gate_row_bytes, |
| uint64_t up_expert_bytes, |
| uint64_t up_row_bytes, |
| uint64_t down_expert_bytes, |
| uint64_t down_row_bytes, |
| uint32_t expert_in_dim, |
| uint32_t expert_mid_dim, |
| uint32_t out_dim, |
| const ds4_gpu_tensor *selected, |
| const ds4_gpu_tensor *weights, |
| uint32_t n_total_expert, |
| uint32_t n_expert, |
| uint32_t layer_index, |
| const ds4_gpu_tensor *x, |
| uint32_t n_tokens, |
| uint32_t mid_token_stride, |
| bool force_resident); |
|
|
| int ds4_gpu_glm_routed_moe_batch_direct_scalar_q4_tensor( |
| ds4_gpu_tensor *out, |
| ds4_gpu_tensor *mid, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t gate_offset, |
| uint64_t up_offset, |
| uint64_t down_offset, |
| uint32_t gate_type, |
| uint32_t up_type, |
| uint32_t down_type, |
| uint64_t gate_expert_bytes, |
| uint64_t gate_row_bytes, |
| uint64_t up_expert_bytes, |
| uint64_t up_row_bytes, |
| uint64_t down_expert_bytes, |
| uint64_t down_row_bytes, |
| uint32_t expert_in_dim, |
| uint32_t expert_mid_dim, |
| uint32_t out_dim, |
| const ds4_gpu_tensor *selected, |
| const ds4_gpu_tensor *weights, |
| uint32_t n_total_expert, |
| uint32_t n_expert, |
| uint32_t layer_index, |
| const ds4_gpu_tensor *x, |
| uint32_t n_tokens, |
| uint32_t mid_token_stride); |
|
|
| int ds4_gpu_routed_moe_set_selected_override(const int32_t *selected, uint32_t n_selected); |
| void ds4_gpu_set_glm_mtp_verify_mode(bool enabled); |
|
|
| int ds4_gpu_matmul_q8_0_kslice_hc_expand_add_tensor( |
| ds4_gpu_tensor *out_hc, |
| ds4_gpu_tensor *block_out, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t weight_offset, |
| uint64_t in_dim, |
| uint64_t out_dim, |
| uint64_t in_start, |
| uint64_t in_count, |
| const ds4_gpu_tensor *x, |
| const ds4_gpu_tensor *block_add, |
| const ds4_gpu_tensor *residual_hc, |
| const ds4_gpu_tensor *split, |
| uint32_t n_embd, |
| uint32_t n_hc); |
|
|
| int ds4_gpu_routed_moe_one_owned_tensor( |
| ds4_gpu_tensor *out, |
| ds4_gpu_tensor *gate, |
| ds4_gpu_tensor *up, |
| ds4_gpu_tensor *mid, |
| ds4_gpu_tensor *experts, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t gate_offset, |
| uint64_t up_offset, |
| uint64_t down_offset, |
| uint32_t gate_type, |
| uint32_t down_type, |
| uint64_t gate_expert_bytes, |
| uint64_t gate_row_bytes, |
| uint64_t down_expert_bytes, |
| uint64_t down_row_bytes, |
| uint32_t expert_in_dim, |
| uint32_t expert_mid_dim, |
| uint32_t out_dim, |
| const ds4_gpu_tensor *selected, |
| const ds4_gpu_tensor *weights, |
| uint32_t n_total_expert, |
| uint32_t n_expert, |
| uint32_t resident_expert_base, |
| uint32_t resident_expert_count, |
| float clamp, |
| const ds4_gpu_tensor *x, |
| ds4_gpu_tensor *down_output, |
| bool pack_fixed3, |
| ds4_gpu_tensor *shared_prequant); |
|
|
| int ds4_gpu_routed_moe_batch_owned_tensor( |
| ds4_gpu_tensor *out, |
| ds4_gpu_tensor *gate, |
| ds4_gpu_tensor *up, |
| ds4_gpu_tensor *mid, |
| ds4_gpu_tensor *experts, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t gate_offset, |
| uint64_t up_offset, |
| uint64_t down_offset, |
| uint32_t gate_type, |
| uint32_t down_type, |
| uint64_t gate_expert_bytes, |
| uint64_t gate_row_bytes, |
| uint64_t down_expert_bytes, |
| uint64_t down_row_bytes, |
| uint32_t expert_in_dim, |
| uint32_t expert_mid_dim, |
| uint32_t out_dim, |
| ds4_gpu_tensor *selected, |
| ds4_gpu_tensor *weights, |
| uint32_t n_total_expert, |
| uint32_t n_expert, |
| uint32_t resident_expert_base, |
| uint32_t resident_expert_count, |
| float clamp, |
| const ds4_gpu_tensor *x, |
| uint32_t layer_index, |
| uint32_t n_tokens, |
| bool *mid_is_f16); |
|
|
| int ds4_gpu_routed_moe_owned_slots_combine_tensor( |
| ds4_gpu_tensor *out, |
| const ds4_gpu_tensor *home_slots, |
| const ds4_gpu_tensor *peer_slots, |
| const ds4_gpu_tensor *selected, |
| uint32_t out_dim, |
| uint32_t expert_split); |
|
|
| int ds4_gpu_routed_moe_owned_slots_combine_rows_tensor( |
| ds4_gpu_tensor *out, |
| const ds4_gpu_tensor *home_slots, |
| const ds4_gpu_tensor *peer_slots, |
| const ds4_gpu_tensor *selected, |
| uint32_t out_dim, |
| uint32_t expert_split, |
| uint32_t rows); |
|
|
| int ds4_gpu_routed_moe_owned_packed_combine_tensor( |
| ds4_gpu_tensor *out, |
| const ds4_gpu_tensor *home_slots, |
| const ds4_gpu_tensor *peer_packed, |
| const ds4_gpu_tensor *selected, |
| uint32_t out_dim, |
| uint32_t expert_split); |
|
|
| int ds4_gpu_routed_moe_one_tensor( |
| ds4_gpu_tensor *out, |
| ds4_gpu_tensor *gate, |
| ds4_gpu_tensor *up, |
| ds4_gpu_tensor *mid, |
| ds4_gpu_tensor *experts, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t gate_offset, |
| uint64_t up_offset, |
| uint64_t down_offset, |
| uint32_t gate_type, |
| uint32_t down_type, |
| uint64_t gate_expert_bytes, |
| uint64_t gate_row_bytes, |
| uint64_t down_expert_bytes, |
| uint64_t down_row_bytes, |
| uint32_t expert_in_dim, |
| uint32_t expert_mid_dim, |
| uint32_t out_dim, |
| const ds4_gpu_tensor *selected, |
| const ds4_gpu_tensor *weights, |
| uint32_t n_total_expert, |
| uint32_t n_expert, |
| float clamp, |
| const ds4_gpu_tensor *x, |
| const ds4_gpu_tensor *add_in, |
| uint32_t layer_index, |
| bool force_resident); |
|
|
| int ds4_gpu_routed_moe_batch_tensor( |
| ds4_gpu_tensor *out, |
| ds4_gpu_tensor *gate, |
| ds4_gpu_tensor *up, |
| ds4_gpu_tensor *mid, |
| ds4_gpu_tensor *experts, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t gate_offset, |
| uint64_t up_offset, |
| uint64_t down_offset, |
| uint32_t gate_type, |
| uint32_t down_type, |
| uint64_t gate_expert_bytes, |
| uint64_t gate_row_bytes, |
| uint64_t down_expert_bytes, |
| uint64_t down_row_bytes, |
| uint32_t expert_in_dim, |
| uint32_t expert_mid_dim, |
| uint32_t out_dim, |
| const ds4_gpu_tensor *selected, |
| const ds4_gpu_tensor *weights, |
| uint32_t n_total_expert, |
| uint32_t n_expert, |
| float clamp, |
| const ds4_gpu_tensor *x, |
| uint32_t layer_index, |
| uint32_t n_tokens, |
| bool *mid_is_f16, |
| bool force_resident); |
|
|
| |
| |
| |
| |
| |
| |
| |
|
|
| int ds4_gpu_hc_split_sinkhorn_tensor( |
| ds4_gpu_tensor *out, |
| const ds4_gpu_tensor *mix, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t scale_offset, |
| uint64_t base_offset, |
| uint32_t n_hc, |
| uint32_t sinkhorn_iters, |
| float eps); |
|
|
| int ds4_gpu_hc_weighted_sum_tensor( |
| ds4_gpu_tensor *out, |
| const ds4_gpu_tensor *residual_hc, |
| const ds4_gpu_tensor *weights, |
| uint32_t n_embd, |
| uint32_t n_hc); |
|
|
| int ds4_gpu_hc_weighted_sum_norm_tensor( |
| ds4_gpu_tensor *out, |
| ds4_gpu_tensor *norm_out, |
| const ds4_gpu_tensor *residual_hc, |
| const ds4_gpu_tensor *weights, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t norm_weight_offset, |
| uint32_t n_embd, |
| uint32_t n_hc, |
| float norm_eps); |
|
|
| int ds4_gpu_hc_weighted_sum_split_tensor( |
| ds4_gpu_tensor *out, |
| const ds4_gpu_tensor *residual_hc, |
| const ds4_gpu_tensor *split, |
| uint32_t n_embd, |
| uint32_t n_hc); |
|
|
| |
| |
| int ds4_gpu_hc_split_weighted_sum_tensor( |
| ds4_gpu_tensor *out, |
| ds4_gpu_tensor *split, |
| const ds4_gpu_tensor *mix, |
| const ds4_gpu_tensor *residual_hc, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t scale_offset, |
| uint64_t base_offset, |
| uint32_t n_embd, |
| uint32_t n_hc, |
| uint32_t sinkhorn_iters, |
| float eps); |
|
|
| int ds4_gpu_hc_split_weighted_sum_norm_tensor( |
| ds4_gpu_tensor *out, |
| ds4_gpu_tensor *norm_out, |
| ds4_gpu_tensor *split, |
| const ds4_gpu_tensor *mix, |
| const ds4_gpu_tensor *residual_hc, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t scale_offset, |
| uint64_t base_offset, |
| uint64_t norm_weight_offset, |
| uint32_t n_embd, |
| uint32_t n_hc, |
| uint32_t sinkhorn_iters, |
| float eps, |
| float norm_eps); |
|
|
| |
| |
| |
| int ds4_gpu_hc_rms_scale_project_f16_tensor( |
| ds4_gpu_tensor *out, |
| ds4_gpu_tensor *scale_scratch, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t weight_offset, |
| uint32_t in_dim, |
| uint32_t out_dim, |
| const ds4_gpu_tensor *x, |
| uint32_t n_rows, |
| float eps); |
|
|
| int ds4_gpu_output_hc_weights_tensor( |
| ds4_gpu_tensor *out, |
| const ds4_gpu_tensor *pre, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t scale_offset, |
| uint64_t base_offset, |
| uint32_t n_hc, |
| float eps); |
|
|
| int ds4_gpu_hc_expand_tensor( |
| ds4_gpu_tensor *out_hc, |
| const ds4_gpu_tensor *block_out, |
| const ds4_gpu_tensor *residual_hc, |
| const ds4_gpu_tensor *post, |
| const ds4_gpu_tensor *comb, |
| uint32_t n_embd, |
| uint32_t n_hc); |
| int ds4_gpu_hc_expand_add_tensor( |
| ds4_gpu_tensor *out_hc, |
| const ds4_gpu_tensor *block_out, |
| const ds4_gpu_tensor *block_add, |
| const ds4_gpu_tensor *residual_hc, |
| const ds4_gpu_tensor *post, |
| const ds4_gpu_tensor *comb, |
| uint32_t n_embd, |
| uint32_t n_hc); |
|
|
|
|
| int ds4_gpu_hc_expand_add_tensor( |
| ds4_gpu_tensor *out_hc, |
| const ds4_gpu_tensor *block_out, |
| const ds4_gpu_tensor *block_add, |
| const ds4_gpu_tensor *residual_hc, |
| const ds4_gpu_tensor *post, |
| const ds4_gpu_tensor *comb, |
| uint32_t n_embd, |
| uint32_t n_hc); |
|
|
| int ds4_gpu_hc_expand_split_tensor( |
| ds4_gpu_tensor *out_hc, |
| const ds4_gpu_tensor *block_out, |
| const ds4_gpu_tensor *residual_hc, |
| const ds4_gpu_tensor *split, |
| uint32_t n_embd, |
| uint32_t n_hc); |
|
|
| int ds4_gpu_hc_expand_split_half_tensor( |
| ds4_gpu_tensor *out_hc, |
| const ds4_gpu_tensor *block_out_h, |
| const ds4_gpu_tensor *residual_hc, |
| const ds4_gpu_tensor *split, |
| uint32_t n_embd, |
| uint32_t n_hc); |
|
|
| int ds4_gpu_hc_expand_add_split_tensor( |
| ds4_gpu_tensor *out_hc, |
| const ds4_gpu_tensor *block_out, |
| const ds4_gpu_tensor *block_add, |
| const ds4_gpu_tensor *residual_hc, |
| const ds4_gpu_tensor *split, |
| uint32_t n_embd, |
| uint32_t n_hc); |
|
|
| int ds4_gpu_hc_expand_add_split_half_add_tensor( |
| ds4_gpu_tensor *out_hc, |
| const ds4_gpu_tensor *block_out, |
| const ds4_gpu_tensor *block_add_h, |
| const ds4_gpu_tensor *residual_hc, |
| const ds4_gpu_tensor *split, |
| uint32_t n_embd, |
| uint32_t n_hc); |
|
|
| int ds4_gpu_shared_down_hc_expand_q8_0_tensor( |
| ds4_gpu_tensor *out_hc, |
| ds4_gpu_tensor *shared_out, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t weight_offset, |
| uint64_t in_dim, |
| uint64_t out_dim, |
| const ds4_gpu_tensor *shared_mid, |
| const ds4_gpu_tensor *routed_out, |
| const ds4_gpu_tensor *residual_hc, |
| const ds4_gpu_tensor *split, |
| uint32_t n_embd, |
| uint32_t n_hc); |
|
|
| int ds4_gpu_shared_down_hc_expand_add_q8_0_tensor( |
| ds4_gpu_tensor *out_hc, |
| ds4_gpu_tensor *shared_out, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t weight_offset, |
| uint64_t in_dim, |
| uint64_t out_dim, |
| const ds4_gpu_tensor *shared_mid, |
| const ds4_gpu_tensor *routed_out, |
| const ds4_gpu_tensor *routed_add, |
| const ds4_gpu_tensor *residual_hc, |
| const ds4_gpu_tensor *split, |
| uint32_t n_embd, |
| uint32_t n_hc); |
|
|
| int ds4_gpu_shared_down_hc_expand_owned_q8_0_tensor( |
| ds4_gpu_tensor *out_hc, |
| ds4_gpu_tensor *shared_out, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t weight_offset, |
| uint64_t in_dim, |
| uint64_t out_dim, |
| const ds4_gpu_tensor *shared_mid, |
| const ds4_gpu_tensor *home_slots, |
| const ds4_gpu_tensor *peer_packed, |
| const ds4_gpu_tensor *selected, |
| uint32_t expert_split, |
| const ds4_gpu_tensor *residual_hc, |
| const ds4_gpu_tensor *split, |
| uint32_t n_embd, |
| uint32_t n_hc); |
|
|
| int ds4_gpu_matmul_q8_0_hc_expand_tensor( |
| ds4_gpu_tensor *out_hc, |
| ds4_gpu_tensor *block_out, |
| const void *model_map, |
| uint64_t model_size, |
| uint64_t weight_offset, |
| uint64_t in_dim, |
| uint64_t out_dim, |
| const ds4_gpu_tensor *x, |
| const ds4_gpu_tensor *residual_hc, |
| const ds4_gpu_tensor *split, |
| uint32_t n_embd, |
| uint32_t n_hc); |
|
|
| #ifdef __cplusplus |
| } |
| #endif |
|
|
| #endif |
|
|