GCC Code Coverage Report
Directory: ./ Exec Total Coverage
File: TESTS/HadamardProduct/main.cpp Lines: 21 21 100.0 %
Date: 2025-03-16 06:08:08 Branches: 17 23 73.9 %

Line Branch Exec Source
1
/***************************************
2
	Auteur : Pierre Aubert
3
	Mail : pierre.aubert@lapp.in2p3.fr
4
	Licence : CeCILL-C
5
****************************************/
6
7
#include "micro_benchmark.h"
8
9
///Do the Hadamard product
10
/**	@param[out] tabResult : table of results of tabX*tabY
11
 * 	@param tabX : input table
12
 * 	@param tabY : input table
13
 * 	@param nbElement : number of elements in the tables
14
*/
15
7200000
void hadamard_product(float* tabResult, const float* tabX, const float* tabY, size_t nbElement){
16
30007200000
	for(size_t i(0lu); i < nbElement; ++i){
17
30000000000
		tabResult[i] = tabX[i]*tabY[i];
18
	}
19
7200000
}
20
21
///Get the number of nanoseconds per elements of the Hadamard product
22
/**	@param nbElement : number of elements of the tables
23
*/
24
30
void evaluateHadamardProduct(size_t nbElement){
25
	//Allocation of the tables
26
30
	float * tabResult = new float[nbElement];
27
30
	float * tabX = new float[nbElement];
28
30
	float * tabY = new float[nbElement];
29
	//Initialisation of the tables
30
125030
	for(size_t i(0lu); i < nbElement; ++i){
31
125000
		tabX[i] = (float)(i*32lu%17lu);
32
125000
		tabY[i] = (float)(i*57lu%31lu);
33
	}
34
30
	size_t nbTestPerf(400lu);
35
30
	size_t nbCallPerTest(600lu);
36
30
	size_t fullNbElement(nbElement);
37
	//Stating the timer
38

30
	micro_benchmarkNsPrint("evaluateHadamardProduct",
39
			nbTestPerf, nbCallPerTest, fullNbElement, hadamard_product,
40
			tabResult, tabX, tabY, nbElement);
41
42
	//Deallocate the tables
43
30
	delete[] tabResult;
44
30
	delete[] tabX;
45
30
	delete[] tabY;
46
30
}
47
48
5
int main(int argc, char** argv){
49
5
	return micro_benchmarkParseArg(argc, argv, evaluateHadamardProduct);
50
}
51