Skip to content

Commit cb8131c

Browse files
authored
Merge pull request #4499 from kseniyazaytseva/new-tests
Tests for BLAS-like and BLAS API
2 parents 07e62a4 + 7e9b1c0 commit cb8131c

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

70 files changed

+37157
-11
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ config_last.h
4747
getarch
4848
getarch_2nd
4949
utest/openblas_utest
50+
utest/openblas_utest_ext
5051
ctest/xccblat1
5152
ctest/xccblat2
5253
ctest/xccblat3

interface/geadd.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,8 +117,8 @@ void CNAME(enum CBLAS_ORDER order,
117117

118118
if (ldc < MAX(1, m)) info = 8;
119119
if (lda < MAX(1, m)) info = 5;
120-
if (n < 0) info = 2;
121-
if (m < 0) info = 1;
120+
if (n < 0) info = 1;
121+
if (m < 0) info = 2;
122122
}
123123

124124
if (info >= 0) {

interface/max.c

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,12 @@
4646

4747
#ifdef USE_ABS
4848

49+
#if defined(DOUBLE)
50+
#define ABS fabs
51+
#else
52+
#define ABS fabsf
53+
#endif
54+
4955
#ifndef USE_MIN
5056

5157
/* ABS & MAX */
@@ -92,6 +98,8 @@
9298

9399
#else
94100

101+
#define ABS
102+
95103
#ifndef USE_MIN
96104

97105
/* MAX */
@@ -130,6 +138,12 @@ FLOATRET NAME(blasint *N, FLOAT *x, blasint *INCX){
130138

131139
if (n <= 0) return 0;
132140

141+
#ifndef COMPLEX
142+
if (incx == 0) return (ABS(*x));
143+
#else
144+
if (incx == 0) return (ABS(*x) + ABS(*(x+1)));
145+
#endif
146+
133147
IDEBUG_START;
134148

135149
FUNCTION_PROFILE_START();
@@ -158,6 +172,12 @@ FLOAT CNAME(blasint n, FLOAT *x, blasint incx){
158172

159173
if (n <= 0) return 0;
160174

175+
#ifndef COMPLEX
176+
if (incx == 0) return (ABS(*x));
177+
#else
178+
if (incx == 0) return (ABS(*x) + ABS(*(x+1)));
179+
#endif
180+
161181
IDEBUG_START;
162182

163183
FUNCTION_PROFILE_START();

interface/zgeadd.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ void NAME(blasint *M, blasint *N, FLOAT *ALPHA, FLOAT *a, blasint *LDA,
6666
info = 0;
6767

6868

69-
if (lda < MAX(1, m)) info = 6;
69+
if (lda < MAX(1, m)) info = 5;
7070
if (ldc < MAX(1, m)) info = 8;
7171

7272
if (n < 0) info = 2;
@@ -115,8 +115,8 @@ void CNAME(enum CBLAS_ORDER order,
115115

116116
if (ldc < MAX(1, m)) info = 8;
117117
if (lda < MAX(1, m)) info = 5;
118-
if (n < 0) info = 2;
119-
if (m < 0) info = 1;
118+
if (n < 0) info = 1;
119+
if (m < 0) info = 2;
120120
}
121121

122122
if (info >= 0) {

interface/zrotg.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ void CNAME(void *VDA, void *VDB, FLOAT *C, void *VS) {
102102
if (ada >= h *safmin) {
103103
*C = sqrt(ada/h);
104104
*R = *DA / *C;
105-
*(R+1) = *(DA+1) / *(C+1);
105+
*(R+1) = *(DA+1) / *C;
106106
rtmax *= 2.;
107107
if ( ada > rtmin && h < rtmax) { // no risk of intermediate overflow
108108
*S = *S1 * (*DA / adahsq) - *(S1+1)* (*(DA+1)/adahsq);
@@ -115,7 +115,7 @@ void CNAME(void *VDA, void *VDB, FLOAT *C, void *VS) {
115115
*C = ada / adahsq;
116116
if (*C >= safmin) {
117117
*R = *DA / *C;
118-
*(R+1) = *(DA+1) / *(C+1);
118+
*(R+1) = *(DA+1) / *C;
119119
} else {
120120
*R = *DA * (h / adahsq);
121121
*(R+1) = *(DA+1) * (h / adahsq);

utest/CMakeLists.txt

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,70 @@ else ()
2121
)
2222
endif ()
2323

24+
25+
set(DIR_EXT test_extensions)
26+
set(OpenBLAS_utest_ext_src
27+
utest_main.c
28+
${DIR_EXT}/common.c
29+
${DIR_EXT}/xerbla.c
30+
${DIR_EXT}/test_isamin.c
31+
${DIR_EXT}/test_idamin.c
32+
${DIR_EXT}/test_icamin.c
33+
${DIR_EXT}/test_izamin.c
34+
${DIR_EXT}/test_ssum.c
35+
${DIR_EXT}/test_dsum.c
36+
${DIR_EXT}/test_scsum.c
37+
${DIR_EXT}/test_dzsum.c
38+
${DIR_EXT}/test_samin.c
39+
${DIR_EXT}/test_damin.c
40+
${DIR_EXT}/test_scamin.c
41+
${DIR_EXT}/test_dzamin.c
42+
${DIR_EXT}/test_scamax.c
43+
${DIR_EXT}/test_dzamax.c
44+
${DIR_EXT}/test_zrotg.c
45+
${DIR_EXT}/test_crotg.c
46+
${DIR_EXT}/test_drotmg.c
47+
${DIR_EXT}/test_srotmg.c
48+
${DIR_EXT}/test_zscal.c
49+
${DIR_EXT}/test_cscal.c
50+
${DIR_EXT}/test_domatcopy.c
51+
${DIR_EXT}/test_somatcopy.c
52+
${DIR_EXT}/test_zomatcopy.c
53+
${DIR_EXT}/test_comatcopy.c
54+
${DIR_EXT}/test_simatcopy.c
55+
${DIR_EXT}/test_dimatcopy.c
56+
${DIR_EXT}/test_cimatcopy.c
57+
${DIR_EXT}/test_zimatcopy.c
58+
${DIR_EXT}/test_sgeadd.c
59+
${DIR_EXT}/test_dgeadd.c
60+
${DIR_EXT}/test_cgeadd.c
61+
${DIR_EXT}/test_zgeadd.c
62+
${DIR_EXT}/test_saxpby.c
63+
${DIR_EXT}/test_daxpby.c
64+
${DIR_EXT}/test_caxpby.c
65+
${DIR_EXT}/test_zaxpby.c
66+
${DIR_EXT}/test_caxpyc.c
67+
${DIR_EXT}/test_zaxpyc.c
68+
${DIR_EXT}/test_cgemv_t.c
69+
${DIR_EXT}/test_zgemv_t.c
70+
${DIR_EXT}/test_cgemv_n.c
71+
${DIR_EXT}/test_zgemv_n.c
72+
${DIR_EXT}/test_crot.c
73+
${DIR_EXT}/test_zrot.c
74+
${DIR_EXT}/test_cgbmv.c
75+
${DIR_EXT}/test_zgbmv.c
76+
${DIR_EXT}/test_dgemmt.c
77+
${DIR_EXT}/test_sgemmt.c
78+
${DIR_EXT}/test_cgemmt.c
79+
${DIR_EXT}/test_zgemmt.c
80+
${DIR_EXT}/test_ztrmv.c
81+
${DIR_EXT}/test_ctrmv.c
82+
${DIR_EXT}/test_ztrsv.c
83+
${DIR_EXT}/test_ctrsv.c
84+
${DIR_EXT}/test_zgemm.c
85+
${DIR_EXT}/test_cgemm.c
86+
)
87+
2488
# crashing on travis cl with an error code suggesting resource not found
2589
if (NOT MSVC)
2690
set(OpenBLAS_utest_src
@@ -49,6 +113,13 @@ set(OpenBLAS_utest_src
49113
${OpenBLAS_utest_src}
50114
test_potrs.c
51115
)
116+
set(OpenBLAS_utest_ext_src
117+
${OpenBLAS_utest_ext_src}
118+
${DIR_EXT}/test_cspmv.c
119+
${DIR_EXT}/test_zspmv.c
120+
${DIR_EXT}/test_csbmv.c
121+
${DIR_EXT}/test_zsbmv.c
122+
)
52123
if (NOT NO_CBLAS AND NOT NO_LAPACKE)
53124
set(OpenBLAS_utest_src
54125
${OpenBLAS_utest_src}
@@ -60,7 +131,11 @@ endif()
60131
set(OpenBLAS_utest_bin openblas_utest)
61132
add_executable(${OpenBLAS_utest_bin} ${OpenBLAS_utest_src})
62133

134+
set(OpenBLAS_utest_ext_bin openblas_utest_ext)
135+
add_executable(${OpenBLAS_utest_ext_bin} ${OpenBLAS_utest_ext_src})
136+
63137
target_link_libraries(${OpenBLAS_utest_bin} ${OpenBLAS_LIBNAME})
138+
target_link_libraries(${OpenBLAS_utest_ext_bin} ${OpenBLAS_LIBNAME})
64139

65140
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux" OR ${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD" OR ${CMAKE_SYSTEM_NAME} MATCHES "QNX" )
66141
target_link_libraries(${OpenBLAS_utest_bin} m)
@@ -85,3 +160,4 @@ add_custom_command(TARGET ${OpenBLAS_utest_bin}
85160
endif()
86161

87162
add_test(${OpenBLAS_utest_bin} ${CMAKE_CURRENT_BINARY_DIR}/${OpenBLAS_utest_bin})
163+
add_test(${OpenBLAS_utest_ext_bin} ${CMAKE_CURRENT_BINARY_DIR}/${OpenBLAS_utest_bin})

utest/Makefile

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,39 @@
11
UTEST_CHECK = 1
22
TOPDIR = ..
3+
DIR_EXT=test_extensions
34

45
override TARGET_ARCH=
56
override TARGET_MACH=
67

78
UTESTBIN=openblas_utest
9+
UTESTEXTBIN=openblas_utest_ext
810

911
.PHONY : all
10-
.NOTPARALLEL : all run_test $(UTESTBIN)
12+
.NOTPARALLEL : all run_test $(UTESTBIN) $(UTESTEXTBIN)
1113

1214
include $(TOPDIR)/Makefile.system
1315

1416
OBJS=utest_main.o test_min.o test_amax.o test_ismin.o test_rotmg.o test_axpy.o test_dotu.o test_dsdot.o test_swap.o test_rot.o test_dnrm2.o test_zscal.o \
1517
test_amin.o test_axpby.o
1618
#test_rot.o test_swap.o test_axpy.o test_dotu.o test_dsdot.o test_fork.o
19+
OBJS_EXT=utest_main.o $(DIR_EXT)/xerbla.o $(DIR_EXT)/common.o
20+
OBJS_EXT+=$(DIR_EXT)/test_isamin.o $(DIR_EXT)/test_idamin.o $(DIR_EXT)/test_icamin.o $(DIR_EXT)/test_izamin.o
21+
OBJS_EXT+=$(DIR_EXT)/test_ssum.o $(DIR_EXT)/test_dsum.o $(DIR_EXT)/test_scsum.o $(DIR_EXT)/test_dzsum.o
22+
OBJS_EXT+=$(DIR_EXT)/test_saxpby.o $(DIR_EXT)/test_daxpby.o $(DIR_EXT)/test_caxpby.o $(DIR_EXT)/test_zaxpby.o $(DIR_EXT)/test_zaxpyc.o $(DIR_EXT)/test_caxpyc.o
23+
OBJS_EXT+=$(DIR_EXT)/test_samin.o $(DIR_EXT)/test_damin.o $(DIR_EXT)/test_scamin.o $(DIR_EXT)/test_dzamin.o $(DIR_EXT)/test_scamax.o $(DIR_EXT)/test_dzamax.o
24+
OBJS_EXT+=$(DIR_EXT)/test_drotmg.o $(DIR_EXT)/test_srotmg.o $(DIR_EXT)/test_zrotg.o $(DIR_EXT)/test_crotg.o $(DIR_EXT)/test_crot.o $(DIR_EXT)/test_zrot.o
25+
OBJS_EXT+=$(DIR_EXT)/test_zscal.o $(DIR_EXT)/test_cscal.o
26+
OBJS_EXT+=$(DIR_EXT)/test_domatcopy.o $(DIR_EXT)/test_somatcopy.o $(DIR_EXT)/test_zomatcopy.o $(DIR_EXT)/test_comatcopy.o
27+
OBJS_EXT+=$(DIR_EXT)/test_simatcopy.o $(DIR_EXT)/test_dimatcopy.o $(DIR_EXT)/test_cimatcopy.o $(DIR_EXT)/test_zimatcopy.o
28+
OBJS_EXT+=$(DIR_EXT)/test_sgeadd.o $(DIR_EXT)/test_dgeadd.o $(DIR_EXT)/test_cgeadd.o $(DIR_EXT)/test_zgeadd.o
29+
OBJS_EXT+=$(DIR_EXT)/test_cgemv_t.o $(DIR_EXT)/test_zgemv_t.o $(DIR_EXT)/test_cgemv_n.o $(DIR_EXT)/test_zgemv_n.o
30+
OBJS_EXT+=$(DIR_EXT)/test_sgemmt.o $(DIR_EXT)/test_dgemmt.o $(DIR_EXT)/test_cgemmt.o $(DIR_EXT)/test_zgemmt.o
31+
OBJS_EXT+=$(DIR_EXT)/test_ztrmv.o $(DIR_EXT)/test_ctrmv.o $(DIR_EXT)/test_ztrsv.o $(DIR_EXT)/test_ctrsv.o
32+
OBJS_EXT+=$(DIR_EXT)/test_zgemm.o $(DIR_EXT)/test_cgemm.o $(DIR_EXT)/test_zgbmv.o $(DIR_EXT)/test_cgbmv.o
1733

1834
ifneq ($(NO_LAPACK), 1)
1935
OBJS += test_potrs.o
36+
OBJS_EXT += $(DIR_EXT)/test_zspmv.o $(DIR_EXT)/test_cspmv.o $(DIR_EXT)/test_zsbmv.o $(DIR_EXT)/test_csbmv.o
2037
ifneq ($(NO_CBLAS), 1)
2138
ifneq ($(NO_LAPACKE), 1)
2239
OBJS += test_kernel_regress.o
@@ -58,12 +75,17 @@ $(UTESTBIN): $(OBJS)
5875
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ ../$(LIBNAME) $(EXTRALIB) $(FEXTRALIB)
5976
endif
6077

61-
run_test: $(UTESTBIN)
78+
$(UTESTEXTBIN): $(OBJS_EXT)
79+
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ ../$(LIBNAME) $(EXTRALIB) $(FEXTRALIB)
80+
81+
run_test: $(UTESTBIN) $(UTESTEXTBIN)
6282
ifneq ($(CROSS), 1)
6383
./$(UTESTBIN)
84+
./$(UTESTEXTBIN)
6485
endif
6586

6687
clean:
67-
-rm -f *.o $(UTESTBIN)
88+
-rm -f *.o $(UTESTBIN) $(UTESTEXTBIN)
89+
-rm -f $(DIR_EXT)/*.o
6890

69-
libs:
91+
libs:

0 commit comments

Comments
 (0)