• Aucun résultat trouvé

tris rapides

N/A
N/A
Protected

Academic year: 2022

Partager "tris rapides"

Copied!
6
0
0

Texte intégral

(1)

analyse de trois rapides

19 octobre 2012

R´esum´e

L’objectif est de mettre en ´evidence quelques points importants concer- nant les tris rapides.

1 tris rapides

Il s’agit de trier des tableaux de nombres entiers. On pourra supposer que la taille des tableaux est une puissance de 2.

1. Implanter les tri rapides :quicksort,qsort,fusion, partas.

2. Comparer les performances de ces trois approches.

3. D´eterminer les “facteurs cach´es” des trois implantations en prenant comme unit´e celui du triqsort.

(2)

Fig.1 –quic sorta du mal avec les instances ordonn´ees !

2 cas d´ efavorable

Nous savons que que le tri rapide quick sort trie une table de taillenen un temps proportionnel `a nlogn. Il s’agit d’un r´esultat en moyenne, les pires instances sont les tableaux. . .tri´es !

1. Ecrire une fonction melange(p, n) qui construit un tableau de taille n obtenu en appliquantpn permutations al´eatoires dans un tableau tri´e.

2. Faire des mesures de temps de calcul en fixantn, puis en faisant varierp dans [0,12].

3 optimisation

Une optimisation classique des al- gorithmes r´ecursifs est de stopper la r´ecursion `a une profondeur limite pour

´eviter de backtracker avec des petites instances.

Une implantation efficace du tri des tablaeux de petites taille per- met l’am´eliorer sensiblement les per- formances du tri rapide.

v o i d A ( z ) {

if ( s i z e ( z ) < t h r e s o l d ) f i n a l e ( x )

e l s e {

x , y := s p l i t ( z ) A ( x );

A ( y ) }

(3)

Fig.2 – Efficacit´e du tri par s´election sur les feuilles

1. Modifier votre tri rapide pour trier les tables de petites tailles avec un tri non r´ecursifs : insertion, ou s´election.

2. Faire des mesures de temps de calcul pour mettre en ´evidence le pa- ram´etrage optimal de cette heuristique.

3. Comparer `a la vaveur de seuil utilis´ee dans la fonction qsort de la bi- blioth`eque glibc.

4. Implanter un tri rapide efficace.

Les effets des options de compila- tion -Ox i.e. les optimisations de gcc sont illustr´ees par la table ci-contre.

-O2 Optimiser encore plus. GCC effectue pratiquement toutes les optimisations support´ees qui n’impliquent pas un compromis espace/vitesse. Le compilateur n’effectue pas de d´eroulement des boucles ou de mise en ligne de fonctions.

-O3 Optimiser toujours plus. - O3 active toutes les optimisa-

tions sp´ecifi´ees par -O2 et active

´

egalement les options -finline- functions et -frename-registers.

-O0 -O1 -O2 -O3 O4

0 3.94 2.35 2.07 2.04 2.04 1 3.91 2.35 2.06 2.04 2.02 2 3.83 2.34 2.01 2.02 2.02 3 3.83 2.34 2.03 2.02 2.03 4 3.81 2.35 2.01 2.03 2.03 5 3.82 2.35 2.03 2.05 2.04 6 3.81 2.36 2.02 2.04 2.05 7 3.84 2.37 2.04 2.05 2.07 8 3.86 2.38 2.05 2.08 2.06

(4)

4 parall´ elisation

Si vous n’avez pas eu de difficult´e `a r´epondre aux questions pr´ec´edentes, vous pouvez vous lancer dans l’analyse de la parall´elisation dequick sort. Il s’agit d’utiliser les processus l´egers (thread) de la bibloth`eque glibc, sur une machine SMP.

v o i d A ( int * t , g , d ) {

if ( d - g < s e u i l ) f i n a l e ( t , g , d ) e l s e {

k = s p l i t ( t , g , d A ( t , g , k - 1);

A ( t , k +1 , d ) }

v o i d P ( int * t , g , d , p ) {

if ( p - - == 0 ) A ( t , g , d );

e l s e {

k = s p l i t ( t , g , d );

c r e a t e

P ( t , g , k - 1 , p );

P ( t , k +1 , d , p ) j o i n;

}

La parall´elisation Pde l’algorithmeA est obtenue en lan¸cant des processus l´egers dans les noeuds de petites profondeurs.

PTHREAD CREATE( 3 ) Manuel du programmeur Linux

p t h r e a d c r e a t e − C r e e r un nouveau t h r e a d SYNOPSIS

i n t p t h r e a d c r e a t e ( p t h r e a d t ∗ t i d , p t h r e a d a t t r t ∗ a t t r , v o i d ∗ (∗s t a r t r o u t i n e ) ( v o i d ∗) , v o i d ∗ a r g ) ;

DESCRIPTION

p t h r e a d c r e a t e ( ) c r e e un nouveau t h r e a d s ’ e x e c u t a n t s i m u l t a n e m e n t a v e c l e t h r e a d a p p e l a n t .

PTHREAD JOIN( 3 ) Manuel du programmeur Linux

p t h r e a d j o i n − A t t e n d r e l a f i n d ’ un a u t r e t h r e a d SYNOPSIS

i n t p t h r e a d j o i n ( p t h r e a d t t i d , v o i d ∗∗t h r e a d r e t u r n ) ; DESCRIPTION

p t h r e a d j o i n ( ) s u s p e n d l ’ e x e c u t i o n du t h r e a d a p p e l a n t j u s q u ’ a c e que l e t h r e a d i d e n t i f i e p a r t i d a c h e v e s o n

e x e c u t i o n , s o i t en a p p e l a n t p t h r e a d e x i t ( 3 ) s o i t a p r e s a v o i r e t e a n n u l e .

$ l s c p u

(5)

Fig.3 – threads 4 CPUs (2 coeurs)

Thread ( s ) par c o e u r : 2 Coeur ( s ) par s u p p o r t CPU : 2 Support ( s ) CPU : 1

Noeud ( s ) NUMA : 1

ID du v e n d e u r : G e n u i n e I n t e l F a m i l l e CPU : 6

Modele : 28

V e r s i o n : 2

CPU MHz : 1 5 9 9 . 9 9 6

L1d c a c h e : 24K

L 1 i c a c h e : 32K

L2 c a c h e : 512K

(6)

Fig.4 – threads 24 CPUs, 12coeurs

Références

Documents relatifs

Cette solution laisse d’autre part le temps au maˆıtre de commencer ` a calculer la mise ` a jour de la base de donn´ ees ainsi que de nouveaux lots de s´ equences de fa¸con

Avec des allumettes, tracez les tangentes qui touchent deux pi` eces sans couper la troisi` eme et d´ eterminent un triangle ABC ` a l’int´ erieur duquel se trouvent les trois

In [BBF15], we used projection complexes to embed M CG(Σ) in a finite product of hyperbolic spaces where the Masur–Minsky distance formula was a key ingredient.. We would like to

Vous n’êtes pas une goutte d’eau de l’Océan, mais tout l’Océan contenu dans une goutte d’eau… C’est bien la raison pour laquelle, tout être humain qui s’obstine

[r]

Lorsque c’est possible, il est permis de r´ epondre ` a une question en ayant admis le r´ esultat des questions pr´ ec´ edentes..

Lorsque c’est possible, il est permis de r´ epondre ` a une question en ayant admis le r´ esultat des questions pr´ ec´ edentes..

Lorsque c’est possible, il est permis de r´ epondre ` a une question en ayant admis le r´ esultat des questions pr´ ec´ edentes..