Research Article

Inastemp: A Novel Intrinsics-as-Template Library for Portable SIMD-Vectorization

Code 14

Inastemp Flops counters.
(1) template <VecType>
(2) void user_function( / / )
(3)
(4)
(5)
(6) // To compute in release mode
(7) user_function<InaVecBestType<double>>(/ /);
(8)
(9) // To record the number of Flops
(10) user_function<InaVecFLOPS<InaVecBestType<double>>>(/ /);
(11)
(12) // Flops counters
(13) InaVecFLOPS<InaVecBestType<double>>::GetFlopsStats().getMulOp();
(14) InaVecFLOPS<InaVecBestType<double>>::GetFlopsStats().getDivOp();
(15) InaVecFLOPS<InaVecBestType<double>>::GetFlopsStats().getAddOp();
(16) InaVecFLOPS<InaVecBestType<double>>::GetFlopsStats().getSubOp();
(17) // For Sqrt and Rsqrt it will be the number of calls times the length of the vector
(18) InaVecFLOPS<InaVecBestType<double>>::GetFlopsStats().getRsqrt();
(19) InaVecFLOPS<InaVecBestType<double>>::GetFlopsStats().getSqrt();