Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
S
Slurm
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
tud-zih-energy
Slurm
Commits
ffc3d10a
Commit
ffc3d10a
authored
20 years ago
by
Moe Jette
Browse files
Options
Downloads
Patches
Plain Diff
Fix BGL paper bibliography, assorted editing changes.
parent
4eb2a79f
No related branches found
No related tags found
No related merge requests found
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
doc/bgl.report/report.tex
+36
-37
36 additions, 37 deletions
doc/bgl.report/report.tex
doc/bgl.report/splncs.bst
+1080
-0
1080 additions, 0 deletions
doc/bgl.report/splncs.bst
doc/common/project.bib
+31
-1
31 additions, 1 deletion
doc/common/project.bib
with
1147 additions
and
38 deletions
doc/bgl.report/report.tex
+
36
−
37
View file @
ffc3d10a
...
@@ -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
16
TB of memory.
131,072 processors and
33
TB 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 B
lue Gene/
L are c-nodes.
The basic building-blocks of B
G
L 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 B
lue Gene/
L system delivered to LLNL consists of 128 base
The B
G
L 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 service
s
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
{
SLURM200
2
}
.
available
from several sources
\cite
{
SLURM200
3,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
node
s
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.
SL
I
URM
forc
ed to execute
one
\slurmd\
for the entire BGL system
SLURM
was compell
ed to execute
\slurmd\
on one or more
on a
front-end node.
front-end node
s
.
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.
...
...
This diff is collapsed.
Click to expand it.
doc/bgl.report/splncs.bst
0 → 100644
+
1080
−
0
View file @
ffc3d10a
% 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}
This diff is collapsed.
Click to expand it.
doc/common/project.bib
+
31
−
1
View file @
ffc3d10a
...
@@ -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
,
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment