24СʱÈÈÃŰæ¿éÅÅÐаñ    

Znn3bq.jpeg
²é¿´: 912  |  »Ø¸´: 0

[×ÊÔ´] ¡¾Ô­´´¡¿²¢ÐÐÆ½Ì¨¹¹½¨Óë¹ÜÀí[6]£º²¢ÐвâÊÔ GotoBLAS+hpl²âÊÔÖ®°²×°£¨1£©

Ç°Ãæ½²ÁËatlas+hplµÄ°²×°£¬²âÊÔÁËһϣ¬Ð§Âʲ»ÊǺÜÀíÏë¡£´«ÎÅʹÓÃGoto blas¿â²âµÃµÄЧÂÊÂÔÀíÏëһЩ£¬ÓÚÊǽñÌìÊÔÁËһϣ¬°²×°³É¹¦¡£½«¹ý³ÌÌù³öÀ´¹©´ó¼ÒÌÖÂÛ¡£
GotoBLASÖ®±àÒ룺
1¡¢ µ½ http://www.tacc.utexas.edu/resources/software/ ÍøÕ¾ÉÏÏÂÔØ Source Code v.1.00»òÕ߯äËû°æ±¾£¬ÎÒÓõÄÊÇSource Code v.1.00£¬ÍøÕ¾ÐèҪע²á£¬²»¹ýÊÇÃâ·ÑµÄ£¬ºÜ¿ì¾Í¿ÉÒԸ㶨¡£
2¡¢Óà tar -zxvf ½âѹ֮£¬¿ÉÒÔ¿´µ½GotoBLASµÄÎļþ¼Ð
3¡¢±à¼­Makefile.rule£¬ÏêϸÇé¿ö¼û¸½¼þ£»¸ü¸Ägetarch.cÀïÃæµÄarchtecture,ʹ֮·ûºÏ×Ô¼ºµÄÇé¿ö
4¡¢make
5¡¢cd exports Ö´ÐÐmake so
6¡¢Ð±༭xerbla.c,ÄÚÈݼû¸½¼þ¶þ£¬Ö´ÐÐgcc -c xerbla.c -o xerbla.o
ÔÚGotoBLASÏ¿ÉÒÔ¿´µ½libgoto.a£¬libgoto_opteronp-r1.00.a£¬libgoto_opteronp-r1.00.so£¬xerbla.o¼¸¸öж«Î÷£¬±íÃ÷±àÒë³É¹¦¡£
¸½¼þÒ»£ºMakefile.rule
#
#  Beginning of user configuration
#

# This library's version
REVISION = -r1.00

# Which do you prefer to use for C compiler? Default is gcc.
# I recommend you to use GCC because inline assembler is required.
C_COMPILER = GNU
# C_COMPILER = INTEL

# Which do you prefer to use for C compiler? Default is GNU G77.
# F_COMPILER = G77
# F_COMPILER = G95
# F_COMPILER = GFORTRAN
# F_COMPILER = INTEL
# F_COMPILER = PGI
# F_COMPILER = PATHSCALE
# F_COMPILER = IBM
# F_COMPILER = COMPAQ
# F_COMPILER = SUN
# F_COMPILER = F2C

# If you want to build threaded version.
# You can specify number of threads by environment value
# "OMP_NUM_THREADS", otherwise, it's automatically detected.
SMP = 2

# You may specify Maximum number of threads. It should be minimum.
MAX_THREADS = 2

# If you need 64bit binary; some architecture can accept both 32bit and
# 64bit binary(EM64T, Opteron, SPARC and Power/PowerPC).
BINARY64  = 1

# If you need 64bit integer interface.
INTERFACE64 = 1

# If you need Special memory management;
# Using HugeTLB file system(Linux / AIX / Solaris)
CCOMMON_OPT        += -DALLOC_HUGETLB

# Using static allocation instead of dynamic allocation
# CCOMMON_OPT        += -DALLOC_STATIC

# If you want to use CPU affinity
CCOMMON_OPT        += -DUSE_CPU_AFFINITY

# If you want to use memory affinity (for NUMA)
# CCOMMON_OPT        += -DUSE_MEMORY_AFFINITY

# If you have special compiler to run script to determine architecture.
GETARCH_CC         =
GETARCH_FLAGS         =

#
#  End of user configuration
#

