commit
						3dd094f17a
					
				| 
						 | 
					@ -1,157 +1,607 @@
 | 
				
			||||||
TOPDIR	= ..
 | 
					TOPDIR	= ..
 | 
				
			||||||
include $(TOPDIR)/Makefile.system
 | 
					include $(TOPDIR)/Makefile.system
 | 
				
			||||||
 | 
					
 | 
				
			||||||
CULA_INC = -I/usr/local/cula/include
 | 
					# ACML standard
 | 
				
			||||||
CULA_LIB = -L/usr/local/cula/lib64 -Wl,-rpath,/usr/local/cula/lib64 -lcula_fortran -lcula -lcublas
 | 
					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
 | 
					# ACML custom
 | 
				
			||||||
	./dlinpack.goto  4000 4000 1
 | 
					#ACML=/opt/pb/acml-5-3-1-gfortran-64bit/gfortran64_fma4_mp/lib
 | 
				
			||||||
	-./dlinpack.mkl  4000 4000 1
 | 
					#LIBACML = -fopenmp $(ACML)/libacml_mp.a -lgfortran -lm
 | 
				
			||||||
	-./dlinpack.acml 4000 4000 1
 | 
					 | 
				
			||||||
	./dcholesky.goto  4000 4000 1
 | 
					 | 
				
			||||||
	-./dcholesky.mkl  4000 4000 1
 | 
					 | 
				
			||||||
	-./dcholesky.acml 4000 4000 1
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# 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)
 | 
					slinpack.goto : slinpack.$(SUFFIX) ../$(LIBNAME)
 | 
				
			||||||
	$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) -lm
 | 
						$(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)
 | 
					slinpack.acml : slinpack.$(SUFFIX)
 | 
				
			||||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBACML) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
						-$(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)
 | 
					dlinpack.acml : dlinpack.$(SUFFIX)
 | 
				
			||||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBACML) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
						-$(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)
 | 
					clinpack.acml : clinpack.$(SUFFIX)
 | 
				
			||||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBACML) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
						-$(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)
 | 
					zlinpack.acml : zlinpack.$(SUFFIX)
 | 
				
			||||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBACML) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
						-$(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)
 | 
					scholesky.acml : scholesky.$(SUFFIX)
 | 
				
			||||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBACML) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
						-$(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)
 | 
					dcholesky.acml : dcholesky.$(SUFFIX)
 | 
				
			||||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBACML) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
						-$(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)
 | 
					ccholesky.acml : ccholesky.$(SUFFIX)
 | 
				
			||||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBACML) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
						-$(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)
 | 
					zcholesky.acml : zcholesky.$(SUFFIX)
 | 
				
			||||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBACML) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
						-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBACML) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
slinpack.flame : slinpack.$(SUFFIX)
 | 
					zcholesky.atlas : zcholesky.$(SUFFIX)
 | 
				
			||||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBFLAME) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
						-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBATLAS) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
dlinpack.flame : dlinpack.$(SUFFIX)
 | 
					zcholesky.mkl : zcholesky.$(SUFFIX)
 | 
				
			||||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBFLAME) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
						-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBMKL) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
clinpack.flame : clinpack.$(SUFFIX)
 | 
					 | 
				
			||||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBFLAME) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
zlinpack.flame : zlinpack.$(SUFFIX)
 | 
					##################################### Sgemm ####################################################
 | 
				
			||||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBFLAME) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
					sgemm.goto : sgemm.$(SUFFIX) ../$(LIBNAME)
 | 
				
			||||||
 | 
						$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) -lm
 | 
				
			||||||
 | 
					
 | 
				
			||||||
scholesky.flame : scholesky.$(SUFFIX)
 | 
					sgemm.acml : sgemm.$(SUFFIX)
 | 
				
			||||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBFLAME) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
						-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBACML) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
dcholesky.flame : dcholesky.$(SUFFIX)
 | 
					sgemm.atlas : sgemm.$(SUFFIX)
 | 
				
			||||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBFLAME) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
						-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBATLAS) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ccholesky.flame : ccholesky.$(SUFFIX)
 | 
					sgemm.mkl : sgemm.$(SUFFIX)
 | 
				
			||||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBFLAME) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
						-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBMKL) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
