Skip to content
Snippets Groups Projects
Commit ffc3d10a authored by Moe Jette's avatar Moe Jette
Browse files

Fix BGL paper bibliography, assorted editing changes.

parent 4eb2a79f
No related branches found
No related tags found
No related merge requests found
...@@ -93,11 +93,11 @@ ...@@ -93,11 +93,11 @@
% Abstract itself - 10pt % Abstract itself - 10pt
\noindent\normalsize \noindent\normalsize
The Blue Gene/L (BGL) system is a highly scalable computer developed The Blue Gene/L (BGL) system is a highly scalable computer developed
by IBM for Lawrence Livermore National Laboratory (LLNL). by IBM and deployed Lawrence Livermore National Laboratory (LLNL).
The current system has over 131,000 processors interconnected by a The current system has over 131,000 processors interconnected by a
three-dimensional toroidal network with complex rules for managing three-dimensional toroidal network with complex rules for managing
the network and allocating resources to jobs. the network and allocating resources to jobs.
We selected SLURM (Simple Linux Utility for Resource Management ) to SLURM (Simple Linux Utility for Resource Management ) was selected to
fulfull this role. fulfull this role.
SLURM is an open source, fault-tolerant, and highly scalable cluster SLURM is an open source, fault-tolerant, and highly scalable cluster
management and job scheduling system in widespread use on Linux clusters. management and job scheduling system in widespread use on Linux clusters.
...@@ -119,10 +119,11 @@ management for BGL and preliminary performance results. ...@@ -119,10 +119,11 @@ management for BGL and preliminary performance results.
\section{Overview} \section{Overview}
The Blue Gene/L system offers a unique cell-based design in which The BlueGene/L (BGL) system offers a unique cell-based design in which
the capacity can be expanded without introducing bottlenecks. the capacity can be expanded without introducing bottlenecks
\cite{BlueGeneWeb,BlueGeneL2002}.
The Blue Gene/L system delivered to LLNL consists of The Blue Gene/L system delivered to LLNL consists of
131,072 processors and 16TB of memory. 131,072 processors and 33TB of memory \cite{BlueGene2002}.
The peak computational rate will exceed 360 TeraFLOPs. The peak computational rate will exceed 360 TeraFLOPs.
Simple Linux Utility for Resource Management (SLURM)\footnote{A tip of Simple Linux Utility for Resource Management (SLURM)\footnote{A tip of
...@@ -130,14 +131,14 @@ the hat to Matt Groening and creators of {\em Futurama}, ...@@ -130,14 +131,14 @@ the hat to Matt Groening and creators of {\em Futurama},
where Slurm is the most popular carbonated beverage in the universe.} where Slurm is the most popular carbonated beverage in the universe.}
is a resource management system suitable for use on both small and is a resource management system suitable for use on both small and
very large clusters. very large clusters.
SLURM was jointly developed by Lawrence Livermore National Laboratory SLURM was developed by Lawrence Livermore National Laboratory
(LLNL) and Linux NetworX. (LLNL), Linux NetworX and HP.
It has been deployed on hundreds of Linux clusters world-wide and has It has been deployed on hundreds of Linux clusters world-wide and has
proven both highly reliable and highly scalalble. proven both highly reliable and highly scalalble.
\section{Architecture of Blue Gene/L} \section{Architecture of Blue Gene/L}
The basic building-blocks of Blue Gene/L are c-nodes. The basic building-blocks of BGL are c-nodes.
Each c-node consists Each c-node consists
of two processors based upon the PowerPC 550GX, 512 MB of memory of two processors based upon the PowerPC 550GX, 512 MB of memory
and support for five separate networks on a single chip. and support for five separate networks on a single chip.
...@@ -147,7 +148,7 @@ Alternately, both processors may be used for computations. ...@@ -147,7 +148,7 @@ Alternately, both processors may be used for computations.
These c-nodes are subsequently grouped into base partitions, each consisting These c-nodes are subsequently grouped into base partitions, each consisting
of 512 c-nodes in an eight by eight by eight array with the same of 512 c-nodes in an eight by eight by eight array with the same
network support. network support.
The Blue Gene/L system delivered to LLNL consists of 128 base The BGL system delivered to LLNL consists of 128 base
partitions organized in an eight by four by four array. partitions organized in an eight by four by four array.
The minimal resource allocation unit for applications is one The minimal resource allocation unit for applications is one
base partition so that at most 128 simultaneous jobs may execute. base partition so that at most 128 simultaneous jobs may execute.
...@@ -156,7 +157,7 @@ The c-nodes execute a custom micro-kernel. ...@@ -156,7 +157,7 @@ The c-nodes execute a custom micro-kernel.
System calls that can not directly be processed by the c-node System calls that can not directly be processed by the c-node
micro-kernel are routed to one of the systems I/O nodes. micro-kernel are routed to one of the systems I/O nodes.
There are 1024 I/O nodes running the Linux operating system, There are 1024 I/O nodes running the Linux operating system,
each of which services the requests from 64 c-nodes. each of which service the requests from 64 c-nodes.
Three distinct communications networks are supported: Three distinct communications networks are supported:
a three-dimensional torus with direct nearest-neighbor connections; a three-dimensional torus with direct nearest-neighbor connections;
...@@ -166,15 +167,21 @@ The torus network connects each node to ...@@ -166,15 +167,21 @@ The torus network connects each node to
its nearest neighbors in the X, Y and Z directions for a its nearest neighbors in the X, Y and Z directions for a
total of six of these connections for each node. total of six of these connections for each node.
Only parallel user applications execute on the c-node.
BGL has eight front-end nodes for other user tasks.
Users can login to the front-end nodes, compile and
launch parallel applications. Front-end nodes can also
be used for pre- and post-processing of data files.
Service node, Front-end-node. BGL system administrative functions are performed on a
computer known as the service node, which also maintains
a DB2 database used for many BGL management functions.
Mesh vs. Torus. TO DO: Mesh vs. Torus. Wiring rules.
Wiring rules.
Overhead of starting a new job (e.g. reboot nodes). TO DO: Overhead of starting a new job (e.g. reboot nodes).
Etc.
Be careful not to use non-public information (don't use NOTE: Be careful not to use non-public information (don't use
information directly from the "IBM Confidential" documents). information directly from the "IBM Confidential" documents).
\section{Architecture of SLURM} \section{Architecture of SLURM}
...@@ -182,7 +189,7 @@ information directly from the "IBM Confidential" documents). ...@@ -182,7 +189,7 @@ information directly from the "IBM Confidential" documents).
Only a brief description of SLURM architecture and implemenation is provided Only a brief description of SLURM architecture and implemenation is provided
here. here.
A more thorough treatment of the SLURM design and implementation is A more thorough treatment of the SLURM design and implementation is
available \cite{SLURM2002}. available from several sources \cite{SLURM2003,SlurmWeb}.
Several SLURM features make it well suited to serve as a resource manager Several SLURM features make it well suited to serve as a resource manager
for Blue Gene/L. for Blue Gene/L.
...@@ -190,7 +197,7 @@ for Blue Gene/L. ...@@ -190,7 +197,7 @@ for Blue Gene/L.
\begin{itemize} \begin{itemize}
\item {\tt Scalability}: \item {\tt Scalability}:
The SLURM daemons are multi-threaded with independent read and write The SLURM daemons are highly parallel with independent read and write
locks on the various data structures. locks on the various data structures.
SLURM presently manages several Linux clusters with over 1000 nodes SLURM presently manages several Linux clusters with over 1000 nodes
and executes full-system parallel jobs on these systems in a few seconds. and executes full-system parallel jobs on these systems in a few seconds.
...@@ -204,7 +211,7 @@ permits a variety of different infrastructures to be easily supported. ...@@ -204,7 +211,7 @@ permits a variety of different infrastructures to be easily supported.
The SLURM configuration file specifies which set of plugin modules The SLURM configuration file specifies which set of plugin modules
should be used. should be used.
For example, plugins are used for interfacing with different authentication For example, plugins are used for interfacing with different authentication
mechanisms and node interconnects. mechanisms and interconnects.
\item {\tt Fault Tolerance}: SLURM can handle a variety of failure \item {\tt Fault Tolerance}: SLURM can handle a variety of failure
modes without terminating workloads, including crashes of the node modes without terminating workloads, including crashes of the node
...@@ -310,27 +317,24 @@ identifies the directory in which to find the plugin. ...@@ -310,27 +317,24 @@ identifies the directory in which to find the plugin.
\section {Blue Gene/L Specific Resource Management Issues} \section {Blue Gene/L Specific Resource Management Issues}
Several issues needed to be addressed for SLURM to support BGL:
pseudo-nodes representing the base partitions, topology,
\slurmd\ executing only on the front-end-node,
BGL wiring issues and use of the BGL-specific APIs.
BGL wiring issues are extensive and addressed in a separate section.
Since a BGL base partition is the minimum allocation unit for a job, Since a BGL base partition is the minimum allocation unit for a job,
it was natural to consider each one as an independent SLURM node. it was natural to consider each one as an independent SLURM node.
This meant SLURM would manage a very reasonable 128 nodes This meant SLURM would manage a very reasonable 128 nodes
rather than tens of thousands of individual c-nodes. rather than tens of thousands of individual c-nodes.
The \slurmd\ daemon was designed to execute on each SLURM The \slurmd\ daemon was originally designed to execute on each
nodes to monitor the status of that node, launch job steps, etc. SLURM node to monitor the status of that node, launch job steps, etc.
Unfortunately BGL prohibited the execute of SLURM daemons within Unfortunately BGL prohibited the execute of SLURM daemons within
the base partitions on any of the c-nodes. the base partitions on any of the c-nodes.
SLIURM forced to execute one \slurmd\ for the entire BGL system SLURM was compelled to execute \slurmd\ on one or more
on a front-end node. front-end nodes.
In addition, the typical Unix mechanism used to interact with a In addition, the typical Unix mechanism used to interact with a
compute host do not function with BGL base partitions. compute host (e.g. getting memory size or processor count) do not
function normally with BGL base partitions.
This issue was addressed by adding a SLURM parameter to This issue was addressed by adding a SLURM parameter to
indicate when it is running with a front-end node, in which case indicate when it is running with a front-end node, in which case
there is assumed to be a single \slurmd\ for the entire system. there is assumed to be a single \slurmd\ for the entire system.
We anticipate changing this in the future to support multiple
\slurmd\ daemons on the front-end nodes.
SLURM was originally designed to address a one-dimensional topology SLURM was originally designed to address a one-dimensional topology
and this impacted a variety of areas from naming convensions to and this impacted a variety of areas from naming convensions to
...@@ -342,7 +346,7 @@ SLURM addresses this by using regular expressions to indicate ...@@ -342,7 +346,7 @@ SLURM addresses this by using regular expressions to indicate
ranges of node names. ranges of node names.
For example, "linux[0-1023]" was used to represent 1024 nodes For example, "linux[0-1023]" was used to represent 1024 nodes
with names having a prefix of "linux" and a numeric suffic ranging with names having a prefix of "linux" and a numeric suffic ranging
from "0" to "1023". from "0" to "1023" (e.g. "linux0" through "linux1023").
The most reasonable way to name the BGL nodes seemed to be The most reasonable way to name the BGL nodes seemed to be
using a three digit suffix, but rather than indicate a monotonically using a three digit suffix, but rather than indicate a monotonically
increasing number, each digit would represent the base partition's increasing number, each digit would represent the base partition's
...@@ -391,8 +395,7 @@ opaque data type. ...@@ -391,8 +395,7 @@ opaque data type.
Since these new data types are unused on non-BGL systems, the Since these new data types are unused on non-BGL systems, the
functions to manage them perform no work. functions to manage them perform no work.
Other computers with other topology requiremens will be able to Other computers with other topology requiremens will be able to
take advantage of this plugin infrastructure as well with minimal take advantage of this plugin infrastructure with minimal effort.
effort.
In order to provide users with a clear view of the BGL topology, a new In order to provide users with a clear view of the BGL topology, a new
tools was developed. tools was developed.
...@@ -426,10 +429,6 @@ a script. ...@@ -426,10 +429,6 @@ a script.
The job will initiate its parallel tasks through the use of {\em mpirun}. The job will initiate its parallel tasks through the use of {\em mpirun}.
{\em mpirun} uses BGL-specific APIs to launch and manage the {\em mpirun} uses BGL-specific APIs to launch and manage the
tasks. tasks.
An additional benefit of this architecture is that the single \slurmd\
for the entire system is relieved of job step management, which
could involve a significant amount of overhead for a computer
of BGL's size.
We disabled SLURM's job step support for normal users to We disabled SLURM's job step support for normal users to
mitigate the possible impact of users inadvertently attempting mitigate the possible impact of users inadvertently attempting
to initiate job steps through SLURM. to initiate job steps through SLURM.
......
% BibTeX bibliography style `splncs'
% An attempt to match the bibliography style required for use with
% numbered references in Springer Verlag's "Lecture Notes in Computer
% Science" series. (See Springer's documentation for llncs.sty for
% more details of the suggested reference format.) Note that this
% file will not work for author-year style citations.
% Use \documentclass{llncs} and \bibliographystyle{splncs}, and cite
% a reference with (e.g.) \cite{smith77} to get a "[1]" in the text.
% Copyright (C) 1999 Jason Noble.
% Last updated: Thursday 20 May 1999, 13:22:19
%
% Based on the BibTeX standard bibliography style `unsrt'
ENTRY
{ address
author
booktitle
chapter
edition
editor
howpublished
institution
journal
key
month
note
number
organization
pages
publisher
school
series
title
type
volume
year
}
{}
{ label }
INTEGERS { output.state before.all mid.sentence after.sentence
after.block after.authors between.elements}
FUNCTION {init.state.consts}
{ #0 'before.all :=
#1 'mid.sentence :=
#2 'after.sentence :=
#3 'after.block :=
#4 'after.authors :=
#5 'between.elements :=
}
STRINGS { s t }
FUNCTION {output.nonnull}
{ 's :=
output.state mid.sentence =
{ " " * write$ }
{ output.state after.block =
{ add.period$ write$
newline$
"\newblock " write$
}
{
output.state after.authors =
{ ": " * write$
newline$
"\newblock " write$
}
{ output.state between.elements =
{ ", " * write$ }
{ output.state before.all =
'write$
{ add.period$ " " * write$ }
if$
}
if$
}
if$
}
if$
mid.sentence 'output.state :=
}
if$
s
}
FUNCTION {output}
{ duplicate$ empty$
'pop$
'output.nonnull
if$
}
FUNCTION {output.check}
{ 't :=
duplicate$ empty$
{ pop$ "empty " t * " in " * cite$ * warning$ }
'output.nonnull
if$
}
FUNCTION {output.bibitem}
{ newline$
"\bibitem{" write$
cite$ write$
"}" write$
newline$
""
before.all 'output.state :=
}
FUNCTION {fin.entry}
{ write$
newline$
}
FUNCTION {new.block}
{ output.state before.all =
'skip$
{ after.block 'output.state := }
if$
}
FUNCTION {stupid.colon}
{ after.authors 'output.state := }
FUNCTION {insert.comma}
{ output.state before.all =
'skip$
{ between.elements 'output.state := }
if$
}
FUNCTION {new.sentence}
{ output.state after.block =
'skip$
{ output.state before.all =
'skip$
{ after.sentence 'output.state := }
if$
}
if$
}
FUNCTION {not}
{ { #0 }
{ #1 }
if$
}
FUNCTION {and}
{ 'skip$
{ pop$ #0 }
if$
}
FUNCTION {or}
{ { pop$ #1 }
'skip$
if$
}
FUNCTION {new.block.checka}
{ empty$
'skip$
'new.block
if$
}
FUNCTION {new.block.checkb}
{ empty$
swap$ empty$
and
'skip$
'new.block
if$
}
FUNCTION {new.sentence.checka}
{ empty$
'skip$
'new.sentence
if$
}
FUNCTION {new.sentence.checkb}
{ empty$
swap$ empty$
and
'skip$
'new.sentence
if$
}
FUNCTION {field.or.null}
{ duplicate$ empty$
{ pop$ "" }
'skip$
if$
}
FUNCTION {emphasize}
{ duplicate$ empty$
{ pop$ "" }
{ "" swap$ * "" * }
if$
}
FUNCTION {bold}
{ duplicate$ empty$
{ pop$ "" }
{ "\textbf{" swap$ * "}" * }
if$
}
FUNCTION {parens}
{ duplicate$ empty$
{ pop$ "" }
{ "(" swap$ * ")" * }
if$
}
INTEGERS { nameptr namesleft numnames }
FUNCTION {format.springer.names}
{ 's :=
#1 'nameptr :=
s num.names$ 'numnames :=
numnames 'namesleft :=
{ namesleft #0 > }
{ s nameptr "{vv~}{ll}{, jj}{, f{.}.}" format.name$ 't :=
nameptr #1 >
{ namesleft #1 >
{ ", " * t * }
{ numnames #1 >
{ ", " * }
'skip$
if$
t "others" =
{ " et~al." * }
{ "" * t * }
if$
}
if$
}
't
if$
nameptr #1 + 'nameptr :=
namesleft #1 - 'namesleft :=
}
while$
}
FUNCTION {format.names}
{ 's :=
#1 'nameptr :=
s num.names$ 'numnames :=
numnames 'namesleft :=
{ namesleft #0 > }
{ s nameptr "{vv~}{ll}{, jj}{, f.}" format.name$ 't :=
nameptr #1 >
{ namesleft #1 >
{ ", " * t * }
{ numnames #2 >
{ "," * }
'skip$
if$
t "others" =
{ " et~al." * }
{ " \& " * t * }
if$
}
if$
}
't
if$
nameptr #1 + 'nameptr :=
namesleft #1 - 'namesleft :=
}
while$
}
FUNCTION {format.authors}
{ author empty$
{ "" }
{ author format.springer.names }
if$
}
FUNCTION {format.editors}
{ editor empty$
{ "" }
{ editor format.springer.names
editor num.names$ #1 >
{ ", eds." * }
{ ", ed." * }
if$
}
if$
}
FUNCTION {format.title}
{ title empty$
{ "" }
{ title "t" change.case$ }
if$
}
FUNCTION {n.dashify}
{ 't :=
""
{ t empty$ not }
{ t #1 #1 substring$ "-" =
{ t #1 #2 substring$ "--" = not
{ "--" *
t #2 global.max$ substring$ 't :=
}
{ { t #1 #1 substring$ "-" = }
{ "-" *
t #2 global.max$ substring$ 't :=
}
while$
}
if$
}
{ t #1 #1 substring$ *
t #2 global.max$ substring$ 't :=
}
if$
}
while$
}
FUNCTION {format.date}
{ year empty$
{ "there's no year in " cite$ * warning$ }
'year
if$
}
FUNCTION {format.btitle}
{ title emphasize
}
FUNCTION {tie.or.space.connect}
{ duplicate$ text.length$ #3 <
{ "~" }
{ " " }
if$
swap$ * *
}
FUNCTION {either.or.check}
{ empty$
'pop$
{ "can't use both " swap$ * " fields in " * cite$ * warning$ }
if$
}
FUNCTION {format.bvolume}
{ volume empty$
{ "" }
{ "Volume" volume tie.or.space.connect
series empty$
'skip$
{ " of " * series emphasize * }
if$
add.period$
"volume and number" number either.or.check
}
if$
}
FUNCTION {format.number.series}
{ volume empty$
{ number empty$
{ series field.or.null }
{ output.state mid.sentence =
{ "number" }
{ "Number" }
if$
number tie.or.space.connect
series empty$
{ "there's a number but no series in " cite$ * warning$ }
{ " in " * series * }
if$
}
if$
}
{ "" }
if$
}
FUNCTION {format.edition}
{ edition empty$
{ "" }
{ output.state mid.sentence =
{ edition "l" change.case$ " edn." * }
{ edition "t" change.case$ " edn." * }
if$
}
if$
}
INTEGERS { multiresult }
FUNCTION {multi.page.check}
{ 't :=
#0 'multiresult :=
{ multiresult not
t empty$ not
and
}
{ t #1 #1 substring$
duplicate$ "-" =
swap$ duplicate$ "," =
swap$ "+" =
or or
{ #1 'multiresult := }
{ t #2 global.max$ substring$ 't := }
if$
}
while$
multiresult
}
FUNCTION {format.pages}
{ pages empty$
{ "" }
{ pages multi.page.check
{ "" pages n.dashify tie.or.space.connect }
{ "" pages tie.or.space.connect }
if$
}
if$
}
FUNCTION {format.vol}
{ volume bold
}
FUNCTION {pre.format.pages}
{ pages empty$
'skip$
{ duplicate$ empty$
{ pop$ format.pages }
{ " " * pages n.dashify * }
if$
}
if$
}
FUNCTION {format.chapter.pages}
{ chapter empty$
'format.pages
{ type empty$
{ "chapter" }
{ type "l" change.case$ }
if$
chapter tie.or.space.connect
pages empty$
'skip$
{ " " * format.pages * }
if$
}
if$
}
FUNCTION {format.in.ed.booktitle}
{ booktitle empty$
{ "" }
{ editor empty$
{ "In: " booktitle emphasize * }
{ "In " format.editors * ": " * booktitle emphasize * }
if$
}
if$
}
FUNCTION {empty.misc.check}
{ author empty$ title empty$ howpublished empty$
month empty$ year empty$ note empty$
and and and and and
{ "all relevant fields are empty in " cite$ * warning$ }
'skip$
if$
}
FUNCTION {format.thesis.type}
{ type empty$
'skip$
{ pop$
type "t" change.case$
}
if$
}
FUNCTION {format.tr.number}
{ type empty$
{ "Technical Report" }
'type
if$
number empty$
{ "t" change.case$ }
{ number tie.or.space.connect }
if$
}
FUNCTION {format.article.crossref}
{ key empty$
{ journal empty$
{ "need key or journal for " cite$ * " to crossref " * crossref *
warning$
""
}
{ "In {\em " journal * "\/}" * }
if$
}
{ "In " key * }
if$
" \cite{" * crossref * "}" *
}
FUNCTION {format.crossref.editor}
{ editor #1 "{vv~}{ll}" format.name$
editor num.names$ duplicate$
#2 >
{ pop$ " et~al." * }
{ #2 <
'skip$
{ editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
{ " et~al." * }
{ " and " * editor #2 "{vv~}{ll}" format.name$ * }
if$
}
if$
}
if$
}
FUNCTION {format.book.crossref}
{ volume empty$
{ "empty volume in " cite$ * "'s crossref of " * crossref * warning$
"In "
}
{ "Volume" volume tie.or.space.connect
" of " *
}
if$
" \cite{" * crossref * "}" *
}
FUNCTION {format.incoll.inproc.crossref}
{ editor empty$
editor field.or.null author field.or.null =
or
{ key empty$
{ booktitle empty$
{ "need editor, key, or booktitle for " cite$ * " to crossref " *
crossref * warning$
""
}
{ "" }
if$
}
{ "" }
if$
}
{ "" }
if$
" \cite{" * crossref * "}" *
}
FUNCTION {and.the.note}
{ note output
note empty$
'skip$
{ add.period$ }
if$
}
FUNCTION {article}
{ output.bibitem
format.authors "author" output.check
stupid.colon
format.title "title" output.check
new.block
crossref missing$
{ journal emphasize "journal" output.check
format.vol output
format.date parens output
format.pages output
}
{ format.article.crossref output.nonnull
format.pages output
}
if$
and.the.note
fin.entry
}
FUNCTION {book}
{ output.bibitem
author empty$
{ format.editors "author and editor" output.check }
{ format.authors output.nonnull
crossref missing$
{ "author and editor" editor either.or.check }
'skip$
if$
}
if$
stupid.colon
format.btitle "title" output.check
new.sentence
crossref missing$
{ format.edition output
format.bvolume output
new.block
format.number.series output
new.sentence
publisher "publisher" output.check
address empty$
'skip$
{ insert.comma }
if$
address output
format.date parens output
}
{ format.book.crossref output.nonnull
}
if$
and.the.note
fin.entry
}
FUNCTION {booklet}
{ output.bibitem
format.authors output
stupid.colon
format.title "title" output.check
howpublished address new.block.checkb
howpublished output
address empty$
'skip$
{ insert.comma }
if$
address output
format.date parens output
and.the.note
fin.entry
}
FUNCTION {inbook}
{ output.bibitem
author empty$
{ format.editors "author and editor" output.check }
{ format.authors output.nonnull
crossref missing$
{ "author and editor" editor either.or.check }
'skip$
if$
}
if$
stupid.colon
crossref missing$
{ chapter output
new.block
format.number.series output
new.sentence
"In:" output
format.btitle "title" output.check
new.sentence
format.edition output
format.bvolume output
publisher "publisher" output.check
address empty$
'skip$
{ insert.comma }
if$
address output
format.date parens output
}
{ chapter output
new.block
format.incoll.inproc.crossref output.nonnull
}
if$
format.pages output
and.the.note
fin.entry
}
FUNCTION {incollection}
{ output.bibitem
format.authors "author" output.check
stupid.colon
format.title "title" output.check
new.block
crossref missing$
{ format.in.ed.booktitle "booktitle" output.check
new.sentence
format.bvolume output
format.number.series output
new.block
format.edition output
publisher "publisher" output.check
address empty$
'skip$
{ insert.comma }
if$
address output
format.date parens output
format.pages output
}
{ format.incoll.inproc.crossref output.nonnull
format.chapter.pages output
}
if$
and.the.note
fin.entry
}
FUNCTION {inproceedings}
{ output.bibitem
format.authors "author" output.check
stupid.colon
format.title "title" output.check
new.block
crossref missing$
{ format.in.ed.booktitle "booktitle" output.check
new.sentence
format.bvolume output
format.number.series output
address empty$
{ organization publisher new.sentence.checkb
organization empty$
'skip$
{ insert.comma }
if$
organization output
publisher empty$
'skip$
{ insert.comma }
if$
publisher output
format.date parens output
}
{ insert.comma
address output.nonnull
organization empty$
'skip$
{ insert.comma }
if$
organization output
publisher empty$
'skip$
{ insert.comma }
if$
publisher output
format.date parens output
}
if$
}
{ format.incoll.inproc.crossref output.nonnull
}
if$
format.pages output
and.the.note
fin.entry
}
FUNCTION {conference} { inproceedings }
FUNCTION {manual}
{ output.bibitem
author empty$
{ organization empty$
'skip$
{ organization output.nonnull
address output
}
if$
}
{ format.authors output.nonnull }
if$
stupid.colon
format.btitle "title" output.check
author empty$
{ organization empty$
{ address new.block.checka
address output
}
'skip$
if$
}
{ organization address new.block.checkb
organization output
address empty$
'skip$
{ insert.comma }
if$
address output
}
if$
new.sentence
format.edition output
format.date parens output
and.the.note
fin.entry
}
FUNCTION {mastersthesis}
{ output.bibitem
format.authors "author" output.check
stupid.colon
format.title "title" output.check
new.block
"Master's thesis" format.thesis.type output.nonnull
school empty$
'skip$
{ insert.comma }
if$
school "school" output.check
address empty$
'skip$
{ insert.comma }
if$
address output
format.date parens output
and.the.note
fin.entry
}
FUNCTION {misc}
{ output.bibitem
format.authors "author" output.check
stupid.colon
format.title "title" output.check
howpublished new.block.checka
howpublished output
format.date parens output
and.the.note
fin.entry
empty.misc.check
}
FUNCTION {phdthesis}
{ output.bibitem
format.authors "author" output.check
stupid.colon
format.btitle "title" output.check
new.block
"PhD thesis" format.thesis.type output.nonnull
school empty$
'skip$
{ insert.comma }
if$
school "school" output.check
address empty$
'skip$
{ insert.comma }
if$
address output
format.date parens output
and.the.note
fin.entry
}
FUNCTION {proceedings}
{ output.bibitem
editor empty$
{ organization empty$
{ "" }
{ organization output
stupid.colon }
if$
}
{ format.editors output.nonnull
stupid.colon
}
if$
format.btitle "title" output.check
new.block
crossref missing$
{ format.in.ed.booktitle "booktitle" output.check
new.sentence
format.bvolume output
format.number.series output
address empty$
{ organization publisher new.sentence.checkb
organization empty$
'skip$
{ insert.comma }
if$
organization output
publisher empty$
'skip$
{ insert.comma }
if$
publisher output
format.date parens output
}
{ insert.comma
address output.nonnull
organization empty$
'skip$
{ insert.comma }
if$
organization output
publisher empty$
'skip$
{ insert.comma }
if$
publisher output
format.date parens output
}
if$
}
{ format.incoll.inproc.crossref output.nonnull
}
if$
and.the.note
fin.entry
}
FUNCTION {techreport}
{ output.bibitem
format.authors "author" output.check
stupid.colon
format.title "title" output.check
new.block
format.tr.number output.nonnull
institution empty$
'skip$
{ insert.comma }
if$
institution "institution" output.check
address empty$
'skip$
{ insert.comma }
if$
address output
format.date parens output
and.the.note
fin.entry
}
FUNCTION {unpublished}
{ output.bibitem
format.authors "author" output.check
stupid.colon
format.title "title" output.check
new.block
note "note" output.check
format.date parens output
fin.entry
}
FUNCTION {default.type} { misc }
MACRO {jan} {"January"}
MACRO {feb} {"February"}
MACRO {mar} {"March"}
MACRO {apr} {"April"}
MACRO {may} {"May"}
MACRO {jun} {"June"}
MACRO {jul} {"July"}
MACRO {aug} {"August"}
MACRO {sep} {"September"}
MACRO {oct} {"October"}
MACRO {nov} {"November"}
MACRO {dec} {"December"}
MACRO {acmcs} {"ACM Computing Surveys"}
MACRO {acta} {"Acta Informatica"}
MACRO {cacm} {"Communications of the ACM"}
MACRO {ibmjrd} {"IBM Journal of Research and Development"}
MACRO {ibmsj} {"IBM Systems Journal"}
MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
MACRO {ieeetc} {"IEEE Transactions on Computers"}
MACRO {ieeetcad}
{"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
MACRO {ipl} {"Information Processing Letters"}
MACRO {jacm} {"Journal of the ACM"}
MACRO {jcss} {"Journal of Computer and System Sciences"}
MACRO {scp} {"Science of Computer Programming"}
MACRO {sicomp} {"SIAM Journal on Computing"}
MACRO {tocs} {"ACM Transactions on Computer Systems"}
MACRO {tods} {"ACM Transactions on Database Systems"}
MACRO {tog} {"ACM Transactions on Graphics"}
MACRO {toms} {"ACM Transactions on Mathematical Software"}
MACRO {toois} {"ACM Transactions on Office Information Systems"}
MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
MACRO {tcs} {"Theoretical Computer Science"}
READ
STRINGS { longest.label }
INTEGERS { number.label longest.label.width }
FUNCTION {initialize.longest.label}
{ "" 'longest.label :=
#1 'number.label :=
#0 'longest.label.width :=
}
FUNCTION {longest.label.pass}
{ number.label int.to.str$ 'label :=
number.label #1 + 'number.label :=
label width$ longest.label.width >
{ label 'longest.label :=
label width$ 'longest.label.width :=
}
'skip$
if$
}
EXECUTE {initialize.longest.label}
ITERATE {longest.label.pass}
FUNCTION {begin.bib}
{ preamble$ empty$
'skip$
{ preamble$ write$ newline$ }
if$
"\begin{thebibliography}{" longest.label * "}" * write$ newline$
}
EXECUTE {begin.bib}
EXECUTE {init.state.consts}
ITERATE {call.type$}
FUNCTION {end.bib}
{ newline$
"\end{thebibliography}" write$ newline$
}
EXECUTE {end.bib}
...@@ -7,15 +7,36 @@ ...@@ -7,15 +7,36 @@
YEAR = {2002}, YEAR = {2002},
} }
@CONFERENCE
{
BlueGeneL2002,
AUTHOR = {N. R. Adiga and others},
TITLE = {{An Overview of the BlueGene/L Supercomputer}},
BOOKTITLE = {Proceedings of Supercomputing 2002},
ADDRESS = {Baltimore, MD},
YEAR = {2002},
NOTE = {Available from http://sc-2002.org/paperpdfs/pap.pap207.pdf},
}
@MISC @MISC
{ {
BlueGene2002, BlueGene2002,
AUTHOR = {{{Lawrence Livermore National Laboratory}}}, AUTHOR = {{{Lawrence Livermore National Laboratory}}},
TITLE = {{Blue/GeneL}}, TITLE = {{Blue/GeneL}},
HOWPUBLISHED= {http://www.llnl.gov/asci/platforms/bluegenel}, HOWPUBLISHED= {http://www.llnl.gov/asci/platforms/bluegenel},
YEAR = {2003}, YEAR = {2003},
} }
@MISC
{
BlueGeneWeb,
AUTHOR = {{{IBM}}},
TITLE = {{Blue Gene Home Page}},
HOWPUBLISHED= {http://www.research.ibm.com/bluegene},
YEAR = {2004},
}
@MISC @MISC
{ {
DPCS2002, DPCS2002,
...@@ -113,6 +134,15 @@ ...@@ -113,6 +134,15 @@
NOTE = {Available from http://www.llnl.gov/linux/slurm/}, NOTE = {Available from http://www.llnl.gov/linux/slurm/},
} }
@MISC
{
SlurmWeb,
AUTHOR = {M. Jette and M. Grondona},
TITLE = {{SLURM Home Page}},
HOWPUBLISHED= {http://www.llnl.gov/linux/slurm},
YEAR = {2004},
}
@CONFERENCE @CONFERENCE
{ {
STORM2001, STORM2001,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment