| @@ -7,13 +7,17 @@ ifndef DYNAMIC_ARCH | |||||
| BLASDIRS += kernel | BLASDIRS += kernel | ||||
| endif | endif | ||||
| ifdef UTEST_CHECK | |||||
| SANITY_CHECK = 1 | |||||
| endif | |||||
| ifdef SANITY_CHECK | ifdef SANITY_CHECK | ||||
| BLASDIRS += reference | BLASDIRS += reference | ||||
| endif | endif | ||||
| SUBDIRS = $(BLASDIRS) lapack | SUBDIRS = $(BLASDIRS) lapack | ||||
| SUBDIRS_ALL = $(SUBDIRS) test ctest exports benchmark ../laswp ../bench | |||||
| SUBDIRS_ALL = $(SUBDIRS) test ctest utest exports benchmark ../laswp ../bench | |||||
| .PHONY : all libs netlib test ctest shared | .PHONY : all libs netlib test ctest shared | ||||
| .NOTPARALLEL : all libs prof lapack-test | .NOTPARALLEL : all libs prof lapack-test | ||||
| @@ -77,6 +81,9 @@ ifndef CROSS | |||||
| touch $(LIBNAME) | touch $(LIBNAME) | ||||
| ifndef NO_FBLAS | ifndef NO_FBLAS | ||||
| $(MAKE) -C test all | $(MAKE) -C test all | ||||
| ifdef UTEST_CHECK | |||||
| $(MAKE) -C utest all | |||||
| endif | |||||
| endif | endif | ||||
| ifndef NO_CBLAS | ifndef NO_CBLAS | ||||
| $(MAKE) -C ctest all | $(MAKE) -C ctest all | ||||
| @@ -84,6 +84,10 @@ VERSION = 0.1 | |||||
| # slow (Not implemented yet). | # slow (Not implemented yet). | ||||
| # SANITY_CHECK = 1 | # SANITY_CHECK = 1 | ||||
| # Run testcases in utest/ . When you enable UTEST_CHECK, it would enable | |||||
| # SANITY_CHECK to compare the result with reference BLAS. | |||||
| # UTEST_CHECK = 1 | |||||
| # Common Optimization Flag; -O2 is enough. | # Common Optimization Flag; -O2 is enough. | ||||
| COMMON_OPT += -O2 | COMMON_OPT += -O2 | ||||
| @@ -141,6 +141,11 @@ NO_EXPRECISION = 1 | |||||
| endif | endif | ||||
| endif | endif | ||||
| ifdef UTEST_CHECK | |||||
| CCOMMON_OPT += -DUTEST_CHECK | |||||
| SANITY_CHECK = 1 | |||||
| endif | |||||
| ifdef SANITY_CHECK | ifdef SANITY_CHECK | ||||
| CCOMMON_OPT += -DSANITY_CHECK -DREFNAME=$(*F)f$(BU) | CCOMMON_OPT += -DSANITY_CHECK -DREFNAME=$(*F)f$(BU) | ||||
| endif | endif | ||||
| @@ -0,0 +1,46 @@ | |||||
| /***************************************************************************** | |||||
| Copyright (c) 2011, Lab of Parallel Software and Computational Science,ICSAS | |||||
| All rights reserved. | |||||
| Redistribution and use in source and binary forms, with or without | |||||
| modification, are permitted provided that the following conditions are | |||||
| met: | |||||
| 1. Redistributions of source code must retain the above copyright | |||||
| notice, this list of conditions and the following disclaimer. | |||||
| 2. Redistributions in binary form must reproduce the above copyright | |||||
| notice, this list of conditions and the following disclaimer in | |||||
| the documentation and/or other materials provided with the | |||||
| distribution. | |||||
| 3. Neither the name of the ISCAS nor the names of its contributors may | |||||
| be used to endorse or promote products derived from this software | |||||
| without specific prior written permission. | |||||
| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | |||||
| AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |||||
| IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | |||||
| ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE | |||||
| LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |||||
| DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR | |||||
| SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER | |||||
| CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | |||||
| OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE | |||||
| USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||||
| **********************************************************************************/ | |||||
| #ifndef ASSEMBLER | |||||
| #define REF_BU f | |||||
| #define BLASFUNC_REF_2(x,y) BLASFUNC(x## y) | |||||
| #define BLASFUNC_REF_1(x,y) BLASFUNC_REF_2(x,y) | |||||
| #define BLASFUNC_REF(x) BLASFUNC_REF_1(x,REF_BU) | |||||
| void BLASFUNC_REF(srot) (blasint *, float *, blasint *, float *, blasint *, float *, float *); | |||||
| void BLASFUNC_REF(drot) (blasint *, double *, blasint *, double *, blasint *, double *, double *); | |||||
| void BLASFUNC_REF(qrot) (blasint *, xdouble *, blasint *, xdouble *, blasint *, xdouble *, xdouble *); | |||||
| void BLASFUNC_REF(csrot) (blasint *, float *, blasint *, float *, blasint *, float *, float *); | |||||
| void BLASFUNC_REF(zdrot) (blasint *, double *, blasint *, double *, blasint *, double *, double *); | |||||
| void BLASFUNC_REF(xqrot) (blasint *, xdouble *, blasint *, xdouble *, blasint *, xdouble *, xdouble *); | |||||
| #endif | |||||
| @@ -0,0 +1,22 @@ | |||||
| UTEST_CHECK = 1 | |||||
| TOPDIR = .. | |||||
| include $(TOPDIR)/Makefile.system | |||||
| TARGET=openblas_utest | |||||
| CUNIT_LIB=/usr/local/lib/libcunit.a | |||||
| OBJS=main.o test_rot.o | |||||
| all : run_test | |||||
| $(TARGET): $(OBJS) | |||||
| $(CC) -o $@ $^ ../$(LIBNAME) $(CUNIT_LIB) | |||||
| run_test: $(TARGET) | |||||
| ./$(TARGET) | |||||
| clean: | |||||
| rm -f *.o $(TARGET) | |||||
| libs: | |||||
| @@ -0,0 +1,44 @@ | |||||
| /***************************************************************************** | |||||
| Copyright (c) 2011, Lab of Parallel Software and Computational Science,ICSAS | |||||
| All rights reserved. | |||||
| Redistribution and use in source and binary forms, with or without | |||||
| modification, are permitted provided that the following conditions are | |||||
| met: | |||||
| 1. Redistributions of source code must retain the above copyright | |||||
| notice, this list of conditions and the following disclaimer. | |||||
| 2. Redistributions in binary form must reproduce the above copyright | |||||
| notice, this list of conditions and the following disclaimer in | |||||
| the documentation and/or other materials provided with the | |||||
| distribution. | |||||
| 3. Neither the name of the ISCAS nor the names of its contributors may | |||||
| be used to endorse or promote products derived from this software | |||||
| without specific prior written permission. | |||||
| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | |||||
| AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |||||
| IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | |||||
| ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE | |||||
| LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |||||
| DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR | |||||
| SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER | |||||
| CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | |||||
| OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE | |||||
| USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||||
| **********************************************************************************/ | |||||
| #ifndef COMMON_UTEST_H_ | |||||
| #define COMMON_UTEST_H_ | |||||
| #include <CUnit/CUnit.h> | |||||
| #include <common.h> | |||||
| #define CHECK_EPS 0.0002 | |||||
| //Testcase list | |||||
| void test_drot_incx_0(void); | |||||
| #endif | |||||
| @@ -0,0 +1,78 @@ | |||||
| /***************************************************************************** | |||||
| Copyright (c) 2011, Lab of Parallel Software and Computational Science,ICSAS | |||||
| All rights reserved. | |||||
| Redistribution and use in source and binary forms, with or without | |||||
| modification, are permitted provided that the following conditions are | |||||
| met: | |||||
| 1. Redistributions of source code must retain the above copyright | |||||
| notice, this list of conditions and the following disclaimer. | |||||
| 2. Redistributions in binary form must reproduce the above copyright | |||||
| notice, this list of conditions and the following disclaimer in | |||||
| the documentation and/or other materials provided with the | |||||
| distribution. | |||||
| 3. Neither the name of the ISCAS nor the names of its contributors may | |||||
| be used to endorse or promote products derived from this software | |||||
| without specific prior written permission. | |||||
| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | |||||
| AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |||||
| IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | |||||
| ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE | |||||
| LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |||||
| DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR | |||||
| SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER | |||||
| CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | |||||
| OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE | |||||
| USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||||
| **********************************************************************************/ | |||||
| #include <stdio.h> | |||||
| #include <string.h> | |||||
| #include "common_utest.h" | |||||
| #include <CUnit/Basic.h> | |||||
| CU_TestInfo test_level1[]={ | |||||
| {"Testing drot when incx & incy == 0",test_drot_incx_0}, | |||||
| CU_TEST_INFO_NULL, | |||||
| }; | |||||
| CU_SuiteInfo suites[]={ | |||||
| {"Level1 Test Suite", NULL,NULL,test_level1}, | |||||
| CU_SUITE_INFO_NULL, | |||||
| }; | |||||
| int main() | |||||
| { | |||||
| CU_ErrorCode error; | |||||
| if (CUE_SUCCESS != CU_initialize_registry()) | |||||
| return CU_get_error(); | |||||
| error=CU_register_suites(suites); | |||||
| if (error != CUE_SUCCESS) { | |||||
| perror(CU_get_error_msg()); | |||||
| CU_cleanup_registry(); | |||||
| return CU_get_error(); | |||||
| } | |||||
| /* Run all tests using the CUnit Basic interface */ | |||||
| CU_basic_set_mode(CU_BRM_VERBOSE); | |||||
| CU_basic_run_tests(); | |||||
| CU_cleanup_registry(); | |||||
| return CU_get_error(); | |||||
| } | |||||
| @@ -0,0 +1,54 @@ | |||||
| /***************************************************************************** | |||||
| Copyright (c) 2011, Lab of Parallel Software and Computational Science,ICSAS | |||||
| All rights reserved. | |||||
| Redistribution and use in source and binary forms, with or without | |||||
| modification, are permitted provided that the following conditions are | |||||
| met: | |||||
| 1. Redistributions of source code must retain the above copyright | |||||
| notice, this list of conditions and the following disclaimer. | |||||
| 2. Redistributions in binary form must reproduce the above copyright | |||||
| notice, this list of conditions and the following disclaimer in | |||||
| the documentation and/or other materials provided with the | |||||
| distribution. | |||||
| 3. Neither the name of the ISCAS nor the names of its contributors may | |||||
| be used to endorse or promote products derived from this software | |||||
| without specific prior written permission. | |||||
| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | |||||
| AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |||||
| IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | |||||
| ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE | |||||
| LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | |||||
| DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR | |||||
| SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER | |||||
| CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | |||||
| OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE | |||||
| USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||||
| **********************************************************************************/ | |||||
| #include "common_utest.h" | |||||
| void test_drot_incx_0(void) | |||||
| { | |||||
| int i; | |||||
| int N=4,incX=0,incY=0; | |||||
| double c=0.25,s=0.5; | |||||
| double x1[]={1.0,3.0,5.0,7.0}; | |||||
| double y1[]={2.0,4.0,6.0,8.0}; | |||||
| double x2[]={1.0,3.0,5.0,7.0}; | |||||
| double y2[]={2.0,4.0,6.0,8.0}; | |||||
| //OpenBLAS | |||||
| drot_(&N,x1,&incX,y1,&incY,&c,&s); | |||||
| //reference | |||||
| drotf_(&N,x2,&incX,y2,&incY,&c,&s); | |||||
| for(i=0; i<N; i++){ | |||||
| CU_ASSERT_DOUBLE_EQUAL(x1[i], x2[i], CHECK_EPS); | |||||
| CU_ASSERT_DOUBLE_EQUAL(y1[i], y2[i], CHECK_EPS); | |||||
| } | |||||
| } | |||||