commit
						3dd094f17a
					
				| 
						 | 
				
			
			@ -1,157 +1,607 @@
 | 
			
		|||
TOPDIR	= ..
 | 
			
		||||
include $(TOPDIR)/Makefile.system
 | 
			
		||||
 | 
			
		||||
CULA_INC = -I/usr/local/cula/include
 | 
			
		||||
CULA_LIB = -L/usr/local/cula/lib64 -Wl,-rpath,/usr/local/cula/lib64 -lcula_fortran -lcula -lcublas
 | 
			
		||||
# ACML standard
 | 
			
		||||
ACML=/opt/acml5.3.1/gfortran64_mp/lib
 | 
			
		||||
LIBACML = -fopenmp $(ACML)/libacml_mp.a -lgfortran -lm
 | 
			
		||||
 | 
			
		||||
all :: dlinpack.goto dlinpack.mkl dlinpack.acml dcholesky.goto dcholesky.mkl dcholesky.acml
 | 
			
		||||
	./dlinpack.goto  4000 4000 1
 | 
			
		||||
	-./dlinpack.mkl  4000 4000 1
 | 
			
		||||
	-./dlinpack.acml 4000 4000 1
 | 
			
		||||
	./dcholesky.goto  4000 4000 1
 | 
			
		||||
	-./dcholesky.mkl  4000 4000 1
 | 
			
		||||
	-./dcholesky.acml 4000 4000 1
 | 
			
		||||
# ACML custom
 | 
			
		||||
#ACML=/opt/pb/acml-5-3-1-gfortran-64bit/gfortran64_fma4_mp/lib
 | 
			
		||||
#LIBACML = -fopenmp $(ACML)/libacml_mp.a -lgfortran -lm
 | 
			
		||||
 | 
			
		||||
# Atlas Ubuntu 
 | 
			
		||||
#ATLAS=/usr/lib/atlas-base
 | 
			
		||||
#LIBATLAS = -fopenmp $(ATLAS)/liblapack_atlas.a  $(ATLAS)/libptcblas.a  $(ATLAS)/libptf77blas.a  $(ATLAS)/libatlas.a -lgfortran -lm
 | 
			
		||||
 | 
			
		||||
# Atlas RHEL and Fedora
 | 
			
		||||
ATLAS=/usr/lib64/atlas
 | 
			
		||||
LIBATLAS = -fopenmp $(ATLAS)/liblapack.a  $(ATLAS)/libptcblas.a  $(ATLAS)/libptf77blas.a  $(ATLAS)/libatlas.a -lgfortran -lm
 | 
			
		||||
 | 
			
		||||
# Intel standard
 | 
			
		||||
MKL=/opt/intel/mkl/lib/intel64
 | 
			
		||||
LIBMKL = -L$(MKL) -lmkl_intel_lp64 -lmkl_gnu_thread -lmkl_core -lgomp -lpthread -lm
 | 
			
		||||
 | 
			
		||||
# Intel custom
 | 
			
		||||
#MKL=/home/saar/intel_mkl
 | 
			
		||||
#LIBMKL = -L$(MKL) -lmkl_intel_lp64 -lmkl_gnu_thread -lmkl_core -lgomp -lpthread -lm
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
goto :: slinpack.goto dlinpack.goto clinpack.goto zlinpack.goto \
 | 
			
		||||
       scholesky.goto dcholesky.goto ccholesky.goto zcholesky.goto \
 | 
			
		||||
       sgemm.goto dgemm.goto cgemm.goto zgemm.goto \
 | 
			
		||||
       strmm.goto dtrmm.goto ctrmm.goto ztrmm.goto \
 | 
			
		||||
       strsm.goto dtrsm.goto ctrsm.goto ztrsm.goto \
 | 
			
		||||
       ssyrk.goto dsyrk.goto csyrk.goto zsyrk.goto \
 | 
			
		||||
       ssyr2k.goto dsyr2k.goto csyr2k.goto zsyr2k.goto \
 | 
			
		||||
       chemm.goto zhemm.goto \
 | 
			
		||||
       cherk.goto zherk.goto \
 | 
			
		||||
       cher2k.goto zher2k.goto \
 | 
			
		||||
       ssymm.goto dsymm.goto csymm.goto zsymm.goto
 | 
			
		||||
 | 
			
		||||
acml :: slinpack.acml dlinpack.acml clinpack.acml zlinpack.acml \
 | 
			
		||||
       scholesky.acml dcholesky.acml ccholesky.acml zcholesky.acml \
 | 
			
		||||
       sgemm.acml dgemm.acml cgemm.acml zgemm.acml \
 | 
			
		||||
       strmm.acml dtrmm.acml ctrmm.acml ztrmm.acml \
 | 
			
		||||
       strsm.acml dtrsm.acml ctrsm.acml ztrsm.acml \
 | 
			
		||||
       ssyrk.acml dsyrk.acml csyrk.acml zsyrk.acml \
 | 
			
		||||
       ssyr2k.acml dsyr2k.acml csyr2k.acml zsyr2k.acml \
 | 
			
		||||
       chemm.acml zhemm.acml \
 | 
			
		||||
       cherk.acml zherk.acml \
 | 
			
		||||
       cher2k.acml zher2k.acml \
 | 
			
		||||
       ssymm.acml dsymm.acml csymm.acml zsymm.acml
 | 
			
		||||
 | 
			
		||||
atlas :: slinpack.atlas dlinpack.atlas clinpack.atlas zlinpack.atlas \
 | 
			
		||||
       scholesky.atlas dcholesky.atlas ccholesky.atlas zcholesky.atlas \
 | 
			
		||||
       sgemm.atlas dgemm.atlas cgemm.atlas zgemm.atlas \
 | 
			
		||||
       strmm.atlas dtrmm.atlas ctrmm.atlas ztrmm.atlas \
 | 
			
		||||
       strsm.atlas dtrsm.atlas ctrsm.atlas ztrsm.atlas \
 | 
			
		||||
       ssyrk.atlas dsyrk.atlas csyrk.atlas zsyrk.atlas \
 | 
			
		||||
       ssyr2k.atlas dsyr2k.atlas csyr2k.atlas zsyr2k.atlas \
 | 
			
		||||
       chemm.atlas zhemm.atlas \
 | 
			
		||||
       cherk.atlas zherk.atlas \
 | 
			
		||||
       cher2k.atlas zher2k.atlas \
 | 
			
		||||
       ssymm.atlas dsymm.atlas csymm.atlas zsymm.atlas
 | 
			
		||||
 | 
			
		||||
mkl :: slinpack.mkl dlinpack.mkl clinpack.mkl zlinpack.mkl \
 | 
			
		||||
       scholesky.mkl dcholesky.mkl ccholesky.mkl zcholesky.mkl \
 | 
			
		||||
       sgemm.mkl dgemm.mkl cgemm.mkl zgemm.mkl \
 | 
			
		||||
       strmm.mkl dtrmm.mkl ctrmm.mkl ztrmm.mkl \
 | 
			
		||||
       strsm.mkl dtrsm.mkl ctrsm.mkl ztrsm.mkl \
 | 
			
		||||
       ssyrk.mkl dsyrk.mkl csyrk.mkl zsyrk.mkl \
 | 
			
		||||
       ssyr2k.mkl dsyr2k.mkl csyr2k.mkl zsyr2k.mkl \
 | 
			
		||||
       chemm.mkl zhemm.mkl \
 | 
			
		||||
       cherk.mkl zherk.mkl \
 | 
			
		||||
       cher2k.mkl zher2k.mkl \
 | 
			
		||||
       ssymm.mkl dsymm.mkl csymm.mkl zsymm.mkl
 | 
			
		||||
 | 
			
		||||
all :: goto atlas acml mkl
 | 
			
		||||
 | 
			
		||||
##################################### Slinpack ####################################################
 | 
			
		||||
slinpack.goto : slinpack.$(SUFFIX) ../$(LIBNAME)
 | 
			
		||||
	$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) -lm
 | 
			
		||||
 | 
			
		||||
dlinpack.goto : dlinpack.$(SUFFIX) ../$(LIBNAME)
 | 
			
		||||
	$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) -lm
 | 
			
		||||
 | 
			
		||||
qlinpack.goto : qlinpack.$(SUFFIX) ../$(LIBNAME)
 | 
			
		||||
	$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) -lm
 | 
			
		||||
 | 
			
		||||
clinpack.goto : clinpack.$(SUFFIX) ../$(LIBNAME)
 | 
			
		||||
	$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) -lm
 | 
			
		||||
 | 
			
		||||
zlinpack.goto : zlinpack.$(SUFFIX) ../$(LIBNAME)
 | 
			
		||||
	$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) -lm
 | 
			
		||||
 | 
			
		||||
xlinpack.goto : xlinpack.$(SUFFIX) ../$(LIBNAME)
 | 
			
		||||
	$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) -lm
 | 
			
		||||
 | 
			
		||||
scholesky.goto : scholesky.$(SUFFIX) ../$(LIBNAME)
 | 
			
		||||
	$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) -lm
 | 
			
		||||
 | 
			
		||||
dcholesky.goto : dcholesky.$(SUFFIX) ../$(LIBNAME)
 | 
			
		||||
	$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) -lm
 | 
			
		||||
 | 
			
		||||
qcholesky.goto : qcholesky.$(SUFFIX) ../$(LIBNAME)
 | 
			
		||||
	$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) -lm
 | 
			
		||||
 | 
			
		||||
ccholesky.goto : ccholesky.$(SUFFIX) ../$(LIBNAME)
 | 
			
		||||
	$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) -lm
 | 
			
		||||
 | 
			
		||||
zcholesky.goto : zcholesky.$(SUFFIX) ../$(LIBNAME)
 | 
			
		||||
	$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) -lm
 | 
			
		||||
 | 
			
		||||
xcholesky.goto : xcholesky.$(SUFFIX) ../$(LIBNAME)
 | 
			
		||||
	$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) -lm
 | 
			
		||||
 | 
			
		||||
slinpack.mkl : slinpack.$(SUFFIX)
 | 
			
		||||
	-$(CC) -static $(CFLAGS) -o $(@F) $^ $(LIBMKL) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
dlinpack.mkl : dlinpack.$(SUFFIX)
 | 
			
		||||
	-$(CC) -static $(CFLAGS) -o $(@F) $^ $(LIBMKL) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
clinpack.mkl : clinpack.$(SUFFIX)
 | 
			
		||||
	-$(CC) -static $(CFLAGS) -o $(@F) $^ $(LIBMKL) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
zlinpack.mkl : zlinpack.$(SUFFIX)
 | 
			
		||||
	-$(CC) -static $(CFLAGS) -o $(@F) $^ $(LIBMKL) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
scholesky.mkl : scholesky.$(SUFFIX)
 | 
			
		||||
	-$(CC) -static $(CFLAGS) -o $(@F) $^ $(LIBMKL) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
dcholesky.mkl : dcholesky.$(SUFFIX)
 | 
			
		||||
	-$(CC) -static $(CFLAGS) -o $(@F) $^ $(LIBMKL) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
ccholesky.mkl : ccholesky.$(SUFFIX)
 | 
			
		||||
	-$(CC) -static $(CFLAGS) -o $(@F) $^ $(LIBMKL) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
zcholesky.mkl : zcholesky.$(SUFFIX)
 | 
			
		||||
	-$(CC) -static $(CFLAGS) -o $(@F) $^ $(LIBMKL) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
slinpack.acml : slinpack.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBACML) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
slinpack.atlas : slinpack.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBATLAS) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
slinpack.mkl : slinpack.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBMKL) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
##################################### Dlinpack ####################################################
 | 
			
		||||
dlinpack.goto : dlinpack.$(SUFFIX) ../$(LIBNAME)
 | 
			
		||||
	$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) -lm
 | 
			
		||||
 | 
			
		||||
dlinpack.acml : dlinpack.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBACML) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
dlinpack.atlas : dlinpack.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBATLAS) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
dlinpack.mkl : dlinpack.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBMKL) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
##################################### Clinpack ####################################################
 | 
			
		||||
 | 
			
		||||
clinpack.goto : clinpack.$(SUFFIX) ../$(LIBNAME)
 | 
			
		||||
	$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) -lm
 | 
			
		||||
 | 
			
		||||
clinpack.acml : clinpack.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBACML) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
clinpack.atlas : clinpack.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBATLAS) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
clinpack.mkl : clinpack.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBMKL) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
##################################### Zlinpack ####################################################
 | 
			
		||||
 | 
			
		||||
zlinpack.goto : zlinpack.$(SUFFIX) ../$(LIBNAME)
 | 
			
		||||
	$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) -lm
 | 
			
		||||
 | 
			
		||||
zlinpack.acml : zlinpack.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBACML) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
zlinpack.atlas : zlinpack.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBATLAS) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
zlinpack.mkl : zlinpack.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBMKL) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
##################################### Scholesky ###################################################
 | 
			
		||||
 | 
			
		||||
scholesky.goto : scholesky.$(SUFFIX) ../$(LIBNAME)
 | 
			
		||||
	$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) -lm
 | 
			
		||||
 | 
			
		||||
scholesky.acml : scholesky.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBACML) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
scholesky.atlas : scholesky.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBATLAS) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
scholesky.mkl : scholesky.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBMKL) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
##################################### Dcholesky ###################################################
 | 
			
		||||
 | 
			
		||||
dcholesky.goto : dcholesky.$(SUFFIX) ../$(LIBNAME)
 | 
			
		||||
	$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) -lm
 | 
			
		||||
 | 
			
		||||