MACHINE := $(shell uname -m | sed -e s/i.86/i386/ )
OSNAME  := $(shell uname -s)

ifeq ($(MACHINE), i386)
BINARY64        =
NATIVEARCH        = YES
endif

ifeq ($(MACHINE), ia64)
BINARY64        = YES
NATIVEARCH        = YES
endif

ifeq ($(MACHINE), alpha)
BINARY64        = YES
NATIVEARCH        = YES
endif

ifeq ($(OSNAME), AIX)
NATIVEARCH        = YES
endif

ifeq ($(OSNAME), Darwin)
ifndef BINARY64
NATIVEARCH        = YES
endif
endif

# If you need to access over 4GB chunk on 64bit system.
ifdef BINARY64
CCOMMON_OPT        += -D__64BIT__
ifdef INTERFACE64
CCOMMON_OPT        += -DUSE64BITINT
endif
endif

# If you need modified GEMV/GEMM to find best parameters;
# CCOMMON_OPT         += -DPARAMTEST
# CCOMMON_OPT         += -DPREFETCHTEST

# Common Optimization Flag
COMMON_OPT +=  -O2

# Optimization Flag for C compiler
CCOMMON_OPT +=

# Optimization Flag for Fortran Compiler
FCOMMON_OPT +=

# Profiling flags
COMMON_PROF = -pg

################## End of Main Configuration #####################

# TO suppress recursive includes
INCLUDED = 1

ifndef C_COMPILER
C_COMPILER    = GNU
endif

ifndef F_COMPILER
F_COMPILER = G77
endif

ifeq ($(C_COMPILER), GNU)
COMPILER     = gcc
CCOMMON_OPT += -Wall
ifneq ($(OSNAME), CYGWIN_NT-5.1)
CCOMMON_OPT += -fPIC
endif
ifndef NATIVEARCH
ifdef BINARY64
CCOMMON_OPT     += -m64
GETARCH_FLAGS         = -m64
else
CCOMMON_OPT     += -m32
GETARCH_FLAGS         = -m32
endif
endif
COMMON_PROF += -fno-inline
endif

ifeq ($(C_COMPILER), INTEL)
COMPILER     = icc
CCOMMON_OPT += -fPIC
endif

ifeq ($(F_COMPILER), G77)
COMPILER_F77 = g77
BU             = _
CCOMMON_OPT += -DF_INTERFACE_F2C -DNEED_F2CCONV
FCOMMON_OPT += -Wall
ifneq ($(OSNAME), CYGWIN_NT-5.1)
FCOMMON_OPT += -fPIC
endif
ifndef NATIVEARCH
ifdef BINARY64
FCOMMON_OPT += -m64
else
FCOMMON_OPT += -m32
endif
endif
endif

ifeq ($(F_COMPILER), G95)
COMPILER_F77 = g95
BU             = _
CCOMMON_OPT += -DF_INTERFACE_F2C
FCOMMON_OPT += -Wall
ifneq ($(OSNAME), CYGWIN_NT-5.1)
FCOMMON_OPT += -fPIC
endif
ifndef NATIVEARCH
ifdef BINARY64
FCOMMON_OPT += -m64
else
FCOMMON_OPT += -m32
endif
endif
endif

ifeq ($(F_COMPILER), GFORTRAN)
COMPILER_F77 = gfortran
BU             = _
CCOMMON_OPT += -DF_INTERFACE_GFORT
FCOMMON_OPT += -Wall
ifneq ($(OSNAME), CYGWIN_NT-5.1)
FCOMMON_OPT += -fPIC
endif
ifndef NATIVEARCH
ifdef BINARY64
FCOMMON_OPT += -m64
else
FCOMMON_OPT += -m32
endif
endif
endif

ifeq ($(F_COMPILER), INTEL)
COMPILER_F77 = ifort
BU             = _
CCOMMON_OPT += -DF_INTERFACE_F2C
FCOMMON_OPT += -fPIC
ifdef INTERFACE64
FCOMMON_OPT += -i8
endif
endif

ifeq ($(F_COMPILER), IBM)
COMPILER_F77 = xlf
BU             =
# FCOMMON_OPT        += -qarch=440
ifdef BINARY64
FCOMMON_OPT += -q64
else
FCOMMON_OPT += -q32
endif
endif

