Exemple #1
0
 public Tensor(Device device, BufferMemory memory, Layout layout, IntPtr ptr)
 {
     Device = device;
     Memory = memory;
     Layout = layout;
     Ptr    = ptr;
 }
Exemple #2
0
        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();
            }
        }
Exemple #3
0
        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));
        }