Skip to content

Commit 6df2f99

Browse files
committed
Merge pull request #245 from guacamoleo/develop
fixed compareMatrices to use GTEST_FLOAT_EQ
2 parents 075dd8f + 8491085 commit 6df2f99

File tree

3 files changed

+51
-191
lines changed

3 files changed

+51
-191
lines changed

src/tests/common.cpp

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
#include <iostream>
1919
#include <string.h>
2020
#include <clBLAS.h>
21+
#include <gtest/gtest.h>
2122

2223
#include <common.h>
2324

@@ -1016,3 +1017,23 @@ functionBlasLevel(BlasFunctionID funct) {
10161017
return 0;
10171018
}
10181019
}
1020+
1021+
1022+
template<>
1023+
void gtestAssertElementsEqual( const float & a, const float & b) {
1024+
ASSERT_FLOAT_EQ(a, b);
1025+
}
1026+
template<>
1027+
void gtestAssertElementsEqual( const double & a, const double & b) {
1028+
ASSERT_DOUBLE_EQ(a, b);
1029+
}
1030+
template<>
1031+
void gtestAssertElementsEqual( const FloatComplex & a, const FloatComplex & b) {
1032+
ASSERT_FLOAT_EQ(CREAL(a), CREAL(b));
1033+
ASSERT_FLOAT_EQ(CIMAG(a), CIMAG(b));
1034+
}
1035+
template<>
1036+
void gtestAssertElementsEqual( const DoubleComplex & a, const DoubleComplex & b) {
1037+
ASSERT_DOUBLE_EQ(CREAL(a), CREAL(b));
1038+
ASSERT_DOUBLE_EQ(CIMAG(a), CIMAG(b));
1039+
}

src/tests/include/common.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -692,6 +692,10 @@ printTestParams(
692692
size_t offx,
693693
int incx);
694694

695+
696+
template<typename T>
697+
void gtestAssertElementsEqual( const T & a, const T & b);
698+
695699
#endif // __cplusplus
696700

697701
#endif /* COMMON_H_ */

src/tests/include/matrix.h

Lines changed: 26 additions & 191 deletions
Original file line numberDiff line numberDiff line change
@@ -298,6 +298,7 @@ reorderMatrix(
298298
}
299299
}
300300