zcholesky.flame : zcholesky.$(SUFFIX)
 | 
					##################################### Dgemm ####################################################
 | 
				
			||||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBFLAME) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
					dgemm.goto : dgemm.$(SUFFIX) ../$(LIBNAME)
 | 
				
			||||||
 | 
						$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) -lm
 | 
				
			||||||
 | 
					
 | 
				
			||||||
slinpack.sun : slinpack.$(SUFFIX)
 | 
					dgemm.acml : dgemm.$(SUFFIX)
 | 
				
			||||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBSUNPERF) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
						-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBACML) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
dlinpack.sun : dlinpack.$(SUFFIX)
 | 
					dgemm.atlas : dgemm.$(SUFFIX)
 | 
				
			||||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBSUNPERF) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
						-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBATLAS) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
clinpack.sun : clinpack.$(SUFFIX)
 | 
					dgemm.mkl : dgemm.$(SUFFIX)
 | 
				
			||||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBSUNPERF) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
						-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBMKL) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
zlinpack.sun : zlinpack.$(SUFFIX)
 | 
					##################################### Cgemm ####################################################
 | 
				
			||||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBSUNPERF) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
scholesky.sun : scholesky.$(SUFFIX)
 | 
					cgemm.goto : cgemm.$(SUFFIX) ../$(LIBNAME)
 | 
				
			||||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBSUNPERF) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
						$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) -lm
 | 
				
			||||||
 | 
					
 | 
				
			||||||
dcholesky.sun : dcholesky.$(SUFFIX)
 | 
					cgemm.acml : cgemm.$(SUFFIX)
 | 
				
			||||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBSUNPERF) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
						-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBACML) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ccholesky.sun : ccholesky.$(SUFFIX)
 | 
					cgemm.atlas : cgemm.$(SUFFIX)
 | 
				
			||||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBSUNPERF) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
						-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBATLAS) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
zcholesky.sun : zcholesky.$(SUFFIX)
 | 
					cgemm.mkl : cgemm.$(SUFFIX)
 | 
				
			||||||
	-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBSUNPERF) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
						-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBMKL) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
slinpack.cula : slinpack.$(SUFFIX) cula_wrapper.$(SUFFIX)
 | 
					##################################### Zgemm ####################################################
 | 
				
			||||||
	$(CC) $(CFLAGS) -o $(@F) $^ $(CULA_LIB) ../$(LIBNAME) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
clinpack.cula : clinpack.$(SUFFIX) cula_wrapper.$(SUFFIX)
 | 
					zgemm.goto : zgemm.$(SUFFIX) ../$(LIBNAME)
 | 
				
			||||||
	$(CC) $(CFLAGS) -o $(@F) $^ $(CULA_LIB) ../$(LIBNAME) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
 | 
						$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) -lm
 | 
				
			||||||
 | 
					
 | 
				
			||||||
