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

MATLAB Discussion :

Place en mémoire


Sujet :

MATLAB

  1. #1
    Membre régulier Avatar de thtghgh
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2009
    Messages : 221
    Points : 88
    Points
    88
    Par défaut Place en mémoire
    Bonjour à tous!

    J'ai une question assez pointue (si ce n'est pas le bon endroit pour poster désolé je ne savais pas où en parler).

    J'aimerais savoir, quand on créer une matrice ou un tableau d'entiers (donc codés sur 4 octets), si je crée une matrice 1000*1000 avec Matlab, alors il devra stocker la matrice sur 4*1000*1000 octets = 4 Mo .

    Mais ces 4 Mo, Matlab il les reserve dans la RAM de l'ordinateur qui effectue les calculs ? si non, où les stocke t-il?

    Et comment savoir la taille maximum de données qu'un ordinateur peut stocker (exemple pour moi : j'ai 4 Go de RAM, 500Go de disque dur ... Il y a bien un maximum soit limité par les capacités de mon ordinateur, soit par Matlab...)

    Eclairez moi!

    Merci

  2. #2
    Membre averti

    Inscrit en
    Août 2007
    Messages
    302
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 302
    Points : 352
    Points
    352
    Par défaut
    La memoire allouee n'est pas forcement en ram (cf memoire virtuelle). Sur une architecture 64 bits le maximum theorique de memoire alouable est donc de 2^64 (bien sur ceci est limite par les capacite de l'ordinateur, ie taille du fichier swap).
    D'autre part, la taille maximum d'UNE matrice est fixee, cf: http://www.mathworks.com.au/support/...1100/1110.html.


    Salutations,

    Greg

  3. #3
    Membre régulier Avatar de thtghgh
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2009
    Messages : 221
    Points : 88
    Points
    88
    Par défaut
    Merci pour ses renseignements, mais si je travaille avec des tableaux d'entiers le nombre maximum d'entiers que je peux stocker est de combien?

    Merci

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 316
    Points : 52 948
    Points
    52 948
    Par défaut
    Tu travailles sous Windows ? 32bits ? 64bits ?

    Tes entiers sont de quelle classe : uint8, int8, uint16, int16, uint32, ... ?

  5. #5
    Membre régulier Avatar de thtghgh
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2009
    Messages : 221
    Points : 88
    Points
    88
    Par défaut
    Je travaille sous windows vista 32 bits (4go de ram). Je manipule des entiers relatifs classiques (-5 2 -3 1 etc...)

    J'aimerais donc savoir quelle est le maximum de données que je peux stocker sur Matlab avec ce type de configuration!


    Merci beaucoup!

  6. #6
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 316
    Points : 52 948
    Points
    52 948
    Par défaut
    Prends les valeurs données dans le tableau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    32-bit Windows Vista   ~1643MB   ~1428MB   ~187e6   ~1497e6
    On te dit que la taille maximale théorique d'un tableau en mémoire sera de 1428 Mo (environ)

    Si ce tableau contient des Double (64bits <=> 8 octets), le nombre maxi d'élément sera :

    1428*1024*1024/8 = 187e6 éléments

    Si ce tableau contient des int8 (8bits <=> 1 octets), le nombre maxi d'élément sera :

    1428*1024*1024 = 1497e6 éléments

    Tout ceci reste bien entendu très théorique car (entre autre), les autres process déjà ouvert ne sont pas pris en compte et surtout, on considère qu'aucune variable n'est déjà créée dans MATLAB

    En pratique sous Windows (sous Mac aussi je crois), utilise la commande suivante :

    La quantité de mémoire maxi est donnée à la dernière ligne :
    Largest available memory block is XXXXXX bytes (XXXXX MB) located at address XXXXX

  7. #7
    Membre régulier Avatar de thtghgh
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2009
    Messages : 221
    Points : 88
    Points
    88
    Par défaut
    Le tableau nous renvoi une taille en Bytes, et non en octets il faut donc tout diviser par 8 non?

    Et quand on manipule des entiers relatifs, ils sont codés sur 4 octets c'est bien ca?

  8. #8
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 316
    Points : 52 948
    Points
    52 948
    Par défaut
    Citation Envoyé par thtghgh Voir le message
    Le tableau nous renvoi une taille en Bytes, et non en octets il faut donc tout diviser par 8 non?
    "byte" est (presque) la traduction anglaise de "octet".

    Donc 1 byte vaut (souvent) 1 octet.

    Ne pas confondre avec l'unité "bit" qui est identique en anglais ou en français.

    8 bits = 1 octet = 1 Byte

    Les quantités de mémoire s'expriment généralement en MB (megabyte) ou GB (gigabyte) en anglais soit Mo (méga-octet) et Go (giga-octet) en français

    Citation Envoyé par thtghgh Voir le message
    Et quand on manipule des entiers relatifs, ils sont codés sur 4 octets c'est bien ca?
    Tout dépend de la classe de la variable :

    • int8 => entier codé sur 8 bits, soit 1 octet
    • int16 => entier codé sur 16 bits, soit 2 octets
    • int32 => entier codé sur 32 bits, soit 4 octets


    Pour connaître la classe d'une variable sous MATLAB, il suffit d'utiliser la fonction CLASS

  9. #9
    Membre régulier Avatar de thtghgh
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2009
    Messages : 221
    Points : 88
    Points
    88
    Par défaut
    Merci beaucoup pour toutes ces précisions!

    Dernière question : quel genre de nombre occupe le plus de place en mémoire ? les irrationnels non? (comme pi, sqrt(2) etc...) (je ne parle pas en termes de long chiffres, mais plutot des types de nombres)

    Merci

  10. #10
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 316
    Points : 52 948
    Points
    52 948
    Par défaut
    Citation Envoyé par thtghgh Voir le message
    quel genre de nombre occupe le plus de place en mémoire ?
    Sous MATLAB, ce sont les valeurs codées sur 64bits (8 octets) qui prennent le plus de place.

    Qu'elles soient entières (uint64, int64) ou réelles (double)

  11. #11
    Membre régulier Avatar de thtghgh
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2009
    Messages : 221
    Points : 88
    Points
    88
    Par défaut
    D'acc! Meric beaucoup!

Discussions similaires

  1. place en mémoire d'un programme
    Par clampin dans le forum Débuter
    Réponses: 1
    Dernier message: 17/11/2008, 17h35
  2. place mémoire
    Par sino dans le forum C++
    Réponses: 9
    Dernier message: 03/04/2006, 17h06
  3. comment réserver 1 plus grande place en mémoire ?
    Par jack_hunt dans le forum MFC
    Réponses: 10
    Dernier message: 30/06/2005, 16h08
  4. [SAX] Vitesse contre place en mémoire
    Par Dinaïz dans le forum Format d'échange (XML, JSON...)
    Réponses: 6
    Dernier message: 15/10/2004, 13h37
  5. mysql bouffe de la place en mémoire !
    Par iubito dans le forum Installation
    Réponses: 9
    Dernier message: 05/11/2003, 16h01

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