Bonjour tout le monde,
Je travaille actuellement sur un projet qui consiste à générer des données à partir d'un ensemble de fichiers.
Les données d'entrées sont des fichiers dont la taille peut atteindre le giga et ces fichiers peuvent assez être nombreux (une centaine, on va dire).
Le process consiste à générer N fichiers de sortie, chacun de ce fichiers sera généré en allant chercher ses données dans le set de fichiers en entrée.
Il faut donc parcourir les lignes de chaque fichier de sortie et aller chercher la bonne valeur dans le set d'entrée.
Les données sont en partie localisées (les données proches dans le fichier output seront proches dans le fichier input), et le plus souvent pour un fichier de sortie, les donnée seront situées majoritairement dans un seul fichier d'entrée (mais ce ne sera pas toujours le cas ).
Pour l'instant je fais ça séquentiellement en c++ avec du file mapping sur mes fichiers d'entrée.
Mais j'aimerais optimiser le processus
J'ai envisagé de multithreader mais j'ai peur que d'avoir plusieurs accès fichiers
en même temps soit encore moins performant.
D'où une première question, si je multithread, dois-je m'arranger pour que les thread lisent le même filemap ou bien au contraire qu'ils aillent chercher les infos dans différents filemap?
Dans le 1er cas, je multithread au sein du traitement de fichiers de sortie assez proches, dans le 2eme cas je multithread sur des fichiers de sortie "éloignés" pour éviter que les thread lisent les mêmes fichiers d'entrée.
Dois-je m'orienter vers des solutions GPGPU?
De manière générale, j'aimerais avoir des opinions d'expert sur la bonne stratégie vers laquelle m'orienter...
N'hésitez pas à me dire si mon explication du problème n'est pas assez claire et merci de votre aide!!
Partager