A fast, ergonomic and portable tensor library in Nim with a deep learning focus for CPU, GPU and embedded devices via OpenMP, Cuda and OpenCL backends
# What Added a `deleter` field to `CpuStorageObj`, which will be called on `memalloc` field instead of `deallocShared` if not `nil`. # Why This change allows the implementation of memory sharing with other objects. For example, we can acquire memory from some opaque type ``` let x: SomeOpaquePointer = funcFromC(...) var t = newTensorUninit[float]() t.storage.cpuStorageFromBuffer( getData(x), cast[pointer](x), proc(x: pointer) {.noconv.} = let x = cast[SomeOpaquePointer](x); destroyFromC(x)) ``` or we can wrap the tensor's memory into a shared pointer, and make `deleter` to delete a single copy of this pointer. This will facilitate sharing memory owned by tensors between threads. # How A field `deleter: proc(memalloc: pointer) {.noconv, gcsafe, raises: [].}` was added to the `CpuStorageObj`. This field is then used in the destructor.
This issue appears to be discussing a feature request or bug report related to the repository. Based on the content, it seems to be still under discussion. The issue was opened by darkestpigeon and has received 0 comments.