Nothing
# Test CPU Feature Detection and Tensor Layout Functions
test_that("CPU feature detection functions work", {
# All functions should return logical or integer values without error
expect_type(ggml_cpu_has_sse3(), "logical")
expect_type(ggml_cpu_has_ssse3(), "logical")
expect_type(ggml_cpu_has_avx(), "logical")
expect_type(ggml_cpu_has_avx_vnni(), "logical")
expect_type(ggml_cpu_has_avx2(), "logical")
expect_type(ggml_cpu_has_bmi2(), "logical")
expect_type(ggml_cpu_has_f16c(), "logical")
expect_type(ggml_cpu_has_fma(), "logical")
expect_type(ggml_cpu_has_avx512(), "logical")
expect_type(ggml_cpu_has_avx512_vbmi(), "logical")
expect_type(ggml_cpu_has_avx512_vnni(), "logical")
expect_type(ggml_cpu_has_avx512_bf16(), "logical")
expect_type(ggml_cpu_has_amx_int8(), "logical")
})
test_that("ARM feature detection functions work", {
expect_type(ggml_cpu_has_neon(), "logical")
expect_type(ggml_cpu_has_arm_fma(), "logical")
expect_type(ggml_cpu_has_fp16_va(), "logical")
expect_type(ggml_cpu_has_dotprod(), "logical")
expect_type(ggml_cpu_has_matmul_int8(), "logical")
expect_type(ggml_cpu_has_sve(), "logical")
expect_type(ggml_cpu_get_sve_cnt(), "integer")
expect_type(ggml_cpu_has_sme(), "logical")
})
test_that("Other architecture feature detection works", {
expect_type(ggml_cpu_has_riscv_v(), "logical")
expect_type(ggml_cpu_get_rvv_vlen(), "integer")
expect_type(ggml_cpu_has_vsx(), "logical")
expect_type(ggml_cpu_has_vxe(), "logical")
expect_type(ggml_cpu_has_wasm_simd(), "logical")
expect_type(ggml_cpu_has_llamafile(), "logical")
})
test_that("ggml_cpu_features returns all features", {
features <- ggml_cpu_features()
expect_type(features, "list")
expect_true("sse3" %in% names(features))
expect_true("avx2" %in% names(features))
expect_true("neon" %in% names(features))
expect_true("riscv_v" %in% names(features))
expect_true("llamafile" %in% names(features))
# Should have 28 features total
expect_gte(length(features), 25)
})
test_that("Tensor contiguity functions work", {
ctx <- ggml_init(1024 * 1024)
# Create a contiguous tensor
a <- ggml_new_tensor_2d(ctx, GGML_TYPE_F32, 4, 8)
ggml_set_f32(a, rnorm(32))
# Contiguous tensor tests
expect_true(ggml_is_contiguous_0(a))
expect_true(ggml_is_contiguous_1(a))
expect_true(ggml_is_contiguous_2(a))
expect_true(ggml_is_contiguously_allocated(a))
expect_true(ggml_is_contiguous_rows(a))
# Create a transposed tensor (view, not contiguous at dim 0)
b <- ggml_transpose(ctx, a)
expect_false(ggml_is_contiguous_0(b))
ggml_free(ctx)
})
test_that("Tensor stride comparison works", {
ctx <- ggml_init(1024 * 1024)
a <- ggml_new_tensor_2d(ctx, GGML_TYPE_F32, 4, 8)
b <- ggml_new_tensor_2d(ctx, GGML_TYPE_F32, 4, 8)
c <- ggml_transpose(ctx, a)
# Same shape tensors have same stride
expect_true(ggml_are_same_stride(a, b))
# Transposed tensor has different stride
expect_false(ggml_are_same_stride(a, c))
ggml_free(ctx)
})
test_that("ggml_can_repeat works", {
ctx <- ggml_init(1024 * 1024)
# Small tensor can be repeated to match larger tensor
small <- ggml_new_tensor_1d(ctx, GGML_TYPE_F32, 4)
large <- ggml_new_tensor_2d(ctx, GGML_TYPE_F32, 4, 8)
expect_true(ggml_can_repeat(small, large))
# Cannot repeat if dimensions don't align
wrong <- ggml_new_tensor_1d(ctx, GGML_TYPE_F32, 5)
expect_false(ggml_can_repeat(wrong, large))
ggml_free(ctx)
})
test_that("ggml_count_equal creates graph operation", {
ctx <- ggml_init(1024 * 1024)
a <- ggml_new_tensor_1d(ctx, GGML_TYPE_I32, 10)
b <- ggml_new_tensor_1d(ctx, GGML_TYPE_I32, 10)
# Should create a tensor for the count_equal operation
result <- ggml_count_equal(ctx, a, b)
expect_false(is.null(result))
ggml_free(ctx)
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.