dcholesky.acml : dcholesky.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBACML) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
dcholesky.atlas : dcholesky.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBATLAS) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
dcholesky.mkl : dcholesky.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBMKL) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
##################################### Ccholesky ###################################################
 | 
			
		||||
 | 
			
		||||
ccholesky.goto : ccholesky.$(SUFFIX) ../$(LIBNAME)
 | 
			
		||||
	$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) -lm
 | 
			
		||||
 | 
			
		||||
ccholesky.acml : ccholesky.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBACML) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
ccholesky.atlas : ccholesky.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBATLAS) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
ccholesky.mkl : ccholesky.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBMKL) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
zcholesky.goto : zcholesky.$(SUFFIX) ../$(LIBNAME)
 | 
			
		||||
	$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) -lm
 | 
			
		||||
 | 
			
		||||
##################################### Zcholesky ###################################################
 | 
			
		||||
 | 
			
		||||
xcholesky.goto : xcholesky.$(SUFFIX) ../$(LIBNAME)
 | 
			
		||||
	$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) -lm
 | 
			
		||||
 | 
			
		||||
zcholesky.acml : zcholesky.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBACML) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
slinpack.flame : slinpack.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBFLAME) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
zcholesky.atlas : zcholesky.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBATLAS) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
dlinpack.flame : dlinpack.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBFLAME) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
zcholesky.mkl : zcholesky.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBMKL) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
clinpack.flame : clinpack.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBFLAME) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
zlinpack.flame : zlinpack.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBFLAME) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
##################################### Sgemm ####################################################
 | 
			
		||||
sgemm.goto : sgemm.$(SUFFIX) ../$(LIBNAME)
 | 
			
		||||
	$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) -lm
 | 
			
		||||
 | 
			
		||||
scholesky.flame : scholesky.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBFLAME) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
sgemm.acml : sgemm.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBACML) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
dcholesky.flame : dcholesky.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBFLAME) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
sgemm.atlas : sgemm.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBATLAS) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
ccholesky.flame : ccholesky.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBFLAME) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
sgemm.mkl : sgemm.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBMKL) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
zcholesky.flame : zcholesky.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBFLAME) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
##################################### Dgemm ####################################################
 | 
			
		||||
dgemm.goto : dgemm.$(SUFFIX) ../$(LIBNAME)
 | 
			
		||||
	$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) -lm
 | 
			
		||||
 | 
			
		||||
slinpack.sun : slinpack.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBSUNPERF) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
dgemm.acml : dgemm.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBACML) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
dlinpack.sun : dlinpack.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBSUNPERF) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
dgemm.atlas : dgemm.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBATLAS) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
clinpack.sun : clinpack.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBSUNPERF) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
dgemm.mkl : dgemm.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBMKL) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
zlinpack.sun : zlinpack.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBSUNPERF) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
##################################### Cgemm ####################################################
 | 
			
		||||
 | 
			
		||||
scholesky.sun : scholesky.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBSUNPERF) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
cgemm.goto : cgemm.$(SUFFIX) ../$(LIBNAME)
 | 
			
		||||
	$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) -lm
 | 
			
		||||
 | 
			
		||||
dcholesky.sun : dcholesky.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBSUNPERF) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
cgemm.acml : cgemm.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBACML) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
ccholesky.sun : ccholesky.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBSUNPERF) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
cgemm.atlas : cgemm.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBATLAS) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
zcholesky.sun : zcholesky.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBSUNPERF) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
cgemm.mkl : cgemm.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBMKL) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
slinpack.cula : slinpack.$(SUFFIX) cula_wrapper.$(SUFFIX)
 | 
			
		||||
	$(CC) $(CFLAGS) -o $(@F) $^ $(CULA_LIB) ../$(LIBNAME) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
##################################### Zgemm ####################################################
 | 
			
		||||
 | 
			
		||||
clinpack.cula : clinpack.$(SUFFIX) cula_wrapper.$(SUFFIX)
 | 
			
		||||
	$(CC) $(CFLAGS) -o $(@F) $^ $(CULA_LIB) ../$(LIBNAME) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
zgemm.goto : zgemm.$(SUFFIX) ../$(LIBNAME)
 | 
			
		||||
	$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) -lm
 | 
			
		||||
 | 
			
		||||
cula_wrapper.$(SUFFIX) : cula_wrapper.c
 | 
			
		||||
	$(CC) $(CFLAGS) -c $(CULA_INC) -o $(@F) $^
 | 
			
		||||
zgemm.acml : zgemm.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBACML) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
zgemm.atlas : zgemm.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBATLAS) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
zgemm.mkl : zgemm.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBMKL) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
##################################### Ssymm ####################################################
 | 
			
		||||
ssymm.goto : ssymm.$(SUFFIX) ../$(LIBNAME)
 | 
			
		||||
	$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) -lm
 | 
			
		||||
 | 
			
		||||
ssymm.acml : ssymm.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBACML) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
ssymm.atlas : ssymm.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBATLAS) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
ssymm.mkl : ssymm.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBMKL) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
##################################### Dsymm ####################################################
 | 
			
		||||
dsymm.goto : dsymm.$(SUFFIX) ../$(LIBNAME)
 | 
			
		||||
	$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) -lm
 | 
			
		||||
 | 
			
		||||
dsymm.acml : dsymm.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBACML) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
dsymm.atlas : dsymm.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBATLAS) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
dsymm.mkl : dsymm.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBMKL) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
##################################### Csymm ####################################################
 | 
			
		||||
 | 
			
		||||
csymm.goto : csymm.$(SUFFIX) ../$(LIBNAME)
 | 
			
		||||
	$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) -lm
 | 
			
		||||
 | 
			
		||||
csymm.acml : csymm.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBACML) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
csymm.atlas : csymm.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBATLAS) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
csymm.mkl : csymm.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBMKL) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
##################################### Zsymm ####################################################
 | 
			
		||||
 | 
			
		||||
zsymm.goto : zsymm.$(SUFFIX) ../$(LIBNAME)
 | 
			
		||||
	$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) -lm
 | 
			
		||||
 | 
			
		||||
zsymm.acml : zsymm.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBACML) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
zsymm.atlas : zsymm.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBATLAS) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
zsymm.mkl : zsymm.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBMKL) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
##################################### Strmm ####################################################
 | 
			
		||||
strmm.goto : strmm.$(SUFFIX) ../$(LIBNAME)
 | 
			
		||||
	$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) -lm
 | 
			
		||||
 | 
			
		||||
strmm.acml : strmm.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBACML) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
strmm.atlas : strmm.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBATLAS) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
strmm.mkl : strmm.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBMKL) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
##################################### Dtrmm ####################################################
 | 
			
		||||
dtrmm.goto : dtrmm.$(SUFFIX) ../$(LIBNAME)
 | 
			
		||||
	$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) -lm
 | 
			
		||||
 | 
			
		||||
dtrmm.acml : dtrmm.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBACML) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
dtrmm.atlas : dtrmm.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBATLAS) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
dtrmm.mkl : dtrmm.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBMKL) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
##################################### Ctrmm ####################################################
 | 
			
		||||
 | 
			
		||||
ctrmm.goto : ctrmm.$(SUFFIX) ../$(LIBNAME)
 | 
			
		||||
	$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) -lm
 | 
			
		||||
 | 
			
		||||
ctrmm.acml : ctrmm.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBACML) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
ctrmm.atlas : ctrmm.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBATLAS) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
ctrmm.mkl : ctrmm.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBMKL) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
##################################### Ztrmm ####################################################
 | 
			
		||||
 | 
			
		||||
ztrmm.goto : ztrmm.$(SUFFIX) ../$(LIBNAME)
 | 
			
		||||
	$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) -lm
 | 
			
		||||
 | 
			
		||||
ztrmm.acml : ztrmm.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBACML) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
ztrmm.atlas : ztrmm.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBATLAS) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
ztrmm.mkl : ztrmm.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBMKL) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
##################################### Strsm ####################################################
 | 
			
		||||
strsm.goto : strsm.$(SUFFIX) ../$(LIBNAME)
 | 
			
		||||
	$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) -lm
 | 
			
		||||
 | 
			
		||||
strsm.acml : strsm.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBACML) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
strsm.atlas : strsm.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBATLAS) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
strsm.mkl : strsm.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBMKL) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
##################################### Dtrsm ####################################################
 | 
			
		||||
dtrsm.goto : dtrsm.$(SUFFIX) ../$(LIBNAME)
 | 
			
		||||
	$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) -lm
 | 
			
		||||
 | 
			
		||||
dtrsm.acml : dtrsm.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBACML) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
dtrsm.atlas : dtrsm.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBATLAS) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
dtrsm.mkl : dtrsm.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBMKL) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
##################################### Ctrsm ####################################################
 | 
			
		||||
 | 
			
		||||
ctrsm.goto : ctrsm.$(SUFFIX) ../$(LIBNAME)
 | 
			
		||||
	$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) -lm
 | 
			
		||||
 | 
			
		||||
ctrsm.acml : ctrsm.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBACML) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
ctrsm.atlas : ctrsm.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBATLAS) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
ctrsm.mkl : ctrsm.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBMKL) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
##################################### Ztrsm ####################################################
 | 
			
		||||
 | 
			
		||||
ztrsm.goto : ztrsm.$(SUFFIX) ../$(LIBNAME)
 | 
			
		||||
	$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) -lm
 | 
			
		||||
 | 
			
		||||
ztrsm.acml : ztrsm.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBACML) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
ztrsm.atlas : ztrsm.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBATLAS) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
ztrsm.mkl : ztrsm.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBMKL) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
##################################### Ssyrk ####################################################
 | 
			
		||||
ssyrk.goto : ssyrk.$(SUFFIX) ../$(LIBNAME)
 | 
			
		||||
	$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) -lm
 | 
			
		||||
 | 
			
		||||
ssyrk.acml : ssyrk.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBACML) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
ssyrk.atlas : ssyrk.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBATLAS) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
ssyrk.mkl : ssyrk.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBMKL) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
##################################### Dsyrk ####################################################
 | 
			
		||||
dsyrk.goto : dsyrk.$(SUFFIX) ../$(LIBNAME)
 | 
			
		||||
	$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) -lm
 | 
			
		||||
 | 
			
		||||
dsyrk.acml : dsyrk.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBACML) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
dsyrk.atlas : dsyrk.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBATLAS) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
dsyrk.mkl : dsyrk.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBMKL) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
##################################### Csyrk ####################################################
 | 
			
		||||
 | 
			
		||||
csyrk.goto : csyrk.$(SUFFIX) ../$(LIBNAME)
 | 
			
		||||
	$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) -lm
 | 
			
		||||
 | 
			
		||||
csyrk.acml : csyrk.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBACML) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
csyrk.atlas : csyrk.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBATLAS) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
csyrk.mkl : csyrk.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBMKL) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
##################################### Zsyrk ####################################################
 | 
			
		||||
 | 
			
		||||
zsyrk.goto : zsyrk.$(SUFFIX) ../$(LIBNAME)
 | 
			
		||||
	$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) -lm
 | 
			
		||||
 | 
			
		||||
zsyrk.acml : zsyrk.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBACML) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
zsyrk.atlas : zsyrk.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBATLAS) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
zsyrk.mkl : zsyrk.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBMKL) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
##################################### Ssyr2k ####################################################
 | 
			
		||||
ssyr2k.goto : ssyr2k.$(SUFFIX) ../$(LIBNAME)
 | 
			
		||||
	$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) -lm
 | 
			
		||||
 | 
			
		||||
ssyr2k.acml : ssyr2k.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBACML) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
ssyr2k.atlas : ssyr2k.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBATLAS) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
ssyr2k.mkl : ssyr2k.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBMKL) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
##################################### Dsyr2k ####################################################
 | 
			
		||||
dsyr2k.goto : dsyr2k.$(SUFFIX) ../$(LIBNAME)
 | 
			
		||||
	$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) -lm
 | 
			
		||||
 | 
			
		||||
dsyr2k.acml : dsyr2k.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBACML) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
dsyr2k.atlas : dsyr2k.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBATLAS) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
dsyr2k.mkl : dsyr2k.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBMKL) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
##################################### Csyr2k ####################################################
 | 
			
		||||
 | 
			
		||||
csyr2k.goto : csyr2k.$(SUFFIX) ../$(LIBNAME)
 | 
			
		||||
	$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) -lm
 | 
			
		||||
 | 
			
		||||
csyr2k.acml : csyr2k.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBACML) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
csyr2k.atlas : csyr2k.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBATLAS) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
csyr2k.mkl : csyr2k.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBMKL) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
##################################### Zsyr2k ####################################################
 | 
			
		||||
 | 
			
		||||
zsyr2k.goto : zsyr2k.$(SUFFIX) ../$(LIBNAME)
 | 
			
		||||
	$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) -lm
 | 
			
		||||
 | 
			
		||||
zsyr2k.acml : zsyr2k.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBACML) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
zsyr2k.atlas : zsyr2k.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBATLAS) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
zsyr2k.mkl : zsyr2k.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBMKL) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
##################################### Chemm ####################################################
 | 
			
		||||
 | 
			
		||||
chemm.goto : chemm.$(SUFFIX) ../$(LIBNAME)
 | 
			
		||||
	$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) -lm
 | 
			
		||||
 | 
			
		||||
chemm.acml : chemm.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBACML) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
chemm.atlas : chemm.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBATLAS) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
chemm.mkl : chemm.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBMKL) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
##################################### Zhemm ####################################################
 | 
			
		||||
 | 
			
		||||
