Je suis actuellement en train d'exécuter une expérience dans laquelle je balaie spatialement une cible et saisis une trace d'oscilloscope à chaque pixel discret. Généralement mes longueurs de trace sont de 200Kpts. Après avoir scanné la totalité de la cible, j'assemble spatialement ces signaux temporels et je rejoue essentiellement un film de ce qui a été scanné. Ma zone de numérisation a une taille de 330 x 220 pixels, de sorte que l'ensemble de données est plus grand que la RAM de l'ordinateur que je dois utiliser. Pour commencer, je sauvegardais chaque trace de l'oscilloscope en tant que tableau numérique, puis, après mon balayage, j'ai terminé le sous-échantillonnage/filtrage, puis j'ai assemblé le film de manière à ne pas rencontrer de problèmes de mémoire. Cependant, je suis maintenant à un point où je ne peux pas sous-échantillonner car un alias se produira et devra donc accéder aux données brutes.Optimisation du jeu de données HDF5 pour la vitesse de lecture/écriture
J'ai commencé à chercher à stocker mon grand bloc de données 3D dans un ensemble de données HDF5 en utilisant H5py. Mon principal problème concerne l'allocation de ma taille de segment. Mes données entrant est perpendiculaire au plan que je voudrais lire dans mes principales options (à ma connaissance) d'écrire mes données sont les suivantes:.
#Fast write Slow read
with h5py.File("test_h5py.hdf5","a") as f:
dset = f.create_dataset("uncompchunk",(height,width,dataLen),chunks = (1,1,dataLen), dtype = 'f')
for i in range(height):
for j in range(width):
dset[i,j,:] = np.random.random(200000)
ou
#Slow write Fast read
with h5py.File("test_h5py.hdf5","a") as f:
dset = f.create_dataset("uncompchunk",(height,width,dataLen),chunks = (height,width,1), dtype = 'f')
for i in range(height):
for j in range(width):
dset[i,j,:] = np.random.random(200000)
est-il d'une certaine manière, je peux optimiser les deux cas, de sorte qu'aucun d'eux n'est horriblement inefficace à exécuter?
Si vous connaissez la taille des ensembles de données à l'avance, et ne veulent pas utiliser la compression, vous pouvez utiliser le stockage contigu (pas de morceaux). Tu ne peux pas essayer ça? – titusjan