Académique Documents
Professionnel Documents
Culture Documents
Préambule 1 point . Pourquoi le programme récursif avec mémoisation fourni génère-t-il une erreur d’exécution sur
test 5 ?
distanceEdition-recmemo GCA_024498555.1_ASM2449855v1_genomic.fna 77328790 20236404 \
GCF_000001735.4_TAIR10.1_genomic.fna 30808129 19944517
Réponse: Lors de l’execution du test5, le programme demande beaucoup trop de ressources que disponibles. En l’occurence
la mémoire qui doit allouer une matrice beaucoup trop grande en plus du surcoût de récursivité.
Nous avons remarqué que pour calculer une des valeurs de ϕ(i, j), nous n’avons besoin que d’au plus 3 valeurs, en
l’occurrence: ϕ(i+1, j), ϕ(i, j+1) et/ou ϕ(i+1, j+1). Nous pouvons donc n’utiliser qu’un seul tableau de taille N+1
représentant la dernière ligne traitée au lieu d’une matrice de taille (M+1, N+1) en sauvegardant la valeur de ϕ(i, j+1)
ou ϕ(i+1, j+1) (selon le besoin imposé par la position) avant de l’écraser durant le traitement. Nous parcourons le dit
tableau M+1 fois dans le sens du stockage.
En se basant sur l’esprit de l’algortihme de parcours √itératif, et afin de minimiser les défauts de cache, nous avons choisit
de diviser le calcule sur des blocs de tailles au plus Z qui a donné le moindre de défauts de cache. Nous avons donc
choisit d’effectuer le blocking verticalement pour parcourir toute les lignes dans le sens du parcours, en sauvegardant cette
fois-ci les valeurs dont on aura besoin durant le prochain bloc dans un nouveau tableau de taille M.
L’algorithme est similaire à celui utiliser pour le cache aware à un seuil près qui est choisit pour donner le moindre de
défauts de caches.
√ Les deux algorithmes effectuent en effet les mêmes parcours (dans le sens de stockage) par contre le
tableau de taille Z est remplacé par un tableau de taille seuil. Il faut faire attention au choix de ce seuil car la récursivité
entraı̂ne un surcoût.
Analyse expérimetale: commenter les mesures expérimentales par rapport aux coûts théoriques précédents. Quel
algotithme se comporte le mieux avec valgrind et les paramètres proposés, pourquoi ?