llama_darwin.go 512 B

1234567891011121314151617181920212223
  1. package llama
  2. // extern const char *ggml_metallib_start;
  3. // extern const char *ggml_metallib_end;
  4. import "C"
  5. import (
  6. _ "embed"
  7. "strings"
  8. "unsafe"
  9. )
  10. //go:embed ggml-common.h
  11. var ggmlCommon string
  12. //go:embed ggml-metal.metal
  13. var ggmlMetal string
  14. func init() {
  15. metal := strings.ReplaceAll(ggmlMetal, `#include "ggml-common.h"`, ggmlCommon)
  16. cMetal := C.CString(metal)
  17. C.ggml_metallib_start = cMetal
  18. C.ggml_metallib_end = (*C.char)(unsafe.Pointer(uintptr(unsafe.Pointer(cMetal)) + uintptr(len(metal))))
  19. }