²é¿´: 902  |  »Ø¸´: 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 µÄÖ÷Ìâ¸üÐÂ
¡î ÎÞÐǼ¶ ¡ï Ò»ÐǼ¶ ¡ï¡ï¡ï ÈýÐǼ¶ ¡ï¡ï¡ï¡ï¡ï ÎåÐǼ¶
×î¾ßÈËÆøÈÈÌûÍÆ¼ö [²é¿´È«²¿] ×÷Õß »Ø/¿´ ×îºó·¢±í
[¿¼ÑÐ] Çóµ÷¼ÁԺУÐÅÏ¢ +4 CX 330 2026-03-21 4/200 2026-03-21 23:48 by ms629
[¿¼ÑÐ] 328Çóµ÷¼Á£¬Ó¢ÓïÁù¼¶551£¬ÓпÆÑо­Àú +5 ÉúÎ﹤³Ìµ÷¼Á 2026-03-17 9/450 2026-03-21 23:32 by zhujy1982
[¿¼ÑÐ] 269ר˶Çóµ÷¼Á +5 ½ð¶÷±´ 2026-03-21 5/250 2026-03-21 22:37 by zhyzzh
[¿¼ÑÐ] ¿¼Ñе÷¼Á +3 ºôºô£¿~+123456 2026-03-21 3/150 2026-03-21 20:04 by Î޼ʵIJÝÔ­
[¿¼ÑÐ] 0703»¯Ñ§µ÷¼Á +4 ÄÝÄÝninicgb 2026-03-21 4/200 2026-03-21 18:39 by ѧԱ8dgXkO
[¿¼ÑÐ] Çóµ÷¼Á +3 13341 2026-03-20 3/150 2026-03-21 18:28 by ѧԱ8dgXkO
[¿¼ÑÐ] ²ÄÁÏ 271Çóµ÷¼Á +5 Õ¹ÐÅÔÃ_ 2026-03-21 5/250 2026-03-21 17:29 by ѧԱ8dgXkO
[»ù½ðÉêÇë] ѧУÒѾ­Ìá½»µ½NSFC£¬»¹ÄÜÐÞ¸ÄÂ𣿠40+4 babangida 2026-03-19 9/450 2026-03-21 16:12 by babangida
[¿¼ÑÐ] ¶þ±¾¿ç¿¼Ö£´ó²ÄÁÏ306Ó¢Ò»Êý¶þ +3 z1z2z3879 2026-03-17 3/150 2026-03-21 02:29 by JourneyLucky
[¿¼ÑÐ] »¯Ñ§Çóµ÷¼Á +4 ÁÙÔó¾³llllll 2026-03-17 5/250 2026-03-21 02:23 by JourneyLucky
[¿¼ÑÐ] Ò»Ö¾Ô¸ÖØÇì´óѧ085700×ÊÔ´Óë»·¾³×¨Ë¶£¬×Ü·Ö308Çóµ÷¼Á +3 īīĮ 2026-03-18 3/150 2026-03-21 00:39 by JourneyLucky
[¿¼ÑÐ] AÇøÏß²ÄÁÏѧµ÷¼Á +5 ÖÜÖÜÎÞ¼« 2026-03-20 5/250 2026-03-20 21:33 by laoshidan
[¿¼ÑÐ] ¹¤¿Æ²ÄÁÏ085601 279Çóµ÷¼Á +7 À§ÓÚÐdz¿ 2026-03-17 9/450 2026-03-20 17:38 by ÎÞи¿É»÷111
[¿¼ÑÐ] ²ÄÁÏѧ˶318Çóµ÷¼Á +5 February_Feb 2026-03-19 5/250 2026-03-19 23:51 by 23Postgrad
[¿¼ÑÐ] 288Çóµ÷¼Á£¬Ò»Ö¾Ô¸»ªÄÏÀí¹¤´óѧ071005 +5 ioodiiij 2026-03-17 5/250 2026-03-19 18:22 by zcl123
[¿¼ÑÐ] 328Çóµ÷¼Á£¬Ó¢ÓïÁù¼¶551£¬ÓпÆÑо­Àú +4 ÉúÎ﹤³Ìµ÷¼Á 2026-03-16 12/600 2026-03-19 11:10 by ÉúÎ﹤³Ìµ÷¼Á
[¿¼ÑÐ] Ò»Ö¾Ô¸985£¬±¾¿Æ211£¬0817»¯Ñ§¹¤³ÌÓë¼¼Êõ319Çóµ÷¼Á +10 Liwangman 2026-03-15 10/500 2026-03-19 10:25 by Î޼ʵIJÝÔ­
[¿¼ÑÐ] 0703»¯Ñ§µ÷¼Á +3 ÄÝÄÝninicgb 2026-03-17 3/150 2026-03-18 10:29 by macy2011
[¿¼ÑÐ] 334Çóµ÷¼Á +3 Ö¾´æ¸ßÔ¶ÒâÔÚ»úÐ 2026-03-16 3/150 2026-03-18 08:34 by lm4875102
[¿¼ÑÐ] »úеר˶325£¬Ñ°ÕÒµ÷¼ÁԺУ +3 y9999 2026-03-15 5/250 2026-03-16 19:58 by y9999
ÐÅÏ¢Ìáʾ
ÇëÌî´¦ÀíÒâ¼û