25 lines
513 B
Go
25 lines
513 B
Go
|
package llama
|
||
|
|
||
|
// extern const char *ggml_metallib_start;
|
||
|
// extern const char *ggml_metallib_end;
|
||
|
import "C"
|
||
|
|
||
|
import (
|
||
|
_ "embed"
|
||
|
"strings"
|
||
|
"unsafe"
|
||
|
)
|
||
|
|
||
|
//go:embed ggml-common.h
|
||
|
var ggmlCommon string
|
||
|
|
||
|
//go:embed ggml-metal.metal
|
||
|
var ggmlMetal string
|
||
|
|
||
|
func init() {
|
||
|
metal := strings.ReplaceAll(ggmlMetal, `#include "ggml-common.h"`, ggmlCommon)
|
||
|
cMetal := C.CString(metal)
|
||
|
C.ggml_metallib_start = cMetal
|
||
|
C.ggml_metallib_end = (*C.char)(unsafe.Pointer(uintptr(unsafe.Pointer(cMetal)) + uintptr(len(metal))))
|
||
|
}
|