Stack Overflow in der Eigen Libary



  • Hallo zusammen,

    ich benutze die Eigen Libary und möchte mithilfe von Maps Arrays in Eigenmatrixen umwandeln

    double realMatrixValues[400*400];
    
     // hier wird die Matrix zu testzwecken befüllt
     MapType map (realMatrixValues,400,400);
    map = map.transpose()*map;
    

    Nun zu meinem Problem Ab der größenordnunf 400x400 kommt ein Stackoverflow, dabei bräuchte ich mindestens 4000*4000 Matrizen. Kann man das irgendwie reparieren oder gibt es eine bessere freie BLAS implementierung als Eigen? Vielen Dank schonmal für alle Antworten.



  • Eigen ist da nicht das Problem. Dein Ansatz, im typischerweise stark begrenzten automatischen Speicher, soviel allozieren zu wollen, ist ... blöd.

    Das

    double realMatrixValues[400*400];
    

    kannst Du durch

    std::vector<double> realMatrixValues (400*400);
    

    ersetzen und später, wo die Adresse benötigt wird, &realMatrixValues[0] einsetzen. Ich weiß aber nicht, was du da genau machen willst. Möglicherweise geht das auch noch eleganter.



  • dabei bräuchte ich mindestens 4000*4000 Matrizen.

    Das wären ca 122MB, der Stack ist fast nie größer als 1MB.
    Nimm dazu wie gesagt std::vector.


Anmelden zum Antworten