root / setup / Make.T3E_FBLAS
Historique | Voir | Annoter | Télécharger (8,87 ko)
1 | 1 | equemene | # |
---|---|---|---|
2 | 1 | equemene | # -- High Performance Computing Linpack Benchmark (HPL) |
3 | 1 | equemene | # HPL - 2.0 - September 10, 2008 |
4 | 1 | equemene | # Antoine P. Petitet |
5 | 1 | equemene | # University of Tennessee, Knoxville |
6 | 1 | equemene | # Innovative Computing Laboratory |
7 | 1 | equemene | # (C) Copyright 2000-2008 All Rights Reserved |
8 | 1 | equemene | # |
9 | 1 | equemene | # -- Copyright notice and Licensing terms: |
10 | 1 | equemene | # |
11 | 1 | equemene | # Redistribution and use in source and binary forms, with or without |
12 | 1 | equemene | # modification, are permitted provided that the following conditions |
13 | 1 | equemene | # are met: |
14 | 1 | equemene | # |
15 | 1 | equemene | # 1. Redistributions of source code must retain the above copyright |
16 | 1 | equemene | # notice, this list of conditions and the following disclaimer. |
17 | 1 | equemene | # |
18 | 1 | equemene | # 2. Redistributions in binary form must reproduce the above copyright |
19 | 1 | equemene | # notice, this list of conditions, and the following disclaimer in the |
20 | 1 | equemene | # documentation and/or other materials provided with the distribution. |
21 | 1 | equemene | # |
22 | 1 | equemene | # 3. All advertising materials mentioning features or use of this |
23 | 1 | equemene | # software must display the following acknowledgement: |
24 | 1 | equemene | # This product includes software developed at the University of |
25 | 1 | equemene | # Tennessee, Knoxville, Innovative Computing Laboratory. |
26 | 1 | equemene | # |
27 | 1 | equemene | # 4. The name of the University, the name of the Laboratory, or the |
28 | 1 | equemene | # names of its contributors may not be used to endorse or promote |
29 | 1 | equemene | # products derived from this software without specific written |
30 | 1 | equemene | # permission. |
31 | 1 | equemene | # |
32 | 1 | equemene | # -- Disclaimer: |
33 | 1 | equemene | # |
34 | 1 | equemene | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
35 | 1 | equemene | # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
36 | 1 | equemene | # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
37 | 1 | equemene | # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE UNIVERSITY |
38 | 1 | equemene | # OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
39 | 1 | equemene | # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
40 | 1 | equemene | # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
41 | 1 | equemene | # DATA OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
42 | 1 | equemene | # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
43 | 1 | equemene | # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
44 | 1 | equemene | # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
45 | 1 | equemene | # ###################################################################### |
46 | 1 | equemene | # |
47 | 1 | equemene | # ---------------------------------------------------------------------- |
48 | 1 | equemene | # - shell -------------------------------------------------------------- |
49 | 1 | equemene | # ---------------------------------------------------------------------- |
50 | 1 | equemene | # |
51 | 1 | equemene | SHELL = /bin/sh |
52 | 1 | equemene | # |
53 | 1 | equemene | CD = cd |
54 | 1 | equemene | CP = cp |
55 | 1 | equemene | LN_S = ln -s |
56 | 1 | equemene | MKDIR = mkdir |
57 | 1 | equemene | RM = /bin/rm -f |
58 | 1 | equemene | TOUCH = touch |
59 | 1 | equemene | # |
60 | 1 | equemene | # ---------------------------------------------------------------------- |
61 | 1 | equemene | # - Platform identifier ------------------------------------------------ |
62 | 1 | equemene | # ---------------------------------------------------------------------- |
63 | 1 | equemene | # |
64 | 1 | equemene | ARCH = T3E_FBLAS |
65 | 1 | equemene | # |
66 | 1 | equemene | # ---------------------------------------------------------------------- |
67 | 1 | equemene | # - HPL Directory Structure / HPL library ------------------------------ |
68 | 1 | equemene | # ---------------------------------------------------------------------- |
69 | 1 | equemene | # |
70 | 1 | equemene | TOPdir = $(HOME)/hpl |
71 | 1 | equemene | INCdir = $(TOPdir)/include |
72 | 1 | equemene | BINdir = $(TOPdir)/bin/$(ARCH) |
73 | 1 | equemene | LIBdir = $(TOPdir)/lib/$(ARCH) |
74 | 1 | equemene | # |
75 | 1 | equemene | HPLlib = $(LIBdir)/libhpl.a |
76 | 1 | equemene | # |
77 | 1 | equemene | # ---------------------------------------------------------------------- |
78 | 1 | equemene | # - Message Passing library (MPI) -------------------------------------- |
79 | 1 | equemene | # ---------------------------------------------------------------------- |
80 | 1 | equemene | # MPinc tells the C compiler where to find the Message Passing library |
81 | 1 | equemene | # header files, MPlib is defined to be the name of the library to be |
82 | 1 | equemene | # used. The variable MPdir is only used for defining MPinc and MPlib. |
83 | 1 | equemene | # |
84 | 1 | equemene | MPdir = |
85 | 1 | equemene | MPinc = |
86 | 1 | equemene | MPlib = |
87 | 1 | equemene | # |
88 | 1 | equemene | # ---------------------------------------------------------------------- |
89 | 1 | equemene | # - Linear Algebra library (BLAS or VSIPL) ----------------------------- |
90 | 1 | equemene | # ---------------------------------------------------------------------- |
91 | 1 | equemene | # LAinc tells the C compiler where to find the Linear Algebra library |
92 | 1 | equemene | # header files, LAlib is defined to be the name of the library to be |
93 | 1 | equemene | # used. The variable LAdir is only used for defining LAinc and LAlib. |
94 | 1 | equemene | # |
95 | 1 | equemene | LAdir = |
96 | 1 | equemene | LAinc = |
97 | 1 | equemene | LAlib = |
98 | 1 | equemene | # |
99 | 1 | equemene | # ---------------------------------------------------------------------- |
100 | 1 | equemene | # - F77 / C interface -------------------------------------------------- |
101 | 1 | equemene | # ---------------------------------------------------------------------- |
102 | 1 | equemene | # You can skip this section if and only if you are not planning to use |
103 | 1 | equemene | # a BLAS library featuring a Fortran 77 interface. Otherwise, it is |
104 | 1 | equemene | # necessary to fill out the F2CDEFS variable with the appropriate |
105 | 1 | equemene | # options. **One and only one** option should be chosen in **each** of |
106 | 1 | equemene | # the 3 following categories: |
107 | 1 | equemene | # |
108 | 1 | equemene | # 1) name space (How C calls a Fortran 77 routine) |
109 | 1 | equemene | # |
110 | 1 | equemene | # -DAdd_ : all lower case and a suffixed underscore (Suns, |
111 | 1 | equemene | # Intel, ...), [default] |
112 | 1 | equemene | # -DNoChange : all lower case (IBM RS6000), |
113 | 1 | equemene | # -DUpCase : all upper case (Cray), |
114 | 1 | equemene | # -DAdd__ : the FORTRAN compiler in use is f2c. |
115 | 1 | equemene | # |
116 | 1 | equemene | # 2) C and Fortran 77 integer mapping |
117 | 1 | equemene | # |
118 | 1 | equemene | # -DF77_INTEGER=int : Fortran 77 INTEGER is a C int, [default] |
119 | 1 | equemene | # -DF77_INTEGER=long : Fortran 77 INTEGER is a C long, |
120 | 1 | equemene | # -DF77_INTEGER=short : Fortran 77 INTEGER is a C short. |
121 | 1 | equemene | # |
122 | 1 | equemene | # 3) Fortran 77 string handling |
123 | 1 | equemene | # |
124 | 1 | equemene | # -DStringSunStyle : The string address is passed at the string loca- |
125 | 1 | equemene | # tion on the stack, and the string length is then |
126 | 1 | equemene | # passed as an F77_INTEGER after all explicit |
127 | 1 | equemene | # stack arguments, [default] |
128 | 1 | equemene | # -DStringStructPtr : The address of a structure is passed by a |
129 | 1 | equemene | # Fortran 77 string, and the structure is of the |
130 | 1 | equemene | # form: struct {char *cp; F77_INTEGER len;}, |
131 | 1 | equemene | # -DStringStructVal : A structure is passed by value for each Fortran |
132 | 1 | equemene | # 77 string, and the structure is of the form: |
133 | 1 | equemene | # struct {char *cp; F77_INTEGER len;}, |
134 | 1 | equemene | # -DStringCrayStyle : Special option for Cray machines, which uses |
135 | 1 | equemene | # Cray fcd (fortran character descriptor) for |
136 | 1 | equemene | # interoperation. |
137 | 1 | equemene | # |
138 | 1 | equemene | F2CDEFS = -DUpCase -DF77_INTEGER=long -DStringCrayStyle \ |
139 | 1 | equemene | -DCRAY_BLAS -DHPL_USE_TIMES |
140 | 1 | equemene | # |
141 | 1 | equemene | # When UpCase is defined, CRAY_BLAS redefines the BLAS routines used in |
142 | 1 | equemene | # HPL to be prefixed with an S. In the Cray programming environment, the |
143 | 1 | equemene | # default INTEGER and REAL size is 64 bits. This is reflected in the |
144 | 1 | equemene | # Cray Scientific Library as well, so SGEMM is the 64-bit matrix multi- |
145 | 1 | equemene | # ply. |
146 | 1 | equemene | # |
147 | 1 | equemene | # ---------------------------------------------------------------------- |
148 | 1 | equemene | # - HPL includes / libraries / specifics ------------------------------- |
149 | 1 | equemene | # ---------------------------------------------------------------------- |
150 | 1 | equemene | # |
151 | 1 | equemene | HPL_INCLUDES = -I$(INCdir) -I$(INCdir)/$(ARCH) $(LAinc) $(MPinc) |
152 | 1 | equemene | HPL_LIBS = $(HPLlib) $(LAlib) $(MPlib) |
153 | 1 | equemene | # |
154 | 1 | equemene | # - Compile time options ----------------------------------------------- |
155 | 1 | equemene | # |
156 | 1 | equemene | # -DHPL_COPY_L force the copy of the panel L before bcast; |
157 | 1 | equemene | # -DHPL_CALL_CBLAS call the cblas interface; |
158 | 1 | equemene | # -DHPL_CALL_VSIPL call the vsip library; |
159 | 1 | equemene | # -DHPL_DETAILED_TIMING enable detailed timers; |
160 | 1 | equemene | # |
161 | 1 | equemene | # By default HPL will: |
162 | 1 | equemene | # *) not copy L before broadcast, |
163 | 1 | equemene | # *) call the BLAS Fortran 77 interface, |
164 | 1 | equemene | # *) not display detailed timing information. |
165 | 1 | equemene | # |
166 | 1 | equemene | HPL_OPTS = |
167 | 1 | equemene | # |
168 | 1 | equemene | # ---------------------------------------------------------------------- |
169 | 1 | equemene | # |
170 | 1 | equemene | HPL_DEFS = $(F2CDEFS) $(HPL_OPTS) $(HPL_INCLUDES) |
171 | 1 | equemene | # |
172 | 1 | equemene | # ---------------------------------------------------------------------- |
173 | 1 | equemene | # - Compilers / linkers - Optimization flags --------------------------- |
174 | 1 | equemene | # ---------------------------------------------------------------------- |
175 | 1 | equemene | # |
176 | 1 | equemene | CC = cc |
177 | 1 | equemene | CCNOOPT = $(HPL_DEFS) |
178 | 1 | equemene | CCFLAGS = $(HPL_DEFS) -O3 |
179 | 1 | equemene | # |
180 | 1 | equemene | LINKER = f77 |
181 | 1 | equemene | LINKFLAGS = -O3,unroll2,pipeline2 |
182 | 1 | equemene | # |
183 | 1 | equemene | ARCHIVER = ar |
184 | 1 | equemene | ARFLAGS = r |
185 | 1 | equemene | RANLIB = echo |
186 | 1 | equemene | # |
187 | 1 | equemene | # ---------------------------------------------------------------------- |