zhemm.goto : zhemm.$(SUFFIX) ../$(LIBNAME)
 | 
			
		||||
	$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) -lm
 | 
			
		||||
 | 
			
		||||
zhemm.acml : zhemm.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBACML) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
zhemm.atlas : zhemm.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBATLAS) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
zhemm.mkl : zhemm.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBMKL) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
##################################### Cherk ####################################################
 | 
			
		||||
 | 
			
		||||
cherk.goto : cherk.$(SUFFIX) ../$(LIBNAME)
 | 
			
		||||
	$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) -lm
 | 
			
		||||
 | 
			
		||||
cherk.acml : cherk.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBACML) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
cherk.atlas : cherk.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBATLAS) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
cherk.mkl : cherk.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBMKL) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
##################################### Zherk ####################################################
 | 
			
		||||
 | 
			
		||||
zherk.goto : zherk.$(SUFFIX) ../$(LIBNAME)
 | 
			
		||||
	$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) -lm
 | 
			
		||||
 | 
			
		||||
zherk.acml : zherk.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBACML) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
zherk.atlas : zherk.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBATLAS) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
zherk.mkl : zherk.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBMKL) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
##################################### Cher2k ####################################################
 | 
			
		||||
 | 
			
		||||
cher2k.goto : cher2k.$(SUFFIX) ../$(LIBNAME)
 | 
			
		||||
	$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) -lm
 | 
			
		||||
 | 
			
		||||
cher2k.acml : cher2k.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBACML) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
cher2k.atlas : cher2k.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBATLAS) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
cher2k.mkl : cher2k.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBMKL) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
##################################### Zher2k ####################################################
 | 
			
		||||
 | 
			
		||||
zher2k.goto : zher2k.$(SUFFIX) ../$(LIBNAME)
 | 
			
		||||
	$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) -lm
 | 
			
		||||
 | 
			
		||||
zher2k.acml : zher2k.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBACML) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
zher2k.atlas : zher2k.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBATLAS) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
zher2k.mkl : zher2k.$(SUFFIX)
 | 
			
		||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBMKL) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
			
		||||
 | 
			
		||||
###################################################################################################
 | 
			
		||||
 | 
			
		||||
slinpack.$(SUFFIX) : linpack.c
 | 
			
		||||
	$(CC) $(CFLAGS) -c -UCOMPLEX -UDOUBLE -o $(@F) $^
 | 
			
		||||
| 
						 | 
				
			
			@ -159,37 +609,119 @@ slinpack.$(SUFFIX) : linpack.c
 | 
			
		|||
dlinpack.$(SUFFIX) : linpack.c
 | 
			
		||||
	$(CC) $(CFLAGS) -c -UCOMPLEX -DDOUBLE -o $(@F) $^
 | 
			
		||||
 | 
			
		||||
qlinpack.$(SUFFIX) : linpack.c
 | 
			
		||||
	$(CC) $(CFLAGS) -c -UCOMPLEX -DXDOUBLE -o $(@F) $^
 | 
			
		||||
 | 
			
		||||
clinpack.$(SUFFIX) : linpack.c
 | 
			
		||||
	$(CC) $(CFLAGS) -c -DCOMPLEX -UDOUBLE -o $(@F) $^
 | 
			
		||||
 | 
			
		||||
zlinpack.$(SUFFIX) : linpack.c
 | 
			
		||||
	$(CC) $(CFLAGS) -c -DCOMPLEX -DDOUBLE -o $(@F) $^
 | 
			
		||||
 | 
			
		||||
xlinpack.$(SUFFIX) : linpack.c
 | 
			
		||||
	$(CC) $(CFLAGS) -c -DCOMPLEX -DXDOUBLE -o $(@F) $^
 | 
			
		||||
 | 
			
		||||
scholesky.$(SUFFIX) : cholesky.c
 | 
			
		||||
	$(CC) $(CFLAGS) -c -UCOMPLEX -UDOUBLE -o $(@F) $^
 | 
			
		||||
 | 
			
		||||
dcholesky.$(SUFFIX) : cholesky.c
 | 
			
		||||
	$(CC) $(CFLAGS) -c -UCOMPLEX -DDOUBLE -o $(@F) $^
 | 
			
		||||
 | 
			
		||||
qcholesky.$(SUFFIX) : cholesky.c
 | 
			
		||||
	$(CC) $(CFLAGS) -c -UCOMPLEX -DXDOUBLE -o $(@F) $^
 | 
			
		||||
 | 
			
		||||
ccholesky.$(SUFFIX) : cholesky.c
 | 
			
		||||
	$(CC) $(CFLAGS) -c -DCOMPLEX -UDOUBLE -o $(@F) $^
 | 
			
		||||
 | 
			
		||||
zcholesky.$(SUFFIX) : cholesky.c
 | 
			
		||||
	$(CC) $(CFLAGS) -c -DCOMPLEX -DDOUBLE -o $(@F) $^
 | 
			
		||||
 | 
			
		||||
xcholesky.$(SUFFIX) : cholesky.c
 | 
			
		||||
	$(CC) $(CFLAGS) -c -DCOMPLEX -DXDOUBLE -o $(@F) $^
 | 
			
		||||
sgemm.$(SUFFIX) : gemm.c
 | 
			
		||||
	$(CC) $(CFLAGS) -c -UCOMPLEX -UDOUBLE -o $(@F) $^
 | 
			
		||||
 | 
			
		||||
dgemm.$(SUFFIX) : gemm.c
 | 
			
		||||
	$(CC) $(CFLAGS) -c -UCOMPLEX -DDOUBLE -o $(@F) $^
 | 
			
		||||
 | 
			
		||||
cgemm.$(SUFFIX) : gemm.c
 | 
			
		||||
	$(CC) $(CFLAGS) -c -DCOMPLEX -UDOUBLE -o $(@F) $^
 | 
			
		||||
 | 
			
		||||
zgemm.$(SUFFIX) : gemm.c
 | 
			
		||||
	$(CC) $(CFLAGS) -c -DCOMPLEX -DDOUBLE -o $(@F) $^
 | 
			
		||||
 | 
			
		||||
ssymm.$(SUFFIX) : symm.c
 | 
			
		||||
	$(CC) $(CFLAGS) -c -UCOMPLEX -UDOUBLE -o $(@F) $^
 | 
			
		||||
 | 
			
		||||
dsymm.$(SUFFIX) : symm.c
 | 
			
		||||
	$(CC) $(CFLAGS) -c -UCOMPLEX -DDOUBLE -o $(@F) $^
 | 
			
		||||
 | 
			
		||||
csymm.$(SUFFIX) : symm.c
 | 
			
		||||
	$(CC) $(CFLAGS) -c -DCOMPLEX -UDOUBLE -o $(@F) $^
 | 
			
		||||
 | 
			
		||||
zsymm.$(SUFFIX) : symm.c
 | 
			
		||||
	$(CC) $(CFLAGS) -c -DCOMPLEX -DDOUBLE -o $(@F) $^
 | 
			
		||||
 | 
			
		||||
strmm.$(SUFFIX) : trmm.c
 | 
			
		||||
	$(CC) $(CFLAGS) -c -UCOMPLEX -UDOUBLE -o $(@F) $^
 | 
			
		||||
 | 
			
		||||
dtrmm.$(SUFFIX) : trmm.c
 | 
			
		||||
	$(CC) $(CFLAGS) -c -UCOMPLEX -DDOUBLE -o $(@F) $^
 | 
			
		||||
 | 
			
		||||
ctrmm.$(SUFFIX) : trmm.c
 | 
			
		||||
	$(CC) $(CFLAGS) -c -DCOMPLEX -UDOUBLE -o $(@F) $^
 | 
			
		||||
 | 
			
		||||
ztrmm.$(SUFFIX) : trmm.c
 | 
			
		||||
	$(CC) $(CFLAGS) -c -DCOMPLEX -DDOUBLE -o $(@F) $^
 | 
			
		||||
 | 
			
		||||
strsm.$(SUFFIX) : trsm.c
 | 
			
		||||
	$(CC) $(CFLAGS) -c -UCOMPLEX -UDOUBLE -o $(@F) $^
 | 
			
		||||
 | 
			
		||||
dtrsm.$(SUFFIX) : trsm.c
 | 
			
		||||
	$(CC) $(CFLAGS) -c -UCOMPLEX -DDOUBLE -o $(@F) $^
 | 
			
		||||
 | 
			
		||||
ctrsm.$(SUFFIX) : trsm.c
 | 
			
		||||
	$(CC) $(CFLAGS) -c -DCOMPLEX -UDOUBLE -o $(@F) $^
 | 
			
		||||
 | 
			
		||||
ztrsm.$(SUFFIX) : trsm.c
 | 
			
		||||
	$(CC) $(CFLAGS) -c -DCOMPLEX -DDOUBLE -o $(@F) $^
 | 
			
		||||
 | 
			
		||||
ssyrk.$(SUFFIX) : syrk.c
 | 
			
		||||
	$(CC) $(CFLAGS) -c -UCOMPLEX -UDOUBLE -o $(@F) $^
 | 
			
		||||
 | 
			
		||||
dsyrk.$(SUFFIX) : syrk.c
 | 
			
		||||
	$(CC) $(CFLAGS) -c -UCOMPLEX -DDOUBLE -o $(@F) $^
 | 
			
		||||
 | 
			
		||||
csyrk.$(SUFFIX) : syrk.c
 | 
			
		||||
	$(CC) $(CFLAGS) -c -DCOMPLEX -UDOUBLE -o $(@F) $^
 | 
			
		||||
 | 
			
		||||
zsyrk.$(SUFFIX) : syrk.c
 | 
			
		||||
	$(CC) $(CFLAGS) -c -DCOMPLEX -DDOUBLE -o $(@F) $^
 | 
			
		||||
 | 
			
		||||
ssyr2k.$(SUFFIX) : syr2k.c
 | 
			
		||||
	$(CC) $(CFLAGS) -c -UCOMPLEX -UDOUBLE -o $(@F) $^
 | 
			
		||||
 | 
			
		||||
dsyr2k.$(SUFFIX) : syr2k.c
 | 
			
		||||
	$(CC) $(CFLAGS) -c -UCOMPLEX -DDOUBLE -o $(@F) $^
 | 
			
		||||
 | 
			
		||||
csyr2k.$(SUFFIX) : syr2k.c
 | 
			
		||||
	$(CC) $(CFLAGS) -c -DCOMPLEX -UDOUBLE -o $(@F) $^
 | 
			
		||||
 | 
			
		||||
zsyr2k.$(SUFFIX) : syr2k.c
 | 
			
		||||
	$(CC) $(CFLAGS) -c -DCOMPLEX -DDOUBLE -o $(@F) $^
 | 
			
		||||
 | 
			
		||||
chemm.$(SUFFIX) : hemm.c
 | 
			
		||||
	$(CC) $(CFLAGS) -c -DCOMPLEX -UDOUBLE -o $(@F) $^
 | 
			
		||||
 | 
			
		||||
zhemm.$(SUFFIX) : hemm.c
 | 
			
		||||
	$(CC) $(CFLAGS) -c -DCOMPLEX -DDOUBLE -o $(@F) $^
 | 
			
		||||
 | 
			
		||||
cherk.$(SUFFIX) : herk.c
 | 
			
		||||
	$(CC) $(CFLAGS) -c -DCOMPLEX -UDOUBLE -o $(@F) $^
 | 
			
		||||
 | 
			
		||||
zherk.$(SUFFIX) : herk.c
 | 
			
		||||
	$(CC) $(CFLAGS) -c -DCOMPLEX -DDOUBLE -o $(@F) $^
 | 
			
		||||
 | 
			
		||||
cher2k.$(SUFFIX) : her2k.c
 | 
			
		||||
	$(CC) $(CFLAGS) -c -DCOMPLEX -UDOUBLE -o $(@F) $^
 | 
			
		||||
 | 
			
		||||
zher2k.$(SUFFIX) : her2k.c
 | 
			
		||||
	$(CC) $(CFLAGS) -c -DCOMPLEX -DDOUBLE -o $(@F) $^
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
clean ::
 | 
			
		||||
	@rm -f *.goto *.mkl *.acml *.sun *.cula
 | 
			
		||||
	@rm -f *.goto *.mkl *.acml *.atlas
 | 
			
		||||
 | 
			
		||||
include $(TOPDIR)/Makefile.tail
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,210 @@
 | 
			
		|||
