@@ -7,13 +7,17 @@ ifndef DYNAMIC_ARCH | |||
BLASDIRS += kernel | |||
endif | |||
ifdef UTEST_CHECK | |||
SANITY_CHECK = 1 | |||
endif | |||
ifdef SANITY_CHECK | |||
BLASDIRS += reference | |||
endif | |||
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 | |||
.NOTPARALLEL : all libs prof lapack-test | |||
@@ -77,6 +81,9 @@ ifndef CROSS | |||
touch $(LIBNAME) | |||
ifndef NO_FBLAS | |||
$(MAKE) -C test all | |||
ifdef UTEST_CHECK | |||
$(MAKE) -C utest all | |||
endif | |||
endif | |||
ifndef NO_CBLAS | |||
$(MAKE) -C ctest all | |||
@@ -84,6 +84,10 @@ VERSION = 0.1 | |||
# slow (Not implemented yet). | |||
# 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_OPT += -O2 | |||
@@ -141,6 +141,11 @@ NO_EXPRECISION = 1 | |||
endif | |||
endif | |||
ifdef UTEST_CHECK | |||
CCOMMON_OPT += -DUTEST_CHECK | |||
SANITY_CHECK = 1 | |||
endif | |||
ifdef SANITY_CHECK | |||
CCOMMON_OPT += -DSANITY_CHECK -DREFNAME=$(*F)f$(BU) | |||
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); | |||
} | |||
} |