Spaces:
Running on Zero
Running on Zero
File size: 1,097 Bytes
80e5f6d | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | #include "ggml-et-memops.h"
#include "ggml-et-kernels.h"
#include "ggml-impl.h"
// Kernel parameter structure for memset operation
struct memset_params {
uint32_t op_type; // GGML_ET_MEMOP_MEMSET
uint32_t value; // Value to set (extended to uint32_t for alignment)
void * dst_ptr; // Destination device pointer
size_t size; // Number of bytes to set
};
bool ggml_et_memset(ggml_backend_et_device_context * dev_ctx, void * dst_ptr, uint8_t value, size_t size) {
if (!dev_ctx || !dst_ptr || size == 0) {
GGML_LOG_ERROR("ET: Invalid memset parameters\n");
return false;
}
// Prepare kernel parameters
memset_params params;
params.op_type = GGML_ET_MEMOP_MEMSET;
params.value = value;
params.dst_ptr = dst_ptr;
params.size = size;
// Launch memops kernel (will lazy-load if not already loaded)
bool success = ggml_et_launch_kernel(dev_ctx, "memops", ¶ms, sizeof(params));
if (!success) {
GGML_LOG_ERROR("ET: memset kernel launch failed\n");
return false;
}
return true;
}
|