public Tensor(Device device, BufferMemory memory, Layout layout, IntPtr ptr) { Device = device; Memory = memory; Layout = layout; Ptr = ptr; }
public Buffer(Device device, BufferMemory memory, Layout layout, deviceptr <T> ptr) { Device = device; Memory = memory; Layout = layout; Ptr = ptr; switch (Device.Type) { case DeviceType.Gpu: _hptr = null; var dptr = ptr; RawReader = i => dptr.LongGet(i); RawWriter = (i, value) => dptr.LongSet(i, value); break; case DeviceType.Cpu: var hptr = new HostPtrAccessor <T>(memory, ptr); _hptr = hptr; RawReader = hptr.Get; RawWriter = hptr.Set; break; default: throw new ArgumentOutOfRangeException(); } }
public Tensor <T> TempTensor <T>(Shape shape) { if (Context.Type == ContextType.Gpu) { var memoryRcpt = Context.Device.ToGpuDevice().MemoryRepository.Acquire <T>(shape.Length); _deviceMemoryReceipts.Add(memoryRcpt); var memory = memoryRcpt.Memory; var bufferMemory = new BufferMemory(memory, 0L, memory.LongLength); var buffer = new Buffer <T>(Context.Device, bufferMemory, new Layout(shape), memory.Ptr.Reinterpret <T>()); var tensor = new Tensor <T>(buffer); return(tensor); } return(Context.Device.Allocate <T>(shape)); }