ifeq ($(F_COMPILER), COMPAQ)
ifeq ($(OSNAME), Linux)
COMPILER_F77 = fort
FCOMMON_OPT += -fPIC
else
COMPILER_F77 = f77
endif
BU             = _
endif

ifeq ($(F_COMPILER), PGI)
COMPILER_F77 = pgf77
BU              = _
CCOMMON_OPT  += -DF_INTERFACE_F2C
FCOMMON_OPT += -fPIC
COMMON_PROF +=  -DPGICOMPILER

ifndef BINARY64
# FCOMMON_OPT  += -tp k8-32
FCOMMON_OPT += -tp p7
EXTRALIB    += -L/opt/pgi/linux86/6.0/lib -lpgc
else
FCOMMON_OPT += -tp k8-64
EXTRALIB    += -L/opt/pgi/linux86-64/6.0/lib -lpgc -lpgf90rtl
ifdef INTERFACE64
FCOMMON_OPT += -i8
endif
endif
endif

ifdef SMP
EXTRALIB    += -lpthread
endif

ifeq ($(F_COMPILER), PATHSCALE)
COMPILER_F77 = pathf90
BU        = _
CCOMMON_OPT  += -DAMD_ABI -DF_PATHSCALE
FCOMMON_OPT += -fPIC
ifndef BINARY64
CCOMMON_OPT  += -DF_INTERFACE_F2C
FCOMMON_OPT += -m32
else
FCOMMON_OPT += -m64
ifdef INTERFACE64
FCOMMON_OPT += -i8
endif
endif
endif

ifeq ($(F_COMPILER), SUN)
COMPILER_F77 = f90
BU             = _
CCOMMON_OPT  += -DF_SUN
FCOMMON_OPT += -pic
ifndef BINARY64
CCOMMON_OPT  += -DF_INTERFACE_F2C
endif
endif

ifeq ($(F_COMPILER), F2C)
COMPILER_F77 = f2cf77
BU             = _
CCOMMON_OPT += -DF_INTERFACE_F2C -DNEED_F2CCONV
FCOMMON_OPT += -Wall -fPIC
endif

# Currently Windows version doesn't support threads
ifeq ($(OSNAME), CYGWIN_NT-5.1)
SMP =
endif

ifdef SMP
CCOMMON_OPT        += -DSMP_SERVER
ifeq ($(C_COMPILER), GNU)
ifeq ($(OSNAME), Linux)
CCOMMON_OPT        +=  -pthread
endif
endif
endif

ifndef GETARCH_CC
GETARCH_CC         = gcc
endif

ARCH        := $(shell (cd $(TOPDIR); ./getarch 0 $(GETARCH_CC) $(GETARCH_FLAGS)))
SUBARCH     := $(shell (cd $(TOPDIR); ./getarch 1 $(GETARCH_CC) $(GETARCH_FLAGS)))
ARCHSUBDIR  := $(shell (cd $(TOPDIR); ./getarch 2 $(GETARCH_CC) $(GETARCH_FLAGS)))
CONFIG      := $(shell (cd $(TOPDIR); ./getarch 3 $(GETARCH_CC) $(GETARCH_FLAGS)))
FU          := $(shell (cd $(TOPDIR); ./getarch 4 $(GETARCH_CC) $(GETARCH_FLAGS)))
LIBSUBARCH  := $(shell (cd $(TOPDIR); ./getarch 5 $(GETARCH_CC) $(GETARCH_FLAGS)))
CORE        := $(shell (cd $(TOPDIR); ./getarch 6 $(GETARCH_CC) $(GETARCH_FLAGS)))

ifndef MAX_THREADS
MAX_THREADS := $(shell (cd $(TOPDIR); ./getarch 7 $(GETARCH_CC) $(GETARCH_FLAGS)))
endif

CCOMMON_OPT        += -DMAX_CPU_NUMBER=$(MAX_THREADS)


LIBPREFIX = libgoto

ARFLAGS        =
CPP        = $(CC) -E
AR        = $(COMPILER_PREFIX)ar
AS        = $(COMPILER_PREFIX)as
LD        = $(COMPILER_PREFIX)ld
RANLIB        = $(COMPILER_PREFIX)ranlib

include $(TOPDIR)/Makefile.$(ARCHSUBDIR)

CCOMMON_OPT        += -DASMNAME=$(FU)$(*F) -DASMFNAME=$(FU)$(*F)$(BU) -DNAME=$(*F)$(BU) -DCNAME=$(*F)

ifeq ($(CORE), PPC440)
CCOMMON_OPT        += -DALLOC_QALLOC
endif

ifeq ($(CORE), PPC440FP2)
CCOMMON_OPT        += -DALLOC_STATIC
endif

ifeq ($(FU), _)
CCOMMON_OPT        += -DFUNDERSCORE=$(FU) -DNEEDFUNDERSCORE
endif

ifeq ($(BU), _)
CCOMMON_OPT        += -DBUNDERSCORE=$(BU) -DNEEDBUNDERSCORE
endif

CFLAGS  = $(COMMON_OPT) $(CCOMMON_OPT) -I$(TOPDIR) $(CONFIG)
PFLAGS  = $(COMMON_OPT) $(CCOMMON_OPT) -I$(TOPDIR) $(CONFIG) -DPROFILE $(COMMON_PROF)

# FFLAGS  += $(COMMON_OPT) $(FCOMMON_OPT) $(CONFIG)
FFLAGS  += $(COMMON_OPT) $(FCOMMON_OPT)

FPFLAGS = $(COMMON_OPT) $(FCOMMON_OPT) $(COMMON_PROF)

ifndef SMP
LIBNAME                = $(LIBPREFIX)_$(LIBSUBARCH)$(REVISION).a
LIBNAME_P        = $(LIBPREFIX)_$(LIBSUBARCH)$(REVISION)_p.a
else
LIBNAME                = $(LIBPREFIX)_$(LIBSUBARCH)p$(REVISION).a
LIBNAME_P        = $(LIBPREFIX)_$(LIBSUBARCH)p$(REVISION)_p.a
endif

LIBSONAME    = $(LIBNAME:.a=.so)
LIBDLLNAME   = $(LIBNAME:.a=.dll)
LIBDYNNAME   = $(LIBNAME:.a=.dylib)
LIBWIN2KNAME = $(LIBNAME:.a=.lib)
LIBDEFNAME   = $(LIBNAME:.a=.def)
LIBEXPNAME   = $(LIBNAME:.a=.exp)
LIBZIPNAME   = $(LIBNAME:.a=.zip)

LIBS                = $(TOPDIR)/$(LIBNAME)
LIBS_P                = $(TOPDIR)/$(LIBNAME_P)

ifndef SMP
LIBPTHREAD        =
else
LIBPTHREAD        = -lpthread
endif

CC        = $(COMPILER_PREFIX)$(COMPILER)
FC        = $(COMPILER_PREFIX)$(COMPILER_F77)

.SUFFIXES: .po .o .f

.f.o:
        $(FC) $(FFLAGS) -c $<

.f.po:
        $(FC) $(FPFLAGS) -pg -c $<
¸½¼þ¶þ£ºxerbla.c#include
#include

int xerbla_(char *message, int *info, long length){
  fprintf(stderr, " ** On entry to  %6s, parameter number %2d had an illegal value\n", message, *info);
exit(1);
}
»Ø¸´´ËÂ¥
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

ÖÇÄÜ»úÆ÷ÈË

Robot (super robot)

ÎÒÃǶ¼°®Ð¡Ä¾³æ

ÕÒµ½Ò»Ð©Ïà¹ØµÄ¾«»ªÌû×Ó£¬Ï£ÍûÓÐÓÃŶ~

¿ÆÑдÓСľ³æ¿ªÊ¼£¬ÈËÈËΪÎÒ£¬ÎÒΪÈËÈË
Ïà¹Ø°æ¿éÌø×ª ÎÒÒª¶©ÔÄÂ¥Ö÷ onesupeng µÄÖ÷Ìâ¸üÐÂ
¡î ÎÞÐǼ¶ ¡ï Ò»ÐǼ¶ ¡ï¡ï¡ï ÈýÐǼ¶ ¡ï¡ï¡ï¡ï¡ï ÎåÐǼ¶
×î¾ßÈËÆøÈÈÌûÍÆ¼ö [²é¿´È«²¿] ×÷Õß »Ø/¿´ ×îºó·¢±í
[¿¼ÑÐ] µ÷¼Á +5 ÎĵÀÐÇ̨ 2026-04-11 5/250 2026-04-11 15:01 by ¿­¿­Òª±ä˧
[¿¼ÑÐ] 085501»úеר˶ 302·Ö ²»ÌôרҵÇóµ÷¼Á +7 Íôij. 2026-04-09 7/350 2026-04-11 14:37 by luhong1990
[¿¼ÑÐ] Ò»Ö¾Ô¸»ªÄÏÀí¹¤´óѧ331·Ö²ÄÁÏÇóµ÷¼Á +9 ÌìÏÂww 2026-04-09 9/450 2026-04-10 22:58 by Ftglcn90
[¿¼ÑÐ] 291 Çóµ÷¼Á +29 »¯¹¤2026½ì±ÏÒµÉ 2026-04-09 29/1450 2026-04-10 22:55 by dick_runner
[¿¼ÑÐ] 287Çóµ÷¼Á +15 Fnhc 2026-04-07 21/1050 2026-04-10 19:09 by chemisry
[¿¼ÑÐ] ²ÄÁÏרҵ344Çóµ÷¼Á +16 hualkop 2026-04-10 21/1050 2026-04-10 17:28 by laoshidan
[¿¼ÑÐ] 293µ÷¼Á +25 yj1221 2026-04-08 26/1300 2026-04-10 15:02 by ²ñС°×
[¿¼ÑÐ] Òѵ÷¼Á +18 ²ñ¿¤Ã¨_ 2026-04-09 19/950 2026-04-09 22:10 by ²ñ¿¤Ã¨_
[¿¼ÑÐ] 085400µç×ÓÐÅÏ¢Àࣨ´¨´ó¿ØÖƹ¤³Ì£©Çóµ÷¼Á¿É¿çרҵ ÇóÀÏʦÁªÏµ +3 626776879 2026-04-08 3/150 2026-04-09 16:05 by Öí»á·É
[¿¼ÑÐ] »úеר˶273ÇëÇóµ÷¼Á +6 ¸ýÉêÈÉÉê 2026-04-07 6/300 2026-04-08 22:41 by bljnqdcc
[¿¼ÑÐ] 264Çóµ÷¼Á +11 ÂóС¶£µ± 2026-04-07 11/550 2026-04-08 16:05 by Ò»Ö»ºÃ¹û×Ó?
[¿¼ÑÐ] Ò»Ö¾Ô¸¹þ¹¤´ó£¬³õÊÔ329£¬Çó»·¾³¿ÆÑ§Ó빤³Ìµ÷¼Á£¡ +11 ÓàδÐÁ 2026-04-06 11/550 2026-04-08 15:21 by screening
[¿¼ÑÐ] µç×ÓÐÅÏ¢346 +4 zuoshaodian 2026-04-08 4/200 2026-04-08 11:54 by zzucheup
[¿¼ÑÐ] 277Çóµ÷¼Á +4 ¿¼Ñе÷¼Álxh 2026-04-06 6/300 2026-04-08 10:40 by ÄæË®³Ë·ç
[¿¼ÑÐ] 307Çóµ÷¼Á +3 Youth@@ 2026-04-07 3/150 2026-04-07 22:00 by hemengdong
[¿¼ÑÐ] Ò»Ö¾Ô¸Î÷µç085401Çóµ÷¼Á +4 sunw1306 2026-04-07 4/200 2026-04-07 16:40 by à£à£à£0119
[¿¼ÑÐ] 328Çóµ÷¼Á +4 ghhh88888 2026-04-06 5/250 2026-04-07 14:45 by ghhh88888
[¿¼ÑÐ] ²ÄÁϵ÷¼Á +17 СÁõͬѧ߹߹ 2026-04-06 18/900 2026-04-07 11:41 by Ê«Óë×ÔÓÉ
[¿¼ÑÐ] ²ÄÁϵ÷¼Á +5 СÁõͬѧ߹߹ 2026-04-06 5/250 2026-04-06 18:34 by sherry_1901
[¿¼ÑÐ] 22408 331·ÖÇóµ÷¼Á +4 y__1 2026-04-06 4/200 2026-04-06 17:26 by ÍÁľ˶ʿÕÐÉú
ÐÅÏ¢Ìáʾ
ÇëÌî´¦ÀíÒâ¼û