release memory

master
xieguigang 7 years ago
parent a7ce1bf509
commit 85d174259e

@ -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
<Extension>
Public Function LoadGridSystem(stream As Stream) As GridSystem
Using reader As New BinaryDataReader(stream)
Dim width% = reader.ReadInt32

@ -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
<Extension>

@ -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

Loading…
Cancel
Save