mirror of
https://github.com/ollama/ollama.git
synced 2026-10-20 18:41:17 +00:00
Merge 91cd5f837d into c1c536297f
This commit is contained in:
commit
aeccfd9cd5
5 changed files with 76 additions and 5 deletions
30
discover/cpu_aix.go
Normal file
30
discover/cpu_aix.go
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
//go:build aix
|
||||
|
||||
package discover
|
||||
|
||||
/*
|
||||
#include <unistd.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/vminfo.h>
|
||||
*/
|
||||
import "C"
|
||||
import (
|
||||
"fmt"
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
func GetCPUMem() (memInfo, error) {
|
||||
var mem memInfo
|
||||
var vmi C.struct_vminfo
|
||||
if ret := C.vmgetinfo(unsafe.Pointer(&vmi), C.VMINFO, C.sizeof_struct_vminfo); ret != 0 {
|
||||
return mem, fmt.Errorf("vmgetinfo failed: %d", ret)
|
||||
}
|
||||
pageSize := uint64(C.sysconf(C._SC_PAGE_SIZE))
|
||||
mem.TotalMemory = uint64(vmi.memsizepgs) * pageSize
|
||||
mem.FreeMemory = uint64(vmi.numfrb) * pageSize
|
||||
return mem, nil
|
||||
}
|
||||
|
||||
func IsNUMA() bool {
|
||||
return false
|
||||
}
|
||||
|
|
@ -79,17 +79,28 @@ func open(path string, maxArraySize int) (_ *File, err error) {
|
|||
|
||||
switch {
|
||||
case bytes.Equal(f.Magic[:], []byte("GGUF")):
|
||||
f.byteOrder = binary.LittleEndian
|
||||
var version uint32
|
||||
if err := binary.Read(f.reader, binary.LittleEndian, &version); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
// In a Big-Endian GGUF starting with ASCII "GGUF", version 3 is encoded as 0x00000003,
|
||||
// which binary.LittleEndian reads as 0x03000000 (50331648).
|
||||
if version > 0x0000FFFF && (version&0x0000FFFF) == 0 {
|
||||
f.byteOrder = binary.BigEndian
|
||||
f.Version = (version >> 24) | ((version >> 8) & 0x0000FF00) | ((version << 8) & 0x00FF0000) | (version << 24)
|
||||
} else {
|
||||
f.byteOrder = binary.LittleEndian
|
||||
f.Version = version
|
||||
}
|
||||
case bytes.Equal(f.Magic[:], []byte("FUGG")):
|
||||
f.byteOrder = binary.BigEndian
|
||||
if err := binary.Read(f.reader, f.byteOrder, &f.Version); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
default:
|
||||
return nil, fmt.Errorf("%w file type %v", ErrUnsupported, f.Magic)
|
||||
}
|
||||
|
||||
if err := binary.Read(f.reader, f.byteOrder, &f.Version); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if f.Version < 1 {
|
||||
return nil, fmt.Errorf("%w version %v", ErrUnsupported, f.Version)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -520,6 +520,8 @@ func llamaServerLibraryPathEnv() string {
|
|||
return "PATH"
|
||||
case "darwin":
|
||||
return "DYLD_LIBRARY_PATH"
|
||||
case "aix":
|
||||
return "LIBPATH"
|
||||
default:
|
||||
return "LD_LIBRARY_PATH"
|
||||
}
|
||||
|
|
|
|||
7
llm/llm_aix.go
Normal file
7
llm/llm_aix.go
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
package llm
|
||||
|
||||
import (
|
||||
"syscall"
|
||||
)
|
||||
|
||||
var LlamaServerSysProcAttr = &syscall.SysProcAttr{}
|
||||
21
readline/term_aix.go
Normal file
21
readline/term_aix.go
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
//go:build aix
|
||||
|
||||
package readline
|
||||
|
||||
import (
|
||||
"golang.org/x/sys/unix"
|
||||
)
|
||||
|
||||
func getTermios(fd uintptr) (*Termios, error) {
|
||||
t, err := unix.IoctlGetTermios(int(fd), unix.TCGETS)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
termios := Termios(*t)
|
||||
return &termios, nil
|
||||
}
|
||||
|
||||
func setTermios(fd uintptr, termios *Termios) error {
|
||||
t := unix.Termios(*termios)
|
||||
return unix.IoctlSetTermios(int(fd), unix.TCSETS, &t)
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue