added gemm benchmark and modified Makefile for benchmark
This commit is contained in:
		
							parent
							
								
									7961404a40
								
							
						
					
					
						commit
						e27433ab6a
					
				| 
						 | 
					@ -1,157 +1,205 @@
 | 
				
			||||||
TOPDIR	= ..
 | 
					TOPDIR	= ..
 | 
				
			||||||
include $(TOPDIR)/Makefile.system
 | 
					include $(TOPDIR)/Makefile.system
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					LIBACML = -fopenmp /opt/pb/acml-5-3-1-gfortran-64bit/gfortran64_fma4_mp/lib/libacml_mp.a -lgfortran -lm
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					LIBATLAS = -fopenmp /usr/lib64/atlas/liblapack.a /usr/lib64/atlas/libptcblas.a /usr/lib64/atlas/libptf77blas.a /usr/lib64/atlas/libatlas.a -lgfortran -lm
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					MKL=/home/saar/intel_mkl
 | 
				
			||||||
 | 
					LIBMKL = -L$(MKL) -lmkl_intel_lp64 -lmkl_gnu_thread -lmkl_core -lgomp -lpthread -lm
 | 
				
			||||||
 | 
					
 | 
				
			||||||
CULA_INC = -I/usr/local/cula/include
 | 
					CULA_INC = -I/usr/local/cula/include
 | 
				
			||||||
CULA_LIB = -L/usr/local/cula/lib64 -Wl,-rpath,/usr/local/cula/lib64 -lcula_fortran -lcula -lcublas
 | 
					CULA_LIB = -L/usr/local/cula/lib64 -Wl,-rpath,/usr/local/cula/lib64 -lcula_fortran -lcula -lcublas
 | 
				
			||||||
 | 
					
 | 
				
			||||||
all :: dlinpack.goto dlinpack.mkl dlinpack.acml dcholesky.goto dcholesky.mkl dcholesky.acml
 | 
					 | 
				
			||||||
	./dlinpack.goto  4000 4000 1
 | 
					 | 
				
			||||||
	-./dlinpack.mkl  4000 4000 1
 | 
					 | 
				
			||||||
	-./dlinpack.acml 4000 4000 1
 | 
					 | 
				
			||||||
	./dcholesky.goto  4000 4000 1
 | 
					 | 
				
			||||||
	-./dcholesky.mkl  4000 4000 1
 | 
					 | 
				
			||||||
	-./dcholesky.acml 4000 4000 1
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					###################################################################################################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
slinpack.$(SUFFIX) : linpack.c
 | 
					slinpack.$(SUFFIX) : linpack.c
 | 
				
			||||||
	$(CC) $(CFLAGS) -c -UCOMPLEX -UDOUBLE -o $(@F) $^
 | 
						$(CC) $(CFLAGS) -c -UCOMPLEX -UDOUBLE -o $(@F) $^
 | 
				
			||||||
| 
						 | 
					@ -159,37 +207,39 @@ 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) $^
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
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,198 @@
 | 
				
			||||||
 | 
					/***************************************************************************
 | 
				
			||||||
 | 
					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 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\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);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#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);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    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;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    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__")));
 | 
				
			||||||
		Loading…
	
		Reference in New Issue