public void BuildVolumeFromStorageAndShape()
        {
            var shape   = new Shape(2, 2);
            var storage = new Double.VolumeStorage(new[] { 1.0, 2.0, 3.0, 4.0 }, shape, GpuContext.Default);
            var volume  = BuilderInstance <double> .Volume.Build(storage, shape);

            Assert.IsTrue(storage.ToArray().SequenceEqual(volume.Storage.ToArray()));
        }
        public void ClearOnHost()
        {
            int l       = 4080;
            var shape   = new Shape(l);
            var data    = new double[l].Populate(1.0);
            var storage = new Double.VolumeStorage(data, shape, GpuContext.Default);

            //Clear
            storage.Clear();

            // Copy back to host
            storage.CopyToHost();
            Assert.IsTrue(storage.ToArray().All(o => o == 0.0));
        }
        public void CopyToHostAndDevice()
        {
            int l       = 4080;
            var shape   = new Shape(l);
            var data    = new double[l].Populate(1.0);
            var storage = new Double.VolumeStorage(data, shape, GpuContext.Default);

            Assert.IsTrue(data.SequenceEqual(storage.ToArray()));
            Assert.AreEqual(DataLocation.Host, storage.Location);

            // Copy to device
            storage.CopyToDevice();
            Assert.AreEqual(DataLocation.Device, storage.Location);

            // Copy back to host
            storage.CopyToHost();
            Assert.IsTrue(data.SequenceEqual(storage.ToArray()));
            Assert.AreEqual(DataLocation.Host, storage.Location);
        }