diff --git a/Distribute_computing/GridDynamics_plugins/IO/GridSystemIOExtensions.vb b/Distribute_computing/GridDynamics_plugins/IO/GridSystemIOExtensions.vb index 71b3f26..0a56ffb 100644 --- a/Distribute_computing/GridDynamics_plugins/IO/GridSystemIOExtensions.vb +++ b/Distribute_computing/GridDynamics_plugins/IO/GridSystemIOExtensions.vb @@ -22,9 +22,13 @@ Public Module GridSystemIOExtensions Call writer.Write(B.Length) ' i64 Call writer.Write(B) ' bytes + Call A.Dispose() + Call B.Dispose() + For Each factor In grid.C.Select(Function(cor) cor.B.PopVectorStream(chunkSize)) Call writer.Write(factor.Length) ' i64 Call writer.Write(factor) ' bytes + Call factor.Dispose() Next End Using End Sub @@ -36,6 +40,7 @@ Public Module GridSystemIOExtensions Return ms End Function + Public Function LoadGridSystem(stream As Stream) As GridSystem Using reader As New BinaryDataReader(stream) Dim width% = reader.ReadInt32 diff --git a/Distribute_computing/GridDynamics_plugins/IO/VectorIOExtensions.vb b/Distribute_computing/GridDynamics_plugins/IO/VectorIOExtensions.vb index 92ea808..cde559c 100644 --- a/Distribute_computing/GridDynamics_plugins/IO/VectorIOExtensions.vb +++ b/Distribute_computing/GridDynamics_plugins/IO/VectorIOExtensions.vb @@ -34,27 +34,28 @@ Public Module VectorIOExtensions buffers += ms Next - Using writer As New BinaryDataWriter(save) - writer.Write(chunkSize) - writer.Write(buffers.Count) + Dim writer As New BinaryDataWriter(save) + writer.Write(chunkSize) + writer.Write(buffers.Count) - Dim index As New List(Of (offset&, size&)) - Dim offset As Long = 8 + (8 + 8) * buffers.Count + Dim index As New List(Of (offset&, size&)) + Dim offset As Long = 8 + (8 + 8) * buffers.Count - For Each chunk As MemoryStream In buffers - index += (offset, chunk.Length) - offset += chunk.Length - Next + For Each chunk As MemoryStream In buffers + index += (offset, chunk.Length) + offset += chunk.Length + Next - For Each offsetIndex In index - Call writer.Write(offsetIndex.offset) - Call writer.Write(offsetIndex.size) - Next + For Each offsetIndex In index + Call writer.Write(offsetIndex.offset) + Call writer.Write(offsetIndex.size) + Next - For Each chunk As MemoryStream In buffers - Call writer.Write(chunk) - Next - End Using + For Each chunk As MemoryStream In buffers + Call writer.Write(chunk) + Next + + Call writer.Flush() End Sub diff --git a/Distribute_computing/GridDynamics_plugins/test/Module1.vb b/Distribute_computing/GridDynamics_plugins/test/Module1.vb index f36bf1e..af568bc 100644 --- a/Distribute_computing/GridDynamics_plugins/test/Module1.vb +++ b/Distribute_computing/GridDynamics_plugins/test/Module1.vb @@ -1,11 +1,52 @@ Imports GridDynamics_plugins Imports Microsoft.VisualBasic.Linq +Imports Microsoft.VisualBasic.MachineLearning.Darwinism.NonlinearGridTopology Imports Microsoft.VisualBasic.Math.LinearAlgebra Module Module1 Sub Main() + Call testGrid() + End Sub + + Sub testGrid() + Dim vec As Vector = 22500.Sequence.Select(Function(i) CDbl(i)).AsVector + Dim filePath$ = "./test_grid.dat" + Dim grid As New GridSystem With { + .AC = -999999, + .A = vec, + .C = vec.Sequence _ + .Select(Function(null) + Return New Correlation With {.B = vec, .BC = 9999999} + End Function) _ + .ToArray + } + + Using file = filePath.Open + Call grid.Serialize(file, 2048) + End Using + + Dim newGrid As GridSystem + + Using file = filePath.Open + + newGrid = file.LoadGridSystem + + End Using + + Dim X As Vector = Replicate(1.0E-200, vec.Length).AsVector + + Dim result1 = grid.Evaluate(X) + Dim result2 = grid.Evaluate(X) + + + Console.WriteLine(result1 = result2) + + Pause() + End Sub + + Sub testVector() Dim vec As Vector = 50000.Sequence.Select(Function(i) CDbl(i)).AsVector Dim filePath$ = "./test.dat" @@ -29,7 +70,6 @@ Module Module1 Console.WriteLine(oldSum = newSum) Pause() - End Sub End Module