cula_wrapper.$(SUFFIX) : cula_wrapper.c
 | 
					zgemm.acml : zgemm.$(SUFFIX)
 | 
				
			||||||
	$(CC) $(CFLAGS) -c $(CULA_INC) -o $(@F) $^
 | 
						-$(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
 | 
					slinpack.$(SUFFIX) : linpack.c
 | 
				
			||||||
	$(CC) $(CFLAGS) -c -UCOMPLEX -UDOUBLE -o $(@F) $^
 | 
						$(CC) $(CFLAGS) -c -UCOMPLEX -UDOUBLE -o $(@F) $^
 | 
				
			||||||
| 
						 | 
					@ -159,37 +609,119 @@ slinpack.$(SUFFIX) : linpack.c
 | 
				
			||||||
dlinpack.$(SUFFIX) : linpack.c
 | 
					dlinpack.$(SUFFIX) : linpack.c
 | 
				
			||||||
	$(CC) $(CFLAGS) -c -UCOMPLEX -DDOUBLE -o $(@F) $^
 | 
						$(CC) $(CFLAGS) -c -UCOMPLEX -DDOUBLE -o $(@F) $^
 | 
				
			||||||
 | 
					
 | 
				
			||||||
qlinpack.$(SUFFIX) : linpack.c
 | 
					 | 
				
			||||||
	$(CC) $(CFLAGS) -c -UCOMPLEX -DXDOUBLE -o $(@F) $^
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
clinpack.$(SUFFIX) : linpack.c
 | 
					clinpack.$(SUFFIX) : linpack.c
 | 
				
			||||||
	$(CC) $(CFLAGS) -c -DCOMPLEX -UDOUBLE -o $(@F) $^
 | 
						$(CC) $(CFLAGS) -c -DCOMPLEX -UDOUBLE -o $(@F) $^
 | 
				
			||||||
 | 
					
 | 
				
			||||||
zlinpack.$(SUFFIX) : linpack.c
 | 
					zlinpack.$(SUFFIX) : linpack.c
 | 
				
			||||||
	$(CC) $(CFLAGS) -c -DCOMPLEX -DDOUBLE -o $(@F) $^
 | 
						$(CC) $(CFLAGS) -c -DCOMPLEX -DDOUBLE -o $(@F) $^
 | 
				
			||||||
 | 
					
 | 
				
			||||||
xlinpack.$(SUFFIX) : linpack.c
 | 
					 | 
				
			||||||
	$(CC) $(CFLAGS) -c -DCOMPLEX -DXDOUBLE -o $(@F) $^
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
scholesky.$(SUFFIX) : cholesky.c
 | 
					scholesky.$(SUFFIX) : cholesky.c
 | 
				
			||||||
	$(CC) $(CFLAGS) -c -UCOMPLEX -UDOUBLE -o $(@F) $^
 | 
						$(CC) $(CFLAGS) -c -UCOMPLEX -UDOUBLE -o $(@F) $^
 | 
				
			||||||
 | 
					
 | 
				
			||||||
dcholesky.$(SUFFIX) : cholesky.c
 | 
					dcholesky.$(SUFFIX) : cholesky.c
 | 
				
			||||||
	$(CC) $(CFLAGS) -c -UCOMPLEX -DDOUBLE -o $(@F) $^
 | 
						$(CC) $(CFLAGS) -c -UCOMPLEX -DDOUBLE -o $(@F) $^
 | 
				
			||||||
 | 
					
 | 
				
			||||||
qcholesky.$(SUFFIX) : cholesky.c
 | 
					 | 
				
			||||||
	$(CC) $(CFLAGS) -c -UCOMPLEX -DXDOUBLE -o $(@F) $^
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
ccholesky.$(SUFFIX) : cholesky.c
 | 
					ccholesky.$(SUFFIX) : cholesky.c
 | 
				
			||||||
	$(CC) $(CFLAGS) -c -DCOMPLEX -UDOUBLE -o $(@F) $^
 | 
						$(CC) $(CFLAGS) -c -DCOMPLEX -UDOUBLE -o $(@F) $^
 | 
				
			||||||
 | 
					
 | 
				
			||||||
zcholesky.$(SUFFIX) : cholesky.c
 | 
					zcholesky.$(SUFFIX) : cholesky.c
 | 
				
			||||||
	$(CC) $(CFLAGS) -c -DCOMPLEX -DDOUBLE -o $(@F) $^
 | 
						$(CC) $(CFLAGS) -c -DCOMPLEX -DDOUBLE -o $(@F) $^
 | 
				
			||||||
 | 
					
 | 
				
			||||||
xcholesky.$(SUFFIX) : cholesky.c
 | 
					sgemm.$(SUFFIX) : gemm.c
 | 
				
			||||||
	$(CC) $(CFLAGS) -c -DCOMPLEX -DXDOUBLE -o $(@F) $^
 | 
						$(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 ::
 | 
					clean ::
 | 
				
			||||||
	@rm -f *.goto *.mkl *.acml *.sun *.cula
 | 
						@rm -f *.goto *.mkl *.acml *.atlas
 | 
				
			||||||
 | 
					
 | 
				
			||||||
include $(TOPDIR)/Makefile.tail
 | 
					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