301+
301302
template <typename T>
302303
static void
303304
compareMatrices(
@@ -315,207 +316,41 @@ compareMatrices(
315316

316317
if( lda > 0 ) // General case
317318
{
318-
for (m = 0; m < M; m++) {
319-
for (n = 0; n < N; n++) {
320-
a = getElement<T>(order, clblasNoTrans, m, n, A, lda);
321-
b = getElement<T>(order, clblasNoTrans, m, n, B, lda);
322-
delta = 0.0;
323-
if (absDelta != NULL) {
324-
delta = absDelta[m * N + n];
319+
for (m = 0; m < M; m++) {
320+
for (n = 0; n < N; n++) {
321+
a = getElement<T>(order, clblasNoTrans, m, n, A, lda);
322+
b = getElement<T>(order, clblasNoTrans, m, n, B, lda);
323+
gtestAssertElementsEqual(a, b);
325324
}
326-
if( module(a-b) > delta ) printf("m : %d\t n: %d\n", (int)m, (int)n);
327-
ASSERT_NEAR(a, b, delta);
328325
}
329326
}
330-
}
331327
else // Packed case
332328
{
333-
if ( order == clblasColumnMajor)
334-
{
335-
for ( n = 0; n < N; n++)
336-
{
337-
for( m=n; m < M; m++)
338-
{
339-
a = getElement<T>(order, clblasNoTrans, m, n, A, lda);
340-
b = getElement<T>(order, clblasNoTrans, m, n, B, lda);
341-
delta = 0.0;
342-
if (absDelta != NULL) {
343-
//delta = absDelta[m * N + n];
344-
}
345-
if( module(a-b) > delta ) printf("m : %d\t n: %d\n", (int)m, (int)n);
346-
ASSERT_NEAR(a, b, delta);
347-
}
348-
}
349-
}
350-
else
351-
{
352-
for ( m = 0; m < M; m++)
353-
{
354-
for( n = 0; n <= m; n++)
355-
{
356-
a = getElement<T>(order, clblasNoTrans, m, n, A, lda);
357-
b = getElement<T>(order, clblasNoTrans, m, n, B, lda);
358-
delta = 0.0;
359-
if (absDelta != NULL) {
360-
//delta = absDelta[m * N + n];
361-
}
362-
if( module(a-b) > delta ) printf("m : %d\t n: %d\n", (int)m, (int)n);
363-
ASSERT_NEAR(a, b, delta);
364-
}
365-
}
366-
}
367-
}
368-
}
369-
370-
template<>
371-
__template_static void
372-
compareMatrices<FloatComplex>(
373-
clblasOrder order,
374-
size_t M,
375-
size_t N,
376-
const FloatComplex *A,
377-
const FloatComplex *B,
378-
size_t lda,
379-
const cl_double *absDelta)
380-
{
381-
size_t m = 0, n = 0;
382-
FloatComplex a, b;
383-
cl_double delta;
384-
385-
if ( lda > 0 )
386-
{
387-
for (m = 0; m < M; m++) {
388-
for (n = 0; n < N; n++) {
389-
a = getElement<FloatComplex>(order, clblasNoTrans, m, n, A, lda);
390-
b = getElement<FloatComplex>(order, clblasNoTrans, m, n, B, lda);
391-
delta = 0.0;
392-
if (absDelta != NULL) {
393-
delta = absDelta[m * N + n];
329+
if ( order == clblasColumnMajor)
330+
{
331+
for ( n = 0; n < N; n++)
332+
{
333+
for( m=n; m < M; m++)
334+
{
335+
a = getElement<T>(order, clblasNoTrans, m, n, A, lda);
336+
b = getElement<T>(order, clblasNoTrans, m, n, B, lda);
337+
gtestAssertElementsEqual(a, b);
338+
}
394339
}
395-
if( (module(CREAL(a) - CREAL(b)) > delta) || (module(CIMAG(a) - CIMAG(b)) > delta) )
396-
printf("m : %d\t n: %d\n", (int)m, (int)n);
397-
ASSERT_NEAR(CREAL(a), CREAL(b), delta);
398-
ASSERT_NEAR(CIMAG(a), CIMAG(b), delta);
399340
}
400-
}
401-
}
402-
else // Packed case
403-
{
404-
if ( order == clblasColumnMajor)
405-
{
406-
for ( n = 0; n < N; n++)
407-
{
408-
for( m=n; m < M; m++)
409-
{
410-
a = getElement<FloatComplex>(order, clblasNoTrans, m, n, A, lda);
411-
b = getElement<FloatComplex>(order, clblasNoTrans, m, n, B, lda);
412-
delta = 0.0;
413-
if (absDelta != NULL) {
414-
//delta = absDelta[m * N + n];
415-
}
416-
if( (module(CREAL(a) - CREAL(b)) > delta) || (module(CIMAG(a) - CIMAG(b)) > delta) )
417-
printf("m : %d\t n: %d\n", (int)m, (int)n);
418-
ASSERT_NEAR(CREAL(a), CREAL(b), delta);
419-
ASSERT_NEAR(CIMAG(a), CIMAG(b), delta);
420-
}
421-
}
422-
}
423-
else
424-
{
425-
for ( m = 0; m < M; m++)
426-
{
427-
for( n = 0; n <= m; n++)
428-
{
429-
a = getElement<FloatComplex>(order, clblasNoTrans, m, n, A, lda);
430-
b = getElement<FloatComplex>(order, clblasNoTrans, m, n, B, lda);
431-
delta = 0.0;
432-
if (absDelta != NULL) {
433-
//delta = absDelta[m * N + n];
434-
}
435-
if( (module(CREAL(a) - CREAL(b)) > delta) || (module(CIMAG(a) - CIMAG(b)) > delta) )
436-
printf("m : %d\t n: %d\n", (int)m, (int)n);
437-
ASSERT_NEAR(CREAL(a), CREAL(b), delta);
438-
ASSERT_NEAR(CIMAG(a), CIMAG(b), delta);
439-
}
440-
}
441-
}
442-
}
443-
444-
}
445-
446-
template<>
447-
__template_static void
448-
compareMatrices<DoubleComplex>(
449-
clblasOrder order,
450-
size_t M,
451-
size_t N,
452-
const DoubleComplex *A,
453-
const DoubleComplex *B,
454-
size_t lda,
455-
const cl_double *absDelta)
456-
{
457-
size_t m = 0, n = 0;
458-
DoubleComplex a, b;
459-
cl_double delta;
460-
if( lda > 0 )
461-
{
462-
for (m = 0; m < M; m++) {
463-
for (n = 0; n < N; n++) {
464-
a = getElement<DoubleComplex>(order, clblasNoTrans, m, n, A, lda);
465-
b = getElement<DoubleComplex>(order, clblasNoTrans, m, n, B, lda);
466-
delta = 0.0;
467-
if (absDelta != NULL) {
468-
delta = absDelta[m * N + n];
341+
else
342+
{
343+
for ( m = 0; m < M; m++)
344+
{
345+
for( n = 0; n <= m; n++)
346+
{
347+
a = getElement<T>(order, clblasNoTrans, m, n, A, lda);
348+
b = getElement<T>(order, clblasNoTrans, m, n, B, lda);
349+
gtestAssertElementsEqual(a, b);
350+
}
469351
}
470-
if( (module(CREAL(a) - CREAL(b)) > delta) || (module(CIMAG(a) - CIMAG(b)) > delta) )
471-
printf("m : %d\t n: %d\n", (int)m, (int)n);
472-
ASSERT_NEAR(CREAL(a), CREAL(b), delta);
473-
ASSERT_NEAR(CIMAG(a), CIMAG(b), delta);
474352
}
475353
}
476-
}
477-
else // Packed case
478-
{
479-
if ( order == clblasColumnMajor)
480-
{
481-
for ( n = 0; n < N; n++)
482-
{
483-
for( m=n; m < M; m++)
484-
{
485-
a = getElement<DoubleComplex>(order, clblasNoTrans, m, n, A, lda);
486-
b = getElement<DoubleComplex>(order, clblasNoTrans, m, n, B, lda);
487-
delta = 0.0;
488-
if (absDelta != NULL) {
489-
//delta = absDelta[m * N + n];
490-
}
491-
if( (module(CREAL(a) - CREAL(b)) > delta) || (module(CIMAG(a) - CIMAG(b)) > delta) )
492-
printf("m : %d\t n: %d\n", (int)m, (int)n);
493-
ASSERT_NEAR(CREAL(a), CREAL(b), delta);
494-
ASSERT_NEAR(CIMAG(a), CIMAG(b), delta);
495-
}
496-
}
497-
}
498-
else
499-
{
500-
for ( m = 0; m < M; m++)
501-
{
502-
for( n = 0; n <= m; n++)
503-
{
504-
a = getElement<DoubleComplex>(order, clblasNoTrans, m, n, A, lda);
505-
b = getElement<DoubleComplex>(order, clblasNoTrans, m, n, B, lda);
506-
delta = 0.0;
507-
if (absDelta != NULL) {
508-
//delta = absDelta[m * N + n];
509-
}
510-
if( (module(CREAL(a) - CREAL(b)) > delta) || (module(CIMAG(a) - CIMAG(b)) > delta) )
511-
printf("m : %d\t n: %d\n", (int)m, (int)n);
512-
ASSERT_NEAR(CREAL(a), CREAL(b), delta);
513-
ASSERT_NEAR(CIMAG(a), CIMAG(b), delta);
514-
}
515-
}
516-
}
517-
}
518-
519354
}
520355

521356
template <typename T>

0 commit comments

Comments
 (0)