Unverified Commit cc509a99 authored by Michael Yang's avatar Michael Yang Committed by GitHub
Browse files

Merge pull request #260 from jmorganca/embed-ggml-metal

override ggml-metal if the file is different
parents 6fbb3800 0e79e52d
package llama package llama
import ( import (
"bytes"
"crypto/sha256"
"errors" "errors"
"io" "io"
"log" "log"
...@@ -27,11 +29,37 @@ func initBackend() error { ...@@ -27,11 +29,37 @@ func initBackend() error {
} }
metal := filepath.Join(filepath.Dir(exec), "ggml-metal.metal") metal := filepath.Join(filepath.Dir(exec), "ggml-metal.metal")
if _, err := os.Stat(metal); err != nil { fi, err := os.Stat(metal)
if !errors.Is(err, os.ErrNotExist) { if err != nil && !errors.Is(err, os.ErrNotExist) {
return err return err
} }
if fi != nil {
actual, err := os.Open(metal)
if err != nil {
return err
}
actualSum := sha256.New()
if _, err := io.Copy(actualSum, actual); err != nil {
return err
}
expect, err := fs.Open("ggml-metal.metal")
if err != nil {
return err
}
expectSum := sha256.New()
if _, err := io.Copy(expectSum, expect); err != nil {
return err
}
if bytes.Equal(actualSum.Sum(nil), expectSum.Sum(nil)) {
return nil
}
}
dst, err := os.Create(filepath.Join(filepath.Dir(exec), "ggml-metal.metal")) dst, err := os.Create(filepath.Join(filepath.Dir(exec), "ggml-metal.metal"))
if err != nil { if err != nil {
return err return err
...@@ -47,7 +75,6 @@ func initBackend() error { ...@@ -47,7 +75,6 @@ func initBackend() error {
if _, err := io.Copy(dst, src); err != nil { if _, err := io.Copy(dst, src); err != nil {
return err return err
} }
}
return nil return nil
} }
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment