Déclaration d'une matrice avec une grande taille 65000x65000

Fermé
brahim1988 Messages postés 170 Date d'inscription jeudi 10 février 2011 Statut Membre Dernière intervention 18 mai 2020 - 15 juin 2014 à 00:36
sambia39 Messages postés 610 Date d'inscription vendredi 31 juillet 2009 Statut Membre Dernière intervention 9 février 2023 - 26 juin 2014 à 21:19
bonjour tous le monde

j'arrive pas a déclarer une matrice de 65000x65000!! y'a t-il une idée une idée pour cela?
merci d'avance

2 réponses

ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 228
Modifié par gravgun le 15/06/2014 à 00:44
'lut, en considérant que le contenu de ta matrice c'est des entiers de 32 bits ou nombres flottants précision simple, ça nous fait
65000*65000*4
...
= 16900000000 octets = 16.9 Go

Bonne chance! Déjà faut avoir la RAM pour, puis faut un PC 64 bits.
Et quoi qu'il en soit je pense que ça sera très difficile d'allouer tout ça...
Je ne sais pas pourquoi tu veux une matrice si grande, mais je te conseille vivement de mettre cette matrice en morceaux, quelle que soit l'utilisation. Si tu programmes pour un système UNIX (Linux, MacOS, ...) tu peux tenter
mmap
qui te permettra d'allouer tout ça. Sur Windows, en revanche, je sais pas trop, regarde sur le MSDN.
from human import idiocy
del idiocy
0
brahim1988 Messages postés 170 Date d'inscription jeudi 10 février 2011 Statut Membre Dernière intervention 18 mai 2020 8
16 juin 2014 à 11:45
bonjour

je l' ai besoin pour déclarer une matrice de distance d'une image (256x256)pxl
donc 2^16 pixels X 2^16 pixels!!
0
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 228
16 juin 2014 à 13:27
Je suis qu'en 1ere (bientot Terminale), mais d'apès ce que j'ai pu lire, les matrices de distance c'est pour avoir la distance entre un ensemble de points... Et ces points, tu les as où? C'est chaque pixel de l'image?
0
brahim1988 Messages postés 170 Date d'inscription jeudi 10 février 2011 Statut Membre Dernière intervention 18 mai 2020 8
16 juin 2014 à 15:07
oui les distances entre chaques pixels avec tous les autres, par exp:
une image(3x3)pixel c-a-d on a 9 pixels et on va faire la matrice de distance comme suit:
p(0,0)=0, p(0,1)=22,......................................p(0,9)=100
p(1.0)=45 p(1,1)=0.........................................p(1,9)=99
.
.
.
.p(9,0)=100 p(9,1)=99................................ ..p(9,9)=0
0
EGP-Swyx Messages postés 6664 Date d'inscription dimanche 18 mars 2012 Statut Contributeur Dernière intervention 7 janvier 2019 625
Modifié par EGP-Swyx le 16/06/2014 à 15:30
Donc t'as 2^16px
Soit 65536px
Donc la matrice fait 65536*65536.

t'as intérêt à bien choisir ton encodage....
char c'est trop court (distance max de 255)
et int c'est trop gros (32bits yahoo)
l'idéal c'est de la coder sur 8 bits.
4Go nécessaire pour éxecuter le truc.
Maintenant si t'es futé et surtout que t'as pas beacoup de ram,tu peux diviser la consommation à mort.

Génère une string de 65536 de long avec des shortint dedans.
65536*4 = 256kio

tu sort ta ligne dans un fichier

Puis tu vas te rendre compte que plus ça va, moins tu vas avoir besoin de calculer.

pour le point 1, tu calcule de 2 à 65536
pour le point 2, tu calcule de 3 à 65536
pour le point 3, tu calcule de 4 à 65536

De ce fait, tu mange de moins en moins de mémoire.
Au final ton tableau ne mangera que a moitié de la mémoire qu'il devrait manger.

J'ai perdu qui?
0
brahim1988 Messages postés 170 Date d'inscription jeudi 10 février 2011 Statut Membre Dernière intervention 18 mai 2020 8
16 juin 2014 à 16:28
mais pour stocker par exemple cette distance "444.2361" dans un fichier txt j'ai besoin de 9ko donc on tous (65536*65536*9)/2 Kio!!!!!
0
EGP-Swyx Messages postés 6664 Date d'inscription dimanche 18 mars 2012 Statut Contributeur Dernière intervention 7 janvier 2019 625
16 juin 2014 à 16:30
tu stocke les distances en float?
0