AccessViolationException: ShoNS.Array.DoubleArray.From( new double[x.Length] )

Soru AccessViolationException: ShoNS.Array.DoubleArray.From( new double[x.Length] )

  • 13 Şubat 2012 Pazartesi 07:16
     
     

    It looks like calling 'From' to convert an array into a DoubleArray will cause an error to be thrown when MultiplyTo is called.

    Test code:

    ShoNS.Array.SparseDoubleArray shoSparse = ShoNS.MathFunc.ArrayRandom.RandomSparseDoubleArray(1000,80);

    ShoNS.Array.DoubleArray tvSho = ShoNS.Array.DoubleArray.Zeros(80, 1);

    ShoNS.Array.DoubleArray xSho = ShoNS.Array.DoubleArray.From( new double[80] ).T;
    tvSho.MultiplyInto( shoSparse, xSho );

    System.AccessViolationException was unhandled
      Message=Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
      Source=ArrayT
      StackTrace:
           at mkl_dcsrmm(SByte* , Int64* , Int64* , Int64* , Double* , SByte* , Double* , Int64* , Int64* , Int64* , Double* , Int64* , Double* , Double* , Int64* )
           at ShoNS.Array.MKLFunc.MKL_csrmm(Boolean transA, Int64 m, Int64 n, Int64 k, Double alpha, Double* a, Int32* rowBegin, Int32* colIndx, Int32 colIndxLen, Double beta, Double* b, Int64 ldb, Double* c, Int64 ldc)
           at ShoNS.Array.SparseArrayImpl<double\,1\,1>.MultiplyInto(Boolean transSparse, Double alpha, INumArray`1 denseArray, Boolean transDense, Double beta, INumArray`1 resultArray)
           at ShoNS.Array.DoubleArray.MultiplyInto(Double alpha, SparseDoubleArray matrixLeft, Boolean transLeft, DoubleArray matrixRight, Boolean transRight, Double beta)
           at ShoNS.Array.DoubleArray.MultiplyInto(SparseDoubleArray matrixLeft, DoubleArray matrixRight)
           at LANSE.CompressedColumnMatrix.SHOParallelMultiplyVectorTo_aaT(Double[] resultVector, Double[] x) in E:\wp_orms\NonOrthogonalSVD _FLOAT\CompressedColumnMatrix.cs:line 378
           at LANSE.NonOrthogonalSVD_AAT.TridiagonalStep(CompressedColumnMatrix matrix, TridiagonalWorkspace& _, Boolean nthStep) in E:\wp_orms\NonOrthogonalSVD _FLOAT\NonOrthogonalSVD_AAT.cs:line 33
           at LANSE.NonOrthogonalSVD_AAT.Tridiagonalize_NoDisk(Int32 desiredEigenvalues, Int32 maxLanczosSteps, Int32 lag, CompressedColumnMatrix matrix) in E:\wp_orms\NonOrthogonalSVD _FLOAT\NonOrthogonalSVD_AAT.cs:line 87
           at LANSE.NonOrthogonalSVD_AAT.Run(String filename, Int32 desiredEigenvalues, Int32 maxLanczosSteps, Int32 lag) in E:\wp_orms\NonOrthogonalSVD _FLOAT\NonOrthogonalSVD_AAT.cs:line 1148
           at LANSE.Program.Main(String[] args) in E:\wp_orms\NonOrthogonalSVD _FLOAT\Program.cs:line 33
           at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
           at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
           at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
           at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
           at System.Threading.ThreadHelper.ThreadStart()
      InnerException: 

Tüm Yanıtlar

  • 13 Şubat 2012 Pazartesi 07:25
     
     

    Also looks like there's a bug in the long signature

    a.MultiplyInto(1.0,b, true, c, true, 1.0);

    If transpose is true, we get an access memory violation. If false, no violation occurs.

  • 27 Mart 2012 Salı 01:14
     
     
    DoubleArray.From(matrix([[1;2;3];[4;5;6;]])) write in this, no error