IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

créer une matrice de grande taille


Sujet :

C++

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    354
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Tunisie

    Informations forums :
    Inscription : Février 2008
    Messages : 354
    Par défaut créer une matrice de grande taille
    Bonjour,
    J'ai besoin d'utiliser une matrice de grandre taille de l'ordre de 1000000 lignes et 1000000 colonnes.
    J'ai utilisé cette classe mais il me génére une erreur à chaque fois à cause de la taille de la matrice.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
     
    class MatrixHD
    {
    public:
        MatrixHD(size_t rows, size_t cols);
        double& operator()(size_t i, size_t j);
        double operator()(size_t i, size_t j) const;
     
    private:
        size_t mRows;
        size_t mCols;
        std::vector<double> mData;
    };
     
    MatrixHD::MatrixHD(size_t rows, size_t cols)
    : mRows(rows),
      mCols(cols),
      mData(rows * cols)
    {
    }
     
    double& MatrixHD::operator()(size_t i, size_t j)
    {
        return mData[i * mCols + j];
    }
     
    double MatrixHD::operator()(size_t i, size_t j) const
    {
        return mData[i * mCols + j];
    }
    Merci pour vos aides

  2. #2
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Bonjour,

    Ta matrice a 10^12 éléments de ~8 octets.

    Soit environ 7,28 To de données. Je pense qu'il faut que tu trouve une autre solution ^^.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    354
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Tunisie

    Informations forums :
    Inscription : Février 2008
    Messages : 354
    Par défaut
    Merci Neckara pour votre réponse. Mais qu'est ce que je peux ajouter au lieu d'une matrice? Est ce que vous pouvez me proposer une solution? EN fait, J'ai un ensemble X (représente les lignes) et Y (représente les colonnes) et pour chaque xiyi j'ai une valeur. Comment je peux représenter ces deux ensembles.
    J'ai utilisé un vecteur mais il m'affiche une erreur de taille.

  4. #4
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Est-ce que tu as une valeur qui revient très très souvent dans ta matrice ?
    Est-ce que tu as des suites de valeurs qui sont assez courante ? (ex : 1 1 1 1 ou 1 2 3 4, etc.)

    Tu ne peux pas stocker 10^12 éléments à moins de te trouver un disque dur de 8To et de l'utiliser comme partition swap

  5. #5
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Deux possibilités : Soit ta matrice est très régulière, et il est possible de trouver des astuces pour la stocker entièrement en mémoire (le plus courant étant une matrice creuse, dont la quasi-totalité des éléments sont nuls). Soit tu ne pourras pas travailler en mémoire, mais tu devras travailler sur disque en ne montant à chaque instant en mémoire que la partie nécessaire à ce que tu veux faire.

    Sachant que, pour donner un ordre de grandeur, si tu ne mets que 1ms de traitement par élément, il te faudra quand même 115 jours pour traiter toutes ces données. Es-tu certain d'avoir besoin de toutes ces données ? Ne peux-tu pas commencer par sous-échantillonner ?
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    354
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Tunisie

    Informations forums :
    Inscription : Février 2008
    Messages : 354
    Par défaut
    En fait, je suis en train d'implémenter l'algorithme softassign. vous trouverez l'algorithme dans ce lien http://www.academia.edu/795043/Softa..._EM-ICP_on_GPU
    Le problème est dans le stockage de la valeur de mij qui est calculé dans la quatrième instruction.
    Le problème est que la valeur de i sera entre 50000 et 1000000 et de même pour j.
    Merci

Discussions similaires

  1. Créer et remplir des matrices de grandes tailles
    Par Haytham_aziz dans le forum Fortran
    Réponses: 5
    Dernier message: 30/05/2010, 17h34
  2. [Débutant] créer une matrice à partir de 2 autres de tailles différentes
    Par chevalvapeur dans le forum MATLAB
    Réponses: 6
    Dernier message: 04/12/2009, 14h57
  3. Réponses: 1
    Dernier message: 26/06/2007, 16h49
  4. Réponses: 4
    Dernier message: 06/06/2007, 13h32
  5. Créer une matrice k-diagonale
    Par Mathusalem dans le forum MATLAB
    Réponses: 6
    Dernier message: 29/05/2006, 11h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo