Download rtx/tests/test_sampler_host.c from Snapkitty/sov-kernel-monster: direct link, hf CLI and curl.
- Browser
- Download file 5.86 kB
-
https://huggingface.co/Snapkitty/sov-kernel-monster/resolve/main/rtx/tests/test_sampler_host.c
- Command line
-
hf download hf://Snapkitty/sov-kernel-monster/rtx/tests/test_sampler_host.c
-
curl -L -o test_sampler_host.c https://huggingface.co/Snapkitty/sov-kernel-monster/resolve/main/rtx/tests/test_sampler_host.c
5.86 kB
| /* Host stubs */ | |
| int sov_cuda_memcpy_h2d(void* dst, const void* src, size_t sz) { memcpy(dst,src,sz); return 0; } | |
| int sov_cuda_init(void) { return 0; } | |
| int sov_cuda_load_ptx(const char* p, unsigned int s, void** m) { (void)p;(void)s;(void)m; return 0; } | |
| int sov_cuda_flash_attention(int a,int b,float*c,float*d,float*e,float*f,int*g,int*h,int i,int j) | |
| { (void)a;(void)b;(void)c;(void)d;(void)e;(void)f;(void)g;(void)h;(void)i;(void)j; return 0; } | |
| void* sov_cuda_malloc(size_t s) { (void)s; return 0; } | |
| int sov_scheduler_init(sov_scheduler_t* s) { (void)s; return 0; } | |
| int sov_scheduler_step(sov_scheduler_t* s, void* b, void* k) { (void)s;(void)b;(void)k; return 0; } | |
| int sov_kv_init(void* k, int a, int b, int c, int d, int e) { (void)k;(void)a;(void)b;(void)c;(void)d;(void)e; return 0; } | |
| int sov_kv_allocate_blocks(void* k, int a, int b, int* t) { (void)k;(void)a;(void)b;(void)t; return 0; } | |
| int sov_kv_append_tokens(void* k, int* t, float* kp, float* v, int l, int p) | |
| { (void)k;(void)t;(void)kp;(void)v;(void)l;(void)p; return 0; } | |
| int sov_gguf_load(const char* p, void** c) { (void)p;(void)c; return 0; } | |
| const void* sov_gguf_get_tensor(void* c, const char* n) { (void)c;(void)n; return 0; } | |
| int sov_bft_vote(sov_bft_state_t* b, uint8_t v) { (void)b;(void)v; return 0; } | |
| int sov_bft_check_quorum(const sov_bft_state_t* b) { (void)b; return 0; } | |
| int sov_worm_checkpoint(void* k) { (void)k; return 0; } | |
| int sov_worm_restore(void* k) { (void)k; return 0; } | |
| int sov_set_power_state(sov_power_state_t s) { (void)s; return 0; } | |
| sov_power_state_t sov_get_power_state(void) { return SOV_POWER_ACTIVE; } | |
| int sov_speculative_draft(void* b, int d, void* k) { (void)b;(void)d;(void)k; return 0; } | |
| int sov_speculative_verify(void* d, void* t, int l) { (void)d;(void)t;(void)l; return 0; } | |
| float sov_janet_get(int s) { (void)s; return 0.0f; } | |
| void sov_janet_set(int s, float v) { (void)s;(void)v; } | |
| /* f16 encode helper */ | |
| static uint16_t f32_to_f16(float v) { | |
| uint32_t bits; | |
| memcpy(&bits, &v, 4); | |
| uint16_t sign = (bits >> 16) & 0x8000; | |
| int exp = ((bits >> 23) & 0xff) - 127 + 15; | |
| uint32_t mant = bits & 0x7fffff; | |
| if (exp <= 0) return sign; | |
| if (exp >= 31) return sign | 0x7c00; | |
| return (uint16_t)(sign | ((uint16_t)exp << 10) | (mant >> 13)); | |
| } | |
| static int test_greedy(void) { | |
| float logits[8] = {0.1f,0.5f,0.9f,0.2f,0.3f,0.8f,0.4f,0.6f}; | |
| SOV_ASSERT(sov_sample_greedy(logits, 8) == 2); | |
| SOV_PASS("greedy"); | |
| return 0; | |
| } | |
| static int test_greedy_f16(void) { | |
| uint16_t logits[4] = { f32_to_f16(0.1f), f32_to_f16(5.0f), | |
| f32_to_f16(1.0f), f32_to_f16(2.0f) }; | |
| SOV_ASSERT(sov_sample_greedy_f16(logits, 4) == 1); | |
| SOV_PASS("greedy_f16"); | |
| return 0; | |
| } | |
| static int test_sample_token_greedy(void) { | |
| float logits[4] = {0.0f,5.0f,1.0f,2.0f}; | |
| SOV_ASSERT(sov_sample_token(logits, 4, 0.0f, 1.0f, 0, 0) == 1); | |
| SOV_PASS("sample_token_greedy"); | |
| return 0; | |
| } | |
| static int test_flat_distribution(void) { | |
| static float logits[256]; | |
| uint64_t rng = UINT64_C(0xdeadbeefcafe1234); | |
| int i, tok; | |
| for (i = 0; i < 256; i++) logits[i] = 0.0f; | |
| tok = sov_sample_token(logits, 256, 1.0f, 1.0f, 0, &rng); | |
| SOV_ASSERT(tok >= 0 && tok < 256); | |
| SOV_PASS("flat_distribution"); | |
| return 0; | |
| } | |
| /* top_k=128 uses heapsort path; spike at 100 must always win */ | |
| static int test_topk_heapsort_path(void) { | |
| static float logits[256]; | |
| uint64_t rng = UINT64_C(0x1234567890abcdef); | |
| int i, tok; | |
| for (i = 0; i < 256; i++) logits[i] = -100.0f; | |
| logits[100] = 10.0f; | |
| for (i = 0; i < 50; i++) { | |
| tok = sov_sample_token(logits, 256, 1.0f, 1.0f, 128, &rng); | |
| SOV_ASSERT(tok == 100); | |
| } | |
| SOV_PASS("topk_heapsort_path"); | |
| return 0; | |
| } | |
| /* flat 128-tok dist, top_k=0, top_p=0.75 → tokens 0..95 only, | |
| * and tokens 64..95 must appear (old 64-cap would never reach them) */ | |
| static int test_topk_zero_above_64_reachable(void) { | |
| static float logits[128]; | |
| uint64_t rng = UINT64_C(0xabcdef1234567890); | |
| int i, tok, saw_upper = 0; | |
| for (i = 0; i < 128; i++) logits[i] = 0.0f; | |
| for (i = 0; i < 4096; i++) { | |
| tok = sov_sample_token(logits, 128, 1.0f, 0.75f, 0, &rng); | |
| SOV_ASSERT(tok >= 0 && tok < 96); | |
| if (tok >= 64) saw_upper = 1; | |
| } | |
| SOV_ASSERT(saw_upper); | |
| SOV_PASS("topk_zero_above_64_reachable"); | |
| return 0; | |
| } | |
| static int test_vocab_ceiling(void) { | |
| float one = 1.0f; | |
| SOV_ASSERT(SOV_SAMPLER_MAX_VOCAB == 131072); | |
| SOV_ASSERT(sov_sample_greedy(&one, 131073) == -1); | |
| SOV_PASS("vocab_ceiling"); | |
| return 0; | |
| } | |
| static int test_bad_args(void) { | |
| float logits[4] = {1,2,3,4}; | |
| uint64_t rng = 1, zero = 0; | |
| SOV_ASSERT(sov_sample_greedy(NULL, 4) == -1); | |
| SOV_ASSERT(sov_sample_greedy(logits, 0) == -1); | |
| SOV_ASSERT(sov_sample_token(NULL, 4,1,1,0,&rng) == -1); | |
| SOV_ASSERT(sov_sample_token(logits,4,1,1,-1,&rng) == -1); | |
| SOV_ASSERT(sov_sample_token(logits,4,-1,1,0,&rng) == -1); | |
| SOV_ASSERT(sov_sample_token(logits,4,1,1,0,NULL) == -1); | |
| SOV_ASSERT(sov_sample_token(logits,4,1,1,0,&zero) == -1); | |
| SOV_PASS("bad_args"); | |
| return 0; | |
| } | |
| int main(void) { | |
| int fail = 0; | |
| fail |= test_greedy(); | |
| fail |= test_greedy_f16(); | |
| fail |= test_sample_token_greedy(); | |
| fail |= test_flat_distribution(); | |
| fail |= test_topk_heapsort_path(); | |
| fail |= test_topk_zero_above_64_reachable(); | |
| fail |= test_vocab_ceiling(); | |
| fail |= test_bad_args(); | |
| if (!fail) printf("ALL PASS\n"); | |
| return fail; | |
| } | |