/***************************************************************************
 | 
			
		||||
Copyright (c) 2014, The OpenBLAS Project
 | 
			
		||||
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 OpenBLAS project 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 OPENBLAS PROJECT 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 <stdlib.h>
 | 
			
		||||
#ifdef __CYGWIN32__
 | 
			
		||||
#include <sys/time.h>
 | 
			
		||||
#endif
 | 
			
		||||
#include "common.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#undef GEMM
 | 
			
		||||
 | 
			
		||||
#ifndef COMPLEX
 | 
			
		||||
 | 
			
		||||
#ifdef DOUBLE
 | 
			
		||||
#define GEMM   BLASFUNC(dgemm)
 | 
			
		||||
#else
 | 
			
		||||
#define GEMM   BLASFUNC(sgemm)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#else
 | 
			
		||||
 | 
			
		||||
#ifdef DOUBLE
 | 
			
		||||
#define GEMM   BLASFUNC(zgemm)
 | 
			
		||||
#else
 | 
			
		||||
#define GEMM   BLASFUNC(cgemm)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(__WIN32__) || defined(__WIN64__)
 | 
			
		||||
 | 
			
		||||
#ifndef DELTA_EPOCH_IN_MICROSECS
 | 
			
		||||
#define DELTA_EPOCH_IN_MICROSECS 11644473600000000ULL
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
int gettimeofday(struct timeval *tv, void *tz){
 | 
			
		||||
 | 
			
		||||
  FILETIME ft;
 | 
			
		||||
  unsigned __int64 tmpres = 0;
 | 
			
		||||
  static int tzflag;
 | 
			
		||||
 | 
			
		||||
  if (NULL != tv)
 | 
			
		||||
    {
 | 
			
		||||
      GetSystemTimeAsFileTime(&ft);
 | 
			
		||||
 | 
			
		||||
      tmpres |= ft.dwHighDateTime;
 | 
			
		||||
      tmpres <<= 32;
 | 
			
		||||
      tmpres |= ft.dwLowDateTime;
 | 
			
		||||
 | 
			
		||||
      /*converting file time to unix epoch*/
 | 
			
		||||
      tmpres /= 10;  /*convert into microseconds*/
 | 
			
		||||
      tmpres -= DELTA_EPOCH_IN_MICROSECS;
 | 
			
		||||
      tv->tv_sec = (long)(tmpres / 1000000UL);
 | 
			
		||||
      tv->tv_usec = (long)(tmpres % 1000000UL);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if !defined(__WIN32__) && !defined(__WIN64__) && !defined(__CYGWIN32__) && 0
 | 
			
		||||
 | 
			
		||||
