// internal base func for all makeXXX() functions func makeslice(len_ int, elemsize int) slice { bytes := int64(len_) * int64(elemsize) s := slice{0, len_, len_} if bytes > 0 { s.ptr_ = cu.MemAlloc(bytes) cu.MemsetD8(s.ptr_, 0, bytes) cu.CtxSynchronize() } return s }
// Wrapper for cu.MemAlloc, fatal exit on out of memory. func memAlloc(bytes int64) unsafe.Pointer { defer func() { err := recover() if err == cu.ERROR_OUT_OF_MEMORY { log.Fatal(err) } if err != nil { panic(err) } }() return unsafe.Pointer(cu.MemAlloc(bytes)) }