4.2.1.1 : Le header vectorized_propagation.h



Écrivons le fichier vectorized_propagation.h :



Comme d'habitude, il faut commencer par définir des macro qui éviterons les inclusions multiples de notre header :

1
2
#ifndef __VECTORIZED_PROPAGATION_H__
#define __VECTORIZED_PROPAGATION_H__


Un petit include des familles :

1
#include <iostream>


Le prototype de notre fonction :

1
2
3
4
void grayscott_propagation(float * __restrict__ poutMatU, float * __restrict__ poutMatV, const float * __restrict__ pmatU, const float * __restrict__ pmatV,
			long nbRow, long nbCol,
			const float * matDeltaSquare, long nbStencilRow, long nbStencilCol,
			float diffudionRateU, float diffusionRateV, float feedRate, float killRate, float dt);


Où :

Et où le mot clé __restrict__ signifie au compilateur que les différents pointeurs passés en paramètres ne se recouvrent pas ce qui lui permet de faire plus d'optimisations.

Et finalement la fin de la condition du préprocesseur :

1
#endif


Le fichier vectorized_propagation.h complet :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/***************************************
	Auteur : Pierre Aubert
	Mail : aubertp7@gmail.com
	Licence : CeCILL-C
****************************************/

#ifndef __VECTORIZED_PROPAGATION_H__
#define __VECTORIZED_PROPAGATION_H__

#include <iostream>

void grayscott_propagation(float * __restrict__ poutMatU, float * __restrict__ poutMatV, const float * __restrict__ pmatU, const float * __restrict__ pmatV,
			long nbRow, long nbCol,
			const float * matDeltaSquare, long nbStencilRow, long nbStencilCol,
			float diffudionRateU, float diffusionRateV, float feedRate, float killRate, float dt);

#endif


Vous pouvez le télécharger ici.