static void *huge_malloc(BLASLONG size){
 | 
			
		||||
  int shmid;
 | 
			
		||||
  void *address;
 | 
			
		||||
 | 
			
		||||
#ifndef SHM_HUGETLB
 | 
			
		||||
#define SHM_HUGETLB 04000
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
  if ((shmid =shmget(IPC_PRIVATE,
 | 
			
		||||
		     (size + HUGE_PAGESIZE) & ~(HUGE_PAGESIZE - 1),
 | 
			
		||||
		     SHM_HUGETLB | IPC_CREAT |0600)) < 0) {
 | 
			
		||||
    printf( "Memory allocation failed(shmget).\n");
 | 
			
		||||
    exit(1);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  address = shmat(shmid, NULL, SHM_RND);
 | 
			
		||||
 | 
			
		||||
  if ((BLASLONG)address == -1){
 | 
			
		||||
    printf( "Memory allocation failed(shmat).\n");
 | 
			
		||||
    exit(1);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  shmctl(shmid, IPC_RMID, 0);
 | 
			
		||||
 | 
			
		||||
  return address;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#define malloc huge_malloc
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
int MAIN__(int argc, char *argv[]){
 | 
			
		||||
 | 
			
		||||
  FLOAT *a, *b, *c;
 | 
			
		||||
  FLOAT alpha[] = {1.0, 1.0};
 | 
			
		||||
  FLOAT beta [] = {1.0, 1.0};
 | 
			
		||||
  char trans='N';
 | 
			
		||||
  blasint m, i, j;
 | 
			
		||||
  int loops = 1;
 | 
			
		||||
  int l;
 | 
			
		||||
  char *p;
 | 
			
		||||
 | 
			
		||||
  int from =   1;
 | 
			
		||||
  int to   = 200;
 | 
			
		||||
  int step =   1;
 | 
			
		||||
 | 
			
		||||
  struct timeval start, stop;
 | 
			
		||||
  double time1,timeg;
 | 
			
		||||
 | 
			
		||||
  argc--;argv++;
 | 
			
		||||
 | 
			
		||||
  if (argc > 0) { from     = atol(*argv);		argc--; argv++;}
 | 
			
		||||
  if (argc > 0) { to       = MAX(atol(*argv), from);	argc--; argv++;}
 | 
			
		||||
  if (argc > 0) { step     = atol(*argv);		argc--; argv++;}
 | 
			
		||||
 | 
			
		||||
  fprintf(stderr, "From : %3d  To : %3d Step = %3d\n", from, to, step);
 | 
			
		||||
 | 
			
		||||
  if (( a = (FLOAT *)malloc(sizeof(FLOAT) * to * to * COMPSIZE)) == NULL){
 | 
			
		||||
    fprintf(stderr,"Out of Memory!!\n");exit(1);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (( b = (FLOAT *)malloc(sizeof(FLOAT) * to * to * COMPSIZE)) == NULL){
 | 
			
		||||
    fprintf(stderr,"Out of Memory!!\n");exit(1);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (( c = (FLOAT *)malloc(sizeof(FLOAT) * to * to * COMPSIZE)) == NULL){
 | 
			
		||||
    fprintf(stderr,"Out of Memory!!\n");exit(1);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  p = getenv("OPENBLAS_LOOPS");
 | 
			
		||||
  if ( p != NULL )
 | 
			
		||||
	loops = atoi(p);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef linux
 | 
			
		||||
  srandom(getpid());
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
  fprintf(stderr, "   SIZE       Flops\n");
 | 
			
		||||
 | 
			
		||||
  for(m = from; m <= to; m += step)
 | 
			
		||||
  {
 | 
			
		||||
 | 
			
		||||
    timeg=0;
 | 
			
		||||
 | 
			
		||||
    fprintf(stderr, " %6d : ", (int)m);
 | 
			
		||||
 | 
			
		||||
    for (l=0; l<loops; l++)
 | 
			
		||||
    {
 | 
			
		||||
  
 | 
			
		||||
    	for(j = 0; j < m; j++){
 | 
			
		||||
      		for(i = 0; i < m * COMPSIZE; i++){
 | 
			
		||||
			a[i + j * m * COMPSIZE] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5;
 | 
			
		||||
			b[i + j * m * COMPSIZE] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5;
 | 
			
		||||
			c[i + j * m * COMPSIZE] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5;
 | 
			
		||||
      		}
 | 
			
		||||
    	}
 | 
			
		||||
 | 
			
		||||
    	gettimeofday( &start, (struct timezone *)0);
 | 
			
		||||
 | 
			
		||||
    	GEMM (&trans, &trans, &m, &m, &m, alpha, a, &m, b, &m, beta, c, &m );
 | 
			
		||||
 | 
			
		||||
    	gettimeofday( &stop, (struct timezone *)0);
 | 
			
		||||
 | 
			
		||||
    	time1 = (double)(stop.tv_sec - start.tv_sec) + (double)((stop.tv_usec - start.tv_usec)) * 1.e-6;
 | 
			
		||||
 | 
			
		||||
	timeg += time1;
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    timeg /= loops;
 | 
			
		||||
    fprintf(stderr,
 | 
			
		||||
	    " %10.2f MFlops\n",
 | 
			
		||||
	    COMPSIZE * COMPSIZE * 2. * (double)m * (double)m * (double)m / timeg * 1.e-6);
 | 
			
		||||
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void main(int argc, char *argv[]) __attribute__((weak, alias("MAIN__")));
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,192 @@
 | 
			
		|||
/***************************************************************************
 | 
			
		||||
Copyright (c) 2014, The OpenBLAS Project
 | 
			
		||||
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 OpenBLAS project 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 OPENBLAS PROJECT 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 <stdlib.h>
 | 
			
		||||
#ifdef __CYGWIN32__
 | 
			
		||||
#include <sys/time.h>
 | 
			
		||||
#endif
 | 
			
		||||
#include "common.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#undef HEMM
 | 
			
		||||
 | 
			
		||||
#ifdef DOUBLE
 | 
			
		||||
#define HEMM   BLASFUNC(zhemm)
 | 
			
		||||
#else
 | 
			
		||||
#define HEMM   BLASFUNC(chemm)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#if defined(__WIN32__) || defined(__WIN64__)
 | 
			
		||||
 | 
			
		||||
#ifndef DELTA_EPOCH_IN_MICROSECS
 | 
			
		||||
#define DELTA_EPOCH_IN_MICROSECS 11644473600000000ULL
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
int gettimeofday(struct timeval *tv, void *tz){
 | 
			
		||||
 | 
			
		||||
  FILETIME ft;
 | 
			
		||||
  unsigned __int64 tmpres = 0;
 | 
			
		||||
  static int tzflag;
 | 
			
		||||
 | 
			
		||||
  if (NULL != tv)
 | 
			
		||||
    {
 | 
			
		||||
      GetSystemTimeAsFileTime(&ft);
 | 
			
		||||
 | 
			
		||||
      tmpres |= ft.dwHighDateTime;
 | 
			
		||||
      tmpres <<= 32;
 | 
			
		||||
      tmpres |= ft.dwLowDateTime;
 | 
			
		||||
 | 
			
		||||
      /*converting file time to unix epoch*/
 | 
			
		||||
      tmpres /= 10;  /*convert into microseconds*/
 | 
			
		||||
      tmpres -= DELTA_EPOCH_IN_MICROSECS;
 | 
			
		||||
      tv->tv_sec = (long)(tmpres / 1000000UL);
 | 
			
		||||
      tv->tv_usec = (long)(tmpres % 1000000UL);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if !defined(__WIN32__) && !defined(__WIN64__) && !defined(__CYGWIN32__) && 0
 | 
			
		||||
 | 
			
		||||
static void *huge_malloc(BLASLONG size){
 | 
			
		||||
  int shmid;
 | 
			
		||||
  void *address;
 | 
			
		||||
 | 
			
		||||
#ifndef SHM_HUGETLB
 | 
			
		||||
#define SHM_HUGETLB 04000
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
  if ((shmid =shmget(IPC_PRIVATE,
 | 
			
		||||
		     (size + HUGE_PAGESIZE) & ~(HUGE_PAGESIZE - 1),
 | 
			
		||||
		     SHM_HUGETLB | IPC_CREAT |0600)) < 0) {
 | 
			
		||||
    printf( "Memory allocation failed(shmget).\n");
 | 
			
		||||
    exit(1);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  address = shmat(shmid, NULL, SHM_RND);
 | 
			
		||||
 | 
			
		||||
  if ((BLASLONG)address == -1){
 | 
			
		||||
    printf( "Memory allocation failed(shmat).\n");
 | 
			
		||||
    exit(1);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  shmctl(shmid, IPC_RMID, 0);
 | 
			
		||||
 | 
			
		||||
  return address;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#define malloc huge_malloc
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
int MAIN__(int argc, char *argv[]){
 | 
			
		||||
 | 
			
		||||
  FLOAT *a, *b, *c;
 | 
			
		||||
  FLOAT alpha[] = {1.0, 1.0};
 | 
			
		||||
  FLOAT beta [] = {1.0, 1.0};
 | 
			
		||||
  char *p;
 | 
			
		||||
 | 
			
		||||
  char side='L';
 | 
			
		||||
  char uplo='U';
 | 
			
		||||
 | 
			
		||||
  if ((p = getenv("OPENBLAS_SIDE"))) side=*p; 
 | 
			
		||||
  if ((p = getenv("OPENBLAS_UPLO"))) uplo=*p;
 | 
			
		||||
 | 
			
		||||
  blasint m, i, j;
 | 
			
		||||
 | 
			
		||||
  int from =   1;
 | 
			
		||||
  int to   = 200;
 | 
			
		||||
  int step =   1;
 | 
			
		||||
 | 
			
		||||
  struct timeval start, stop;
 | 
			
		||||
  double time1;
 | 
			
		||||
 | 
			
		||||
  argc--;argv++;
 | 
			
		||||
 | 
			
		||||
  if (argc > 0) { from     = atol(*argv);		argc--; argv++;}
 | 
			
		||||
  if (argc > 0) { to       = MAX(atol(*argv), from);	argc--; argv++;}
 | 
			
		||||
  if (argc > 0) { step     = atol(*argv);		argc--; argv++;}
 | 
			
		||||
 | 
			
		||||
  fprintf(stderr, "From : %3d  To : %3d Step = %3d Side = %c Uplo = %c\n", from, to, step,side,uplo);
 | 
			
		||||
 | 
			
		||||
  if (( a = (FLOAT *)malloc(sizeof(FLOAT) * to * to * COMPSIZE)) == NULL){
 | 
			
		||||
    fprintf(stderr,"Out of Memory!!\n");exit(1);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (( b = (FLOAT *)malloc(sizeof(FLOAT) * to * to * COMPSIZE)) == NULL){
 | 
			
		||||
    fprintf(stderr,"Out of Memory!!\n");exit(1);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (( c = (FLOAT *)malloc(sizeof(FLOAT) * to * to * COMPSIZE)) == NULL){
 | 
			
		||||
    fprintf(stderr,"Out of Memory!!\n");exit(1);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef linux
 | 
			
		||||
  srandom(getpid());
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
  fprintf(stderr, "   SIZE       Flops\n");
 | 
			
		||||
 | 
			
		||||
  for(m = from; m <= to; m += step)
 | 
			
		||||
  {
 | 
			
		||||
 | 
			
		||||
    fprintf(stderr, " %6d : ", (int)m);
 | 
			
		||||
 | 
			
		||||
    for(j = 0; j < m; j++){
 | 
			
		||||
      for(i = 0; i < m * COMPSIZE; i++){
 | 
			
		||||
	a[i + j * m * COMPSIZE] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5;
 | 
			
		||||
	b[i + j * m * COMPSIZE] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5;
 | 
			
		||||
	c[i + j * m * COMPSIZE] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    gettimeofday( &start, (struct timezone *)0);
 | 
			
		||||
 | 
			
		||||
    HEMM (&side, &uplo, &m, &m, alpha, a, &m, b, &m, beta, c, &m );
 | 
			
		||||
 | 
			
		||||
    gettimeofday( &stop, (struct timezone *)0);
 | 
			
		||||
 | 
			
		||||
    time1 = (double)(stop.tv_sec - start.tv_sec) + (double)((stop.tv_usec - start.tv_usec)) * 1.e-6;
 | 
			
		||||
 | 
			
		||||
    gettimeofday( &start, (struct timezone *)0);
 | 
			
		||||
 | 
			
		||||
    fprintf(stderr,
 | 
			
		||||
	    " %10.2f MFlops\n",
 | 
			
		||||
	    COMPSIZE * COMPSIZE * 2. * (double)m * (double)m * (double)m / time1 * 1.e-6);
 | 
			
		||||
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void main(int argc, char *argv[]) __attribute__((weak, alias("MAIN__")));
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,191 @@
 | 
			
		|||
/***************************************************************************
 | 
			
		||||
Copyright (c) 2014, The OpenBLAS Project
 | 
			
		||||
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 OpenBLAS project 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 OPENBLAS PROJECT 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 <stdlib.h>
 | 
			
		||||
#ifdef __CYGWIN32__
 | 
			
		||||
#include <sys/time.h>
 | 
			
		||||
#endif
 | 
			
		||||
#include "common.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#undef HER2K
 | 
			
		||||
#ifdef DOUBLE
 | 
			
		||||
#define HER2K   BLASFUNC(zher2k)
 | 
			
		||||
#else
 | 
			
		||||
#define HER2K   BLASFUNC(cher2k)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#if defined(__WIN32__) || defined(__WIN64__)
 | 
			
		||||
 | 
			
		||||
#ifndef DELTA_EPOCH_IN_MICROSECS
 | 
			
		||||
#define DELTA_EPOCH_IN_MICROSECS 11644473600000000ULL
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
int gettimeofday(struct timeval *tv, void *tz){
 | 
			
		||||
 | 
			
		||||
  FILETIME ft;
 | 
			
		||||
  unsigned __int64 tmpres = 0;
 | 
			
		||||
  static int tzflag;
 | 
			
		||||
 | 
			
		||||
  if (NULL != tv)
 | 
			
		||||
    {
 | 
			
		||||
      GetSystemTimeAsFileTime(&ft);
 | 
			
		||||
 | 
			
		||||
      tmpres |= ft.dwHighDateTime;
 | 
			
		||||
      tmpres <<= 32;
 | 
			
		||||
      tmpres |= ft.dwLowDateTime;
 | 
			
		||||
 | 
			
		||||
      /*converting file time to unix epoch*/
 | 
			
		||||
      tmpres /= 10;  /*convert into microseconds*/
 | 
			
		||||
      tmpres -= DELTA_EPOCH_IN_MICROSECS;
 | 
			
		||||
      tv->tv_sec = (long)(tmpres / 1000000UL);
 | 
			
		||||
      tv->tv_usec = (long)(tmpres % 1000000UL);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if !defined(__WIN32__) && !defined(__WIN64__) && !defined(__CYGWIN32__) && 0
 | 
			
		||||
 | 
			
		||||
static void *huge_malloc(BLASLONG size){
 | 
			
		||||
  int shmid;
 | 
			
		||||
  void *address;
 | 
			
		||||
 | 
			
		||||
#ifndef SHM_HUGETLB
 | 
			
		||||
#define SHM_HUGETLB 04000
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
  if ((shmid =shmget(IPC_PRIVATE,
 | 
			
		||||
		     (size + HUGE_PAGESIZE) & ~(HUGE_PAGESIZE - 1),
 | 
			
		||||
		     SHM_HUGETLB | IPC_CREAT |0600)) < 0) {
 | 
			
		||||
    printf( "Memory allocation failed(shmget).\n");
 | 
			
		||||
    exit(1);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  address = shmat(shmid, NULL, SHM_RND);
 | 
			
		||||
 | 
			
		||||
  if ((BLASLONG)address == -1){
 | 
			
		||||
    printf( "Memory allocation failed(shmat).\n");
 | 
			
		||||
    exit(1);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  shmctl(shmid, IPC_RMID, 0);
 | 
			
		||||
 | 
			
		||||
  return address;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#define malloc huge_malloc
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
int MAIN__(int argc, char *argv[]){
 | 
			
		||||
 | 
			
		||||
  FLOAT *a, *b, *c;
 | 
			
		||||
  FLOAT alpha[] = {1.0, 1.0};
 | 
			
		||||
  FLOAT beta [] = {1.0, 1.0};
 | 
			
		||||
  char *p;
 | 
			
		||||
 | 
			
		||||
  char uplo='U';
 | 
			
		||||
  char trans='N';
 | 
			
		||||
 | 
			
		||||
  if ((p = getenv("OPENBLAS_UPLO"))) uplo=*p; 
 | 
			
		||||
  if ((p = getenv("OPENBLAS_TRANS"))) trans=*p;
 | 
			
		||||
 | 
			
		||||
  blasint m, i, j;
 | 
			
		||||
 | 
			
		||||
  int from =   1;
 | 
			
		||||
  int to   = 200;
 | 
			
		||||
  int step =   1;
 | 
			
		||||
 | 
			
		||||
  struct timeval start, stop;
 | 
			
		||||
  double time1;
 | 
			
		||||
 | 
			
		||||
  argc--;argv++;
 | 
			
		||||
 | 
			
		||||
  if (argc > 0) { from     = atol(*argv);		argc--; argv++;}
 | 
			
		||||
  if (argc > 0) { to       = MAX(atol(*argv), from);	argc--; argv++;}
 | 
			
		||||
  if (argc > 0) { step     = atol(*argv);		argc--; argv++;}
 | 
			
		||||
 | 
			
		||||
  fprintf(stderr, "From : %3d  To : %3d Step = %3d Uplo = %c Trans = %c\n", from, to, step,uplo,trans);
 | 
			
		||||
 | 
			
		||||
  if (( a = (FLOAT *)malloc(sizeof(FLOAT) * to * to * COMPSIZE)) == NULL){
 | 
			
		||||
    fprintf(stderr,"Out of Memory!!\n");exit(1);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (( b = (FLOAT *)malloc(sizeof(FLOAT) * to * to * COMPSIZE)) == NULL){
 | 
			
		||||
    fprintf(stderr,"Out of Memory!!\n");exit(1);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (( c = (FLOAT *)malloc(sizeof(FLOAT) * to * to * COMPSIZE)) == NULL){
 | 
			
		||||
    fprintf(stderr,"Out of Memory!!\n");exit(1);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef linux
 | 
			
		||||
  srandom(getpid());
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
  fprintf(stderr, "   SIZE       Flops\n");
 | 
			
		||||
 | 
			
		||||
  for(m = from; m <= to; m += step)
 | 
			
		||||
  {
 | 
			
		||||
 | 
			
		||||
    fprintf(stderr, " %6d : ", (int)m);
 | 
			
		||||
 | 
			
		||||
    for(j = 0; j < m; j++){
 | 
			
		||||
      for(i = 0; i < m * COMPSIZE; i++){
 | 
			
		||||
	a[i + j * m * COMPSIZE] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5;
 | 
			
		||||
	b[i + j * m * COMPSIZE] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5;
 | 
			
		||||
	c[i + j * m * COMPSIZE] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    gettimeofday( &start, (struct timezone *)0);
 | 
			
		||||
 | 
			
		||||
    HER2K (&uplo, &trans, &m, &m, alpha, a, &m, b, &m, beta, c, &m );
 | 
			
		||||
 | 
			
		||||
    gettimeofday( &stop, (struct timezone *)0);
 | 
			
		||||
 | 
			
		||||
    time1 = (double)(stop.tv_sec - start.tv_sec) + (double)((stop.tv_usec - start.tv_usec)) * 1.e-6;
 | 
			
		||||
 | 
			
		||||
    gettimeofday( &start, (struct timezone *)0);
 | 
			
		||||
 | 
			
		||||
    fprintf(stderr,
 | 
			
		||||
	    " %10.2f MFlops\n",
 | 
			
		||||
	    COMPSIZE * COMPSIZE * 2. * (double)m * (double)m * (double)m / time1 * 1.e-6);
 | 
			
		||||
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void main(int argc, char *argv[]) __attribute__((weak, alias("MAIN__")));
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,189 @@
 | 
			
		|||
/***************************************************************************
 | 
			
		||||
Copyright (c) 2014, The OpenBLAS Project
 | 
			
		||||
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 OpenBLAS project 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 OPENBLAS PROJECT 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 <stdlib.h>
 | 
			
		||||
#ifdef __CYGWIN32__
 | 
			
		||||
#include <sys/time.h>
 | 
			
		||||
#endif
 | 
			
		||||
#include "common.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#undef HERK
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef DOUBLE
 | 
			
		||||
#define HERK   BLASFUNC(zherk)
 | 
			
		||||
#else
 | 
			
		||||
#define HERK   BLASFUNC(cherk)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#if defined(__WIN32__) || defined(__WIN64__)
 | 
			
		||||
 | 
			
		||||
#ifndef DELTA_EPOCH_IN_MICROSECS
 | 
			
		||||
#define DELTA_EPOCH_IN_MICROSECS 11644473600000000ULL
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
int gettimeofday(struct timeval *tv, void *tz){
 | 
			
		||||
 | 
			
		||||
  FILETIME ft;
 | 
			
		||||
  unsigned __int64 tmpres = 0;
 | 
			
		||||
  static int tzflag;
 | 
			
		||||
 | 
			
		||||
  if (NULL != tv)
 | 
			
		||||
    {
 | 
			
		||||
      GetSystemTimeAsFileTime(&ft);
 | 
			
		||||
 | 
			
		||||
      tmpres |= ft.dwHighDateTime;
 | 
			
		||||
      tmpres <<= 32;
 | 
			
		||||
      tmpres |= ft.dwLowDateTime;
 | 
			
		||||
 | 
			
		||||
      /*converting file time to unix epoch*/
 | 
			
		||||
      tmpres /= 10;  /*convert into microseconds*/
 | 
			
		||||
      tmpres -= DELTA_EPOCH_IN_MICROSECS;
 | 
			
		||||
      tv->tv_sec = (long)(tmpres / 1000000UL);
 | 
			
		||||
      tv->tv_usec = (long)(tmpres % 1000000UL);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if !defined(__WIN32__) && !defined(__WIN64__) && !defined(__CYGWIN32__) && 0
 | 
			
		||||
 | 
			
		||||
static void *huge_malloc(BLASLONG size){
 | 
			
		||||
  int shmid;
 | 
			
		||||
  void *address;
 | 
			
		||||
 | 
			
		||||
#ifndef SHM_HUGETLB
 | 
			
		||||
#define SHM_HUGETLB 04000
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
  if ((shmid =shmget(IPC_PRIVATE,
 | 
			
		||||
		     (size + HUGE_PAGESIZE) & ~(HUGE_PAGESIZE - 1),
 | 
			
		||||
		     SHM_HUGETLB | IPC_CREAT |0600)) < 0) {
 | 
			
		||||
    printf( "Memory allocation failed(shmget).\n");
 | 
			
		||||
    exit(1);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  address = shmat(shmid, NULL, SHM_RND);
 | 
			
		||||
 | 
			
		||||
  if ((BLASLONG)address == -1){
 | 
			
		||||
    printf( "Memory allocation failed(shmat).\n");
 | 
			
		||||
    exit(1);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  shmctl(shmid, IPC_RMID, 0);
 | 
			
		||||
 | 
			
		||||
  return address;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#define malloc huge_malloc
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
int MAIN__(int argc, char *argv[]){
 | 
			
		||||
 | 
			
		||||
  FLOAT *a, *c;
 | 
			
		||||
  FLOAT alpha[] = {1.0, 1.0};
 | 
			
		||||
  FLOAT beta [] = {1.0, 1.0};
 | 
			
		||||
  char *p;
 | 
			
		||||
 | 
			
		||||
  char uplo='U';
 | 
			
		||||
  char trans='N';
 | 
			
		||||
 | 
			
		||||
  if ((p = getenv("OPENBLAS_UPLO"))) uplo=*p;
 | 
			
		||||
  if ((p = getenv("OPENBLAS_TRANS"))) trans=*p;
 | 
			
		||||
 | 
			
		||||
  blasint m, i, j;
 | 
			
		||||
 | 
			
		||||
  int from =   1;
 | 
			
		||||
  int to   = 200;
 | 
			
		||||
  int step =   1;
 | 
			
		||||
 | 
			
		||||
  struct timeval start, stop;
 | 
			
		||||
  double time1;
 | 
			
		||||
 | 
			
		||||
  argc--;argv++;
 | 
			
		||||
 | 
			
		||||
  if (argc > 0) { from     = atol(*argv);		argc--; argv++;}
 | 
			
		||||
  if (argc > 0) { to       = MAX(atol(*argv), from);	argc--; argv++;}
 | 
			
		||||
  if (argc > 0) { step     = atol(*argv);		argc--; argv++;}
 | 
			
		||||
 | 
			
		||||
  fprintf(stderr, "From : %3d  To : %3d Step = %3d Uplo = %c Trans = %c\n", from, to, step,uplo,trans);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  if (( a = (FLOAT *)malloc(sizeof(FLOAT) * to * to * COMPSIZE)) == NULL){
 | 
			
		||||
    fprintf(stderr,"Out of Memory!!\n");exit(1);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (( c = (FLOAT *)malloc(sizeof(FLOAT) * to * to * COMPSIZE)) == NULL){
 | 
			
		||||
    fprintf(stderr,"Out of Memory!!\n");exit(1);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef linux
 | 
			
		||||
  srandom(getpid());
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
  fprintf(stderr, "   SIZE       Flops\n");
 | 
			
		||||
 | 
			
		||||
  for(m = from; m <= to; m += step)
 | 
			
		||||
  {
 | 
			
		||||
 | 
			
		||||
    fprintf(stderr, " %6d : ", (int)m);
 | 
			
		||||
 | 
			
		||||
    for(j = 0; j < m; j++){
 | 
			
		||||
      for(i = 0; i < m * COMPSIZE; i++){
 | 
			
		||||
	a[i + j * m * COMPSIZE] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5;
 | 
			
		||||
	c[i + j * m * COMPSIZE] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    gettimeofday( &start, (struct timezone *)0);
 | 
			
		||||
 | 
			
		||||
    HERK (&uplo, &trans, &m, &m, alpha, a, &m, beta, c, &m );
 | 
			
		||||
 | 
			
		||||
    gettimeofday( &stop, (struct timezone *)0);
 | 
			
		||||
 | 
			
		||||
    time1 = (double)(stop.tv_sec - start.tv_sec) + (double)((stop.tv_usec - start.tv_usec)) * 1.e-6;
 | 
			
		||||
 | 
			
		||||
    gettimeofday( &start, (struct timezone *)0);
 | 
			
		||||
 | 
			
		||||
    fprintf(stderr,
 | 
			
		||||
	    " %10.2f MFlops\n",
 | 
			
		||||
	    COMPSIZE * COMPSIZE * 1. * (double)m * (double)m * (double)m / time1 * 1.e-6);
 | 
			
		||||
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void main(int argc, char *argv[]) __attribute__((weak, alias("MAIN__")));
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,203 @@
 | 
			
		|||
/***************************************************************************
 | 
			
		||||
Copyright (c) 2014, The OpenBLAS Project
 | 
			
		||||
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 OpenBLAS project 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 OPENBLAS PROJECT 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 <stdlib.h>
 | 
			
		||||
#ifdef __CYGWIN32__
 | 
			
		||||
#include <sys/time.h>
 | 
			
		||||
#endif
 | 
			
		||||
#include "common.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#undef SYMM
 | 
			
		||||
 | 
			
		||||
#ifndef COMPLEX
 | 
			
		||||
 | 
			
		||||
#ifdef DOUBLE
 | 
			
		||||
#define SYMM   BLASFUNC(dsymm)
 | 
			
		||||
#else
 | 
			
		||||
#define SYMM   BLASFUNC(ssymm)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#else
 | 
			
		||||
 | 
			
		||||
#ifdef DOUBLE
 | 
			
		||||
#define SYMM   BLASFUNC(zsymm)
 | 
			
		||||
#else
 | 
			
		||||
#define SYMM   BLASFUNC(csymm)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(__WIN32__) || defined(__WIN64__)
 | 
			
		||||
 | 
			
		||||
#ifndef DELTA_EPOCH_IN_MICROSECS
 | 
			
		||||
#define DELTA_EPOCH_IN_MICROSECS 11644473600000000ULL
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
int gettimeofday(struct timeval *tv, void *tz){
 | 
			
		||||
 | 
			
		||||
  FILETIME ft;
 | 
			
		||||
  unsigned __int64 tmpres = 0;
 | 
			
		||||
  static int tzflag;
 | 
			
		||||
 | 
			
		||||
  if (NULL != tv)
 | 
			
		||||
    {
 | 
			
		||||
      GetSystemTimeAsFileTime(&ft);
 | 
			
		||||
 | 
			
		||||
      tmpres |= ft.dwHighDateTime;
 | 
			
		||||
      tmpres <<= 32;
 | 
			
		||||
      tmpres |= ft.dwLowDateTime;
 | 
			
		||||
 | 
			
		||||
      /*converting file time to unix epoch*/
 | 
			
		||||
      tmpres /= 10;  /*convert into microseconds*/
 | 
			
		||||
      tmpres -= DELTA_EPOCH_IN_MICROSECS;
 | 
			
		||||
      tv->tv_sec = (long)(tmpres / 1000000UL);
 | 
			
		||||
      tv->tv_usec = (long)(tmpres % 1000000UL);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if !defined(__WIN32__) && !defined(__WIN64__) && !defined(__CYGWIN32__) && 0
 | 
			
		||||
 | 
			
		||||
static void *huge_malloc(BLASLONG size){
 | 
			
		||||
  int shmid;
 | 
			
		||||
  void *address;
 | 
			
		||||
 | 
			
		||||
#ifndef SHM_HUGETLB
 | 
			
		||||
#define SHM_HUGETLB 04000
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
  if ((shmid =shmget(IPC_PRIVATE,
 | 
			
		||||
		     (size + HUGE_PAGESIZE) & ~(HUGE_PAGESIZE - 1),
 | 
			
		||||
		     SHM_HUGETLB | IPC_CREAT |0600)) < 0) {
 | 
			
		||||
    printf( "Memory allocation failed(shmget).\n");
 | 
			
		||||
    exit(1);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  address = shmat(shmid, NULL, SHM_RND);
 | 
			
		||||
 | 
			
		||||
  if ((BLASLONG)address == -1){
 | 
			
		||||
    printf( "Memory allocation failed(shmat).\n");
 | 
			
		||||
    exit(1);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  shmctl(shmid, IPC_RMID, 0);
 | 
			
		||||
 | 
			
		||||
  return address;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#define malloc huge_malloc
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
int MAIN__(int argc, char *argv[]){
 | 
			
		||||
 | 
			
		||||
  FLOAT *a, *b, *c;
 | 
			
		||||
  FLOAT alpha[] = {1.0, 1.0};
 | 
			
		||||
  FLOAT beta [] = {1.0, 1.0};
 | 
			
		||||
  char *p;
 | 
			
		||||
 | 
			
		||||
  char side='L';
 | 
			
		||||
  char uplo='U';
 | 
			
		||||
 | 
			
		||||
  if ((p = getenv("OPENBLAS_SIDE"))) side=*p; 
 | 
			
		||||
  if ((p = getenv("OPENBLAS_UPLO"))) uplo=*p;
 | 
			
		||||
 | 
			
		||||
  blasint m, i, j;
 | 
			
		||||
 | 
			
		||||
  int from =   1;
 | 
			
		||||
  int to   = 200;
 | 
			
		||||
  int step =   1;
 | 
			
		||||
 | 
			
		||||
  struct timeval start, stop;
 | 
			
		||||
  double time1;
 | 
			
		||||
 | 
			
		||||
  argc--;argv++;
 | 
			
		||||
 | 
			
		||||
  if (argc > 0) { from     = atol(*argv);		argc--; argv++;}
 | 
			
		||||
  if (argc > 0) { to       = MAX(atol(*argv), from);	argc--; argv++;}
 | 
			
		||||
  if (argc > 0) { step     = atol(*argv);		argc--; argv++;}
 | 
			
		||||
 | 
			
		||||
  fprintf(stderr, "From : %3d  To : %3d Step = %3d Side = %c Uplo = %c\n", from, to, step,side,uplo);
 | 
			
		||||
 | 
			
		||||
  if (( a = (FLOAT *)malloc(sizeof(FLOAT) * to * to * COMPSIZE)) == NULL){
 | 
			
		||||
    fprintf(stderr,"Out of Memory!!\n");exit(1);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (( b = (FLOAT *)malloc(sizeof(FLOAT) * to * to * COMPSIZE)) == NULL){
 | 
			
		||||
    fprintf(stderr,"Out of Memory!!\n");exit(1);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (( c = (FLOAT *)malloc(sizeof(FLOAT) * to * to * COMPSIZE)) == NULL){
 | 
			
		||||
    fprintf(stderr,"Out of Memory!!\n");exit(1);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef linux
 | 
			
		||||
  srandom(getpid());
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
  fprintf(stderr, "   SIZE       Flops\n");
 | 
			
		||||
 | 
			
		||||
  for(m = from; m <= to; m += step)
 | 
			
		||||
  {
 | 
			
		||||
 | 
			
		||||
    fprintf(stderr, " %6d : ", (int)m);
 | 
			
		||||
 | 
			
		||||
    for(j = 0; j < m; j++){
 | 
			
		||||
      for(i = 0; i < m * COMPSIZE; i++){
 | 
			
		||||
	a[i + j * m * COMPSIZE] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5;
 | 
			
		||||
	b[i + j * m * COMPSIZE] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5;
 | 
			
		||||
	c[i + j * m * COMPSIZE] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    gettimeofday( &start, (struct timezone *)0);
 | 
			
		||||
 | 
			
		||||
    SYMM (&side, &uplo, &m, &m, alpha, a, &m, b, &m, beta, c, &m );
 | 
			
		||||
 | 
			
		||||
    gettimeofday( &stop, (struct timezone *)0);
 | 
			
		||||
 | 
			
		||||
    time1 = (double)(stop.tv_sec - start.tv_sec) + (double)((stop.tv_usec - start.tv_usec)) * 1.e-6;
 | 
			
		||||
 | 
			
		||||
    gettimeofday( &start, (struct timezone *)0);
 | 
			
		||||
 | 
			
		||||
    fprintf(stderr,
 | 
			
		||||
	    " %10.2f MFlops\n",
 | 
			
		||||
	    COMPSIZE * COMPSIZE * 2. * (double)m * (double)m * (double)m / time1 * 1.e-6);
 | 
			
		||||
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void main(int argc, char *argv[]) __attribute__((weak, alias("MAIN__")));
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,203 @@
 | 
			
		|||
/***************************************************************************
 | 
			
		||||
Copyright (c) 2014, The OpenBLAS Project
 | 
			
		||||
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 OpenBLAS project 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 OPENBLAS PROJECT 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 <stdlib.h>
 | 
			
		||||
#ifdef __CYGWIN32__
 | 
			
		||||
#include <sys/time.h>
 | 
			
		||||
#endif
 | 
			
		||||
#include "common.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#undef SYR2K
 | 
			
		||||
 | 
			
		||||
#ifndef COMPLEX
 | 
			
		||||
 | 
			
		||||
#ifdef DOUBLE
 | 
			
		||||
#define SYR2K   BLASFUNC(dsyr2k)
 | 
			
		||||
#else
 | 
			
		||||
#define SYR2K   BLASFUNC(ssyr2k)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#else
 | 
			
		||||
 | 
			
		||||
#ifdef DOUBLE
 | 
			
		||||
#define SYR2K   BLASFUNC(zsyr2k)
 | 
			
		||||
#else
 | 
			
		||||
#define SYR2K   BLASFUNC(csyr2k)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(__WIN32__) || defined(__WIN64__)
 | 
			
		||||
 | 
			
		||||
#ifndef DELTA_EPOCH_IN_MICROSECS
 | 
			
		||||
#define DELTA_EPOCH_IN_MICROSECS 11644473600000000ULL
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
int gettimeofday(struct timeval *tv, void *tz){
 | 
			
		||||
 | 
			
		||||
  FILETIME ft;
 | 
			
		||||
  unsigned __int64 tmpres = 0;
 | 
			
		||||
  static int tzflag;
 | 
			
		||||
 | 
			
		||||
  if (NULL != tv)
 | 
			
		||||
    {
 | 
			
		||||
      GetSystemTimeAsFileTime(&ft);
 | 
			
		||||
 | 
			
		||||
      tmpres |= ft.dwHighDateTime;
 | 
			
		||||
      tmpres <<= 32;
 | 
			
		||||
      tmpres |= ft.dwLowDateTime;
 | 
			
		||||
 | 
			
		||||
      /*converting file time to unix epoch*/
 | 
			
		||||
      tmpres /= 10;  /*convert into microseconds*/
 | 
			
		||||
      tmpres -= DELTA_EPOCH_IN_MICROSECS;
 | 
			
		||||
      tv->tv_sec = (long)(tmpres / 1000000UL);
 | 
			
		||||
      tv->tv_usec = (long)(tmpres % 1000000UL);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if !defined(__WIN32__) && !defined(__WIN64__) && !defined(__CYGWIN32__) && 0
 | 
			
		||||
 | 
			
		||||
static void *huge_malloc(BLASLONG size){
 | 
			
		||||
  int shmid;
 | 
			
		||||
  void *address;
 | 
			
		||||
 | 
			
		||||
#ifndef SHM_HUGETLB
 | 
			
		||||
#define SHM_HUGETLB 04000
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
  if ((shmid =shmget(IPC_PRIVATE,
 | 
			
		||||
		     (size + HUGE_PAGESIZE) & ~(HUGE_PAGESIZE - 1),
 | 
			
		||||
		     SHM_HUGETLB | IPC_CREAT |0600)) < 0) {
 | 
			
		||||
    printf( "Memory allocation failed(shmget).\n");
 | 
			
		||||
    exit(1);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  address = shmat(shmid, NULL, SHM_RND);
 | 
			
		||||
 | 
			
		||||
  if ((BLASLONG)address == -1){
 | 
			
		||||
    printf( "Memory allocation failed(shmat).\n");
 | 
			
		||||
    exit(1);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  shmctl(shmid, IPC_RMID, 0);
 | 
			
		||||
 | 
			
		||||
  return address;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#define malloc huge_malloc
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
int MAIN__(int argc, char *argv[]){
 | 
			
		||||
 | 
			
		||||
  FLOAT *a, *b, *c;
 | 
			
		||||
  FLOAT alpha[] = {1.0, 1.0};
 | 
			
		||||
  FLOAT beta [] = {1.0, 1.0};
 | 
			
		||||
  char *p;
 | 
			
		||||
 | 
			
		||||
  char uplo='U';
 | 
			
		||||
  char trans='N';
 | 
			
		||||
 | 
			
		||||
  if ((p = getenv("OPENBLAS_UPLO"))) uplo=*p; 
 | 
			
		||||
  if ((p = getenv("OPENBLAS_TRANS"))) trans=*p;
 | 
			
		||||
 | 
			
		||||
  blasint m, i, j;
 | 
			
		||||
 | 
			
		||||
  int from =   1;
 | 
			
		||||
  int to   = 200;
 | 
			
		||||
  int step =   1;
 | 
			
		||||
 | 
			
		||||
  struct timeval start, stop;
 | 
			
		||||
  double time1;
 | 
			
		||||
 | 
			
		||||
  argc--;argv++;
 | 
			
		||||
 | 
			
		||||
  if (argc > 0) { from     = atol(*argv);		argc--; argv++;}
 | 
			
		||||
  if (argc > 0) { to       = MAX(atol(*argv), from);	argc--; argv++;}
 | 
			
		||||
  if (argc > 0) { step     = atol(*argv);		argc--; argv++;}
 | 
			
		||||
 | 
			
		||||
  fprintf(stderr, "From : %3d  To : %3d Step = %3d Uplo = %c Trans = %c\n", from, to, step,uplo,trans);
 | 
			
		||||
 | 
			
		||||
  if (( a = (FLOAT *)malloc(sizeof(FLOAT) * to * to * COMPSIZE)) == NULL){
 | 
			
		||||
    fprintf(stderr,"Out of Memory!!\n");exit(1);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (( b = (FLOAT *)malloc(sizeof(FLOAT) * to * to * COMPSIZE)) == NULL){
 | 
			
		||||
    fprintf(stderr,"Out of Memory!!\n");exit(1);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (( c = (FLOAT *)malloc(sizeof(FLOAT) * to * to * COMPSIZE)) == NULL){
 | 
			
		||||
    fprintf(stderr,"Out of Memory!!\n");exit(1);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef linux
 | 
			
		||||
  srandom(getpid());
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
  fprintf(stderr, "   SIZE       Flops\n");
 | 
			
		||||
 | 
			
		||||
  for(m = from; m <= to; m += step)
 | 
			
		||||
  {
 | 
			
		||||
 | 
			
		||||
    fprintf(stderr, " %6d : ", (int)m);
 | 
			
		||||
 | 
			
		||||
    for(j = 0; j < m; j++){
 | 
			
		||||
      for(i = 0; i < m * COMPSIZE; i++){
 | 
			
		||||
	a[i + j * m * COMPSIZE] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5;
 | 
			
		||||
	b[i + j * m * COMPSIZE] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5;
 | 
			
		||||
	c[i + j * m * COMPSIZE] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    gettimeofday( &start, (struct timezone *)0);
 | 
			
		||||
 | 
			
		||||
    SYR2K (&uplo, &trans, &m, &m, alpha, a, &m, b, &m, beta, c, &m );
 | 
			
		||||
 | 
			
		||||
    gettimeofday( &stop, (struct timezone *)0);
 | 
			
		||||
 | 
			
		||||
    time1 = (double)(stop.tv_sec - start.tv_sec) + (double)((stop.tv_usec - start.tv_usec)) * 1.e-6;
 | 
			
		||||
 | 
			
		||||
    gettimeofday( &start, (struct timezone *)0);
 | 
			
		||||
 | 
			
		||||
    fprintf(stderr,
 | 
			
		||||
	    " %10.2f MFlops\n",
 | 
			
		||||
	    COMPSIZE * COMPSIZE * 2. * (double)m * (double)m * (double)m / time1 * 1.e-6);
 | 
			
		||||
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void main(int argc, char *argv[]) __attribute__((weak, alias("MAIN__")));
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,199 @@
 | 
			
		|||
/***************************************************************************
 | 
			
		||||
Copyright (c) 2014, The OpenBLAS Project
 | 
			
		||||
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 OpenBLAS project 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 OPENBLAS PROJECT 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 <stdlib.h>
 | 
			
		||||
#ifdef __CYGWIN32__
 | 
			
		||||
#include <sys/time.h>
 | 
			
		||||
#endif
 | 
			
		||||
#include "common.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#undef SYRK
 | 
			
		||||
 | 
			
		||||
#ifndef COMPLEX
 | 
			
		||||
 | 
			
		||||
#ifdef DOUBLE
 | 
			
		||||
#define SYRK   BLASFUNC(dsyrk)
 | 
			
		||||
#else
 | 
			
		||||
#define SYRK   BLASFUNC(ssyrk)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#else
 | 
			
		||||
 | 
			
		||||
#ifdef DOUBLE
 | 
			
		||||
#define SYRK   BLASFUNC(zsyrk)
 | 
			
		||||
#else
 | 
			
		||||
#define SYRK   BLASFUNC(csyrk)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(__WIN32__) || defined(__WIN64__)
 | 
			
		||||
 | 
			
		||||
#ifndef DELTA_EPOCH_IN_MICROSECS
 | 
			
		||||
#define DELTA_EPOCH_IN_MICROSECS 11644473600000000ULL
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
int gettimeofday(struct timeval *tv, void *tz){
 | 
			
		||||
 | 
			
		||||
  FILETIME ft;
 | 
			
		||||
  unsigned __int64 tmpres = 0;
 | 
			
		||||
  static int tzflag;
 | 
			
		||||
 | 
			
		||||
  if (NULL != tv)
 | 
			
		||||
    {
 | 
			
		||||
      GetSystemTimeAsFileTime(&ft);
 | 
			
		||||
 | 
			
		||||
      tmpres |= ft.dwHighDateTime;
 | 
			
		||||
      tmpres <<= 32;
 | 
			
		||||
      tmpres |= ft.dwLowDateTime;
 | 
			
		||||
 | 
			
		||||
      /*converting file time to unix epoch*/
 | 
			
		||||
      tmpres /= 10;  /*convert into microseconds*/
 | 
			
		||||
      tmpres -= DELTA_EPOCH_IN_MICROSECS;
 | 
			
		||||
      tv->tv_sec = (long)(tmpres / 1000000UL);
 | 
			
		||||
      tv->tv_usec = (long)(tmpres % 1000000UL);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if !defined(__WIN32__) && !defined(__WIN64__) && !defined(__CYGWIN32__) && 0
 | 
			
		||||
 | 
			
		||||
static void *huge_malloc(BLASLONG size){
 | 
			
		||||
  int shmid;
 | 
			
		||||
  void *address;
 | 
			
		||||
 | 
			
		||||
#ifndef SHM_HUGETLB
 | 
			
		||||
#define SHM_HUGETLB 04000
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
  if ((shmid =shmget(IPC_PRIVATE,
 | 
			
		||||
		     (size + HUGE_PAGESIZE) & ~(HUGE_PAGESIZE - 1),
 | 
			
		||||
		     SHM_HUGETLB | IPC_CREAT |0600)) < 0) {
 | 
			
		||||
    printf( "Memory allocation failed(shmget).\n");
 | 
			
		||||
    exit(1);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  address = shmat(shmid, NULL, SHM_RND);
 | 
			
		||||
 | 
			
		||||
  if ((BLASLONG)address == -1){
 | 
			
		||||
    printf( "Memory allocation failed(shmat).\n");
 | 
			
		||||
    exit(1);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  shmctl(shmid, IPC_RMID, 0);
 | 
			
		||||
 | 
			
		||||
  return address;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#define malloc huge_malloc
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
int MAIN__(int argc, char *argv[]){
 | 
			
		||||
 | 
			
		||||
  FLOAT *a, *c;
 | 
			
		||||
  FLOAT alpha[] = {1.0, 1.0};
 | 
			
		||||
  FLOAT beta [] = {1.0, 1.0};
 | 
			
		||||
  char *p;
 | 
			
		||||
 | 
			
		||||
  char uplo='U';
 | 
			
		||||
  char trans='N';
 | 
			
		||||
 | 
			
		||||
  if ((p = getenv("OPENBLAS_UPLO"))) uplo=*p;
 | 
			
		||||
  if ((p = getenv("OPENBLAS_TRANS"))) trans=*p;
 | 
			
		||||
 | 
			
		||||
  blasint m, i, j;
 | 
			
		||||
 | 
			
		||||
  int from =   1;
 | 
			
		||||
  int to   = 200;
 | 
			
		||||
  int step =   1;
 | 
			
		||||
 | 
			
		||||
  struct timeval start, stop;
 | 
			
		||||
  double time1;
 | 
			
		||||
 | 
			
		||||
  argc--;argv++;
 | 
			
		||||
 | 
			
		||||
  if (argc > 0) { from     = atol(*argv);		argc--; argv++;}
 | 
			
		||||
  if (argc > 0) { to       = MAX(atol(*argv), from);	argc--; argv++;}
 | 
			
		||||
  if (argc > 0) { step     = atol(*argv);		argc--; argv++;}
 | 
			
		||||
 | 
			
		||||
  fprintf(stderr, "From : %3d  To : %3d Step = %3d Uplo = %c Trans = %c\n", from, to, step,uplo,trans);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  if (( a = (FLOAT *)malloc(sizeof(FLOAT) * to * to * COMPSIZE)) == NULL){
 | 
			
		||||
    fprintf(stderr,"Out of Memory!!\n");exit(1);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (( c = (FLOAT *)malloc(sizeof(FLOAT) * to * to * COMPSIZE)) == NULL){
 | 
			
		||||
    fprintf(stderr,"Out of Memory!!\n");exit(1);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef linux
 | 
			
		||||
  srandom(getpid());
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
  fprintf(stderr, "   SIZE       Flops\n");
 | 
			
		||||
 | 
			
		||||
  for(m = from; m <= to; m += step)
 | 
			
		||||
  {
 | 
			
		||||
 | 
			
		||||
    fprintf(stderr, " %6d : ", (int)m);
 | 
			
		||||
 | 
			
		||||
    for(j = 0; j < m; j++){
 | 
			
		||||
      for(i = 0; i < m * COMPSIZE; i++){
 | 
			
		||||
	a[i + j * m * COMPSIZE] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5;
 | 
			
		||||
	c[i + j * m * COMPSIZE] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    gettimeofday( &start, (struct timezone *)0);
 | 
			
		||||
 | 
			
		||||
    SYRK (&uplo, &trans, &m, &m, alpha, a, &m, beta, c, &m );
 | 
			
		||||
 | 
			
		||||
    gettimeofday( &stop, (struct timezone *)0);
 | 
			
		||||
 | 
			
		||||
    time1 = (double)(stop.tv_sec - start.tv_sec) + (double)((stop.tv_usec - start.tv_usec)) * 1.e-6;
 | 
			
		||||
 | 
			
		||||
    gettimeofday( &start, (struct timezone *)0);
 | 
			
		||||
 | 
			
		||||
    fprintf(stderr,
 | 
			
		||||
	    " %10.2f MFlops\n",
 | 
			
		||||
	    COMPSIZE * COMPSIZE * 1. * (double)m * (double)m * (double)m / time1 * 1.e-6);
 | 
			
		||||
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void main(int argc, char *argv[]) __attribute__((weak, alias("MAIN__")));
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,202 @@
 | 
			
		|||
/***************************************************************************
 | 
			
		||||
Copyright (c) 2014, The OpenBLAS Project
 | 
			
		||||
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 OpenBLAS project 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 OPENBLAS PROJECT 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 <stdlib.h>
 | 
			
		||||
#ifdef __CYGWIN32__
 | 
			
		||||
#include <sys/time.h>
 | 
			
		||||
#endif
 | 
			
		||||
#include "common.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#undef TRMM
 | 
			
		||||
 | 
			
		||||
#ifndef COMPLEX
 | 
			
		||||
 | 
			
		||||
#ifdef DOUBLE
 | 
			
		||||
#define TRMM   BLASFUNC(dtrmm)
 | 
			
		||||
#else
 | 
			
		||||
#define TRMM   BLASFUNC(strmm)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#else
 | 
			
		||||
 | 
			
		||||
#ifdef DOUBLE
 | 
			
		||||
#define TRMM   BLASFUNC(ztrmm)
 | 
			
		||||
#else
 | 
			
		||||
#define TRMM   BLASFUNC(ctrmm)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(__WIN32__) || defined(__WIN64__)
 | 
			
		||||
 | 
			
		||||
#ifndef DELTA_EPOCH_IN_MICROSECS
 | 
			
		||||
#define DELTA_EPOCH_IN_MICROSECS 11644473600000000ULL
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
int gettimeofday(struct timeval *tv, void *tz){
 | 
			
		||||
 | 
			
		||||
  FILETIME ft;
 | 
			
		||||
  unsigned __int64 tmpres = 0;
 | 
			
		||||
  static int tzflag;
 | 
			
		||||
 | 
			
		||||
  if (NULL != tv)
 | 
			
		||||
    {
 | 
			
		||||
      GetSystemTimeAsFileTime(&ft);
 | 
			
		||||
 | 
			
		||||
      tmpres |= ft.dwHighDateTime;
 | 
			
		||||
      tmpres <<= 32;
 | 
			
		||||
      tmpres |= ft.dwLowDateTime;
 | 
			
		||||
 | 
			
		||||
      /*converting file time to unix epoch*/
 | 
			
		||||
      tmpres /= 10;  /*convert into microseconds*/
 | 
			
		||||
      tmpres -= DELTA_EPOCH_IN_MICROSECS;
 | 
			
		||||
      tv->tv_sec = (long)(tmpres / 1000000UL);
 | 
			
		||||
      tv->tv_usec = (long)(tmpres % 1000000UL);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if !defined(__WIN32__) && !defined(__WIN64__) && !defined(__CYGWIN32__) && 0
 | 
			
		||||
 | 
			
		||||
static void *huge_malloc(BLASLONG size){
 | 
			
		||||
  int shmid;
 | 
			
		||||
  void *address;
 | 
			
		||||
 | 
			
		||||
#ifndef SHM_HUGETLB
 | 
			
		||||
#define SHM_HUGETLB 04000
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
  if ((shmid =shmget(IPC_PRIVATE,
 | 
			
		||||
		     (size + HUGE_PAGESIZE) & ~(HUGE_PAGESIZE - 1),
 | 
			
		||||
		     SHM_HUGETLB | IPC_CREAT |0600)) < 0) {
 | 
			
		||||
    printf( "Memory allocation failed(shmget).\n");
 | 
			
		||||
    exit(1);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  address = shmat(shmid, NULL, SHM_RND);
 | 
			
		||||
 | 
			
		||||
  if ((BLASLONG)address == -1){
 | 
			
		||||
    printf( "Memory allocation failed(shmat).\n");
 | 
			
		||||
    exit(1);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  shmctl(shmid, IPC_RMID, 0);
 | 
			
		||||
 | 
			
		||||
  return address;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#define malloc huge_malloc
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
int MAIN__(int argc, char *argv[]){
 | 
			
		||||
 | 
			
		||||
  FLOAT *a, *b;
 | 
			
		||||
  FLOAT alpha[] = {1.0, 1.0};
 | 
			
		||||
  FLOAT beta [] = {1.0, 1.0};
 | 
			
		||||
  char *p;
 | 
			
		||||
 | 
			
		||||
  char side ='L';
 | 
			
		||||
  char uplo ='U';
 | 
			
		||||
  char trans='N';
 | 
			
		||||
  char diag ='U';
 | 
			
		||||
 | 
			
		||||
  if ((p = getenv("OPENBLAS_SIDE"))) side=*p; 
 | 
			
		||||
  if ((p = getenv("OPENBLAS_UPLO"))) uplo=*p;
 | 
			
		||||
  if ((p = getenv("OPENBLAS_TRANS"))) trans=*p;
 | 
			
		||||
  if ((p = getenv("OPENBLAS_DIAG"))) diag=*p;
 | 
			
		||||
 | 
			
		||||
  blasint m, i, j;
 | 
			
		||||
 | 
			
		||||
  int from =   1;
 | 
			
		||||
  int to   = 200;
 | 
			
		||||
  int step =   1;
 | 
			
		||||
 | 
			
		||||
  struct timeval start, stop;
 | 
			
		||||
  double time1;
 | 
			
		||||
 | 
			
		||||
  argc--;argv++;
 | 
			
		||||
 | 
			
		||||
  if (argc > 0) { from     = atol(*argv);		argc--; argv++;}
 | 
			
		||||
  if (argc > 0) { to       = MAX(atol(*argv), from);	argc--; argv++;}
 | 
			
		||||
  if (argc > 0) { step     = atol(*argv);		argc--; argv++;}
 | 
			
		||||
 | 
			
		||||
  fprintf(stderr, "From : %3d  To : %3d Step = %3d Side = %c Uplo = %c Trans = %c Diag = %c\n", from, to, step,side,uplo,trans,diag);
 | 
			
		||||
 | 
			
		||||
  if (( a = (FLOAT *)malloc(sizeof(FLOAT) * to * to * COMPSIZE)) == NULL){
 | 
			
		||||
    fprintf(stderr,"Out of Memory!!\n");exit(1);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (( b = (FLOAT *)malloc(sizeof(FLOAT) * to * to * COMPSIZE)) == NULL){
 | 
			
		||||
    fprintf(stderr,"Out of Memory!!\n");exit(1);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef linux
 | 
			
		||||
  srandom(getpid());
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
  fprintf(stderr, "   SIZE       Flops\n");
 | 
			
		||||
 | 
			
		||||
  for(m = from; m <= to; m += step)
 | 
			
		||||
  {
 | 
			
		||||
 | 
			
		||||
    fprintf(stderr, " %6d : ", (int)m);
 | 
			
		||||
 | 
			
		||||
    for(j = 0; j < m; j++){
 | 
			
		||||
      for(i = 0; i < m * COMPSIZE; i++){
 | 
			
		||||
	a[i + j * m * COMPSIZE] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5;
 | 
			
		||||
	b[i + j * m * COMPSIZE] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    gettimeofday( &start, (struct timezone *)0);
 | 
			
		||||
 | 
			
		||||
    TRMM (&side, &uplo, &trans, &diag, &m, &m, alpha, a, &m, b, &m);
 | 
			
		||||
 | 
			
		||||
    gettimeofday( &stop, (struct timezone *)0);
 | 
			
		||||
 | 
			
		||||
    time1 = (double)(stop.tv_sec - start.tv_sec) + (double)((stop.tv_usec - start.tv_usec)) * 1.e-6;
 | 
			
		||||
 | 
			
		||||
    gettimeofday( &start, (struct timezone *)0);
 | 
			
		||||
 | 
			
		||||
    fprintf(stderr,
 | 
			
		||||
	    " %10.2f MFlops\n",
 | 
			
		||||
	    COMPSIZE * COMPSIZE * 1. * (double)m * (double)m * (double)m / time1 * 1.e-6);
 | 
			
		||||
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void main(int argc, char *argv[]) __attribute__((weak, alias("MAIN__")));
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,202 @@
 | 
			
		|||
/***************************************************************************
 | 
			
		||||
Copyright (c) 2014, The OpenBLAS Project
 | 
			
		||||
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 OpenBLAS project 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 OPENBLAS PROJECT 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 <stdlib.h>
 | 
			
		||||
#ifdef __CYGWIN32__
 | 
			
		||||
#include <sys/time.h>
 | 
			
		||||
#endif
 | 
			
		||||
#include "common.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#undef TRSM
 | 
			
		||||
 | 
			
		||||
#ifndef COMPLEX
 | 
			
		||||
 | 
			
		||||
#ifdef DOUBLE
 | 
			
		||||
#define TRSM   BLASFUNC(dtrsm)
 | 
			
		||||
#else
 | 
			
		||||
#define TRSM   BLASFUNC(strsm)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#else
 | 
			
		||||
 | 
			
		||||
#ifdef DOUBLE
 | 
			
		||||
#define TRSM   BLASFUNC(ztrsm)
 | 
			
		||||
#else
 | 
			
		||||
#define TRSM   BLASFUNC(ctrsm)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(__WIN32__) || defined(__WIN64__)
 | 
			
		||||
 | 
			
		||||
#ifndef DELTA_EPOCH_IN_MICROSECS
 | 
			
		||||
#define DELTA_EPOCH_IN_MICROSECS 11644473600000000ULL
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
int gettimeofday(struct timeval *tv, void *tz){
 | 
			
		||||
 | 
			
		||||
  FILETIME ft;
 | 
			
		||||
  unsigned __int64 tmpres = 0;
 | 
			
		||||
  static int tzflag;
 | 
			
		||||
 | 
			
		||||
  if (NULL != tv)
 | 
			
		||||
    {
 | 
			
		||||
      GetSystemTimeAsFileTime(&ft);
 | 
			
		||||
 | 
			
		||||
      tmpres |= ft.dwHighDateTime;
 | 
			
		||||
      tmpres <<= 32;
 | 
			
		||||
      tmpres |= ft.dwLowDateTime;
 | 
			
		||||
 | 
			
		||||
      /*converting file time to unix epoch*/
 | 
			
		||||
      tmpres /= 10;  /*convert into microseconds*/
 | 
			
		||||
      tmpres -= DELTA_EPOCH_IN_MICROSECS;
 | 
			
		||||
      tv->tv_sec = (long)(tmpres / 1000000UL);
 | 
			
		||||
      tv->tv_usec = (long)(tmpres % 1000000UL);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if !defined(__WIN32__) && !defined(__WIN64__) && !defined(__CYGWIN32__) && 0
 | 
			
		||||
 | 
			
		||||
static void *huge_malloc(BLASLONG size){
 | 
			
		||||
  int shmid;
 | 
			
		||||
  void *address;
 | 
			
		||||
 | 
			
		||||
#ifndef SHM_HUGETLB
 | 
			
		||||
#define SHM_HUGETLB 04000
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
  if ((shmid =shmget(IPC_PRIVATE,
 | 
			
		||||
		     (size + HUGE_PAGESIZE) & ~(HUGE_PAGESIZE - 1),
 | 
			
		||||
		     SHM_HUGETLB | IPC_CREAT |0600)) < 0) {
 | 
			
		||||
    printf( "Memory allocation failed(shmget).\n");
 | 
			
		||||
    exit(1);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  address = shmat(shmid, NULL, SHM_RND);
 | 
			
		||||
 | 
			
		||||
  if ((BLASLONG)address == -1){
 | 
			
		||||
    printf( "Memory allocation failed(shmat).\n");
 | 
			
		||||
    exit(1);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  shmctl(shmid, IPC_RMID, 0);
 | 
			
		||||
 | 
			
		||||
  return address;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#define malloc huge_malloc
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
int MAIN__(int argc, char *argv[]){
 | 
			
		||||
 | 
			
		||||
  FLOAT *a, *b;
 | 
			
		||||
  FLOAT alpha[] = {1.0, 1.0};
 | 
			
		||||
  FLOAT beta [] = {1.0, 1.0};
 | 
			
		||||
  char *p;
 | 
			
		||||
 | 
			
		||||
  char side ='L';
 | 
			
		||||
  char uplo ='U';
 | 
			
		||||
  char trans='N';
 | 
			
		||||
  char diag ='U';
 | 
			
		||||
 | 
			
		||||
  if ((p = getenv("OPENBLAS_SIDE"))) side=*p; 
 | 
			
		||||
  if ((p = getenv("OPENBLAS_UPLO"))) uplo=*p;
 | 
			
		||||
  if ((p = getenv("OPENBLAS_TRANS"))) trans=*p;
 | 
			
		||||
  if ((p = getenv("OPENBLAS_DIAG"))) diag=*p;
 | 
			
		||||
 | 
			
		||||
  blasint m, i, j;
 | 
			
		||||
 | 
			
		||||
  int from =   1;
 | 
			
		||||
  int to   = 200;
 | 
			
		||||
  int step =   1;
 | 
			
		||||
 | 
			
		||||
  struct timeval start, stop;
 | 
			
		||||
  double time1;
 | 
			
		||||
 | 
			
		||||
  argc--;argv++;
 | 
			
		||||
 | 
			
		||||
  if (argc > 0) { from     = atol(*argv);		argc--; argv++;}
 | 
			
		||||
  if (argc > 0) { to       = MAX(atol(*argv), from);	argc--; argv++;}
 | 
			
		||||
  if (argc > 0) { step     = atol(*argv);		argc--; argv++;}
 | 
			
		||||
 | 
			
		||||
  fprintf(stderr, "From : %3d  To : %3d Step = %3d Side = %c Uplo = %c Trans = %c Diag = %c\n", from, to, step,side,uplo,trans,diag);
 | 
			
		||||
 | 
			
		||||
  if (( a = (FLOAT *)malloc(sizeof(FLOAT) * to * to * COMPSIZE)) == NULL){
 | 
			
		||||
    fprintf(stderr,"Out of Memory!!\n");exit(1);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  if (( b = (FLOAT *)malloc(sizeof(FLOAT) * to * to * COMPSIZE)) == NULL){
 | 
			
		||||
    fprintf(stderr,"Out of Memory!!\n");exit(1);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifdef linux
 | 
			
		||||
  srandom(getpid());
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
  fprintf(stderr, "   SIZE       Flops\n");
 | 
			
		||||
 | 
			
		||||
  for(m = from; m <= to; m += step)
 | 
			
		||||
  {
 | 
			
		||||
 | 
			
		||||
    fprintf(stderr, " %6d : ", (int)m);
 | 
			
		||||
 | 
			
		||||
    for(j = 0; j < m; j++){
 | 
			
		||||
      for(i = 0; i < m * COMPSIZE; i++){
 | 
			
		||||
	a[i + j * m * COMPSIZE] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5;
 | 
			
		||||
	b[i + j * m * COMPSIZE] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    gettimeofday( &start, (struct timezone *)0);
 | 
			
		||||
 | 
			
		||||
    TRSM (&side, &uplo, &trans, &diag, &m, &m, alpha, a, &m, b, &m);
 | 
			
		||||
 | 
			
		||||
    gettimeofday( &stop, (struct timezone *)0);
 | 
			
		||||
 | 
			
		||||
    time1 = (double)(stop.tv_sec - start.tv_sec) + (double)((stop.tv_usec - start.tv_usec)) * 1.e-6;
 | 
			
		||||
 | 
			
		||||
    gettimeofday( &start, (struct timezone *)0);
 | 
			
		||||
 | 
			
		||||
    fprintf(stderr,
 | 
			
		||||
	    " %10.2f MFlops\n",
 | 
			
		||||
	    COMPSIZE * COMPSIZE * 1. * (double)m * (double)m * (double)m / time1 * 1.e-6);
 | 
			
		||||
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void main(int argc, char *argv[]) __attribute__((weak, alias("MAIN__")));
 | 
			
		||||
		Loading…
	
		Reference in New Issue