@@ -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); | |||||
} | |||||
} |