scotch_6.0.3: Added to the source tree to simplify building OpenFOAM

Recent versions of scotch are rarely available in packaged form for
ready installation on GNU/Linux distributions and so the sources are
generally required.
This commit is contained in:
Henry Weller
2016-05-30 21:17:14 +01:00
parent 08df75f4c7
commit 1cce60aa78
779 changed files with 184969 additions and 0 deletions

561
scotch_6.0.3/INSTALL.txt Normal file
View File

@ -0,0 +1,561 @@
Scotch 6.0 installation instructions
====================================
1) Mandatory tools
==================
In order for you to compile Scotch and/or PT-Scotch, you must have GNU
Make installed on your system, as well as an implementation of the MPI
message-passing library in the case of PT-Scotch. Lex and Yacc are
optional. There is a possibility to install Scotch without having Lex
or Yacc, but it may require the tuning of sample Flex and Bison (i.e.,
the GNU equivalents of Lex and Yacc) outputs created on a Linux
system, which may need some tricky work to compile on other systems,
because of different C library implementations.
To check if GNU Make is installed and is found first, please type:
%prompt% make --version
It should read:
% GNU Make x.xx
% Copyright (C) 20xx Free Software Foundation, Inc.
etc, etc.
Alternatively, if GNU Make is installed but its directory does
not appear first in the PATH variable that is searched for
executables, you can try to locate it using the which command:
%prompt% which make
If several occurences of make are found, one might be GNU Make,
so try to figure out which of them.
To see if lex and yacc are present, type
%prompt% which lex
%prompt% which yacc (or "bison", the GNU flavor of yacc)
If some of these are missing, please:
- check your path variable (just in case they are located in
some unusual place, such as /usr/local/bin, /opt/bin,
/opt/local/bin/, /opt/gnu/bin, etc). Tools such as "which",
"locate" or "find" may help you find them;
- ask your system administrator (highly recommended);
- install a copy of GNU Make of your own (less recommended,
please ask your system administrator first). GNU Make is
available from the FSF website, at:
http://www.gnu.org/software/make/ and
http://ftp.gnu.org/pub/gnu/make/ .
A GNU version of lex and yacc is also available from the
very same FSF website, at:
http://www.gnu.org/software/flex/
http://ftp.gnu.org/non-gnu/flex/
http://www.gnu.org/software/bison/
http://ftp.gnu.org/pub/gnu/bison/ ;
- use the "last resort" files placed in a directory judiciously
called "last_resort", located in subdirectory "src/libscotch".
These files are:
. parser_ll.c
. parser_ly.h
. parser_yy.c .
They should be copied in the directory where object files are
created, and "touch"ed so that their modification date is more
recent than those of the corresponding "parser_ll.l" and
"parser_yy.y" files. Then cross your fingers and hope it
compiles properly on your system. Else, you will have to dig in
their code to have them compile properly...
The Makefile of the libScotch library has been designed so as
to copy the last_resort/* files automatically when the lex or
yacc tools are not found.
In this case, depending on your platform, you may also have to set
the "-DSCOTCH_RENAME_PARSER" flag in order for all symbols to be
properly redefined (see Section 2.2).
2) Configuration
================
2.1) Creating the "Makefile.inc" file
-------------------------------------
Go to the "src/" directory.
Look in the "Make.inc/" subdirectory for a configuration
file which matches your system configuration. If there
is none, build a proper one in the "Make.inc/" subdirectory,
basing on the structure of existing ones.
In particular, the Makefile.inc file contains three variables
which specify which C compiler to use. Their semantic is as
follows: the compiler command in variable CCS is used to compile
the sequential (hence the "S" in "CCS") Scotch distribution. The
compiler command in CCP is used to compile the parallel ("P")
PT-Scotch distribution. The compiler command in CCD is used to compile
the version of the "dummysizes" ("D") executable used for compiling
PT-Scotch, as explained below.
Create a symbolic link from the configuration file to the
current "src/" working directory, renaming it as "Makefile.inc":
%prompt% ln -s Make.inc/Makefile.inc.xxxx_xxx_xxx Makefile.inc
If symbolic links are not available on your system, make a
plain copy of the file to a file named "Makefile.inc" in the
current "src/" working directory:
%prompt% cp Make.inc/Makefile.inc.xxxx_xxx_xxx Makefile.inc
Some additional scripts, designed to ease the installation of Scotch
on specific platforms, are also present in subdirectories of the
Make.inc directory. This is for instance the case for the mingw32
platform.
2.2) Parser symbol conflicts
----------------------------
Since Scotch uses a parser to analyze its strategy strings, it may
happen that the symbols of this parser conflict with those of
another parser used in a third-party library. All "Makefile.inc.*"
platform configuration files which base on flex / bison are already
tailored so as to prevent such conflicts. If you use other parsing
tools, you may have to provide other options. Another solution is to
use the pre-processed parser files of the "src/libscotch/last_resort"
subdirectory (corresponding operation instructions are given in
Section 1).
2.3) Integer size issues
------------------------
By default, all integers used in Scotch and PT-Scotch are of the "int"
C type, corresponding to the "INTEGER" type in Fortran. To coerce the
size of the Scotch integer type to 32 or 64 bits, add the "-DINTSIZE32"
or "-DINTSIZE64" flags, respectively, to the C compiler flags in the
Makefile.inc configuration file. If you do so, make sure to use
integer types of equivalent size to declare variables passed to Scotch
routines from caller C and Fortran procedures. Also, when running on
32_64-bit architectures (that is, integer types are 32-bit wide,
while address types are 64-bit wide), some integer array indices
returned by the Fortran interface have to be of a size equivalent to
those of memory addresses, that is, 64 bits. The size of these
variables is determined by the "-DIDXSIZE32" and "-DIDXSIZE64" flags,
respectively. When none of them is provided, the size of the indices
is assumed to be equivalent to that of the Scotch integer type.
For instance, on a 32-bit architecture, you can use 64-bit integers in
Scotch by just setting the "-DINTSIZE64" flag, because addresses will
remain on 32 bits. On a 32_64 architecture, you can use either 32-bit
or 64-bit integers in Scotch, by setting the "-DINTSIZE32" or
"-DINTSIZE64" flags accordingly, but in all cases you must set the
"-DIDXSIZE64" flag in order for some of the routines of the Fortran
interface to operate properly, because the array indices returned by
these routines have to be stored as 64-bit quantities.
Of course, on 64-bit architectures, another possibility is to tune
your C and Fortran compilers to make them interpret all "int" and
"INTEGER" types as 64 bit values. This solution is the simplest one,
as there is no need to use any of the aforementioned flags, nor to
hard-code type lengths in user's code. Yet, it prevents mixing 32 and
64-bit features, and may create problems when linking PT-Scotch if a
corresponding MPI library is not available.
Be careful not to mismatch the 32-bit and 64-bit versions of the
"scotch.h" and "ptscotch.h" include files that are generated at
compile time. When several versions of Scotch are simultaneously
present on a system, Make sure to place the corresponding include and
library files in separate directories. Most Scotch data structures
will have different sizes, depending on integer or pointer
sizes. Consequently, compiling a 64-bit executable with the 32-bit
version of "scotch.h" may lead to unpredictable behavior because of
memory overflow.
2.4) Compression libraries
--------------------------
The binaries of the Scotch distribution can handle compressed
graphs in input or output. Three compressed graph formats are
currently supported: bzip2, gzip and lzma. In order for them to be
actually activated, the proper libraries must be available on your
system. On a Linux platform, they are called "zlib" for the gzip
format, "libbz2" for the bzip2 format, and "liblzma" for the lzma
format. Note that it is the "development" version (also called
"devel", for short, within package names) of each of these libraries
which is required for the compilation to succeed.
According to the libraries installed on your system, you may set
flags "-DCOMMON_FILE_COMPRESS_BZ2", "-DCOMMON_FILE_COMPRESS_GZ" and/or
"-DCOMMON_FILE_COMPRESS_LZMA" in the CFLAGS variable of your
Makefile.inc configuration file, to have these formats and their
respective extensions ".bz2", ".gz" and ".lzma", recognized and
handled by Scotch.
Compression and decompression are handled either by extra threads
or by fork'ed child processes if threads are not available. On
systems which do not provide a functional fork() system call,
compressed files cannot be handled when the "-DCOMMON_PTHREAD" flag
is not set (see below).
2.5) Multi-threading
--------------------
Scotch can also take advantage of Posix threads when they are
available. They are used in several places:
- to compress and uncompress file data. This can be done either
by launching a service thread, or else by creating a separate
process by means of a Posix fork() system call. This choice is
controlled by the "-DCOMMON_PTHREAD" flag: if it is set, threads
will be used, else fork() calls will be performed. For systems
which do not support the fork() system call, such as the MinGW32
platform, one can set the "-DCOMMON_STUB_FORK" flag, which creates
a stub fork() routine which always returns an error. Therefore,
without both fork() and threads, one must set the
"-DCOMMON_STUB_FORK" flag without setting "-DCOMMON_PTHREAD", so
that compilation will successfully complete; however, in this case,
compressed graphs shall not be handled in practice.
- to create distributed graphs in parallel. Since this task involves
concurrent MPI communications, the MPI library must support the
MPI_THREAD_MULTIPLE level. The use of threads within Scotch itself
is controlled by the "-DSCOTCH_PTHREAD" flag, which is completely
independent from the "-DCOMMON_PTHREAD" flag. Any of them can be set
without setting the other.
Note that if you compile Scotch with the "-DSCOTCH_PTHREAD" flag,
you will have to initialize your communication subsystem by using
the MPI_Init_thread() MPI call, not MPI_Init(), and the provided
thread support level value returned by the routine must be
checked carefully.
If you have doubts on the stability of your MPI implementation, it
is better not to set "-DSCOTCH_PTHREAD". For instance, on Linux
platforms, concurrency problems have been experienced with MPICH2
versions prior to 1.0.7 using TCP; consequently, if the MPI
implementation on your platform is based on an older MPICH2 version,
do not set the "-DSCOTCH_PTHREAD" flag.
Note that since the Scotch and PT-Scotch libraries are distinct, you
can still compile Scotch with threads enabled, and compile PT-Scotch
with threads disabled. However, since PT-Scotch calls Scotch
routines when operating on a single process, threaded routines will
be used on each process, without interfering with MPI.
- to run in a multi-threaded way several key algorithms of the Scotch
(no longer really) sequential library, such as graph coarsening and
k-way diffusion. More algorithms will be re-coded in a threaded way
in future versions.
To date, thread management is performed in a very rudimentary way.
The available number of threads can only be set at compile-time, and
the assignment of threads to cores is performed in increasing order,
starting from 0, which may not always prove to be the most efficient
mapping in terms of memory affinity. We plan to add a mechanism for
dynamic thread allocation in the near future, based upon the hwloc
library.
The compilation flags used to manage threads are the following:
"-DCOMMON_PTHREAD" enables threads for algorithms not related to
graph management, partitioning and/or ordering, e.g. compressed
file handling.
"-DCOMMON_PTHREAD_BARRIER" creates a replacement for missing
pthread_barrier_t implementations, which unfortunately happens on some
systems.
"-DSCOTCH_PTHREAD" is necessary to enable multi-threaded algorithms
in Scotch and/or PT-Scotch.
"-DSCOTCH_PTHREAD_AFFINITY_LINUX" enables Linux extensions for
handling thread affinity. As said above, this may not prove
efficient in all cases. More options will be provided in the
near future.
"-DSCOTCH_PTHREAD_NUMBER=x" sets the overall number of threads to be
used by multi-threaded algorithms. This number may not necessary be a
power of two. Since some algorithms have had to be reformulated to
accomodate for multi-threading, some algorithms will most probably be
much more efficient than sequential processing only for a number of
threads strictly greater than 2. Setting "-DSCOTCH_PTHREAD_NUMBER=1"
allows one to run sequential algorithms instead of multi-threaded
ones, while benefitting from multi-threading for file compression and
distributed graph handling.
When compiling under mingw32 on Windows systems, it is possible to
benefit from multi-threading by including the "semaphore.h" and
"pthread.h" files, included in the "src/misc" subdirectory, at compile
time. These files have been kindly provided by Samuel Thibault, under
a BSD 2-Clause License. These files will not work for Cygwin. This is
not a problem, as Cygwin provides its own implementation of Posix
threads.
2.6) Monitoring memory allocation
---------------------------------
Some memory allocation information can be aggregated if PT-Scotch is
compiled with the -DCOMMON_MEMORY_TRACE flag. When this flag is set,
the "-va" option will make dgmap, dgord and dgpart output the minimum,
maximum and average peak amount of memory used over all processes.
Several API routines will also be made available to report the current
and maximum amount of memory used by Scotch within the process they
are called: SCOTCH_memCur() and SCOTCH_memMax(), respectively.
A rudimentary memory checking mechanism is available for platforms
that do not have efficient memory checking and debugging tools such as
Valgrind or gdb. It can be activated through the
"-DCOMMON_MEMORY_CHECK=x" flag. This is almost only for internal
debugging purposes. The value of the "-DCOMMON_MEMORY_CHECK" is 1 if
memory checking should be enabled by default, and 0 else. This
mechanism is absolutely NOT thread-safe at the time being.
2.7) Randomness
---------------
Many algorithms in Scotch and PT-Scotch are based on the random
selection of vertices (e.g. seed vertices for graph growing
algorithms, vertices to be mated for coarsening algorithms,
etc.). This selection is performed by using integer pseudo-random
generators to produce seemingly uncorrelated vertex indices.
The advantage of pseudo-randomness over pure randomness is that the
same pseudo-random seed will always yield the same sequence of
pseudo-random numbers. Consequently, while using a different random
seed for each run is likely to explore better the solution space,
using a fixed random seed eases the debugging of programs, because
algorithms behave identically across multiple runs (save for
asynchronousness issues, see next section). By default, Scotch is
compiled with the "-DCOMMON_RANDOM_FIXED_SEED" flag set, so that
multiple executions of the same sequential programs will always yield
the same results.
Prior to version 6.0, Scotch relied on the operating system
pseudo-random generator. While this posed no problem for most
sequential programs, parallel runs of PT-Scotch were not reproducible
on some systems, because the MPI implementation also used this
pseudo-random generator for its own purposes. In order to avoid this
problem, Scotch now uses its own pseudo-random generator. Users that
want to go on using the operating system pseudo-random generator
(e.g. for regression testing with respect to version 5.x) can still do
so, by compiling with the "-DCOMMON_RANDOM_SYSTEM" flag set. In this
case, the "-DCOMMON_RANDOM_RAND" flag allows one to use the srand()
routine instead of the default srandom() routine.
2.8) Deterministic behavior
---------------------------
When Scotch is compiled with the "-DCOMMON_RANDOM_FIXED_SEED"
flag set, multiple executions of the same sequential programs
will always yield the same results. Yet, non-deterministic
multi-threaded and/or parallel algorithms may still introduce
some variability in the produced results, due to operating system
artifacts.
To ease the tracking down of bugs, it is possible to coerce Scotch to
exhibit a deterministic behavior by setting the
"-DSCOTCH_DETERMINISTIC" flag. This option makes sure that two
consecutive runs of Scotch on the same graph and same number of
processes and/or threads will always yield the same result. However,
it does not mean that two executions of Scotch on different numbers of
processes and/or threads will always yield the same result. Indeed,
changing the number of processes impacts graph data distribution and
consequently the order in which vertices are processed. Consequently,
coarsening algorithms are likely to produce different coarse graphs,
leading to different partitions.
This option is likely to have adverse impact on performance, since all
non-deterministic multi-threaded algorithms will be disabled. In the
case of Scotch, the multi-threaded matching algorithm for coarsening
will be replaced by its sequential counterpart, whatever the available
number of threads is. In the case of PT-Scotch, point-to-point
messages will be received in a fixed order rather than being processed
on a first-come, first-serve basis.
Setting this flag automatically results in setting the
"-DCOMMON_RANDOM_FIXED_SEED" flag. Users are also strongly advised to
compile without setting the "-DCOMMON_RANDOM_SYSTEM" flag, in order to
avoid any interference with third-party libraries that might use the
operating system pseudo-random generator.
2.9) Point-to-point or collective communications
------------------------------------------------
Since distributed graph vertices can have any initial distribution
across processes, communication rounds are likely to involve all of
the processes in an almost all-to-all scheme. In order to speed-up
running time, most of these communications are performed by means of
asynchronous sends and receives, which allows computations to overlap
with communications. However, for large numbers of processes, this can
lead to the saturation of the communication network of the target
parallel machine. To avoid this, communication consuming routines also
have a collective communication based version. The use of this version
is enabled by default, as it greatly improves scalability for large
numbers of processes. To disable it, set the "-DSCOTCH_PTOP" flag at
compile time.
2.10) MeTiS compatibility library
---------------------------------
In order to ease the adoption of Scotch/PT-Scotch by people who
already developed code based on the MeTiS/ParMeTiS interface, a MeTiS
V3 compatibility library is included in the Scotch package. It
provides stubs for the graph partitioning and ordering routines of
MeTiS/ParMeTiS, but not for the service routines that are comprised
in this package. Consequently, for people willing to use both
libraries, that is, experiment with the graph partitioning features of
Scotch while using the service routines of the genuine MeTiS package,
special measures have to be taken.
A first solution can be to coerce the linker to pick partitioning
routines from the libscotch, and service routines from the
libmetis. This can be done by placing the library names in this
order as arguments to the linker command. Yet, some linkers may still
report an error, as some symbols are multiply defined.
Alternately, the names of the compatibility routines can be changed so
as to avoid conflicts. When the "-DSCOTCH_METIS_PREFIX" flag is set at
compile time, all Scotch versions of the MeTiS routines are prefixed
with "SCOTCH_". Of course, this will require an equivalent change in
the user's application code.
An advantage of the Scotch/PT-Scotch stubs over the genuine
MeTiS/ParMeTiS V3 routines is that they can be available in a 64-bit
version. In this case, all int's that were passed to MeTiS/ParMeTiS
routines must be replaced by 64-bit integer values (even the option
configuration values). However, in this case, one will not be able to
link against the service routines of the genuine MeTiS/ParMeTiS V3
library, as the latter is only available as a 32-bit implementation.
3) Compilation
==============
Once you have performed the configuration of the "Makefile.inc" file,
compile the Scotch distribution by typing "make scotch", or just
"make", in the current "src/" working directory. To compile the
PT-Scotch distribution, type "make ptscotch" in the same "src/"
directory. This can be done in any order. Typing "make scotch
ptscotch" to compile both is equivalent to typing "make ptscotch"
alone, since PT-Scotch requires Scotch.
The most common problem you may encounter when trying to compile
PT-Scotch on a new platform relates to the "dummysizes" and
"ptdummysizes" executables. The purpose of these programs is to
determine, on the target platform, the sizes of the opaque data
structures of Scotch and PT-Scotch, respectively. They have to be
compiled and run before any library function can be compiled. The
sequential case poses no specific problems, as "dummysizes" is always
compiled with the same command as the one used to compile the
sequential Scotch package (hence, "CCD=$(CCS)" when executing "make
scotch"). In the parallel case, "ptdummysizes" has to take into
account the sizes of some MPI data structures, such as MPI_Comm, and
the most common way to have access to this information is to use some
flavor of MPI-aware compilers such as "mpicc" which automatically
refer to "mpi.h". Therefore, "CCD=mpicc" will work for most systems
and MPI implementations. Yet, on some platforms, programs compiled for
parallel execution cannot be run interactively. Moreover,
"ptdummysizes" itself does not contain any MPI calls, as it just wants
to know the sizes of the data structures, and the communication
susbystem of the platform may not want to run it. In any of these
cases, compilation will break. It is possible to solve this problem by
specifying, in the CCD variable of "Makefile.inc", how to compile
"ptdummysizes" sequentially but with knowledge of the location of the
"mpi.h" include file, for instance with the following line: "CCD =
my_sequential_cc -I/path/to/my/mpi/implementation/include/dir/".
If no error occurs, all of the relevant header, library and executable
files will be created and copied to the "../include/", "../lib/" and
"../bin/" directories, relatively to your current "src/" working
directory. Headers, libraries and binaries of Scotch and PT-Scotch can
coexist in these directories without any interference.
Then, typing "make install" will perform a GNU-like installation, with
header, library, binary and man files copied to the "include", "lib",
"bin" and "man" subdirectories of the path specified in the "prefix"
variable, which is set by default to "/usr/local". For instance,
typing "make prefix=/home/myself/usr/ install" will install the
Scotch/PT-Scotch files in a subtree of directory "/home/myself/usr/".
4) Checking
===========
A set of test programs is available in the "src/check" directory. They
serve as non-regression checks for both sequential and parallel
features of Scotch and PT-Scotch. They can be launched by typing "make
check" and/or "make ptcheck" in the "src/" directory.
In the case of "ptcheck", programs will be run in debug mode; user
action is required (by typing ENTER whenever necessary) for launching
the parallel programs.
One might look at these programs for examples of how to use the Scotch
and PT-Scotch libraries. However, some of these programs test internal
features, and interact with the library through non-standard and
non-documented procedures. It is therefore recommended NOT to imitate
these calling practices and rather to follow the guidelines provided in
the Scotch and PT-Scotch user manuals.
5) Use
======
Users willing to use the features of the sequential (but possibly
threaded) libScotch library have to include "scotch.h" and to link
against the "libscotch" library, plus an error handling package such
as "libscotcherr" or "libscotcherrexit".
Users willing to use the features of the distributed-memory parallel
libPTScotch library have to include "ptscotch.h" (which itself
includes "scotch.h") and to link against both the "libptscotch" and
"libscotch" libraries (in this order whenever order is significant),
plus an error handling package such as "libptscotcherr" or
"libptscotcherrexit".
In the case of complex programs, which may run as sequential programs
but may also call parallel routines, it is necessary to link only once
against a Scotch error handling routine, and this routine cannot call
MPI routines. Hence, the "libscotcherr" or "libscotcherrexit"
libraries must be used. This will not impact the behavior of the
parallel routines, but process numbers will not be displayed in case
of an error.
6) Documentation and use
========================
The Scotch and PT-Scotch user's manuals are available in the "doc/"
directory. They describe how to use the libscotch and libptscotch
libraries, as well as the standalone programs of the Scotch and
PT-Scotch distributions.
7) Note to packagers
====================
Since version 6.0, the Scotch and PT-Scotch packages can be made
independent. The libScotch will not be tied by any dependency against
any MPI package, while the libPTScotch has to depend on the one with
which it has been compiled, in addition to the libScotch package that
it uses.
In versions 5.x, the libPTScotch also contained a modified copy of the
libScotch. It is no longer the case, which will result in lower disk
footprint.
Regarding the use of threads, since Scotch is at the time being not
dynamically configurable, one has to decide whether to compile it with
threads enabled or not and, additionally, with which number of threads
it will run. Based on the current processor market, I recommend to
compile with -DSCOTCH_PTHREAD_NUMBER=2 (and, of course,
-DSCOTCH_PTHREAD_AFFINITY_LINUX whenever possible). The penalty for
single-thread CPUs will not be too high, while hyper-threaded and
many-core CPUs will benefit from the extra thread.

View File

@ -0,0 +1,7 @@
Cette copie de la distribution logicielle Scotch 6.0 est distribu<62>e
selon les termes de la licence de logiciel libre CeCILL-C.
Une copie du texte de cette licence se trouve dans le sous-r<>pertoire
"doc", dans le fichier appel<65> "CeCILL-C_V1-fr.txt". Veuillez en lire
attentivement les clauses. Vous ne pourrez utiliser cette copie de la
distribution logicielle Scotch 6.0 que si vous les acceptez.

View File

@ -0,0 +1,6 @@
This copy of the Scotch 6.0 distribution is licensed to you under the
terms of the CeCILL-C free/libre software license.
A copy of this license is available in subdirectory "doc", in file
named "CeCILL-C_V1-en.txt". Please read its terms carefully. Only if
you accept them can you use this copy of the Scotch 6.0 distribution.

View File

@ -0,0 +1,8 @@
Les clauses selon lesquelles cette copie de la distribution logicielle
Scotch 6.0 est mise <20> votre disposition sont d<>finies dans le fichier
"LICENCE_fr.txt", situ<74> dans le m<>me r<>pertoire que le pr<70>sent
fichier.
Si vous les acceptez, veuillez vous r<>f<EFBFBD>rer au fichier "INSTALL.txt",
<EFBFBD>galement situ<74> dans ce r<>pertoire, pour consulter les instructions
d'installation.

6
scotch_6.0.3/README.txt Normal file
View File

@ -0,0 +1,6 @@
The terms under which this copy of the Scotch 6.0 distribution
is provided to you are described in file "LICENSE_en.txt", located
in the same directory as this file.
If you accept them, please refer to file "INSTALL.txt", also
located in this directory, for the installation instructions.

View File

@ -0,0 +1,517 @@
CeCILL-C FREE SOFTWARE LICENSE AGREEMENT
Notice
This Agreement is a Free Software license agreement that is the result
of discussions between its authors in order to ensure compliance with
the two main principles guiding its drafting:
* firstly, compliance with the principles governing the distribution
of Free Software: access to source code, broad rights granted to
users,
* secondly, the election of a governing law, French law, with which
it is conformant, both as regards the law of torts and
intellectual property law, and the protection that it offers to
both authors and holders of the economic rights over software.
The authors of the CeCILL-C (for Ce[a] C[nrs] I[nria] L[ogiciel] L[ibre])
license are:
Commissariat <20> l'Energie Atomique - CEA, a public scientific, technical
and industrial research establishment, having its principal place of
business at 25 rue Leblanc, immeuble Le Ponant D, 75015 Paris, France.
Centre National de la Recherche Scientifique - CNRS, a public scientific
and technological establishment, having its principal place of business
at 3 rue Michel-Ange, 75794 Paris cedex 16, France.
Institut National de Recherche en Informatique et en Automatique -
INRIA, a public scientific and technological establishment, having its
principal place of business at Domaine de Voluceau, Rocquencourt, BP
105, 78153 Le Chesnay cedex, France.
Preamble
The purpose of this Free Software license agreement is to grant users
the right to modify and re-use the software governed by this license.
The exercising of this right is conditional upon the obligation to make
available to the community the modifications made to the source code of
the software so as to contribute to its evolution.
In consideration of access to the source code and the rights to copy,
modify and redistribute granted by the license, users are provided only
with a limited warranty and the software's author, the holder of the
economic rights, and the successive licensors only have limited liability.
In this respect, the risks associated with loading, using, modifying
and/or developing or reproducing the software by the user are brought to
the user's attention, given its Free Software status, which may make it
complicated to use, with the result that its use is reserved for
developers and experienced professionals having in-depth computer
knowledge. Users are therefore encouraged to load and test the
suitability of the software as regards their requirements in conditions
enabling the security of their systems and/or data to be ensured and,
more generally, to use and operate it in the same conditions of
security. This Agreement may be freely reproduced and published,
provided it is not altered, and that no provisions are either added or
removed herefrom.
This Agreement may apply to any or all software for which the holder of
the economic rights decides to submit the use thereof to its provisions.
Article 1 - DEFINITIONS
For the purpose of this Agreement, when the following expressions
commence with a capital letter, they shall have the following meaning:
Agreement: means this license agreement, and its possible subsequent
versions and annexes.
Software: means the software in its Object Code and/or Source Code form
and, where applicable, its documentation, "as is" when the Licensee
accepts the Agreement.
Initial Software: means the Software in its Source Code and possibly its
Object Code form and, where applicable, its documentation, "as is" when
it is first distributed under the terms and conditions of the Agreement.
Modified Software: means the Software modified by at least one
Integrated Contribution.
Source Code: means all the Software's instructions and program lines to
which access is required so as to modify the Software.
Object Code: means the binary files originating from the compilation of
the Source Code.
Holder: means the holder(s) of the economic rights over the Initial
Software.
Licensee: means the Software user(s) having accepted the Agreement.
Contributor: means a Licensee having made at least one Integrated
Contribution.
Licensor: means the Holder, or any other individual or legal entity, who
distributes the Software under the Agreement.
Integrated Contribution: means any or all modifications, corrections,
translations, adaptations and/or new functions integrated into the
Source Code by any or all Contributors.
Related Module: means a set of sources files including their
documentation that, without modification to the Source Code, enables
supplementary functions or services in addition to those offered by the
Software.
Derivative Software: means any combination of the Software, modified or
not, and of a Related Module.
Parties: mean both the Licensee and the Licensor.
These expressions may be used both in singular and plural form.
Article 2 - PURPOSE
The purpose of the Agreement is the grant by the Licensor to the
Licensee of a non-exclusive, transferable and worldwide license for the
Software as set forth in Article 5 hereinafter for the whole term of the
protection granted by the rights over said Software.
Article 3 - ACCEPTANCE
3.1 The Licensee shall be deemed as having accepted the terms and
conditions of this Agreement upon the occurrence of the first of the
following events:
* (i) loading the Software by any or all means, notably, by
downloading from a remote server, or by loading from a physical
medium;
* (ii) the first time the Licensee exercises any of the rights
granted hereunder.
3.2 One copy of the Agreement, containing a notice relating to the
characteristics of the Software, to the limited warranty, and to the
fact that its use is restricted to experienced users has been provided
to the Licensee prior to its acceptance as set forth in Article 3.1
hereinabove, and the Licensee hereby acknowledges that it has read and
understood it.
Article 4 - EFFECTIVE DATE AND TERM
4.1 EFFECTIVE DATE
The Agreement shall become effective on the date when it is accepted by
the Licensee as set forth in Article 3.1.
4.2 TERM
The Agreement shall remain in force for the entire legal term of
protection of the economic rights over the Software.
Article 5 - SCOPE OF RIGHTS GRANTED
The Licensor hereby grants to the Licensee, who accepts, the following
rights over the Software for any or all use, and for the term of the
Agreement, on the basis of the terms and conditions set forth hereinafter.
Besides, if the Licensor owns or comes to own one or more patents
protecting all or part of the functions of the Software or of its
components, the Licensor undertakes not to enforce the rights granted by
these patents against successive Licensees using, exploiting or
modifying the Software. If these patents are transferred, the Licensor
undertakes to have the transferees subscribe to the obligations set
forth in this paragraph.
5.1 RIGHT OF USE
The Licensee is authorized to use the Software, without any limitation
as to its fields of application, with it being hereinafter specified
that this comprises:
1. permanent or temporary reproduction of all or part of the Software
by any or all means and in any or all form.
2. loading, displaying, running, or storing the Software on any or
all medium.
3. entitlement to observe, study or test its operation so as to
determine the ideas and principles behind any or all constituent
elements of said Software. This shall apply when the Licensee
carries out any or all loading, displaying, running, transmission
or storage operation as regards the Software, that it is entitled
to carry out hereunder.
5.2 RIGHT OF MODIFICATION
The right of modification includes the right to translate, adapt,
arrange, or make any or all modifications to the Software, and the right
to reproduce the resulting software. It includes, in particular, the
right to create a Derivative Software.
The Licensee is authorized to make any or all modification to the
Software provided that it includes an explicit notice that it is the
author of said modification and indicates the date of the creation thereof.
5.3 RIGHT OF DISTRIBUTION
In particular, the right of distribution includes the right to publish,
transmit and communicate the Software to the general public on any or
all medium, and by any or all means, and the right to market, either in
consideration of a fee, or free of charge, one or more copies of the
Software by any means.
The Licensee is further authorized to distribute copies of the modified
or unmodified Software to third parties according to the terms and
conditions set forth hereinafter.
5.3.1 DISTRIBUTION OF SOFTWARE WITHOUT MODIFICATION
The Licensee is authorized to distribute true copies of the Software in
Source Code or Object Code form, provided that said distribution
complies with all the provisions of the Agreement and is accompanied by:
1. a copy of the Agreement,
2. a notice relating to the limitation of both the Licensor's
warranty and liability as set forth in Articles 8 and 9,
and that, in the event that only the Object Code of the Software is
redistributed, the Licensee allows effective access to the full Source
Code of the Software at a minimum during the entire period of its
distribution of the Software, it being understood that the additional
cost of acquiring the Source Code shall not exceed the cost of
transferring the data.
5.3.2 DISTRIBUTION OF MODIFIED SOFTWARE
When the Licensee makes an Integrated Contribution to the Software, the
terms and conditions for the distribution of the resulting Modified
Software become subject to all the provisions of this Agreement.
The Licensee is authorized to distribute the Modified Software, in
source code or object code form, provided that said distribution
complies with all the provisions of the Agreement and is accompanied by:
1. a copy of the Agreement,
2. a notice relating to the limitation of both the Licensor's
warranty and liability as set forth in Articles 8 and 9,
and that, in the event that only the object code of the Modified
Software is redistributed, the Licensee allows effective access to the
full source code of the Modified Software at a minimum during the entire
period of its distribution of the Modified Software, it being understood
that the additional cost of acquiring the source code shall not exceed
the cost of transferring the data.
5.3.3 DISTRIBUTION OF DERIVATIVE SOFTWARE
When the Licensee creates Derivative Software, this Derivative Software
may be distributed under a license agreement other than this Agreement,
subject to compliance with the requirement to include a notice
concerning the rights over the Software as defined in Article 6.4.
In the event the creation of the Derivative Software required modification
of the Source Code, the Licensee undertakes that:
1. the resulting Modified Software will be governed by this Agreement,
2. the Integrated Contributions in the resulting Modified Software
will be clearly identified and documented,
3. the Licensee will allow effective access to the source code of the
Modified Software, at a minimum during the entire period of
distribution of the Derivative Software, such that such
modifications may be carried over in a subsequent version of the
Software; it being understood that the additional cost of
purchasing the source code of the Modified Software shall not
exceed the cost of transferring the data.
5.3.4 COMPATIBILITY WITH THE CeCILL LICENSE
When a Modified Software contains an Integrated Contribution subject to
the CeCILL license agreement, or when a Derivative Software contains a
Related Module subject to the CeCILL license agreement, the provisions
set forth in the third item of Article 6.4 are optional.
Article 6 - INTELLECTUAL PROPERTY
6.1 OVER THE INITIAL SOFTWARE
The Holder owns the economic rights over the Initial Software. Any or
all use of the Initial Software is subject to compliance with the terms
and conditions under which the Holder has elected to distribute its work
and no one shall be entitled to modify the terms and conditions for the
distribution of said Initial Software.
The Holder undertakes that the Initial Software will remain ruled at
least by this Agreement, for the duration set forth in Article 4.2.
6.2 OVER THE INTEGRATED CONTRIBUTIONS
The Licensee who develops an Integrated Contribution is the owner of the
intellectual property rights over this Contribution as defined by
applicable law.
6.3 OVER THE RELATED MODULES
The Licensee who develops a Related Module is the owner of the
intellectual property rights over this Related Module as defined by
applicable law and is free to choose the type of agreement that shall
govern its distribution under the conditions defined in Article 5.3.3.
6.4 NOTICE OF RIGHTS
The Licensee expressly undertakes:
1. not to remove, or modify, in any manner, the intellectual property
notices attached to the Software;
2. to reproduce said notices, in an identical manner, in the copies
of the Software modified or not;
3. to ensure that use of the Software, its intellectual property
notices and the fact that it is governed by the Agreement is
indicated in a text that is easily accessible, specifically from
the interface of any Derivative Software.
The Licensee undertakes not to directly or indirectly infringe the
intellectual property rights of the Holder and/or Contributors on the
Software and to take, where applicable, vis-<2D>-vis its staff, any and all
measures required to ensure respect of said intellectual property rights
of the Holder and/or Contributors.
Article 7 - RELATED SERVICES
7.1 Under no circumstances shall the Agreement oblige the Licensor to
provide technical assistance or maintenance services for the Software.
However, the Licensor is entitled to offer this type of services. The
terms and conditions of such technical assistance, and/or such
maintenance, shall be set forth in a separate instrument. Only the
Licensor offering said maintenance and/or technical assistance services
shall incur liability therefor.
7.2 Similarly, any Licensor is entitled to offer to its licensees, under
its sole responsibility, a warranty, that shall only be binding upon
itself, for the redistribution of the Software and/or the Modified
Software, under terms and conditions that it is free to decide. Said
warranty, and the financial terms and conditions of its application,
shall be subject of a separate instrument executed between the Licensor
and the Licensee.
Article 8 - LIABILITY
8.1 Subject to the provisions of Article 8.2, the Licensee shall be
entitled to claim compensation for any direct loss it may have suffered
from the Software as a result of a fault on the part of the relevant
Licensor, subject to providing evidence thereof.
8.2 The Licensor's liability is limited to the commitments made under
this Agreement and shall not be incurred as a result of in particular:
(i) loss due the Licensee's total or partial failure to fulfill its
obligations, (ii) direct or consequential loss that is suffered by the
Licensee due to the use or performance of the Software, and (iii) more
generally, any consequential loss. In particular the Parties expressly
agree that any or all pecuniary or business loss (i.e. loss of data,
loss of profits, operating loss, loss of customers or orders,
opportunity cost, any disturbance to business activities) or any or all
legal proceedings instituted against the Licensee by a third party,
shall constitute consequential loss and shall not provide entitlement to
any or all compensation from the Licensor.
Article 9 - WARRANTY
9.1 The Licensee acknowledges that the scientific and technical
state-of-the-art when the Software was distributed did not enable all
possible uses to be tested and verified, nor for the presence of
possible defects to be detected. In this respect, the Licensee's
attention has been drawn to the risks associated with loading, using,
modifying and/or developing and reproducing the Software which are
reserved for experienced users.
The Licensee shall be responsible for verifying, by any or all means,
the suitability of the product for its requirements, its good working
order, and for ensuring that it shall not cause damage to either persons
or properties.
9.2 The Licensor hereby represents, in good faith, that it is entitled
to grant all the rights over the Software (including in particular the
rights set forth in Article 5).
9.3 The Licensee acknowledges that the Software is supplied "as is" by
the Licensor without any other express or tacit warranty, other than
that provided for in Article 9.2 and, in particular, without any warranty
as to its commercial value, its secured, safe, innovative or relevant
nature.
Specifically, the Licensor does not warrant that the Software is free
from any error, that it will operate without interruption, that it will
be compatible with the Licensee's own equipment and software
configuration, nor that it will meet the Licensee's requirements.
9.4 The Licensor does not either expressly or tacitly warrant that the
Software does not infringe any third party intellectual property right
relating to a patent, software or any other property right. Therefore,
the Licensor disclaims any and all liability towards the Licensee
arising out of any or all proceedings for infringement that may be
instituted in respect of the use, modification and redistribution of the
Software. Nevertheless, should such proceedings be instituted against
the Licensee, the Licensor shall provide it with technical and legal
assistance for its defense. Such technical and legal assistance shall be
decided on a case-by-case basis between the relevant Licensor and the
Licensee pursuant to a memorandum of understanding. The Licensor
disclaims any and all liability as regards the Licensee's use of the
name of the Software. No warranty is given as regards the existence of
prior rights over the name of the Software or as regards the existence
of a trademark.
Article 10 - TERMINATION
10.1 In the event of a breach by the Licensee of its obligations
hereunder, the Licensor may automatically terminate this Agreement
thirty (30) days after notice has been sent to the Licensee and has
remained ineffective.
10.2 A Licensee whose Agreement is terminated shall no longer be
authorized to use, modify or distribute the Software. However, any
licenses that it may have granted prior to termination of the Agreement
shall remain valid subject to their having been granted in compliance
with the terms and conditions hereof.
Article 11 - MISCELLANEOUS
11.1 EXCUSABLE EVENTS
Neither Party shall be liable for any or all delay, or failure to
perform the Agreement, that may be attributable to an event of force
majeure, an act of God or an outside cause, such as defective
functioning or interruptions of the electricity or telecommunications
networks, network paralysis following a virus attack, intervention by
government authorities, natural disasters, water damage, earthquakes,
fire, explosions, strikes and labor unrest, war, etc.
11.2 Any failure by either Party, on one or more occasions, to invoke
one or more of the provisions hereof, shall under no circumstances be
interpreted as being a waiver by the interested Party of its right to
invoke said provision(s) subsequently.
11.3 The Agreement cancels and replaces any or all previous agreements,
whether written or oral, between the Parties and having the same
purpose, and constitutes the entirety of the agreement between said
Parties concerning said purpose. No supplement or modification to the
terms and conditions hereof shall be effective as between the Parties
unless it is made in writing and signed by their duly authorized
representatives.
11.4 In the event that one or more of the provisions hereof were to
conflict with a current or future applicable act or legislative text,
said act or legislative text shall prevail, and the Parties shall make
the necessary amendments so as to comply with said act or legislative
text. All other provisions shall remain effective. Similarly, invalidity
of a provision of the Agreement, for any reason whatsoever, shall not
cause the Agreement as a whole to be invalid.
11.5 LANGUAGE
The Agreement is drafted in both French and English and both versions
are deemed authentic.
Article 12 - NEW VERSIONS OF THE AGREEMENT
12.1 Any person is authorized to duplicate and distribute copies of this
Agreement.
12.2 So as to ensure coherence, the wording of this Agreement is
protected and may only be modified by the authors of the License, who
reserve the right to periodically publish updates or new versions of the
Agreement, each with a separate number. These subsequent versions may
address new issues encountered by Free Software.
12.3 Any Software distributed under a given version of the Agreement may
only be subsequently distributed under the same version of the Agreement
or a subsequent version.
Article 13 - GOVERNING LAW AND JURISDICTION
13.1 The Agreement is governed by French law. The Parties agree to
endeavor to seek an amicable solution to any disagreements or disputes
that may arise during the performance of the Agreement.
13.2 Failing an amicable solution within two (2) months as from their
occurrence, and unless emergency proceedings are necessary, the
disagreements or disputes shall be referred to the Paris Courts having
jurisdiction, by the more diligent Party.
Version 1.0 dated 2006-09-05.

View File

@ -0,0 +1,521 @@
CONTRAT DE LICENCE DE LOGICIEL LIBRE CeCILL-C
Avertissement
Ce contrat est une licence de logiciel libre issue d'une concertation
entre ses auteurs afin que le respect de deux grands principes pr<70>side <20>
sa r<>daction:
* d'une part, le respect des principes de diffusion des logiciels
libres: acc<63>s au code source, droits <20>tendus conf<6E>r<EFBFBD>s aux
utilisateurs,
* d'autre part, la d<>signation d'un droit applicable, le droit
fran<61>ais, auquel elle est conforme, tant au regard du droit de la
responsabilit<69> civile que du droit de la propri<72>t<EFBFBD> intellectuelle
et de la protection qu'il offre aux auteurs et titulaires des
droits patrimoniaux sur un logiciel.
Les auteurs de la licence CeCILL-C (pour Ce[a] C[nrs] I[nria] L[ogiciel]
L[ibre]) sont:
Commissariat <20> l'Energie Atomique - CEA, <20>tablissement public de
recherche <20> caract<63>re scientifique, technique et industriel, dont le
si<EFBFBD>ge est situ<74> 25 rue Leblanc, immeuble Le Ponant D, 75015 Paris.
Centre National de la Recherche Scientifique - CNRS, <20>tablissement
public <20> caract<63>re scientifique et technologique, dont le si<73>ge est
situ<EFBFBD> 3 rue Michel-Ange, 75794 Paris cedex 16.
Institut National de Recherche en Informatique et en Automatique -
INRIA, <20>tablissement public <20> caract<63>re scientifique et technologique,
dont le si<73>ge est situ<74> Domaine de Voluceau, Rocquencourt, BP 105, 78153
Le Chesnay cedex.
Pr<50>ambule
Ce contrat est une licence de logiciel libre dont l'objectif est de
conf<EFBFBD>rer aux utilisateurs la libert<72> de modifier et de r<>utiliser le
logiciel r<>gi par cette licence.
L'exercice de cette libert<72> est assorti d'une obligation de remettre <20>
la disposition de la communaut<75> les modifications apport<72>es au code
source du logiciel afin de contribuer <20> son <20>volution.
L'accessibilit<69> au code source et les droits de copie, de modification
et de redistribution qui d<>coulent de ce contrat ont pour contrepartie
de n'offrir aux utilisateurs qu'une garantie limit<69>e et de ne faire
peser sur l'auteur du logiciel, le titulaire des droits patrimoniaux et
les conc<6E>dants successifs qu'une responsabilit<69> restreinte.
A cet <20>gard l'attention de l'utilisateur est attir<69>e sur les risques
associ<EFBFBD>s au chargement, <20> l'utilisation, <20> la modification et/ou au
d<EFBFBD>veloppement et <20> la reproduction du logiciel par l'utilisateur <20>tant
donn<EFBFBD> sa sp<73>cificit<69> de logiciel libre, qui peut le rendre complexe <20>
manipuler et qui le r<>serve donc <20> des d<>veloppeurs ou des
professionnels avertis poss<73>dant des connaissances informatiques
approfondies. Les utilisateurs sont donc invit<69>s <20> charger et tester
l'ad<61>quation du logiciel <20> leurs besoins dans des conditions permettant
d'assurer la s<>curit<69> de leurs syst<73>mes et/ou de leurs donn<6E>es et, plus
g<EFBFBD>n<EFBFBD>ralement, <20> l'utiliser et l'exploiter dans les m<>mes conditions de
s<EFBFBD>curit<EFBFBD>. Ce contrat peut <20>tre reproduit et diffus<75> librement, sous
r<EFBFBD>serve de le conserver en l'<27>tat, sans ajout ni suppression de clauses.
Ce contrat est susceptible de s'appliquer <20> tout logiciel dont le
titulaire des droits patrimoniaux d<>cide de soumettre l'exploitation aux
dispositions qu'il contient.
Article 1 - DEFINITIONS
Dans ce contrat, les termes suivants, lorsqu'ils seront <20>crits avec une
lettre capitale, auront la signification suivante:
Contrat: d<>signe le pr<70>sent contrat de licence, ses <20>ventuelles versions
post<EFBFBD>rieures et annexes.
Logiciel: d<>signe le logiciel sous sa forme de Code Objet et/ou de Code
Source et le cas <20>ch<63>ant sa documentation, dans leur <20>tat au moment de
l'acceptation du Contrat par le Licenci<63>.
Logiciel Initial: d<>signe le Logiciel sous sa forme de Code Source et
<EFBFBD>ventuellement de Code Objet et le cas <20>ch<63>ant sa documentation, dans
leur <20>tat au moment de leur premi<6D>re diffusion sous les termes du Contrat.
Logiciel Modifi<66>: d<>signe le Logiciel modifi<66> par au moins une
Contribution Int<6E>gr<67>e.
Code Source: d<>signe l'ensemble des instructions et des lignes de
programme du Logiciel et auquel l'acc<63>s est n<>cessaire en vue de
modifier le Logiciel.
Code Objet: d<>signe les fichiers binaires issus de la compilation du
Code Source.
Titulaire: d<>signe le ou les d<>tenteurs des droits patrimoniaux d'auteur
sur le Logiciel Initial.
Licenci<EFBFBD>: d<>signe le ou les utilisateurs du Logiciel ayant accept<70> le
Contrat.
Contributeur: d<>signe le Licenci<63> auteur d'au moins une Contribution
Int<EFBFBD>gr<EFBFBD>e.
Conc<EFBFBD>dant: d<>signe le Titulaire ou toute personne physique ou morale
distribuant le Logiciel sous le Contrat.
Contribution Int<6E>gr<67>e: d<>signe l'ensemble des modifications,
corrections, traductions, adaptations et/ou nouvelles fonctionnalit<69>s
int<EFBFBD>gr<EFBFBD>es dans le Code Source par tout Contributeur.
Module Li<4C>: d<>signe un ensemble de fichiers sources y compris leur
documentation qui, sans modification du Code Source, permet de r<>aliser
des fonctionnalit<69>s ou services suppl<70>mentaires <20> ceux fournis par le
Logiciel.
Logiciel D<>riv<69>: d<>signe toute combinaison du Logiciel, modifi<66> ou non,
et d'un Module Li<4C>.
Parties: d<>signe collectivement le Licenci<63> et le Conc<6E>dant.
Ces termes s'entendent au singulier comme au pluriel.
Article 2 - OBJET
Le Contrat a pour objet la concession par le Conc<6E>dant au Licenci<63> d'une
licence non exclusive, cessible et mondiale du Logiciel telle que
d<EFBFBD>finie ci-apr<70>s <20> l'article 5 pour toute la dur<75>e de protection des droits
portant sur ce Logiciel.
Article 3 - ACCEPTATION
3.1 L'acceptation par le Licenci<63> des termes du Contrat est r<>put<75>e
acquise du fait du premier des faits suivants:
* (i) le chargement du Logiciel par tout moyen notamment par
t<>l<EFBFBD>chargement <20> partir d'un serveur distant ou par chargement <20>
partir d'un support physique;
* (ii) le premier exercice par le Licenci<63> de l'un quelconque des
droits conc<6E>d<EFBFBD>s par le Contrat.
3.2 Un exemplaire du Contrat, contenant notamment un avertissement
relatif aux sp<73>cificit<69>s du Logiciel, <20> la restriction de garantie et <20>
la limitation <20> un usage par des utilisateurs exp<78>riment<6E>s a <20>t<EFBFBD> mis <20>
disposition du Licenci<63> pr<70>alablement <20> son acceptation telle que
d<EFBFBD>finie <20> l'article 3.1 ci dessus et le Licenci<63> reconna<6E>t en avoir pris
connaissance.
Article 4 - ENTREE EN VIGUEUR ET DUREE
4.1 ENTREE EN VIGUEUR
Le Contrat entre en vigueur <20> la date de son acceptation par le Licenci<63>
telle que d<>finie en 3.1.
4.2 DUREE
Le Contrat produira ses effets pendant toute la dur<75>e l<>gale de
protection des droits patrimoniaux portant sur le Logiciel.
Article 5 - ETENDUE DES DROITS CONCEDES
Le Conc<6E>dant conc<6E>de au Licenci<63>, qui accepte, les droits suivants sur
le Logiciel pour toutes destinations et pour la dur<75>e du Contrat dans
les conditions ci-apr<70>s d<>taill<6C>es.
Par ailleurs, si le Conc<6E>dant d<>tient ou venait <20> d<>tenir un ou
plusieurs brevets d'invention prot<6F>geant tout ou partie des
fonctionnalit<EFBFBD>s du Logiciel ou de ses composants, il s'engage <20> ne pas
opposer les <20>ventuels droits conf<6E>r<EFBFBD>s par ces brevets aux Licenci<63>s
successifs qui utiliseraient, exploiteraient ou modifieraient le
Logiciel. En cas de cession de ces brevets, le Conc<6E>dant s'engage <20>
faire reprendre les obligations du pr<70>sent alin<69>a aux cessionnaires.
5.1 DROIT D'UTILISATION
Le Licenci<63> est autoris<69> <20> utiliser le Logiciel, sans restriction quant
aux domaines d'application, <20>tant ci-apr<70>s pr<70>cis<69> que cela comporte:
1. la reproduction permanente ou provisoire du Logiciel en tout ou
partie par tout moyen et sous toute forme.
2. le chargement, l'affichage, l'ex<65>cution, ou le stockage du
Logiciel sur tout support.
3. la possibilit<69> d'en observer, d'en <20>tudier, ou d'en tester le
fonctionnement afin de d<>terminer les id<69>es et principes qui sont
<20> la base de n'importe quel <20>l<EFBFBD>ment de ce Logiciel; et ceci,
lorsque le Licenci<63> effectue toute op<6F>ration de chargement,
d'affichage, d'ex<65>cution, de transmission ou de stockage du
Logiciel qu'il est en droit d'effectuer en vertu du Contrat.
5.2 DROIT DE MODIFICATION
Le droit de modification comporte le droit de traduire, d'adapter,
d'arranger ou d'apporter toute autre modification au Logiciel et le
droit de reproduire le logiciel en r<>sultant. Il comprend en particulier
le droit de cr<63>er un Logiciel D<>riv<69>.
Le Licenci<63> est autoris<69> <20> apporter toute modification au Logiciel sous
r<EFBFBD>serve de mentionner, de fa<66>on explicite, son nom en tant qu'auteur de
cette modification et la date de cr<63>ation de celle-ci.
5.3 DROIT DE DISTRIBUTION
Le droit de distribution comporte notamment le droit de diffuser, de
transmettre et de communiquer le Logiciel au public sur tout support et
par tout moyen ainsi que le droit de mettre sur le march<63> <20> titre
on<EFBFBD>reux ou gratuit, un ou des exemplaires du Logiciel par tout proc<6F>d<EFBFBD>.
Le Licenci<63> est autoris<69> <20> distribuer des copies du Logiciel, modifi<66> ou
non, <20> des tiers dans les conditions ci-apr<70>s d<>taill<6C>es.
5.3.1 DISTRIBUTION DU LOGICIEL SANS MODIFICATION
Le Licenci<63> est autoris<69> <20> distribuer des copies conformes du Logiciel,
sous forme de Code Source ou de Code Objet, <20> condition que cette
distribution respecte les dispositions du Contrat dans leur totalit<69> et
soit accompagn<67>e:
1. d'un exemplaire du Contrat,
2. d'un avertissement relatif <20> la restriction de garantie et de
responsabilit<69> du Conc<6E>dant telle que pr<70>vue aux articles 8
et 9,
et que, dans le cas o<> seul le Code Objet du Logiciel est redistribu<62>,
le Licenci<63> permette un acc<63>s effectif au Code Source complet du
Logiciel pendant au moins toute la dur<75>e de sa distribution du Logiciel,
<EFBFBD>tant entendu que le co<63>t additionnel d'acquisition du Code Source ne
devra pas exc<78>der le simple co<63>t de transfert des donn<6E>es.
5.3.2 DISTRIBUTION DU LOGICIEL MODIFIE
Lorsque le Licenci<63> apporte une Contribution Int<6E>gr<67>e au Logiciel, les
conditions de distribution du Logiciel Modifi<66> en r<>sultant sont alors
soumises <20> l'int<6E>gralit<69> des dispositions du Contrat.
Le Licenci<63> est autoris<69> <20> distribuer le Logiciel Modifi<66> sous forme de
code source ou de code objet, <20> condition que cette distribution
respecte les dispositions du Contrat dans leur totalit<69> et soit
accompagn<EFBFBD>e:
1. d'un exemplaire du Contrat,
2. d'un avertissement relatif <20> la restriction de garantie et de
responsabilit<69> du Conc<6E>dant telle que pr<70>vue aux articles 8
et 9,
et que, dans le cas o<> seul le code objet du Logiciel Modifi<66> est
redistribu<EFBFBD>, le Licenci<63> permette un acc<63>s effectif <20> son code source
complet pendant au moins toute la dur<75>e de sa distribution du Logiciel
Modifi<EFBFBD>, <20>tant entendu que le co<63>t additionnel d'acquisition du code
source ne devra pas exc<78>der le simple co<63>t de transfert des donn<6E>es.
5.3.3 DISTRIBUTION DU LOGICIEL DERIVE
Lorsque le Licenci<63> cr<63>e un Logiciel D<>riv<69>, ce Logiciel D<>riv<69> peut
<EFBFBD>tre distribu<62> sous un contrat de licence autre que le pr<70>sent Contrat <20>
condition de respecter les obligations de mention des droits sur le
Logiciel telles que d<>finies <20> l'article 6.4. Dans le cas o<> la cr<63>ation du
Logiciel D<>riv<69> a n<>cessit<69> une modification du Code Source le licenci<63>
s'engage <20> ce que:
1. le Logiciel Modifi<66> correspondant <20> cette modification soit r<>gi
par le pr<70>sent Contrat,
2. les Contributions Int<6E>gr<67>es dont le Logiciel Modifi<66> r<>sulte
soient clairement identifi<66>es et document<6E>es,
3. le Licenci<63> permette un acc<63>s effectif au code source du Logiciel
Modifi<66>, pendant au moins toute la dur<75>e de la distribution du
Logiciel D<>riv<69>, de telle sorte que ces modifications puissent
<20>tre reprises dans une version ult<6C>rieure du Logiciel, <20>tant
entendu que le co<63>t additionnel d'acquisition du code source du
Logiciel Modifi<66> ne devra pas exc<78>der le simple co<63>t du transfert
des donn<6E>es.
5.3.4 COMPATIBILITE AVEC LA LICENCE CeCILL
Lorsqu'un Logiciel Modifi<66> contient une Contribution Int<6E>gr<67>e soumise au
contrat de licence CeCILL, ou lorsqu'un Logiciel D<>riv<69> contient un
Module Li<4C> soumis au contrat de licence CeCILL, les stipulations pr<70>vues
au troisi<73>me item de l'article 6.4 sont facultatives.
Article 6 - PROPRIETE INTELLECTUELLE
6.1 SUR LE LOGICIEL INITIAL
Le Titulaire est d<>tenteur des droits patrimoniaux sur le Logiciel
Initial. Toute utilisation du Logiciel Initial est soumise au respect
des conditions dans lesquelles le Titulaire a choisi de diffuser son
oeuvre et nul autre n'a la facult<6C> de modifier les conditions de
diffusion de ce Logiciel Initial.
Le Titulaire s'engage <20> ce que le Logiciel Initial reste au moins r<>gi
par le Contrat et ce, pour la dur<75>e vis<69>e <20> l'article 4.2.
6.2 SUR LES CONTRIBUTIONS INTEGREES
Le Licenci<63> qui a d<>velopp<70> une Contribution Int<6E>gr<67>e est titulaire sur
celle-ci des droits de propri<72>t<EFBFBD> intellectuelle dans les conditions
d<EFBFBD>finies par la l<>gislation applicable.
6.3 SUR LES MODULES LIES
Le Licenci<63> qui a d<>velopp<70> un Module Li<4C> est titulaire sur celui-ci des
droits de propri<72>t<EFBFBD> intellectuelle dans les conditions d<>finies par la
l<EFBFBD>gislation applicable et reste libre du choix du contrat r<>gissant sa
diffusion dans les conditions d<>finies <20> l'article 5.3.3.
6.4 MENTIONS DES DROITS
Le Licenci<63> s'engage express<73>ment:
1. <20> ne pas supprimer ou modifier de quelque mani<6E>re que ce soit les
mentions de propri<72>t<EFBFBD> intellectuelle appos<6F>es sur le Logiciel;
2. <20> reproduire <20> l'identique lesdites mentions de propri<72>t<EFBFBD>
intellectuelle sur les copies du Logiciel modifi<66> ou non;
3. <20> faire en sorte que l'utilisation du Logiciel, ses mentions de
propri<72>t<EFBFBD> intellectuelle et le fait qu'il est r<>gi par le Contrat
soient indiqu<71>s dans un texte facilement accessible notamment
depuis l'interface de tout Logiciel D<>riv<69>.
Le Licenci<63> s'engage <20> ne pas porter atteinte, directement ou
indirectement, aux droits de propri<72>t<EFBFBD> intellectuelle du Titulaire et/ou
des Contributeurs sur le Logiciel et <20> prendre, le cas <20>ch<63>ant, <20>
l'<27>gard de son personnel toutes les mesures n<>cessaires pour assurer le
respect des dits droits de propri<72>t<EFBFBD> intellectuelle du Titulaire et/ou
des Contributeurs.
Article 7 - SERVICES ASSOCIES
7.1 Le Contrat n'oblige en aucun cas le Conc<6E>dant <20> la r<>alisation de
prestations d'assistance technique ou de maintenance du Logiciel.
Cependant le Conc<6E>dant reste libre de proposer ce type de services. Les
termes et conditions d'une telle assistance technique et/ou d'une telle
maintenance seront alors d<>termin<69>s dans un acte s<>par<61>. Ces actes de
maintenance et/ou assistance technique n'engageront que la seule
responsabilit<EFBFBD> du Conc<6E>dant qui les propose.
7.2 De m<>me, tout Conc<6E>dant est libre de proposer, sous sa seule
responsabilit<EFBFBD>, <20> ses licenci<63>s une garantie, qui n'engagera que lui,
lors de la redistribution du Logiciel et/ou du Logiciel Modifi<66> et ce,
dans les conditions qu'il souhaite. Cette garantie et les modalit<69>s
financi<EFBFBD>res de son application feront l'objet d'un acte s<>par<61> entre le
Conc<EFBFBD>dant et le Licenci<63>.
Article 8 - RESPONSABILITE
8.1 Sous r<>serve des dispositions de l'article 8.2, le Licenci<63> a la
facult<EFBFBD>, sous r<>serve de prouver la faute du Conc<6E>dant concern<72>, de
solliciter la r<>paration du pr<70>judice direct qu'il subirait du fait du
Logiciel et dont il apportera la preuve.
8.2 La responsabilit<69> du Conc<6E>dant est limit<69>e aux engagements pris en
application du Contrat et ne saurait <20>tre engag<61>e en raison notamment:
(i) des dommages dus <20> l'inex<65>cution, totale ou partielle, de ses
obligations par le Licenci<63>, (ii) des dommages directs ou indirects
d<EFBFBD>coulant de l'utilisation ou des performances du Logiciel subis par le
Licenci<EFBFBD> et (iii) plus g<>n<EFBFBD>ralement d'un quelconque dommage indirect. En
particulier, les Parties conviennent express<73>ment que tout pr<70>judice
financier ou commercial (par exemple perte de donn<6E>es, perte de
b<EFBFBD>n<EFBFBD>fices, perte d'exploitation, perte de client<6E>le ou de commandes,
manque <20> gagner, trouble commercial quelconque) ou toute action dirig<69>e
contre le Licenci<63> par un tiers, constitue un dommage indirect et
n'ouvre pas droit <20> r<>paration par le Conc<6E>dant.
Article 9 - GARANTIE
9.1 Le Licenci<63> reconna<6E>t que l'<27>tat actuel des connaissances
scientifiques et techniques au moment de la mise en circulation du
Logiciel ne permet pas d'en tester et d'en v<>rifier toutes les
utilisations ni de d<>tecter l'existence d'<27>ventuels d<>fauts. L'attention
du Licenci<63> a <20>t<EFBFBD> attir<69>e sur ce point sur les risques associ<63>s au
chargement, <20> l'utilisation, la modification et/ou au d<>veloppement et <20>
la reproduction du Logiciel qui sont r<>serv<72>s <20> des utilisateurs avertis.
Il rel<65>ve de la responsabilit<69> du Licenci<63> de contr<74>ler, par tous
moyens, l'ad<61>quation du produit <20> ses besoins, son bon fonctionnement et
de s'assurer qu'il ne causera pas de dommages aux personnes et aux biens.
9.2 Le Conc<6E>dant d<>clare de bonne foi <20>tre en droit de conc<6E>der
l'ensemble des droits attach<63>s au Logiciel (comprenant notamment les
droits vis<69>s <20> l'article 5).
9.3 Le Licenci<63> reconna<6E>t que le Logiciel est fourni "en l'<27>tat" par le
Conc<EFBFBD>dant sans autre garantie, expresse ou tacite, que celle pr<70>vue <20>
l'article 9.2 et notamment sans aucune garantie sur sa valeur commerciale,
son caract<63>re s<>curis<69>, innovant ou pertinent.
En particulier, le Conc<6E>dant ne garantit pas que le Logiciel est exempt
d'erreur, qu'il fonctionnera sans interruption, qu'il sera compatible
avec l'<27>quipement du Licenci<63> et sa configuration logicielle ni qu'il
remplira les besoins du Licenci<63>.
9.4 Le Conc<6E>dant ne garantit pas, de mani<6E>re expresse ou tacite, que le
Logiciel ne porte pas atteinte <20> un quelconque droit de propri<72>t<EFBFBD>
intellectuelle d'un tiers portant sur un brevet, un logiciel ou sur tout
autre droit de propri<72>t<EFBFBD>. Ainsi, le Conc<6E>dant exclut toute garantie au
profit du Licenci<63> contre les actions en contrefa<66>on qui pourraient <20>tre
diligent<EFBFBD>es au titre de l'utilisation, de la modification, et de la
redistribution du Logiciel. N<>anmoins, si de telles actions sont
exerc<EFBFBD>es contre le Licenci<63>, le Conc<6E>dant lui apportera son aide
technique et juridique pour sa d<>fense. Cette aide technique et
juridique est d<>termin<69>e au cas par cas entre le Conc<6E>dant concern<72> et
le Licenci<63> dans le cadre d'un protocole d'accord. Le Conc<6E>dant d<>gage
toute responsabilit<69> quant <20> l'utilisation de la d<>nomination du
Logiciel par le Licenci<63>. Aucune garantie n'est apport<72>e quant <20>
l'existence de droits ant<6E>rieurs sur le nom du Logiciel et sur
l'existence d'une marque.
Article 10 - RESILIATION
10.1 En cas de manquement par le Licenci<63> aux obligations mises <20> sa
charge par le Contrat, le Conc<6E>dant pourra r<>silier de plein droit le
Contrat trente (30) jours apr<70>s notification adress<73>e au Licenci<63> et
rest<EFBFBD>e sans effet.
10.2 Le Licenci<63> dont le Contrat est r<>sili<6C> n'est plus autoris<69> <20>
utiliser, modifier ou distribuer le Logiciel. Cependant, toutes les
licences qu'il aura conc<6E>d<EFBFBD>es ant<6E>rieurement <20> la r<>siliation du Contrat
resteront valides sous r<>serve qu'elles aient <20>t<EFBFBD> effectu<74>es en
conformit<EFBFBD> avec le Contrat.
Article 11 - DISPOSITIONS DIVERSES
11.1 CAUSE EXTERIEURE
Aucune des Parties ne sera responsable d'un retard ou d'une d<>faillance
d'ex<65>cution du Contrat qui serait d<> <20> un cas de force majeure, un cas
fortuit ou une cause ext<78>rieure, telle que, notamment, le mauvais
fonctionnement ou les interruptions du r<>seau <20>lectrique ou de
t<EFBFBD>l<EFBFBD>communication, la paralysie du r<>seau li<6C>e <20> une attaque
informatique, l'intervention des autorit<69>s gouvernementales, les
catastrophes naturelles, les d<>g<EFBFBD>ts des eaux, les tremblements de terre,
le feu, les explosions, les gr<67>ves et les conflits sociaux, l'<27>tat de
guerre...
11.2 Le fait, par l'une ou l'autre des Parties, d'omettre en une ou
plusieurs occasions de se pr<70>valoir d'une ou plusieurs dispositions du
Contrat, ne pourra en aucun cas impliquer renonciation par la Partie
int<EFBFBD>ress<EFBFBD>e <20> s'en pr<70>valoir ult<6C>rieurement.
11.3 Le Contrat annule et remplace toute convention ant<6E>rieure, <20>crite
ou orale, entre les Parties sur le m<>me objet et constitue l'accord
entier entre les Parties sur cet objet. Aucune addition ou modification
aux termes du Contrat n'aura d'effet <20> l'<27>gard des Parties <20> moins
d'<27>tre faite par <20>crit et sign<67>e par leurs repr<70>sentants d<>ment habilit<69>s.
11.4 Dans l'hypoth<74>se o<> une ou plusieurs des dispositions du Contrat
s'av<61>rerait contraire <20> une loi ou <20> un texte applicable, existants ou
futurs, cette loi ou ce texte pr<70>vaudrait, et les Parties feraient les
amendements n<>cessaires pour se conformer <20> cette loi ou <20> ce texte.
Toutes les autres dispositions resteront en vigueur. De m<>me, la
nullit<EFBFBD>, pour quelque raison que ce soit, d'une des dispositions du
Contrat ne saurait entra<72>ner la nullit<69> de l'ensemble du Contrat.
11.5 LANGUE
Le Contrat est r<>dig<69> en langue fran<61>aise et en langue anglaise, ces
deux versions faisant <20>galement foi.
Article 12 - NOUVELLES VERSIONS DU CONTRAT
12.1 Toute personne est autoris<69>e <20> copier et distribuer des copies de
ce Contrat.
12.2 Afin d'en pr<70>server la coh<6F>rence, le texte du Contrat est prot<6F>g<EFBFBD>
et ne peut <20>tre modifi<66> que par les auteurs de la licence, lesquels se
r<EFBFBD>servent le droit de publier p<>riodiquement des mises <20> jour ou de
nouvelles versions du Contrat, qui poss<73>deront chacune un num<75>ro
distinct. Ces versions ult<6C>rieures seront susceptibles de prendre en
compte de nouvelles probl<62>matiques rencontr<74>es par les logiciels libres.
12.3 Tout Logiciel diffus<75> sous une version donn<6E>e du Contrat ne pourra
faire l'objet d'une diffusion ult<6C>rieure que sous la m<>me version du
Contrat ou une version post<73>rieure.
Article 13 - LOI APPLICABLE ET COMPETENCE TERRITORIALE
13.1 Le Contrat est r<>gi par la loi fran<61>aise. Les Parties conviennent
de tenter de r<>gler <20> l'amiable les diff<66>rends ou litiges qui
viendraient <20> se produire par suite ou <20> l'occasion du Contrat.
13.2 A d<>faut d'accord amiable dans un d<>lai de deux (2) mois <20> compter
de leur survenance et sauf situation relevant d'une proc<6F>dure d'urgence,
les diff<66>rends ou litiges seront port<72>s par la Partie la plus diligente
devant les Tribunaux comp<6D>tents de Paris.
Version 1.0 du 2006-09-05.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,121 @@
************************************************************
** **
** NAME : scotch_example.f **
** **
** AUTHOR : Francois PELLEGRINI **
** **
** FUNCTION : FORTRAN testbed for the LibSCOTCH **
** library routines. **
** **
** DATES : # Version 3.4 : from : 04 feb 2000 **
** to 07 feb 2000 **
** # Version 4.0 : from : 13 mar 2005 **
** to 13 mar 2005 **
** **
*234567*****************************************************
PROGRAM SCOTCH_TEST
IMPLICIT NONE
INCLUDE "scotchf.h"
DOUBLEPRECISION SCOTCHGRAPH (SCOTCH_GRAPHDIM)
INTEGER VERTNBR
DATA VERTNBR / 3 /
INTEGER EDGENBR
DATA EDGENBR / 4 /
INTEGER VERTTAB (4)
DATA VERTTAB / 1, 2, 4, 5 /
INTEGER EDGETAB (4)
DATA EDGETAB / 2, 1, 3, 2 /
INTEGER INDXTAB (1)
INTEGER IDXVERTNBR
INTEGER IDXVERTTABIDX, IDXVENDTABIDX
INTEGER IDXVELOTABIDX, IDXVLBLTABIDX
INTEGER IDXEDGENBR
INTEGER IDXEDGETABIDX, IDXEDLOTABIDX
INTEGER IDXBASEVAL, IDXFLAGVAL
INTEGER IERR
PRINT *, 'Starting'
CALL SCOTCHFGRAPHINIT (SCOTCHGRAPH (1), IERR)
IF (IERR .NE. 0) THEN
PRINT *, 'ERROR : MAIN : Cannot initialize graph'
STOP
ENDIF
CALL SCOTCHFGRAPHBUILD (SCOTCHGRAPH (1), 1, VERTNBR,
* VERTTAB (1), VERTTAB (2),
* VERTTAB (1), VERTTAB (1),
* EDGENBR,
* EDGETAB (1), EDGETAB (1), IERR)
IF (IERR .NE. 0) THEN
PRINT *, 'ERROR : MAIN : Cannot build graph'
STOP
ENDIF
CALL SCOTCHFGRAPHCHECK (SCOTCHGRAPH (1), IERR)
IF (IERR .NE. 0) THEN
PRINT *, 'ERROR : MAIN : Invalid check'
STOP
ENDIF
PRINT *, 'Outputing original graph'
CALL SCOTCHFGRAPHSAVE (SCOTCHGRAPH (1), 1, IERR)
IF (IERR .NE. 0) THEN
PRINT *, 'ERROR : MAIN : Invalid graph output'
STOP
ENDIF
CALL SCOTCHFGRAPHDATA (SCOTCHGRAPH (1), INDXTAB (1),
* IDXBASEVAL, IDXVERTNBR,
* IDXVERTTABIDX, IDXVENDTABIDX,
* IDXVELOTABIDX, IDXVLBLTABIDX,
* IDXEDGENBR,
* IDXEDGETABIDX, IDXEDLOTABIDX,
* IDXFLAGVAL, IERR);
IF (IERR .NE. 0) THEN
PRINT *, 'ERROR : MAIN : Cannot get graph data'
STOP
ENDIF
PRINT *, 'Number of vertices : ', IDXVERTNBR
PRINT *, 'Index of verttab : ', IDXVERTTABIDX
PRINT *, 'Index of vendtab : ', IDXVENDTABIDX
PRINT *, 'Index of velotab : ', IDXVELOTABIDX
PRINT *, 'Index of vlbltab : ', IDXVLBLTABIDX
PRINT *, 'Number of edges : ', IDXEDGENBR
PRINT *, 'Index of edgetab : ', IDXEDGETABIDX
PRINT *, 'Index of edlotab : ', IDXEDLOTABIDX
PRINT *, 'Updating vertex and edge arrays'
INDXTAB (IDXVERTTABIDX + 1) = 3
INDXTAB (IDXEDGETABIDX) = 2
INDXTAB (IDXEDGETABIDX + 1) = 3
INDXTAB (IDXEDGETABIDX + 2) = 1
INDXTAB (IDXEDGETABIDX + 3) = 1
PRINT *, 'Outputting updated graph'
CALL SCOTCHFGRAPHCHECK (SCOTCHGRAPH (1), IERR)
IF (IERR .NE. 0) THEN
PRINT *, 'ERROR : MAIN : Invalid check'
STOP
ENDIF
CALL SCOTCHFGRAPHSAVE (SCOTCHGRAPH (1), 1, IERR)
IF (IERR .NE. 0) THEN
PRINT *, 'ERROR : MAIN : Invalid graph output'
STOP
ENDIF
CALL SCOTCHFGRAPHEXIT (SCOTCHGRAPH (1), IERR)
IF (IERR .NE. 0) THEN
PRINT *, 'ERROR : MAIN : Cannot destroy graph'
STOP
ENDIF
PRINT *, 'Test complete'
RETURN
END

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,107 @@
." Text automatically generated by txt2man
.TH amk_ccc 1 "August 03, 2010" "" "Scotch user's manual"
.SH NAME
\fBamk_ccc, amk_fft2, amk_hy, amk_m2, amk_p2 \fP- create target architectures
\fB
.SH SYNOPSIS
.nf
.fam C
\fBamk_ccc\fP [\fIoptions\fP] \fIdim\fP [\fItfile\fP]
.PP
\fBamk_fft2\fP [\fIoptions\fP] \fIdim\fP [\fItfile\fP]
.PP
\fBamk_hy\fP [\fIoptions\fP] \fIdim\fP [\fItfile\fP]
.PP
\fBamk_m2\fP [\fIoptions\fP] \fIdimX\fP [\fIdimY\fP] [\fItfile\fP]
.PP
\fBamk_p2\fP [\fIoptions\fP] [\fIwght0\fP] [\fIwght1\fP] [\fItfile\fP]
.fam T
.fi
.SH DESCRIPTION
The amk_* programs create target architecture files for some common,
regular topologies.
.PP
\fBamk_ccc\fP creates a decomposition-defined cube-connected-cycle
topology of dimension \fIdim\fP. The decomposition is performed first by
bisection along the dimensions of the hypercube, then along the
remaining cycle graphs.
.PP
\fBamk_fft2\fP creates a decomposition-defined fast-Fourier-transform
topology of dimension \fIdim\fP. The decomposition is performed by
recursive bisection of the vertices, by descending dimension
(that is, bit number in the labeling of the vertices).
.PP
\fBamk_hy\fP creates a decomposition-defined hypercube topology of
dimension \fIdim\fP. The decomposition is performed by
recursive bisection of the vertices, by descending dimension
(that is, bit number in the labeling of the vertices). Save for
experimentation purposes, this program is deprecated, as the
algorithmically-defined 'hcub' target architecture is a more
convenient and efficient way to represent hypercube architectures.
.PP
\fBamk_m2\fP creates a decomposition-defined 2D regular grid topology of
dimensions \fIdimX\fP and \fIdimY\fP. The decomposition is performed by
recursive splitting along the dimensions, either by cutting the
longest one, or by one-way dissection, depending on the '\fB-m\fP' option
flag. Save for experimentation purposes, this program is deprecated,
as the algorithmically-defined 'mesh2D' and 'mesh3D' target
architectures are a more convenient and efficient way to represent
2D and 3D grid architectures.
.PP
\fBamk_p2\fP creates a weighted path graph topology comprising only two
vertices of weights \fIwght0\fP and \fIwght1\fP. This is just a helper program,
which builds a 'wcmplt' algorithmically-defined complete graph with
two vertices. It may be used to compute weighted bisections of a
graph.
.SH OPTIONS
.TP
.B
\fB-m\fP\fImeth\fP
For \fBamk_m2\fP only. Perform either recursive dissection or
one-way dissection, according to the given method flag:
.RS
.TP
.B
n
perform nested dissection (default).
.TP
.B
o
perform one-way dissection (cut across Y, then X).
.RE
.TP
.B
\fB-h\fP
Display some help.
.TP
.B
\fB-V\fP
Display program version and copyright.
.SH EXAMPLE
Create a cube-connected-cycle target architecture of dimension 4,
and save it to file 'ccc4.tgt'.
.PP
.nf
.fam C
$ amk_ccc 4 ccc4.tgt
.fam T
.fi
Run gmap to compute a bisection, into two parts of respective weights
3 and 5, of graph 'brol.grf' and save the resulting mapping to
file 'brol.map'. The dash '-' standard file name is used so that the
target architecture description is read from the standard input,
through the pipe.
.PP
.nf
.fam C
$ amk_p2 3 5 | gmap brol.grf - brol.map
.fam T
.fi
.SH SEE ALSO
\fBgmk_msh\fP(1), \fBgtst\fP(1), \fBgmap\fP(1), \fBgord\fP(1), \fBgout\fP(1), \fBamk_grf\fP(1).
.PP
Scotch user's manual.
.SH AUTHOR
Francois Pellegrini <francois.pellegrini@labri.fr>

View File

@ -0,0 +1 @@
.so man1/amk_ccc.1

View File

@ -0,0 +1 @@
.so man1/amk_ccc.1

View File

@ -0,0 +1 @@
.so man1/amk_ccc.1

View File

@ -0,0 +1 @@
.so man1/amk_ccc.1

View File

@ -0,0 +1,56 @@
." Text automatically generated by txt2man
.TH atst 1 "August 03, 2010" "" "Scotch user's manual"
.SH NAME
\fBatst \fP- test the consistency of target architectures
\fB
.SH SYNOPSIS
.nf
.fam C
\fBatst\fP [\fIoptions\fP] [\fIafile\fP] [\fIlfile\fP]
.fam T
.fi
.SH DESCRIPTION
The \fBatst\fP program checks the consistency of a Scotch
decomposition-defined target architecture and, in case of success,
outputs some statistics regarding the number of target vertices and
the length of paths linking them. Target architectures define the
topology of the target graphs used by static mapping programs
\fBgmap\fP(1) and \fBdgmap\fP(1).
.PP
The resulting statistics are stored in file \fIlfile\fP. When file names
are not specified, data is read from standard input and written to
standard output. Standard streams can also be explicitly represented
by a dash '-'.
.PP
When the proper libraries have been included at compile time, \fBatst\fP
can directly handle compressed files, both as input and output. A
stream is treated as compressed whenever its name is postfixed with
a compressed file extension, such as in 'brol.tgt.bz2' or '-.gz'. The
compression formats which can be supported are the bzip2 format
('.bz2'), the gzip format ('.gz'), and the lzma format ('.lzma', on
input only).
.SH OPTIONS
.TP
.B
\fB-h\fP
Display some help.
.TP
.B
\fB-V\fP
Display program version and copyright.
.SH EXAMPLE
Test the consistency of architecture arch.tgt:
.PP
.nf
.fam C
$ atst arch.tgt
.fam T
.fi
.SH SEE ALSO
\fBamk_grf\fP(1), \fBamk_ccc\fP(1), \fBamk_fft2\fP(1), \fBamk_hy\fP(1), \fBamk_m2\fP(1),
\fBamk_p2\fP(1), \fBgmap\fP(1), \fBdgmap\fP(1).
.PP
Scotch user's manual.
.SH AUTHOR
Francois Pellegrini <francois.pellegrini@labri.fr>

View File

@ -0,0 +1,141 @@
." Text automatically generated by txt2man
.TH dgmap 1 "August 03, 2010" "" "PT-Scotch user's manual"
.SH NAME
\fBdgmap, dgpart \fP- compute static mappings and partitions in parallel
\fB
.SH SYNOPSIS
.nf
.fam C
\fBdgmap\fP [\fIoptions\fP] [\fIgfile\fP] [\fItfile\fP] [\fImfile\fP] [\fIlfile\fP]
.PP
\fBdgpart\fP [\fIoptions\fP] [\fInparts\fP] [\fIgfile\fP] [\fImfile\fP] [\fIlfile\fP]
.fam T
.fi
.SH DESCRIPTION
The \fBdgmap\fP program computes, in a parallel way, a static mapping of a
source graph onto a target graph.
.PP
The \fBdgpart\fP program is a shortcut of \fBdgmap\fP for computing partitions
of a source graph.
.PP
Source graph file \fIgfile\fP is either a centralized graph file, or a set
of files representing fragments of a distributed graph. For \fBdgmap\fP,
the target architecture file \fItfile\fP describes either algorithmically-coded
topologies such as meshes and hypercubes, or decomposition-defined
architectures created by means of the \fBamk_grf\fP(1) program. See
\fBgmap\fP(1) for a description of target architectures. The resulting
mapping is stored in file \fImfile\fP. Eventual logging information (such
as the one produced by option \fB-v\fP) is sent to file \fIlfile\fP. When file
names are not specified, data is read from standard input and
written to standard output. Standard streams can also be explicitely
represented by a dash '-'.
.PP
When the proper libraries have been included at compile time, \fBdgmap\fP
and \fBdgpart\fP can directly handle compressed graphs, both as input and
output. A stream is treated as compressed whenever its name is
postfixed with a compressed file extension, such as
in 'brol.grf.bz2' or '-.gz'. The compression formats which can be
supported are the bzip2 format ('.bz2'), the gzip format ('.gz'),
and the lzma format ('.lzma', on input only).
.PP
\fBdgmap\fP and \fBdgpart\fP base on implementations of the MPI interface to
spread work across the processing elements. They are therefore not
likely to be run directly, but instead through some launcher command
such as \fBmpirun\fP.
.SH OPTIONS
.TP
.B
\fB-c\fPopt
Choose default mapping strategy according to one or
several \fIoptions\fP among:
.RS
.TP
.B
b
enforce load balance as much as possible.
.TP
.B
q
privilege quality over speed (default).
.TP
.B
s
privilege speed over quality.
.TP
.B
t
enforce safety.
.TP
.B
x
enforce scalability.
.RE
.TP
.B
\fB-h\fP
Display some help.
.TP
.B
\fB-m\fP\fIstrat\fP
Use parallel mapping strategy \fIstrat\fP (see
PT-Scotch user's manual for more information).
.TP
.B
\fB-r\fP\fIpnum\fP
Set root process for centralized files (default is 0).
.TP
.B
\fB-V\fP
Display program version and copyright.
.TP
.B
\fB-v\fP\fIverb\fP
Set verbose mode to \fIverb\fP. It is a set of one of more
characters which can be:
.RS
.TP
.B
m
mapping information.
.TP
.B
s
strategy information.
.TP
.B
t
timing information.
.SH NOTE
At the time being (version 5.1.0), \fBdgmap\fP cannot compute full static
mappings as \fBgmap\fP(1) does, but only partitions (that is, mappings
onto unweighted or weighted complete graphs). Target architectures
other than the 'cmplt' and 'wcmplt' ones will lead to an error
message.
.SH EXAMPLES
Run \fBdgpart\fP on 5 processing elements to compute a partition into 7
parts of graph brol.grf and save the resulting ordering to file brol.map.
.PP
.nf
.fam C
$ mpirun -np 5 dgpart 7 brol.grf brol.map
.fam T
.fi
Run \fBdgpart\fP on 5 processing elements to partition into 7 parts the
distributed graph stored on graph fragment files brol5-0.dgr to
brol5-4.dgr, and save the resulting mapping to file brol.map (see
\fBdgscat\fP(1) for an explanation of the '%p' and '%r' sequences in names
of distributed graph fragments).
.PP
.nf
.fam C
$ mpirun -np 5 dgpart 7 brol%p-%r.dgr brol.map
.fam T
.fi
.SH SEE ALSO
\fBdgtst\fP(1), \fBdgscat\fP(1), \fBamk_grf\fP(1), \fBacpl\fP(1), \fBgmap\fP(1), \fBgmtst\fP(1).
.PP
PT-Scotch user's manual.
.SH AUTHOR
Francois Pellegrini <francois.pellegrini@labri.fr>

View File

@ -0,0 +1,138 @@
." Text automatically generated by txt2man
.TH dgord 1 "August 03, 2010" "" "PT-Scotch user's manual"
.SH NAME
\fBdgord \fP- compute sparse matrix orderings of graphs in parallel
\fB
.SH SYNOPSIS
.nf
.fam C
\fBdgord\fP [\fIoptions\fP] [\fIgfile\fP] [\fIofile\fP] [\fIlfile\fP]
.fam T
.fi
.SH DESCRIPTION
The \fBdgord\fP program computes, in a parallel way, an ordering of a
Scotch source graph representing the pattern of some symmetric
sparse matrix.
.PP
Source graph file \fIgfile\fP is either a centralized graph file, or a set
of files representing fragments of a distributed graph. The resulting
ordering is stored in file \fIofile\fP. Eventual logging information (such
as the one produced by option \fB-v\fP) is sent to file \fIlfile\fP. When file
names are not specified, data is read from standard input and
written to standard output. Standard streams can also be explicitely
represented by a dash '-'.
.PP
When the proper libraries have been included at compile time, \fBdgord\fP
can directly handle compressed graphs, both as input and output. A
stream is treated as compressed whenever its name is postfixed with
a compressed file extension, such as in 'brol.grf.bz2' or '-.gz'. The
compression formats which can be supported are the bzip2 format
('.bz2'), the gzip format ('.gz'), and the lzma format ('.lzma', on
input only).
.PP
\fBdgord\fP bases on implementations of the MPI interface to spread work
across the processing elements. It is therefore not likely to be run
directly, but instead through some launcher command such as \fBmpirun\fP.
.SH OPTIONS
.TP
.B
\fB-c\fPopt
Choose default ordering strategy according to one or
several \fIoptions\fP among:
.RS
.TP
.B
b
enforce load balance as much as possible.
.TP
.B
q
privilege quality over speed (default).
.TP
.B
s
privilege speed over quality.
.TP
.B
t
enforce safety.
.TP
.B
x
enforce scalability.
.RE
.TP
.B
\fB-h\fP
Display some help.
.TP
.B
\fB-m\fP\fImfile\fP
Save column block mapping data to file \fImfile\fP. Mapping
data specifies, for each vertex, the index of the column
block to which this vertex belongs.
.TP
.B
\fB-o\fP\fIstrat\fP
Use parallel graph ordering strategy \fIstrat\fP (see
PT-Scotch user's manual for more information).
.TP
.B
\fB-r\fP\fIpnum\fP
Set root process for centralized files (default is 0).
.TP
.B
\fB-t\fP\fItfile\fP
Save partitioning tree data to file \fItfile\fP. Partitioning
tree data specifies, for each vertex, the index of the
first vertex of the parent block of the block to which
the vertex belongs. Altogether with the mapping data
provided in file \fImfile\fP, it allows one to rebuild the
separator tree of the nested dissection process.
.TP
.B
\fB-V\fP
Display program version and copyright.
.TP
.B
\fB-v\fP\fIverb\fP
Set verbose mode to \fIverb\fP. It is a set of one of more
characters which can be:
.RS
.TP
.B
s
strategy information.
.TP
.B
t
timing information.
.SH EXAMPLES
Run \fBdgord\fP on 5 processing elements to reorder matrix graph brol.grf
and save the resulting ordering to file brol.ord, using the default
sequential graph ordering strategy:
.PP
.nf
.fam C
$ mpirun -np 5 dgord brol.grf brol.ord
.fam T
.fi
Run \fBdgord\fP on 5 processing elements to reorder the distributed matrix
stored on graph fragment files brol5-0.dgr to brol5-4.dgr, and save
the resulting ordering to file brol.ord (see \fBdgscat\fP(1) for an
explanation of the '%p' and '%r' sequences in names of distributed
graph fragments).
.PP
.nf
.fam C
$ mpirun -np 5 dgord brol%p-%r.dgr brol.ord
.fam T
.fi
.SH SEE ALSO
\fBdgtst\fP(1), \fBdgscat\fP(1), \fBgmk_hy\fP(1), \fBgord\fP(1).
.PP
PT-Scotch user's manual.
.SH AUTHOR
Francois Pellegrini <francois.pellegrini@labri.fr>

View File

@ -0,0 +1 @@
.so man1/dgmap.1

View File

@ -0,0 +1,117 @@
." Text automatically generated by txt2man
.TH dgscat 1 "August 03, 2010" "" "PT-Scotch user's manual"
.SH NAME
\fBdgscat \fP- build distributed source graph file fragments from a centralized source graph file
\fB
.SH SYNOPSIS
.nf
.fam C
\fBdgscat\fP [\fIoptions\fP] [\fIigfile\fP] [\fIogfile\fP]
.fam T
.fi
.SH DESCRIPTION
The \fBdgscat\fP program reads a centralized source graph \fIigfile\fP and
writes it back on the form of a set of files \fIogfile\fP representing
fragments of a distributed source graph.
.PP
When file names are not specified, data is read from standard input
and written to standard output. Standard streams can also be
explicitly represented by a dash '-'.
.PP
When the proper libraries have been included at compile time, dgord
can directly handle compressed graphs, both as input and output. A
stream is treated as compressed whenever its name is postfixed with
a compressed file extension, such as in 'brol.grf.bz2' or '-.gz'. The
compression formats which can be supported are the bzip2 format
('.bz2'), the gzip format ('.gz'), and the lzma format ('.lzma', on
input only).
.PP
dgord bases on implementations of the MPI interface to spread work
across the processing elements. It is therefore not likely to be run
directly, but instead through some launcher command such as \fBmpirun\fP.
.SH DISTRIBUTED FILE NAMES
In order to tell whether programs should read from, or write to, a
single file located on only one processor, or to multiple instances
of the same file on all of the processors, or else to distinct files
on each of the processors, a special grammar has been designed,
which is based on the '%' escape character. Four such escape
sequences are defined, which are interpreted independently on every
processor, prior to file opening. By default, when a filename is
provided, it is assumed that the file is to be opened on only one of
the processors, called the root processor, which is usually process
0 of the communicator within which the program is run. The index
of the root processor can be changed by means of the \fB-r\fP
option. Using any of the first three escape sequences below will
instruct programs to open in parallel a file of name equal to the
interpreted filename, on every processor on which they are run.
.TP
.B
%p
Replaced by the number of processes in the global communicator in
which the program is run. Leads to parallel opening.
.TP
.B
%r
Replaced on each process running the program by the rank of this
process in the global communicator. Leads to parallel opening.
.TP
.B
%-
Discarded, but leads to parallel opening. This sequence is mainly
used to instruct programs to open on every processor a file of
identical name. The opened files can be, according whether the
given path leads to a shared directory or to directories that
are local to each processor, either to the opening of multiple
instances of the same file, or to the opening of distinct files
which may each have a different content, respectively (but in
this latter case it is much recommended to identify files by
means of the '%r' sequence).
.TP
.B
%%
Replaced by a single '%' character. File names using this escape
sequence are not considered for parallel opening, unless one or
several of the three other escape sequences are also present.
.RE
.PP
For instance, filename 'brol' will lead to the opening of file 'brol'
on the root processor only, filename '%\fB-brol\fP' (or even 'br%\fB-ol\fP') will
lead to the parallel opening of files called 'brol' on every
processor, and filename 'brol%p-%r' will lead to the opening of files
'brol2-0' and 'brol2-1', respectively, on each of the two processors
on which the program were to run.
.SH OPTIONS
.TP
.B
\fB-c\fP
Check the consistency of the input source graph after
loading it into memory.
.TP
.B
\fB-h\fP
Display some help.
.TP
.B
\fB-r\fP\fIpnum\fP
Set root process for centralized files (default is 0).
.TP
.B
\fB-V\fP
Display program version and copyright.
.SH EXAMPLE
Run \fBdgscat\fP on 5 processing elements to scatter centralized graph
file brol.grf into 5 gzipped file fragments brol5-0.dgr.gz to
brol5-4.dgr.gz.
.PP
.nf
.fam C
$ mpirun -np 5 dgscat brol.grf brol%p-%r.dgr.gz
.fam T
.fi
.SH SEE ALSO
\fBdgtst\fP(1), \fBdgord\fP(1), \fBgmk_hy\fP(1).
.PP
PT-Scotch user's manual.
.SH AUTHOR
Francois Pellegrini <francois.pellegrini@labri.fr>

View File

@ -0,0 +1,78 @@
." Text automatically generated by txt2man
.TH dgtst 1 "August 03, 2010" "" "PT-Scotch user's manual"
.SH NAME
\fBdgtst \fP- test the consistency of source graphs in parallel
\fB
.SH SYNOPSIS
.nf
.fam C
\fBdgtst\fP [\fIoptions\fP] [\fIgfile\fP] [\fIlfile\fP]
.fam T
.fi
.SH DESCRIPTION
The \fBdgtst\fP program checks, in a parallel way, the consistency of a
Scotch source graph and, in case of success, outputs some statistics
regarding edge weights, vertex weights, and vertex degrees.
.PP
It produces the very same results as the \fBgtst\fP(1) program of the
Scotch sequential distribution, but unlike this latter it can handle
distributed graphs.
.PP
Source graph file \fIgfile\fP is either a centralized graph file, or a set
of files representing fragments of a distributed graph. The
resulting statistics are stored in file \fIlfile\fP. When file names are
not specified, data is read from standard input and written to
standard output. Standard streams can also be explicitly
represented by a dash '-'.
.PP
When the proper libraries have been included at compile time, \fBdgtst\fP
can directly handle compressed graphs, both as input and output. A
stream is treated as compressed whenever its name is postfixed with
a compressed file extension, such as in 'brol.grf.bz2' or '-.gz'. The
compression formats which can be supported are the bzip2 format
('.bz2'), the gzip format ('.gz'), and the lzma format ('.lzma', on
input only).
.PP
\fBdgtst\fP bases on implementations of the MPI interface to spread work
across the processing elements. It is therefore not likely to be run
directly, but instead through some launcher command such as \fBmpirun\fP.
.SH OPTIONS
.TP
.B
\fB-h\fP
Display some help.
.TP
.B
\fB-r\fP\fIpnum\fP
Set root process for centralized files (default is 0).
.TP
.B
\fB-V\fP
Display program version and copyright.
.SH EXAMPLE
Run \fBdgtst\fP on 5 processing elements to test the consistency of graph brol.grf
.PP
.nf
.fam C
$ mpirun -np 5 dgtst brol.grf
.fam T
.fi
Run dgord on 5 processing elements to test the consistency of a
distributed graph stored on graph fragment files brol5-0.dgr to
brol5-4.dgr, and save the resulting ordering to file brol.ord (see
\fBdgscat\fP(1) for an explanation of the '%p' and '%r' sequences in names
of distributed graph fragments).
.PP
.nf
.fam C
$ mpirun -np 5 dgtst brol%p-%r.dgr brol.ord
.fam T
.fi
.SH SEE ALSO
\fBdgscat\fP(1), \fBgtst\fP(1), \fBdgord\fP(1).
.PP
PT-Scotch user's manual.
.SH AUTHOR
Francois Pellegrini <francois.pellegrini@labri.fr>

106
scotch_6.0.3/man/man1/gcv.1 Normal file
View File

@ -0,0 +1,106 @@
." Text automatically generated by txt2man
.TH gcv 1 "August 03, 2010" "" "Scotch user's manual"
.SH NAME
\fBgcv \fP- graph file converter
\fB
.SH SYNOPSIS
.nf
.fam C
\fBgcv\fP [\fIoptions\fP] [\fIigfile\fP] [\fIogfile\fP] [\fIoxfile\fP]
.fam T
.fi
.SH DESCRIPTION
The \fBgcv\fP program converts Scotch graph files from and to other
external file formats.
.PP
File \fIigfile\fP is converted into graph file \fIogfile\fP, with optional
geometry data being put in geometry file \fIoxfile\fP, if it is
available.
.PP
When file names are not specified, data is read from standard input
and written to standard output. Standard streams can also be
explicitly represented by a dash '-'.
.PP
When the proper libraries have been included at compile time, dgtst
can directly handle compressed graphs, both as input and output. A
stream is treated as compressed whenever its name is postfixed with
a compressed file extension, such as in 'brol.grf.bz2' or '-.gz'. The
compression formats which can be supported are the bzip2 format
('.bz2'), the gzip format ('.gz'), and the lzma format ('.lzma', on
input only).
.SH OPTIONS
.TP
.B
\fB-h\fP
Display some help.
.TP
.B
\fB-i\fP\fIifmt\fP
Set format of input graph file, which can be:
.RS
.TP
.B
b\fInum\fP
Boeing-Harwell format. This is a matrix format.
Only square matrices are supported. Square matrices
with unsymmetric pattern are symmetrized. In
case the file contains several matrices, the \fInum\fP
parameter allow the user to provide the index of
the matrix to convert, starting from 0. When the \fInum\fP
parameter is not set, it is assumed to be 0.
.TP
.B
c
Chaco format. This is an adjacency graph
format, also used by MeTiS.
.TP
.B
m
Matrix Market format. This is a matrix format
describing individual edges. Matrix pattern is
symmetrized, such that rectangular matrices are
eventually squared.
.TP
.B
s
Scotch graph format. This is an adjacency graph format.
.RE
.TP
.B
\fB-o\fP\fIofmt\fP
Set format of output graph file, which can be:
.RS
.TP
.B
c
Chaco format.
.TP
.B
m
Matrix Market symmetric pattern format.
.TP
.B
s
Scotch format. This is the default.
.RE
.TP
.B
\fB-V\fP
Display program version and copyright.
.SH EXAMPLE
Convert a Matrix Market graph into a Scotch graph. Matrix Market
files do not comprise geometry data, so no geometry file is needed
on output:
.PP
.nf
.fam C
$ gcv -im brol.mm brol.grf
.fam T
.fi
.SH SEE ALSO
\fBgtst\fP(1), \fBgmap\fP(1), \fBgord\fP(1), \fBgout\fP(1).
.PP
Scotch user's manual.
.SH AUTHOR
Francois Pellegrini <francois.pellegrini@labri.fr>

View File

@ -0,0 +1,180 @@
." Text automatically generated by txt2man
.TH gmap 1 "August 03, 2010" "" "Scotch user's manual"
.SH NAME
\fBgmap, gpart \fP- compute static mappings and partitions sequentially
\fB
.SH SYNOPSIS
.nf
.fam C
\fBgmap\fP [\fIoptions\fP] [\fIgfile\fP] [\fItfile\fP] [\fImfile\fP] [\fIlfile\fP]
.PP
\fBgpart\fP [\fIoptions\fP] [\fInparts\fP] [\fIgfile\fP] [\fImfile\fP] [\fIlfile\fP]
.fam T
.fi
.SH DESCRIPTION
The \fBgmap\fP program computes, in a sequential way, a static mapping of a
source graph onto a target graph.
.PP
The \fBgpart\fP program is a shortcut of \fBgmap\fP for computing unweighted
partitions of a source graph.
.PP
Source graph file \fIgfile\fP can only be a centralized graph file. For \fBgmap\fP,
the target architecture file \fItfile\fP describes either algorithmically-coded
topologies such as meshes and hypercubes, or decomposition-defined
architectures created by means of the \fBamk_grf\fP(1) program. The resulting
mapping is stored in file \fImfile\fP. Eventual logging information (such
as the one produced by option \fB-v\fP) is sent to file \fIlfile\fP. When file
names are not specified, data is read from standard input and
written to standard output. Standard streams can also be explicitely
represented by a dash '-'.
.PP
When the proper libraries have been included at compile time, \fBgmap\fP
and \fBgpart\fP can directly handle compressed graphs, both as input and
output. A stream is treated as compressed whenever its name is
postfixed with a compressed file extension, such as
in 'brol.grf.bz2' or '-.gz'. The compression formats which can be
supported are the bzip2 format ('.bz2'), the gzip format ('.gz'),
and the lzma format ('.lzma', on input only).
.SH OPTIONS
.TP
.B
\fB-c\fPopt
Choose default mapping strategy according to one or
several \fIoptions\fP among:
.RS
.TP
.B
b
enforce load balance as much as possible.
.TP
.B
q
privilege quality over speed (default).
.TP
.B
s
privilege speed over quality.
.TP
.B
t
enforce safety.
.RE
.TP
.B
\fB-h\fP
Display some help.
.TP
.B
\fB-m\fPstrat
Use sequential mapping strategy strat (see
Scotch user's manual for more information).
.TP
.B
\fB-V\fP
Display program version and copyright.
.TP
.B
\fB-v\fPverb
Set verbose mode to verb. It is a set of one of more
characters which can be:
.RS
.TP
.B
m
mapping information.
.TP
.B
s
strategy information.
.TP
.B
t
timing information.
.SH TARGET ARCHITECTURES
Target architectures represent graphs onto which source graphs are
mapped. In order to speed-up the obtainment of target architecture
topological properties during the computation of mappings, some
classical topologies are algorithmically coded into the mapper
itself. These topologies are consequently simply defined by their
code name, followed by their dimensional parameters:
.TP
.B
cmplt \fIdim\fP
unweighted complete graph of size \fIdim\fP.
.TP
.B
cmpltw \fIdim\fP \fIw0\fP \fIw1\fP \.\.\. \fIwdim-1\fP
weighted complete graph of size
size and of respective loads
\fIw0\fP, \fIw1\fP, \.\.\., \fIwdim-1\fP.
.TP
.B
hcub \fIdim\fP
hypercube of dimension \fIdim\fP.
.TP
.B
leaf \fIhgt\fP \fIn0\fP \fIw0\fP \.\.\. \fInhgt-1\fP \fIwhgt-1\fP
tree-leaf graph of height \fIhgt\fP
with (\fIn0\fP times \fIn1\fP times \.\.\. \fInhgt-1\fP)
vertices, with inter-cluster link
weights of \fIw0\fP, \fIw1\fP, \.\.\. \fIwhgt-1\fP.
.TP
.B
mesh2D \fIdimX\fP \fIdimY\fP
2D mesh of \fIdimX\fP times \fIdimY\fP nodes.
.TP
.B
mesh3D \fIdimX\fP \fIdimY\fP \fIdimZ\fP
23 mesh of \fIdimX\fP times \fIdimY\fP times \fIdimZ\fP nodes.
.TP
.B
torus2D \fIdimX\fP \fIdimY\fP
2D torus of \fIdimX\fP times \fIdimY\fP nodes.
.TP
.B
torus3D \fIdimX\fP \fIdimY\fP \fIdimZ\fP
3D torus of \fIdimX\fP times \fIdimY\fP times \fIdimZ\fP nodes.
.PP
Other target topologies can be created from their source graph
description by using the \fBamk_grf\fP(1) command. In this case, the
target description will begin with the code name \fBdeco\fP.
.SH MAPPINGS
Mappings are represented by as many lines as there are vertices in
the source graph. Each of these lines is made of two figures: the
number of the vertex (or its label if source graph vertices are
labeled) and the index of the target vertex to which it has been
assigned. Target vertex indices range from 0 to the number of
vertices in the target architecture (that is, the number of parts)
minus one.
.PP
This block of lines is always preceded by the number of such
lines. In most cases, since full mappings are requested, the number
of lines is equal to the number of vertices in the source graph.
.SH EXAMPLES
Run \fBgpart\fP to compute a partition into 7 parts of graph 'brol.grf' and
save the resulting ordering to file 'brol.map'.
.PP
.nf
.fam C
$ gpart 7 brol.grf brol.map
.fam T
.fi
Run \fBgmap\fP to compute a partition, into 3 parts of respective weights
1, 2 and 4, of graph 'brol.grf' and save the resulting mapping to
file 'brol.map'. The dash '-' standard file name is used so that the
target architecture description is read from the standard input,
through the pipe, as provided by the 'echo' shell command.
.PP
.nf
.fam C
$ echo "cmpltw 3 1 2 4" | gmap brol.grf - brol.map
.fam T
.fi
.SH SEE ALSO
\fBamk_grf\fP(1), \fBacpl\fP(1), \fBgmtst\fP(1), \fBdgmap\fP(1).
.PP
Scotch user's manual.
.SH AUTHOR
Francois Pellegrini <francois.pellegrini@labri.fr>

View File

@ -0,0 +1,74 @@
." Text automatically generated by txt2man
.TH gmk_hy 1 "August 03, 2010" "" "Scotch user's manual"
.SH NAME
\fBgmk_hy, gmk_m2, gmk_m3, gmk_ub2 \fP- create source graphs
\fB
.SH SYNOPSIS
.nf
.fam C
\fBgmk_hy\fP [\fIoptions\fP] \fIdim\fP [\fIofile\fP]
.PP
\fBgmk_m2\fP [\fIoptions\fP] [\fB-g\fP\fIcfile\fP] \fIdimX\fP \fIdimY\fP [\fIofile\fP]
.PP
\fBgmk_m3\fP [\fIoptions\fP] [\fB-g\fP\fIcfile\fP] \fIdimX\fP \fIdimY\fP \fIdimZ\fP [\fIofile\fP]
.PP
\fBgmk_ub2\fP [\fIoptions\fP] \fIdim\fP
.fam T
.fi
.SH DESCRIPTION
The \fBgmk_\fP* programs create source graph files for some common,
regular topologies.
.PP
\fBgmk_hy\fP creates a hypercube of dimension \fIdim\fP.
.PP
\fBgmk_m2\fP creates a 2D regular grid of dimensions \fIdimX\fP and \fIdimY\fP.
.PP
\fBgmk_m3\fP creates a 3D regular grid of dimensions \fIdimX\fP, \fIdimY\fP and \fIdimZ\fP.
.PP
\fBgmk_ub2\fP creates an unoriented de Bruijn graph of dimension \fIdim\fP.
.SH OPTIONS
.TP
.B
\fB-b\fP base
For \fBgmk_m2\fP and \fBgmk_m3\fP only. Output graphs with base
value set to base. Default value is 0.
.TP
.B
\fB-e\fP
For \fBgmk_m2\fP only. Build a 8-neighbor grid rather than a
4-neighbor grid.
.TP
.B
\fB-g\fP\fIcfile\fP
For \fBgmk_m2\fP and \fBgmk_m3\fP only. Output graph vertex
coordinates (that is, geometry data to be used by
\fBgout\fP(1)) in file \fIcfile\fP.
.TP
.B
\fB-h\fP
Display some help.
.TP
.B
\fB-t\fP
For \fBgmk_m2\fP and \fBgmk_m3\fP only. Create torus graphs, that
is, graphs such that there exist loop edges between
vertices of rank 0 and (\fIdim\fP-1) in every dimension.
.TP
.B
\fB-V\fP
Display program version and copyright.
.SH EXAMPLE
Create a 5x7 grid along with its geometry:
.PP
.nf
.fam C
$ gmk_m2 5 7 -g/tmp/m5x7.xyz /tmp/m5x7.grf
.fam T
.fi
.SH SEE ALSO
\fBgmk_msh\fP(1), \fBgtst\fP(1), \fBgmap\fP(1), \fBgord\fP(1), \fBgout\fP(1), \fBamk_grf\fP(1).
.PP
Scotch user's manual.
.SH AUTHOR
Francois Pellegrini <francois.pellegrini@labri.fr>

View File

@ -0,0 +1 @@
.so man1/gmk_hy.1

View File

@ -0,0 +1 @@
.so man1/gmk_hy.1

View File

@ -0,0 +1,41 @@
." Text automatically generated by txt2man
.TH gmk_msh 1 "August 03, 2010" "" "Scotch user's manual"
.SH NAME
\fBgmk_msh \fP- create source graph from source mesh
\fB
.SH SYNOPSIS
.nf
.fam C
\fBgmk_msh\fP [\fIoptions\fP] [\fImfile\fP] [\fIgfile\fP]
.fam T
.fi
.SH DESCRIPTION
The \fBgmk_msh\fP program creates a source graph from a source mesh.
The vertices of the graph are the nodes of the mesh, and all mesh
elements are turned into cliques, that is, there exists an edge
between two vertices in the graph if there exists at least an
element in the mesh which comprises the two associated nodes.
.SH OPTIONS
.TP
.B
\fB-h\fP
Display some help.
.TP
.B
\fB-V\fP
Display program version and copyright.
.SH EXAMPLE
Create a source graph brol.grf from a source mesh brol.msh:
.PP
.nf
.fam C
$ gmk_msh brol.msh brol.grf
.fam T
.fi
.SH SEE ALSO
dgmap (1), \fBdgord\fP(1), \fBgmap\fP(1), \fBgord\fP(1), \fBgtst\fP(1), \fBmmk_m2\fP(1), \fBmord\fP(1), \fBmcv\fP(1), \fBmtst\fP(1).
.PP
Scotch user's manual.
.SH AUTHOR
Francois Pellegrini <francois.pellegrini@labri.fr>

View File

@ -0,0 +1 @@
.so man1/gmk_hy.1

View File

@ -0,0 +1,72 @@
." Text automatically generated by txt2man
.TH gmtst 1 "August 03, 2010" "" "Scotch user's manual"
.SH NAME
\fBgmtst \fP- compute statistics on mappings
\fB
.SH SYNOPSIS
.nf
.fam C
\fBgmtst\fP [\fIoptions\fP] [\fIgfile\fP] [\fItfile\fP] [\fImfile\fP] [\fIlfile\fP]
.fam T
.fi
.SH DESCRIPTION
The \fBgmtst\fP program computes, in a sequential way, statistics on a
static mapping, such as load imbalance ratio, edge dilation
distribution, etc. It yields the same results as the ones produced
by the \fB-vm\fP option of the \fBgmap\fP(1) program.
.PP
Source graph file \fIgfile\fP can only be a centralized graph file. File
\fItfile\fP represents the target architecture onto which \fIgfile\fP was
mapped. If mapping file \fImfile\fP was produced by \fBgpart\fP(1), the target
architecture file to provide \fBgmtst\fP should describe a complete graph
with the same number of vertices as the requested number of parts,
for instance by means of the '\fBcmplt\fP \fInum\fP' algorithmically-described
architecture. The resulting statistics are stored in file
\fIlfile\fP. When file names are not specified, data is read from standard
input and written to standard output. Standard streams can also be
explicitly represented by a dash '-'.
.PP
When the proper libraries have been included at compile time, gtst
can directly handle compressed graphs, both as input and output. A
stream is treated as compressed whenever its name is postfixed with
a compressed file extension, such as in 'brol.grf.bz2' or '-.gz'. The
compression formats which can be supported are the bzip2 format
('.bz2'), the gzip format ('.gz'), and the lzma format ('.lzma', on
input only).
.SH OPTIONS
.TP
.B
\fB-h\fP
Display some help.
.TP
.B
\fB-V\fP
Display program version and copyright.
.SH EXAMPLES
Display statistics on mapping brol.map of graph brol.grf onto target
architecture brol.tgt:
.PP
.nf
.fam C
$ gmtst brol.grf brol.tgt brol.map
.fam T
.fi
Display statistics on partitioning brol.map of graph brol.grf into
\fInum\fP parts. Note the use of the complete graph
algorithmically-described architecture and of the shell pipe command
to provide the complete target architecture description on the
standard input of the \fBgmtst\fP command:
.PP
.nf
.fam C
$ echo "cmplt num" | gmtst brol.grf - brol.map
.fam T
.fi
.SH SEE ALSO
\fBgmap\fP(1), \fBgout\fP(1), \fBgtst\fP(1).
.PP
Scotch user's manual.
.SH AUTHOR
Francois Pellegrini <francois.pellegrini@labri.fr>

View File

@ -0,0 +1,112 @@
." Text automatically generated by txt2man
.TH gord 1 "August 03, 2010" "" "Scotch user's manual"
.SH NAME
\fBgord \fP- compute sparse matrix orderings of graphs
\fB
.SH SYNOPSIS
.nf
.fam C
\fBgord\fP [\fIoptions\fP] [\fIgfile\fP] [\fIofile\fP] [\fIlfile\fP]
.fam T
.fi
.SH DESCRIPTION
The \fBgord\fP program computes, in a sequential way, an ordering of a
Scotch source graph representing the pattern of some symmetric
sparse matrix.
.PP
Source graph file \fIgfile\fP can only be a centralized graph file. The
resulting ordering is stored in file \fIofile\fP. Eventual logging
information (such as the one produced by option \fB-v\fP) is sent to file
\fIlfile\fP. When file names are not specified, data is read from standard
input and written to standard output. Standard streams can also be
explicitely represented by a dash '-'.
.PP
When the proper libraries have been included at compile time, \fBgord\fP
can directly handle compressed graphs, both as input and output. A
stream is treated as compressed whenever its name is postfixed with
a compressed file extension, such as in 'brol.grf.bz2' or '-.gz'. The
compression formats which can be supported are the bzip2 format
('.bz2'), the gzip format ('.gz'), and the lzma format ('.lzma', on
input only).
.SH OPTIONS
.TP
.B
\fB-c\fPopt
Choose default ordering strategy according to one or
several \fIoptions\fP among:
.RS
.TP
.B
b
enforce load balance as much as possible.
.TP
.B
q
privilege quality over speed (default).
.TP
.B
s
privilege speed over quality.
.TP
.B
t
enforce safety.
.RE
.TP
.B
\fB-h\fP
Display some help.
.TP
.B
\fB-m\fP\fImfile\fP
Save column block mapping data to file \fImfile\fP. Mapping
data specifies, for each vertex, the index of the column
block to which this vertex belongs.
.TP
.B
\fB-o\fP\fIstrat\fP
Use sequential graph ordering strategy \fIstrat\fP (see
Scotch user's manual for more information).
.TP
.B
\fB-t\fP\fItfile\fP
Save partitioning tree data to file \fItfile\fP. Partitioning
tree data specifies, for each vertex, the index of the
first vertex of the parent block of the block to which
the vertex belongs. Altogether with the mapping data
provided in file \fImfile\fP, it allows one to rebuild the
separator tree of the nested dissection process.
.TP
.B
\fB-V\fP
Display program version and copyright.
.TP
.B
\fB-v\fP\fIverb\fP
Set verbose mode to \fIverb\fP. It is a set of one of more
characters which can be:
.RS
.TP
.B
s
strategy information.
.TP
.B
t
timing information.
.SH EXAMPLE
Reorder matrix graph brol.grf and save the resulting ordering to
file brol.ord using the default sequential graph ordering strategy:
.PP
.nf
.fam C
$ gord brol.grf brol.ord
.fam T
.fi
.SH SEE ALSO
\fBdgord\fP(1), \fBgmk_hy\fP(1), \fBgtst\fP(1).
.PP
Scotch user's manual.
.SH AUTHOR
Francois Pellegrini <francois.pellegrini@labri.fr>

View File

@ -0,0 +1,60 @@
." Text automatically generated by txt2man
.TH gotst 1 "August 03, 2010" "" "Scotch user's manual"
.SH NAME
\fBgomtst \fP- compute statistics on sparse matrix orderings
\fB
.SH SYNOPSIS
.nf
.fam C
\fBgotst\fP [\fIoptions\fP] [\fIgfile\fP] [\fIofile\fP] [\fIlfile\fP]
.fam T
.fi
.SH DESCRIPTION
The \fBgotst\fP program computes, in a sequential way, statistics on a
sparse matrix ordering, such as fill-in, operation count, and
separator tree parameters: minimum, maximum, average height and
variance of its leaves.
.PP
Source graph file \fIgfile\fP can only be a centralized graph file. File
\fIofile\fP represents the ordering of the symmetric sparse matrix the
pattern of which is represented by \fIgfile\fP. The resulting statistics
are stored in file \fIlfile\fP. When file names are not specified, data is
read from standard input and written to standard output. Standard
streams can also be explicitly represented by a dash '-'.
.PP
When the proper libraries have been included at compile time, gtst
can directly handle compressed graphs, both as input and output. A
stream is treated as compressed whenever its name is postfixed with
a compressed file extension, such as in 'brol.grf.bz2' or '-.gz'. The
compression formats which can be supported are the bzip2 format
('.bz2'), the gzip format ('.gz'), and the lzma format ('.lzma', on
input only).
.PP
Since \fBgotst\fP performs sequentially the symbolic factorization of
matrix \fIgfile\fP in order to compute fill-in and operation count
numbers, this program can take a long time or even run out of memory,
when applied to very large graphs.
.SH OPTIONS
.TP
.B
\fB-h\fP
Display some help.
.TP
.B
\fB-V\fP
Display program version and copyright.
.SH EXAMPLE
Display statistics on ordering brol.ord of graph brol.grf:
.PP
.nf
.fam C
$ gotst brol.grf brol.ord
.fam T
.fi
.SH SEE ALSO
\fBgord\fP(1), \fBgtst\fP(1), \fBdgord\fP(1).
.PP
Scotch user's manual.
.SH AUTHOR
Francois Pellegrini <francois.pellegrini@labri.fr>

View File

@ -0,0 +1,268 @@
." Text automatically generated by txt2man
.TH gout 1 "August 03, 2010" "" "Scotch user's manual"
.SH NAME
\fBgout \fP- output graphics from matrices and graphs
\fB
.SH SYNOPSIS
.nf
.fam C
\fBgout\fP [\fIoptions\fP] [\fIgfile\fP] [\fIxfile\fP] [\fImfile\fP] [\fIvfile\fP]
.fam T
.fi
.SH DESCRIPTION
The \fBgout\fP program creates graphics files of various types,
representing the Scotch graph and mapping data which is passed to it.
.PP
Source graph file \fIgfile\fP can only be a centralized graph file. File
\fIxfile\fP stores its associated geometry, whenever necessary. File
\fImfile\fP represents label information attached to each of the graph
vertices, for instance the index of the part to which each vertex
belongs in the case of a mapping file. File \fIvfile\fP is the output
graphics file, the type of which may differ according to the input
parameters. When file names are not specified, data is read from
standard input and written to standard output. Standard streams can
also be explicitly represented by a dash '-'.
.PP
When the proper libraries have been included at compile time, gtst
can directly handle compressed graphs, both as input and output. A
stream is treated as compressed whenever its name is postfixed with
a compressed file extension, such as in 'brol.grf.bz2' or '-.gz'. The
compression formats which can be supported are the bzip2 format
('.bz2'), the gzip format ('.gz'), and the lzma format ('.lzma', on
input only).
.SH OPTIONS
.TP
.B
\fB-h\fP
Display some help.
.TP
.B
\fB-g\fP\fIgeop\fP
Geometry parameters, which can be an arbitrary
combination of any of the following code letters:
.RS
.TP
.B
n
Do not read geometry data, when it is not
available or not required, such as when using
the \fB-om\fP option.
.TP
.B
p
Permute Y and Z geometry dimensions.
.TP
.B
r
Rotate geometry by 90 degrees in the (X,Y) plane.
.RE
.TP
.B
\fB-h\fP
Display some help.
.TP
.B
\fB-mn\fP
Do not read mapping data, when it is not available or
not required.
.TP
.B
\fB-o\fP\fIoutp\fP
Select the output file type and allows to provide
additional parameters between braces and separated
by commas:
.RS
.TP
.B
i
OpenInventor 3D mesh file, to be viewed by means of
programs such as \fBivview\fP. Additional parameters for
this output file type are:
.RS
.TP
.B
c
Color output.
.TP
.B
g
Gray level output.
.TP
.B
r
Remove cut edges.
.TP
.B
v
View cut edges.
.RE
.TP
.B
m
PostScript matrix pattern file. Additional parameters
for this output file type are:
.RS
.TP
.B
e
EPSF-type output.
.TP
.B
f
Full-page output.
.RE
.TP
.B
p
PostScript 2D mesh file. This output module was
intended for 2D meshes; as a fallback, the Z
coordinate is projected according to isometric
perspective rules, but drawings of full 3D objects
are most likely to be unreadable. Additional parameters
for this output file type are:
.RS
.TP
.B
c
Color output.
.TP
.B
g
Gray level output.
.TP
.B
e
EPSF-type output.
.TP
.B
f
Full-page output.
.TP
.B
s
Short clipping (disks excluded).
.TP
.B
l
Large clipping (disks included).
.TP
.B
a
Avoid displaying disks.
.TP
.B
d
Display disks.
.TP
.B
r
Remove cut edges.
.TP
.B
v
View cut edges.
.TP
.B
X=\fIrat\fP
Maximum x clipping ratio (in [0.0;1.0]).
.TP
.B
x=\fIrat\fP
Minimum x clipping ratio.
.TP
.B
Y=\fIrat\fP
Maximum y clipping ratio.
.TP
.B
y=\fIrat\fP
Minimum y clipping ratio.
.RE
.TP
.B
t
Tulip 3D mesh file. Additional parameters
for this output file type are:
.RS
.TP
.B
b
Black and white output.
.TP
.B
c
Color output.
.TP
.B
a
Avoid displaying disks.
.TP
.B
d
Display disks.
.TP
.B
r
Remove cut edges.
.TP
.B
v
View cut edges.
.RE
.RE
.TP
.B
\fB-V\fP
Display program version and copyright.
.SH EXAMPLES
Build an OpenInventor file of the mapping of graph brol.grf
contained in file brol.map. Vertices with no mapping information
attached to them will be rendered in white, while distinct colors
will be used to represent the different parts. Cut edges will be
removed:
.PP
.nf
.fam C
$ gout '-oi{r}' brol.grf brol.xyz brol.map brol.iv
$ ivview brol.iv
.fam T
.fi
Build an OpenInventor file of graph brol.grf without any vertex
information associated to it. Mapping data are not required and
will not be read, but a file name has to be provided, hence the
'-':
.PP
.nf
.fam C
$ gout -oi -mn brol.grf brol.xyz - brol.iv
.fam T
.fi
Output the pattern of matrix brol.grf on the form of a PostScript
flat drawing. Geometry and mapping data are not required and will
not be read, but file names have to be provided, hence the
two '-'s:
.PP
.nf
.fam C
$ gout -om -gn -mn brol.grf - - brol.ps
.fam T
.fi
Output a PostScript 2D drawing of a rectangular portion graph
brol.grf, with disks representing mapping data:
.PP
.nf
.fam C
$ gout '-op{c,e,d,x=0.3,X=0.6,y=0.2,Y=0.5}' brol.grf brol.xyz brol.map brol.ps
.fam T
.fi
.SH SEE ALSO
\fBgmap\fP(1), \fBgout\fP(1), \fBgtst\fP(1).
.PP
Scotch user's manual.
.SH AUTHOR
Francois Pellegrini <francois.pellegrini@labri.fr>

View File

@ -0,0 +1 @@
.so man1/gmap.1

View File

@ -0,0 +1,57 @@
." Text automatically generated by txt2man
.TH gtst 1 "August 03, 2010" "" "Scotch user's manual"
.SH NAME
\fBgtst \fP- test the consistency of source graphs
\fB
.SH SYNOPSIS
.nf
.fam C
\fBgtst\fP [\fIoptions\fP] [\fIgfile\fP] [\fIlfile\fP]
.fam T
.fi
.SH DESCRIPTION
The \fBgtst\fP program checks, in a sequential way, the consistency of a
Scotch source graph and, in case of success, outputs some statistics
regarding edge weights, vertex weights, and vertex degrees.
.PP
It produces the very same results as the \fBdgtst\fP(1) program of the
PT-Scotch parallel distribution, but unlike this latter it cannot
handle distributed graphs.
.PP
Source graph file \fIgfile\fP can only be a centralized graph file. The
resulting statistics are stored in file \fIlfile\fP. When file names are
not specified, data is read from standard input and written to
standard output. Standard streams can also be explicitly
represented by a dash '-'.
.PP
When the proper libraries have been included at compile time, \fBgtst\fP
can directly handle compressed graphs, both as input and output. A
stream is treated as compressed whenever its name is postfixed with
a compressed file extension, such as in 'brol.grf.bz2' or '-.gz'. The
compression formats which can be supported are the bzip2 format
('.bz2'), the gzip format ('.gz'), and the lzma format ('.lzma', on
input only).
.SH OPTIONS
.TP
.B
\fB-h\fP
Display some help.
.TP
.B
\fB-V\fP
Display program version and copyright.
.SH EXAMPLE
Test the consistency of graph brol.grf:
.PP
.nf
.fam C
$ gtst brol.grf
.fam T
.fi
.SH SEE ALSO
\fBdgtst\fP(1), \fBgmap\fP(1), \fBgord\fP(1), \fBgout\fP(1).
.PP
Scotch user's manual.
.SH AUTHOR
Francois Pellegrini <francois.pellegrini@labri.fr>

View File

@ -0,0 +1,55 @@
." Text automatically generated by txt2man
.TH mmk_m2 1 "August 03, 2010" "" "Scotch user's manual"
.SH NAME
\fBmmk_m2, mmk_m3 \fP- create source meshes
\fB
.SH SYNOPSIS
.nf
.fam C
\fBmmk_m2\fP [\fIoptions\fP] [\fB-g\fP\fIcfile\fP] \fIdimX\fP \fIdimY\fP [\fIofile\fP]
.PP
\fBmmk_m3\fP [\fIoptions\fP] [\fB-g\fP\fIcfile\fP] \fIdimX\fP \fIdimY\fP \fIdimZ\fP [\fIofile\fP]
.fam T
.fi
.SH DESCRIPTION
The \fBmmk_\fP* programs create source mesh files for some common,
regular topologies.
.PP
\fBmmk_m2\fP creates a 2D regular mesh of \fIdimX\fP times \fIdimY\fP elements and
(\fIdimX\fP+1) times (\fIdimY\fP+1) nodes, such that element (i,j) is
connected to nodes (i,j), (i,j+1), (i+1,j) and (i+1,j+1).
.PP
\fBmmk_m3\fP creates a 3D regular mesh of \fIdimX\fP times \fIdimY\fP times \fIdimZ\fP
elements and (\fIdimX\fP+1) times (\fIdimY\fP+1) times (\fIdimZ\fP+1) nodes,
such that element (i,j,k) is connected to nodes (i,j,k), (i,j,k+1),
(i,j+1,k), (i,j+1,k+1), (i+1,j,k), (i+1,j,k+1), (i+1,j+1,k) and
(i+1,j+1,k+1).
.SH OPTIONS
.TP
.B
\fB-g\fP\fIcfile\fP
Output graph vertex coordinates (that is, geometry data to be used by
\fBgout\fP(1)) in file \fIcfile\fP.
.TP
.B
\fB-h\fP
Display some help.
.TP
.B
\fB-V\fP
Display program version and copyright.
.SH EXAMPLE
Create a mesh of 5x7 elements, along with its geometry:
.PP
.nf
.fam C
$ mmk_m2 5 7 -g/tmp/m5x7.xyz /tmp/m5x7.msh
.fam T
.fi
.SH SEE ALSO
\fBmord\fP(1), \fBmtst\fP(1), \fBgmk_msh\fP(1).
.PP
Scotch user's manual.
.SH AUTHOR
Francois Pellegrini <francois.pellegrini@labri.fr>

View File

@ -0,0 +1 @@
.so man1/mmk_m2.1

View File

@ -0,0 +1,115 @@
." Text automatically generated by txt2man
.TH mord 1 "August 03, 2010" "" "Scotch user's manual"
.SH NAME
\fBmord \fP- compute sparse matrix orderings of meshes
\fB
.SH SYNOPSIS
.nf
.fam C
\fBmord\fP [\fIoptions\fP] [\fImfile\fP] [\fIofile\fP] [\fIlfile\fP]
.fam T
.fi
.SH DESCRIPTION
The \fBmord\fP program computes, in a sequential way, an ordering of a
Scotch source mesh representing the pattern of some symmetric sparse
matrix. Only nodes of the mesh are effectively ordered. Elements
provide connectivity information, such that every node is considered
to be linked to all of the nodes which share at least an element
with it.
.PP
Source mesh file \fImfile\fP can only be a centralized mesh file. The
resulting ordering is stored in file \fIofile\fP. Eventual logging
information (such as the one produced by option \fB-v\fP) is sent to file
\fIlfile\fP. When file names are not specified, data is read from standard
input and written to standard output. Standard streams can also be
explicitely represented by a dash '-'.
.PP
When the proper libraries have been included at compile time, gord
can directly handle compressed meshes, both as input and output. A
stream is treated as compressed whenever its name is postfixed with
a compressed file extension, such as in 'brol.msh.bz2' or '-.gz'. The
compression formats which can be supported are the bzip2 format
('.bz2'), the gzip format ('.gz'), and the lzma format ('.lzma', on
input only).
.SH OPTIONS
.TP
.B
\fB-c\fPopt
Choose default ordering strategy according to one or
several \fIoptions\fP among:
.RS
.TP
.B
b
enforce load balance as much as possible.
.TP
.B
q
privilege quality over speed (default).
.TP
.B
s
privilege speed over quality.
.TP
.B
t
enforce safety.
.RE
.TP
.B
\fB-h\fP
Display some help.
.TP
.B
\fB-m\fP\fImfile\fP
Save column block mapping data to file \fImfile\fP. Mapping data
specifies, for each node vertex, the index of the column
block to which this node vertex belongs.
.TP
.B
\fB-o\fP\fIstrat\fP
Use sequential mesh ordering strategy \fIstrat\fP (see
Scotch user's manual for more information).
.TP
.B
\fB-t\fP\fItfile\fP
Save partitioning tree data to file \fItfile\fP. Partitioning
tree data specifies, for each node vertex, the index of the
first node vertex of the parent block of the block to which
the node vertex belongs. Altogether with the mapping data
provided in file \fImfile\fP, it allows one to rebuild the
separator tree of the nested dissection process.
.TP
.B
\fB-V\fP
Display program version and copyright.
.TP
.B
\fB-v\fP\fIverb\fP
Set verbose mode to \fIverb\fP. It is a set of one of more
characters which can be:
.RS
.TP
.B
s
strategy information.
.TP
.B
t
timing information.
.SH EXAMPLE
Reorder matrix mesh brol.msh and save the resulting ordering to
file brol.ord using the default sequential mesh ordering strategy:
.PP
.nf
.fam C
$ mord brol.msh brol.ord
.fam T
.fi
.SH SEE ALSO
\fBgmk_msh\fP(1), \fBgotst\fP(1), \fBmtst\fP(1).
.PP
Scotch user's manual.
.SH AUTHOR
Francois Pellegrini <francois.pellegrini@labri.fr>

View File

@ -0,0 +1,54 @@
." Text automatically generated by txt2man
.TH mtst 1 "August 03, 2010" "" "Scotch user's manual"
.SH NAME
\fBmtst \fP- test the consistency of source meshes
\fB
.SH SYNOPSIS
.nf
.fam C
\fBmtst\fP [\fIoptions\fP] [\fImfile\fP] [\fIlfile\fP]
.fam T
.fi
.SH DESCRIPTION
The \fBmtst\fP program checks, in a sequential way, the consistency of a
Scotch source mesh and, in case of success, outputs some statistics
regarding edge weights, node and element vertex weights, and node
and element vertex degrees.
.PP
Source mesh file \fImfile\fP can only be a centralized mesh file. The
resulting statistics are stored in file \fIlfile\fP. When file names are
not specified, data is read from standard input and written to
standard output. Standard streams can also be explicitly
represented by a dash '-'.
.PP
When the proper libraries have been included at compile time, \fBmtst\fP
can directly handle compressed meshes, both as input and output. A
stream is treated as compressed whenever its name is postfixed with
a compressed file extension, such as in 'brol.msh.bz2' or '-.gz'. The
compression formats which can be supported are the bzip2 format
('.bz2'), the gzip format ('.gz'), and the lzma format ('.lzma', on
input only).
.SH OPTIONS
.TP
.B
\fB-h\fP
Display some help.
.TP
.B
\fB-V\fP
Display program version and copyright.
.SH EXAMPLE
Test the consistency of mesh brol.msh:
.PP
.nf
.fam C
$ mtst brol.msh
.fam T
.fi
.SH SEE ALSO
\fBmord\fP(1), \fBgrf_msh\fP(1).
.PP
Scotch user's manual.
.SH AUTHOR
Francois Pellegrini <francois.pellegrini@labri.fr>

View File

@ -0,0 +1,21 @@
EXE =
LIB = .a
OBJ = .o
MAKE = gmake
AR = ar
ARFLAGS = ruv
CAT = cat
CCS = cc
CCP = mpicc
CCD = mpicc
CFLAGS = -v -O3 -omp -ansi_alias -ansi_args -DCOMMON_PTHREAD -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_PTHREAD -DSCOTCH_RENAME
CLIBFLAGS =
LDFLAGS = -lm
CP = cp
LEX = lex
LN = ln
MKDIR = mkdir
MV = mv
RANLIB = ranlib
YACC = yacc

View File

@ -0,0 +1,21 @@
EXE =
LIB = .a
OBJ = .o
MAKE = make
AR = ar
ARFLAGS = -ruv
CAT = cat
CCS = gcc
CCP = mpicc
CCD = gcc
CFLAGS = -O3 -Drestrict=__restrict -DCOMMON_FILE_COMPRESS_GZ -DCOMMON_PTHREAD -DCOMMON_PTHREAD_BARRIER -DCOMMON_RANDOM_FIXED_SEED -DCOMMON_TIMING_OLD -DSCOTCH_PTHREAD -DSCOTCH_RENAME
CLIBFLAGS =
LDFLAGS = -lz -lm -lpthread
CP = cp
LEX = flex -Pscotchyy -olex.yy.c
LN = ln
MKDIR = mkdir
MV = mv
RANLIB = ranlib
YACC = bison -pscotchyy -y -b y

View File

@ -0,0 +1,21 @@
EXE =
LIB = .a
OBJ = .o
MAKE = make
AR = ar
ARFLAGS = -ruv
CAT = cat
CCS = icc
CCP = mpicc
CCD = icc
CFLAGS = -O3 -restrict -DCOMMON_FILE_COMPRESS_GZ -DCOMMON_PTHREAD -DCOMMON_PTHREAD_BARRIER -DCOMMON_RANDOM_FIXED_SEED -DCOMMON_TIMING_OLD -DSCOTCH_PTHREAD -DSCOTCH_RENAME
CLIBFLAGS =
LDFLAGS = -lz -lm
CP = cp
LEX = flex -Pscotchyy -olex.yy.c
LN = ln
MKDIR = mkdir
MV = mv
RANLIB = ranlib
YACC = bison -pscotchyy -y -b y

View File

@ -0,0 +1,21 @@
EXE =
LIB = .a
OBJ = .o
MAKE = make
AR = ar
ARFLAGS = -ruv
CAT = cat
CCS = gcc
CCP = mpicc
CCD = mpicc
CFLAGS = -O3 -Drestrict=__restrict -DCOMMON_PTHREAD -DCOMMON_RANDOM_FIXED_SEED -DCOMMON_TIMING_OLD -DSCOTCH_PTHREAD -DSCOTCH_RENAME
CLIBFLAGS =
LDFLAGS = -lm
CP = cp
LEX = flex -Pscotchyy -olex.yy.c
LN = ln
MKDIR = mkdir
MV = mv
RANLIB = ranlib
YACC = bison -pscotchyy -y -b y

View File

@ -0,0 +1,21 @@
EXE =
LIB = .a
OBJ = .o
MAKE = gmake
AR = ar
ARFLAGS = -ruv
CAT = cat
CCS = cc
CCP = mpicc
CCD = mpicc
CFLAGS += -std=c99 -DCOMMON_FILE_COMPRESS_GZ -DCOMMON_PTHREAD -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_PTHREAD -DSCOTCH_RENAME -DSCOTCH_RENAME_PARSER
CLIBFLAGS =
LDFLAGS += -lz -lm -lpthread
CP = cp
LEX = flex -Pscotchyy -olex.yy.c
LN = ln
MKDIR = mkdir
MV = mv
RANLIB = ranlib
YACC = bison -pscotchyy -y -b y

View File

@ -0,0 +1,21 @@
EXE =
LIB = .a
OBJ = .o
MAKE = make
AR = ar
ARFLAGS = -ruv
CAT = cat
CCS = gcc
CCP = mpicc
CCD = gcc
CFLAGS = -O3 -DCOMMON_FILE_COMPRESS_GZ -DCOMMON_PTHREAD -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_RENAME -DSCOTCH_PTHREAD -Drestrict=__restrict
CLIBFLAGS =
LDFLAGS = -lz -lm -pthread
CP = cp
LEX = flex -Pscotchyy -olex.yy.c
LN = ln
MKDIR = mkdir
MV = mv
RANLIB = ranlib
YACC = bison -pscotchyy -y -b y

View File

@ -0,0 +1,21 @@
EXE =
LIB = .a
OBJ = .o
MAKE = make
AR = ar
ARFLAGS = -ruv
CAT = cat
CCS = gcc
CCP = mpicc
CCD = gcc
CFLAGS = -std=c99 -O3 -DCOMMON_FILE_COMPRESS_GZ -DCOMMON_PTHREAD -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_RENAME -DSCOTCH_RENAME_PARSER -DSCOTCH_PTHREAD
CLIBFLAGS =
LDFLAGS = -lz -lm -pthread
CP = cp
LEX = flex -Pscotchyy -D_XOPEN_SOURCE=600 -olex.yy.c
LN = ln
MKDIR = mkdir
MV = mv
RANLIB = ranlib
YACC = bison -pscotchyy -y -b y

View File

@ -0,0 +1,21 @@
EXE =
LIB = .a
OBJ = .o
MAKE = make
AR = ar
ARFLAGS = -ruv
CAT = cat
CCS = gcc
CCP = mpicc
CCD = gcc
CFLAGS = -g -O0 -Drestrict=__restrict -DCOMMON_FILE_COMPRESS_GZ -DCOMMON_PTHREAD -DSCOTCH_DEBUG_ALL -DSCOTCH_DETERMINISTIC -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_RENAME
CLIBFLAGS =
LDFLAGS = -g -lz -lm -pthread
CP = cp
LEX = flex -Pscotchyy -olex.yy.c
LN = ln
MKDIR = mkdir
MV = mv
RANLIB = ranlib
YACC = bison -pscotchyy -y -b y

View File

@ -0,0 +1,21 @@
EXE =
LIB = .a
OBJ = .o
MAKE = make
AR = ar
ARFLAGS = -ruv
CAT = cat
CCS = gcc
CCP = mpicc
CCD = gcc
CFLAGS = -O3 -Drestrict=__restrict -DCOMMON_FILE_COMPRESS_GZ -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_RENAME
CLIBFLAGS =
LDFLAGS = -lz -lm -pthread
CP = cp
LEX = flex -Pscotchyy -olex.yy.c
LN = ln
MKDIR = mkdir
MV = mv
RANLIB = ranlib
YACC = bison -pscotchyy -y -b y

View File

@ -0,0 +1,21 @@
EXE =
LIB = .a
OBJ = .o
MAKE = make
AR = ar
ARFLAGS = -ruv
CAT = cat
CCS = gcc
CCP = mpicc
CCD = gcc
CFLAGS = -pg -O3 -Drestrict=__restrict -DCOMMON_FILE_COMPRESS_GZ -DCOMMON_PTHREAD -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_PTHREAD -DSCOTCH_RENAME
CLIBFLAGS =
LDFLAGS = -lz -lm -pthread
CP = cp
LEX = flex -Pscotchyy -olex.yy.c
LN = ln
MKDIR = mkdir
MV = mv
RANLIB = ranlib
YACC = bison -pscotchyy -y -b y

View File

@ -0,0 +1,21 @@
EXE =
LIB = .so
OBJ = .o
MAKE = make
AR = gcc
ARFLAGS = -shared -o
CAT = cat
CCS = gcc
CCP = mpicc
CCD = gcc
CFLAGS = -O3 -DCOMMON_FILE_COMPRESS_GZ -DCOMMON_PTHREAD -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_RENAME -DSCOTCH_PTHREAD -Drestrict=__restrict
CLIBFLAGS = -shared -fPIC
LDFLAGS = -lz -lm -pthread
CP = cp
LEX = flex -Pscotchyy -olex.yy.c
LN = ln
MKDIR = mkdir
MV = mv
RANLIB = echo
YACC = bison -pscotchyy -y -b y

View File

@ -0,0 +1,21 @@
EXE =
LIB = .so
OBJ = .o
MAKE = make
AR = gcc
ARFLAGS = -shared -o
CAT = cat
CCS = gcc
CCP = mpicc
CCD = gcc
CFLAGS = -g -O0 -Drestrict=__restrict -DCOMMON_FILE_COMPRESS_GZ -DCOMMON_PTHREAD -DSCOTCH_DEBUG_ALL -DSCOTCH_DETERMINISTIC -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_RENAME
CLIBFLAGS = -shared -fPIC
LDFLAGS = -g -lz -lm -pthread
CP = cp
LEX = flex -Pscotchyy -olex.yy.c
LN = ln
MKDIR = mkdir
MV = mv
RANLIB = echo
YACC = bison -pscotchyy -y -b y

View File

@ -0,0 +1,21 @@
EXE =
LIB = .a
OBJ = .o
MAKE = make
AR = ar
ARFLAGS = -ruv
CAT = cat
CCS = gcc
CCP = mpicc
CCD = gcc
CFLAGS = -O3 -Drestrict=__restrict -DCOMMON_FILE_COMPRESS_GZ -DCOMMON_PTHREAD -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_RENAME -DSCOTCH_RENAME_PARSER -DSCOTCH_PTHREAD
CLIBFLAGS =
LDFLAGS = -lz -lpthread -lm -pthread
CP = cp
LEX = flex -Pscotchyy -olex.yy.c
LN = ln
MKDIR = mkdir
MV = mv
RANLIB = ranlib
YACC = bison -pscotchyy -y -b y

View File

@ -0,0 +1,69 @@
# This make include file is intended for building under MinGW32. As is,
# it relies on :
# - pthread-win32 (http://sourceware.org/pthreads-win32/),
# - zlib (http://www.zlib.net/)
# - mpich2 (http://www.mcs.anl.gov/research/projects/mpich2/).
# It must be adapted to reflect your environment, in particular
# installation root directories, include path and library name.
# Since all files are linked with the MPI libraries, this file is
# for compiling PT-Scotch only. To compile Scotch, remove the
# -DSCOTCH_PTSCOTCH flag, as well as all references to MPI in the
# CFLAGS and CLIBFLAGS =
LDFLAGS variables.
EXE =
LIB = .a
OBJ = .o
MAKE = make
AR = ar
ARFLAGS = -ruv
CAT = cat
CCS = gcc
CCP = gcc
CCD = gcc
#--- Compiler/loader flags
CFLAGS_CPL = -O0 -g3
CFLAGS_INC =
CFLAGS_DEF = -DCOMMON_RANDOM_FIXED_SEED -DCOMMON_STUB_FORK -DSCOTCH_PTSCOTCH -DSCOTCH_RENAME -D'pipe(pfds)=_pipe(pfds,1024,0x8000)'
CLIBFLAGS =
LDFLAGS =
PGMFILES=$(PROGRAMFILES)
#--- MPI
MPI_ROOTDIR = $(PGMFILES)/MPICH2
CFLAGS_INC += -I$(MPI_ROOTDIR)/include
#--- Comment/Uncomment for threaded MPI
CLIBFLAGS =
LDFLAGS += -L$(MPI_ROOTDIR)/lib -lm -lmpi
#CLIBFLAGS =
LDFLAGS += -L$(MPI_ROOTDIR)/lib -lm -lmpich2mt
#--- Pthread : Uncomment for pthread support
#PTHREAD_ROOTDIR = $(PGMFILES)/pthread-win32
#CFLAGS_INC += -I$(PTHREAD_ROOTDIR)/include
#CLIBFLAGS =
LDFLAGS += -L$(PTHREAD_ROOTDIR)/lib -lpthreadGC2
#--- zlib: Uncomment for compressed files
#ZLIB_ROOTDIR = $(PGMFILES)/zlib-1.2.3
#CFLAGS_INC += -I$(ZLIB_ROOTDIR)/include
#CLIBFLAGS =
LDFLAGS += -L$(ZLIB_ROOTDIR)/lib -lzdll
#--- COMMON_PTHREAD: Uncomment for compressed files
#CFLAGS_DEF += -DCOMMON_PTHREAD -DCOMMON_FILE_COMPRESS_GZ
#--- SCOTCH_PTHREAD: Uncomment for threaded MPI
#CFLAGS_DEF += -DSCOTCH_PTHREAD
CFLAGS = $(CFLAGS_CPL) $(CFLAGS_INC) $(CFLAGS_DEF)
CP = cp
LEX = flex -Pscotchyy -olex.yy.c
LN = cp
MKDIR = mkdir
MV = mv
RANLIB = ranlib
YACC = bison -pscotchyy -y -b y

View File

@ -0,0 +1,21 @@
EXE =
LIB = .a
OBJ = .o
MAKE = make
AR = ar
ARFLAGS = -ruv
CAT = cat
CCS = cc
CCP = mpicc
CCD = mpicc
CFLAGS = -m64 -O3 -DCOMMON_FILE_COMPRESS_GZ -DCOMMON_PTHREAD -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_PTHREAD -DSCOTCH_RENAME -Du_int32_t=uint32_t -Du_int64_t=uint64_t
CLIBFLAGS =
LDFLAGS = -lz -lm -lrt
CP = cp
LEX = flex -Pscotchyy -olex.yy.c
LN = ln
MKDIR = mkdir
MV = mv
RANLIB = ranlib
YACC = yacc

View File

@ -0,0 +1,21 @@
EXE =
LIB = .a
OBJ = .o
MAKE = gmake
AR = ar
ARFLAGS = ruv
CAT = cat
CCS = xlc
CCP = mpicc
CCD = mpicc
CFLAGS = -n32 -xansi -fullwarn -O2 -DCOMMON_PTHREAD -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_PTHREAD -DSCOTCH_RENAME
CLIBFLAGS =
LDFLAGS = -lm
CP = cp
LEX = lex
LN = ln
MKDIR = mkdir
MV = mv
RANLIB = ranlib
YACC = yacc

View File

@ -0,0 +1,21 @@
EXE =
LIB = .a
OBJ = .o
MAKE = gmake
AR = ar
ARFLAGS = ruv
CAT = cat
CCS = cc
CCP = mpicc
CCD = mpicc
CFLAGS = -Aa -z +DA1.1 +w1 +O4 +Onoinitcheck +Onolimit -DCOMMON_PTHREAD -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_PTHREAD -DSCOTCH_RENAME
CLIBFLAGS =
LDFLAGS = -lm
CP = cp
LEX = lex
LN = ln
MKDIR = mkdir
MV = mv
RANLIB = ranlib
YACC = yacc

View File

@ -0,0 +1,21 @@
EXE =
LIB = .a
OBJ = .o
MAKE = gmake
AR = ar
ARFLAGS = -X64 -ruv
CAT = cat
CCS = xlc_r
CCP = mpcc_r
CCD = xlc_r -I/usr/lpp/ppe.poe/include
CFLAGS = -ma -q64 -qarch=auto -O3 -qstrict -qtune=pwr3 -qlanglvl=extc99 -s -DCOMMON_PTHREAD -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_PTHREAD -DSCOTCH_RENAME -D_ALL_SOURCE
CLIBFLAGS =
LDFLAGS = -bmaxdata:0x80000000 -lpthread -lm
CP = cp
LEX = lex
LN = ln
MKDIR = mkdir
MV = mv
RANLIB = ranlib
YACC = yacc

View File

@ -0,0 +1,21 @@
EXE =
LIB = .a
OBJ = .o
MAKE = gmake
AR = ar
ARFLAGS = -X64 -ruv
CAT = cat
CCS = xlc_r
CCP = mpcc_r
CCD = xlc_r -I/usr/lpp/ppe.poe/include
CFLAGS = -ma -q64 -qarch=auto -O3 -qstrict -qtune=pwr6 -qlanglvl=extc99 -s -DCOMMON_PTHREAD -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_PTHREAD -DSCOTCH_RENAME -D_ALL_SOURCE
CLIBFLAGS =
LDFLAGS = -lpthread -lm
CP = cp
LEX = lex
LN = ln
MKDIR = mkdir
MV = mv
RANLIB = ranlib
YACC = yacc

View File

@ -0,0 +1,21 @@
EXE =
LIB = .a
OBJ = .o
MAKE = gmake
AR = ar
ARFLAGS = -ruv
CAT = cat
CCS = /bgsys/drivers/ppcfloor/comm/bin/mpixlc_r
CCP = /bgsys/drivers/ppcfloor/comm/bin/mpixlc_r
CCD = xlc_r -I/bgsys/drivers/ppcfloor/comm/include
CFLAGS = -O3 -qstrict -qlanglvl=extc99 -qarch=450d -qtune=450 -s -DCOMMON_PTHREAD -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_RENAME -DSCOTCH_DETERMINISTIC -D_ALL_SOURCE
CLIBFLAGS =
LDFLAGS = -lpthread -lm
CP = cp
LEX = lex
LN = ln
MKDIR = mkdir
MV = mv
RANLIB = ranlib
YACC = yacc

View File

@ -0,0 +1,21 @@
EXE =
LIB = .a
OBJ = .o
MAKE = gmake
AR = ar
ARFLAGS = -ruv
CAT = cat
CCS = /bgsys/drivers/ppcfloor/comm/xl/bin/mpixlc_r
CCP = /bgsys/drivers/ppcfloor/comm/xl/bin/mpixlc_r
CCD = xlc_r -I/bgsys/drivers/ppcfloor/comm/xl/include
CFLAGS = -O3 -qstrict -qlanglvl=extc99 -s -DCOMMON_PTHREAD -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_RENAME -DSCOTCH_DETERMINISTIC -D_ALL_SOURCE
CLIBFLAGS =
LDFLAGS = -lpthread -lm
CP = cp
LEX = flex -Pscotchyy -olex.yy.c
LN = ln
MKDIR = mkdir
MV = mv
RANLIB = ranlib
YACC = bison -pscotchyy -y -b y

View File

@ -0,0 +1,21 @@
EXE =
LIB = .a
OBJ = .o
MAKE = gmake
AR = ar
ARFLAGS = -ruv
CAT = cat
CCS = cc
CCP = cc
CCD = cc
CFLAGS = -O3 -c99 -fast -fastsse -DCOMMON_PTHREAD -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_PTHREAD -DSCOTCH_RENAME -DIDXSIZE64
CLIBFLAGS =
LDFLAGS = -lm -lrt
CP = cp
LEX = flex -Pscotchyy -olex.yy.c
LN = ln
MKDIR = mkdir
MV = mv
RANLIB = ranlib
YACC = bison -pscotchyy -y -b y

View File

@ -0,0 +1,21 @@
EXE =
LIB = .a
OBJ = .o
MAKE = gmake
AR = ar
ARFLAGS = -ruv
CAT = cat
CCS = cc
CCP = mpicc
CCD = cc
CFLAGS += -std -fPIC -DCOMMON_FILE_COMPRESS_GZ -DCOMMON_PTHREAD -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_RENAME -DSCOTCH_RENAME_PARSER -DSCOTCH_PTHREAD -Drestrict=__restrict -DIDXSIZE64
CLIBFLAGS =
LDFLAGS += -lz -lm -lthread
CP = cp
LEX = flex -Pscotchyy -olex.yy.c
LN = ln
MKDIR = mkdir
MV = mv
RANLIB = ranlib
YACC = bison -pscotchyy -y -b y

View File

@ -0,0 +1,21 @@
EXE =
LIB = .a
OBJ = .o
MAKE = make
AR = ar
ARFLAGS = -ruv
CAT = cat
CCS = gcc
CCP = mpicc
CCD = gcc
CFLAGS = -O3 -DCOMMON_FILE_COMPRESS_GZ -DCOMMON_PTHREAD -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_RENAME -DSCOTCH_PTHREAD -Drestrict=__restrict -DIDXSIZE64
CLIBFLAGS =
LDFLAGS = -lz -lm -lrt -pthread
CP = cp
LEX = flex -Pscotchyy -olex.yy.c
LN = ln
MKDIR = mkdir
MV = mv
RANLIB = ranlib
YACC = bison -pscotchyy -y -b y

View File

@ -0,0 +1,21 @@
EXE =
LIB = .a
OBJ = .o
MAKE = make
AR = ar
ARFLAGS = -ruv
CAT = cat
CCS = icc
CCP = mpicc
CCD = icc
CFLAGS = -O3 -DCOMMON_FILE_COMPRESS_GZ -DCOMMON_PTHREAD -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_RENAME -DSCOTCH_PTHREAD -restrict -DIDXSIZE64
CLIBFLAGS =
LDFLAGS = -lz -lm -lrt -pthread
CP = cp
LEX = flex -Pscotchyy -olex.yy.c
LN = ln
MKDIR = mkdir
MV = mv
RANLIB = ranlib
YACC = bison -pscotchyy -y -b y

View File

@ -0,0 +1,21 @@
EXE =
LIB = .a
OBJ = .o
MAKE = make
AR = ar
ARFLAGS = -ruv
CAT = cat
CCS = icc
CCP = mpicc
CCD = icc
CFLAGS = -g -O0 -fp-model strict -traceback -check-uninit -fp-stack-check -DCOMMON_FILE_COMPRESS_GZ -DCOMMON_PTHREAD -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_DEBUG_ALL -DSCOTCH_DETERMINISTIC -DSCOTCH_RENAME -restrict -DIDXSIZE64
CLIBFLAGS =
LDFLAGS = -g -lz -lm -lrt -pthread
CP = cp
LEX = flex -Pscotchyy -olex.yy.c
LN = ln
MKDIR = mkdir
MV = mv
RANLIB = ranlib
YACC = bison -pscotchyy -y -b y

View File

@ -0,0 +1,21 @@
EXE =
LIB = .so
OBJ = .o
MAKE = make
AR = gcc
ARFLAGS = -shared -o
CAT = cat
CCS = gcc
CCP = mpicc
CCD = gcc
CFLAGS = -O3 -DCOMMON_FILE_COMPRESS_GZ -DCOMMON_PTHREAD -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_RENAME -DSCOTCH_PTHREAD -Drestrict=__restrict -DIDXSIZE64
CLIBFLAGS = -shared -fPIC
LDFLAGS = -lz -lm -lrt -pthread
CP = cp
LEX = flex -Pscotchyy -olex.yy.c
LN = ln
MKDIR = mkdir
MV = mv
RANLIB = echo
YACC = bison -pscotchyy -y -b y

View File

@ -0,0 +1,13 @@
These three script files can be used to create a Windows DLL from the
PT-Scotch library on a MinGW32 system. They are intended to be called
directly from the src/Make.inc/mingw32 directory and produce results
in the lib directory.
The first two ones must be called from a Unix-like shell window.
The last one must be called from a MSDOS-like command window.
These scripts are intended only as examples. They must be adapted to
reflect your environment, in particular library path and library name.
They have been provided by Yves Secretan (yves.secretan@ete.inrs.ca)
and are licensed under the CeCILL-C libre/free license.

View File

@ -0,0 +1,20 @@
#! /bin/sh
# (C) 2008 Yves Secretan (yves.secretan@ete.inrs.ca)
# This software is governed by the CeCILL-C license under French law
# and abiding by the rules of distribution of free software. You can
# use, modify and/or redistribute the software under the terms of the
# CeCILL-C license as circulated by CEA, CNRS and INRIA at the following
# URL: "http://www.cecill.info".
#
# To be executed in a MSYS window.
#
# This file will link the PT-Scotch DLL. It must be adapted to reflect
# your environment, in particular library path and library name.
export OBJS="../../libscotch/lib*.o"
export LDFLAGS="--shared -Wl,--allow-multiple-definition"
export PGMFILES="/l"
export LDPATH="-L../../../lib -L$PGMFILES/MPICH2/lib -L$PGMFILES/pthread-win32/lib"
export LDLIBS="-lptscotch -lptscotcherr -lmpi -lpthreadGC2"
gcc --output ../../../lib/libptscotch.dll $LDFLAGS $LDPATH $OBJS $LDLIBS

View File

@ -0,0 +1,16 @@
#! /bin/sh
# (C) 2008 Yves Secretan (yves.secretan@ete.inrs.ca)
# This software is governed by the CeCILL-C license under French law
# and abiding by the rules of distribution of free software. You can
# use, modify and/or redistribute the software under the terms of the
# CeCILL-C license as circulated by CEA, CNRS and INRIA at the following
# URL: "http://www.cecill.info".
#
# To be executed in a MSYS window.
#
# This file creates the Exports definition file from the PT-Scotch DLL.
# It must be adapted to reflect your environment, in particular library
# path and library name.
echo EXPORTS > ../../../lib/libptscotch.def
nm ../../../lib/libptscotch.a | grep ' T _SCOTCH_' | sed 's/.* T _//' >> ../../../lib/libptscotch.def

View File

@ -0,0 +1,14 @@
REM (C) 2008 Yves Secretan (yves.secretan@ete.inrs.ca)
REM This software is governed by the CeCILL-C license under French law
REM and abiding by the rules of distribution of free software. You can
REM use, modify and/or redistribute the software under the terms of the
REM CeCILL-C license as circulated by CEA, CNRS and INRIA at the following
REM URL: "http://www.cecill.info".
REM
REM To be executed in a DOS window.
REM
REM This file will create the PT-Scotch DLL. It must be adapted to reflect
REM your environment, in particular library path and library name.
REM
set VC_PATH="C:\Program Files\Microsoft Visual Studio .NET\VC7\BIN"
%VC_PATH%\vcvars32.bat && %VC_PATH%\lib.exe /def:..\..\..\lib\libptscotch.def /out:..\..\..\lib\libptscotch.dll

134
scotch_6.0.3/src/Makefile Normal file
View File

@ -0,0 +1,134 @@
## Copyright 2004,2007,2008,2010-2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS
##
## This file is part of the Scotch software package for static mapping,
## graph partitioning and sparse matrix ordering.
##
## This software is governed by the CeCILL-C license under French law
## and abiding by the rules of distribution of free software. You can
## use, modify and/or redistribute the software under the terms of the
## CeCILL-C license as circulated by CEA, CNRS and INRIA at the following
## URL: "http://www.cecill.info".
##
## As a counterpart to the access to the source code and rights to copy,
## modify and redistribute granted by the license, users are provided
## only with a limited warranty and the software's author, the holder of
## the economic rights, and the successive licensors have only limited
## liability.
##
## In this respect, the user's attention is drawn to the risks associated
## with loading, using, modifying and/or developing or reproducing the
## software by the user in light of its specific status of free software,
## that may mean that it is complicated to manipulate, and that also
## therefore means that it is reserved for developers and experienced
## professionals having in-depth computer knowledge. Users are therefore
## encouraged to load and test the software's suitability as regards
## their requirements in conditions enabling the security of their
## systems and/or data to be ensured and, more generally, to use and
## operate it in the same conditions as regards security.
##
## The fact that you are presently reading this means that you have had
## knowledge of the CeCILL-C license and that you accept its terms.
##
VERSION = 6
RELEASE = 0
PATCHLEVEL = 3
.PHONY : clean default install ptscotch realclean required scotch
default : scotch
required : Makefile.inc ../bin ../include ../lib
Makefile.inc :
@echo "#####################################################################"
@echo "BEFORE COMPILING Scotch OR PT-Scotch, YOU SHOULD HAVE AN APPROPRIATE"
@echo "Makefile.inc FILE IN THIS DIRECTORY. PLEASE LOOK INTO DIRECTORY"
@echo " ./Make.inc FOR AN EXISTING Makefile.inc FILE THAT FITS YOUR NEED, OR"
@echo "USE THEM AS MODELS IN CASE YOU NEED TO BUILD A NEW ONE FOR YOUR"
@echo "PARTICULAR PLATFORM."
@echo "#####################################################################"
@echo "Then, type \"make scotch\" (default) for the sequential library"
@echo "and software, or \"make ptscotch\" for the parallel library and"
@echo "software."
@exit 1
include Makefile.inc
prefix ?= /usr/local
bindir ?= $(prefix)/bin
includedir ?= $(prefix)/include
libdir ?= $(prefix)/lib
datarootdir ?= $(prefix)/share
mandir ?= $(datarootdir)/man
../bin :
-$(MKDIR) ../bin
../include :
-$(MKDIR) ../include
../lib :
-$(MKDIR) ../lib
$(bindir) :
-$(MKDIR) $(bindir)
$(datarootdir) :
-$(MKDIR) $(datarootdir)
$(includedir) :
-$(MKDIR) $(includedir)
$(libdir) :
-$(MKDIR) $(libdir)
$(mandir) : $(datarootdir)
-$(MKDIR) $(mandir)
$(mandir)/man1 : $(mandir)
-$(MKDIR) $(mandir)/man1
scotch : required
(cd libscotch ; $(MAKE) VERSION=$(VERSION) RELEASE=$(RELEASE) PATCHLEVEL=$(PATCHLEVEL) scotch && $(MAKE) install)
(cd scotch ; $(MAKE) VERSION=$(VERSION) RELEASE=$(RELEASE) PATCHLEVEL=$(PATCHLEVEL) scotch && $(MAKE) install)
(cd libscotchmetis ; $(MAKE) scotch && $(MAKE) install)
ptscotch : required
(cd libscotch ; $(MAKE) VERSION=$(VERSION) RELEASE=$(RELEASE) PATCHLEVEL=$(PATCHLEVEL) ptscotch && $(MAKE) ptinstall)
(cd scotch ; $(MAKE) VERSION=$(VERSION) RELEASE=$(RELEASE) PATCHLEVEL=$(PATCHLEVEL) ptscotch && $(MAKE) ptinstall)
(cd libscotchmetis ; $(MAKE) ptscotch && $(MAKE) ptinstall)
check : scotch
(cd check ; $(MAKE) check)
ptcheck : ptscotch
(cd check ; $(MAKE) ptcheck)
esmumps : scotch
(cd esmumps ; $(MAKE) scotch && $(MAKE) install)
ptesmumps : ptscotch
(cd esmumps ; $(MAKE) ptscotch && $(MAKE) ptinstall)
install : required $(bindir) $(includedir) $(libdir) $(mandir)/man1
-$(CP) -f ../bin/[agm]*$(EXE) $(bindir)
-$(CP) -f ../bin/d[agm]*$(EXE) $(bindir)
-$(CP) -f ../include/*scotch*.h $(includedir)
-$(CP) -f ../lib/*scotch*$(LIB) $(libdir)
-$(CP) -Rf ../man/* $(mandir)
clean : required
(cd libscotch ; $(MAKE) clean)
(cd scotch ; $(MAKE) clean)
(cd libscotchmetis ; $(MAKE) clean)
(cd check ; $(MAKE) clean)
(cd esmumps ; $(MAKE) clean)
realclean : required
(cd libscotch ; $(MAKE) realclean)
(cd scotch ; $(MAKE) realclean)
(cd libscotchmetis ; $(MAKE) realclean)
(cd check ; $(MAKE) realclean)
(cd esmumps ; $(MAKE) realclean)
-$(RM) ../bin/* ../include/* ../lib/*

View File

@ -0,0 +1 @@
../../etc/wmakeFiles/scotch/Makefile.inc.i686_pc_linux2.shlib-OpenFOAM-64Int32

View File

@ -0,0 +1,220 @@
## Copyright 2011,2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS
##
## This file is part of the Scotch software package for static mapping,
## graph partitioning and sparse matrix ordering.
##
## This software is governed by the CeCILL-C license under French law
## and abiding by the rules of distribution of free software. You can
## use, modify and/or redistribute the software under the terms of the
## CeCILL-C license as circulated by CEA, CNRS and INRIA at the following
## URL: "http://www.cecill.info".
##
## As a counterpart to the access to the source code and rights to copy,
## modify and redistribute granted by the license, users are provided
## only with a limited warranty and the software's author, the holder of
## the economic rights, and the successive licensors have only limited
## liability.
##
## In this respect, the user's attention is drawn to the risks associated
## with loading, using, modifying and/or developing or reproducing the
## software by the user in light of its specific status of free software,
## that may mean that it is complicated to manipulate, and that also
## therefore means that it is reserved for developers and experienced
## professionals having in-depth computer knowledge. Users are therefore
## encouraged to load and test the software's suitability as regards
## their requirements in conditions enabling the security of their
## systems and/or data to be ensured and, more generally, to use and
## operate it in the same conditions as regards security.
##
## The fact that you are presently reading this means that you have had
## knowledge of the CeCILL-C license and that you accept its terms.
##
SCOTCHINCLUDEDIR = ../../include
SCOTCHLIBDIR = ../../lib
SCOTCHBINDIR = ../../bin
LIBPTSCOTCH = -lptscotch -lscotch -lptscotcherrexit
LIBSCOTCH = -lscotch -lscotcherrexit
DEPPTSCOTCH = $(SCOTCHLIBDIR)/libptscotch$(LIB)
DEPSCOTCH = $(SCOTCHLIBDIR)/libscotch$(LIB)
EXECP = mpirun -n 4
##
## General inference rules.
##
include ../Makefile.inc
%$(OBJ) : %.c
$(CC) $(CFLAGS) $(CLIBFLAGS) -I$(SCOTCHINCLUDEDIR) -c $(<) -o $(@)
%$(EXE) : %.c
$(CC) $(CFLAGS) -I$(SCOTCHINCLUDEDIR) -L$(SCOTCHLIBDIR) $(<) -o $(@) $(SCOTCHLIBS) $(LDFLAGS)
##
## Project rules.
##
.PHONY : check ptcheck clean realclean
check : realclean
$(MAKE) CC="$(CCS)" CCD="$(CCS)" SCOTCHLIBS="$(LIBSCOTCH)" $(CHECKSCOTCH)
ptcheck : realclean
$(MAKE) CFLAGS="$(CFLAGS) -DSCOTCH_PTSCOTCH" CC="$(CCP)" SCOTCHLIBS="$(LIBPTSCOTCH)" $(CHECKPTSCOTCH)
clean :
-$(RM) *~ *$(OBJ)
realclean : clean
-$(RM) \
test_common_thread \
test_scotch_graph_color \
test_scotch_graph_map \
test_scotch_graph_order \
test_scotch_graph_part_ovl \
test_scotch_dgraph_band \
test_scotch_dgraph_check \
test_scotch_dgraph_coarsen \
test_scotch_dgraph_grow \
test_scotch_dgraph_redist \
test_strat_par \
test_strat_seq
##
## Test cases dependencies.
##
CHECKSCOTCH = check_common_thread \
check_strat_seq \
check_graph_color \
check_graph_map \
check_graph_order \
check_graph_part_ovl \
check_prog_gpart_remap
CHECKPTSCOTCH = check_strat_par \
check_scotch_dgraph_check \
check_scotch_dgraph_band \
check_scotch_dgraph_coarsen \
check_scotch_dgraph_grow \
check_scotch_dgraph_redist \
##
## Todo list.
##
check_dgraph_fold_comm : test_dgraph_fold_comm
$(EXECS) ./test_dgraph_fold_comm data/dgraph_fold_comm_1.txt
test_dgraph_fold_comm : test_dgraph_fold_comm.c
##
check_scotch_dgraph_redist : test_scotch_dgraph_redist
$(EXECP) ./test_scotch_dgraph_redist data/bump.grf
test_scotch_dgraph_redist : test_scotch_dgraph_redist.c
##
check_prog_gpart_remap :
$(EXECS) $(SCOTCHBINDIR)/gpart 32 data/bump_imbal_32.grf /dev/null -rodata/bump_old.map -vmt
##
check_common_thread : test_common_thread
$(EXECS) ./test_common_thread
test_common_thread : test_common_thread.c \
$(SCOTCHLIBDIR)/libscotch$(LIB)
##
check_graph_color : test_scotch_graph_color
$(EXECS) ./test_scotch_graph_color data/bump.grf
test_graph_color : test_scotch_graph_color.c \
$(SCOTCHLIBDIR)/libscotch$(LIB)
##
check_graph_map : test_scotch_graph_map
$(EXECS) ./test_scotch_graph_map data/m4x4.grf
$(EXECS) ./test_scotch_graph_map data/m4x4_b1.grf
$(EXECS) ./test_scotch_graph_map data/m16x16.grf
$(EXECS) ./test_scotch_graph_map data/m16x16_b1.grf
test_graph_map : test_scotch_graph_map.c \
$(SCOTCHLIBDIR)/libscotch$(LIB)
##
check_graph_order : test_scotch_graph_order
$(EXECS) ./test_scotch_graph_order data/bump.grf
$(EXECS) ./test_scotch_graph_order data/bump_b1.grf
test_graph_order : test_scotch_graph_order.c \
$(SCOTCHLIBDIR)/libscotch$(LIB)
##
check_graph_part_ovl : test_scotch_graph_part_ovl
$(EXECS) ./test_scotch_graph_part_ovl 4 data/m16x16.grf /dev/null
$(EXECS) ./test_scotch_graph_part_ovl 4 data/m16x16_b1.grf /dev/null
test_graph_part_ovl : test_scotch_graph_part_ovl.c \
$(SCOTCHLIBDIR)/libscotch$(LIB)
##
check_strat_seq : test_strat_seq
$(EXECS) ./test_strat_seq
test_strat_seq : test_strat_seq.c \
$(SCOTCHLIBDIR)/libscotch$(LIB)
##
check_strat_par : test_strat_par
$(EXECS) ./test_strat_par
test_strat_par : test_strat_par.c \
$(SCOTCHLIBDIR)/libptscotch$(LIB)
##
check_scotch_dgraph_band : test_scotch_dgraph_band
$(EXECP) ./test_scotch_dgraph_band data/bump_b1.grf
test_scotch_dgraph_band : test_scotch_dgraph_band.c \
$(SCOTCHLIBDIR)/libptscotch$(LIB)
##
check_scotch_dgraph_coarsen : test_scotch_dgraph_coarsen
$(EXECP) ./test_scotch_dgraph_coarsen data/bump.grf
$(EXECP) ./test_scotch_dgraph_coarsen data/bump_b1.grf
test_scotch_dgraph_coarsen : test_scotch_dgraph_coarsen.c \
$(SCOTCHLIBDIR)/libptscotch$(LIB)
##
check_scotch_dgraph_check : test_scotch_dgraph_check
$(EXECP) ./test_scotch_dgraph_check data/bump.grf
$(EXECP) ./test_scotch_dgraph_check data/bump_b1.grf
test_scotch_dgraph_check : test_scotch_dgraph_check.c \
$(SCOTCHLIBDIR)/libptscotch$(LIB)
##
check_scotch_dgraph_grow : test_scotch_dgraph_grow
$(EXECP) ./test_scotch_dgraph_grow data/bump.grf
test_scotch_dgraph_grow : test_scotch_dgraph_grow.c \
$(SCOTCHLIBDIR)/libptscotch$(LIB)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,259 @@
0
256 960
0 000
2 1 16
3 0 2 17
3 1 3 18
3 2 4 19
3 3 5 20
3 4 6 21
3 5 7 22
3 6 8 23
3 7 9 24
3 8 10 25
3 9 11 26
3 10 12 27
3 11 13 28
3 12 14 29
3 13 15 30
2 14 31
3 0 17 32
4 1 16 18 33
4 2 17 19 34
4 3 18 20 35
4 4 19 21 36
4 5 20 22 37
4 6 21 23 38
4 7 22 24 39
4 8 23 25 40
4 9 24 26 41
4 10 25 27 42
4 11 26 28 43
4 12 27 29 44
4 13 28 30 45
4 14 29 31 46
3 15 30 47
3 16 33 48
4 17 32 34 49
4 18 33 35 50
4 19 34 36 51
4 20 35 37 52
4 21 36 38 53
4 22 37 39 54
4 23 38 40 55
4 24 39 41 56
4 25 40 42 57
4 26 41 43 58
4 27 42 44 59
4 28 43 45 60
4 29 44 46 61
4 30 45 47 62
3 31 46 63
3 32 49 64
4 33 48 50 65
4 34 49 51 66
4 35 50 52 67
4 36 51 53 68
4 37 52 54 69
4 38 53 55 70
4 39 54 56 71
4 40 55 57 72
4 41 56 58 73
4 42 57 59 74
4 43 58 60 75
4 44 59 61 76
4 45 60 62 77
4 46 61 63 78
3 47 62 79
3 48 65 80
4 49 64 66 81
4 50 65 67 82
4 51 66 68 83
4 52 67 69 84
4 53 68 70 85
4 54 69 71 86
4 55 70 72 87
4 56 71 73 88
4 57 72 74 89
4 58 73 75 90
4 59 74 76 91
4 60 75 77 92
4 61 76 78 93
4 62 77 79 94
3 63 78 95
3 64 81 96
4 65 80 82 97
4 66 81 83 98
4 67 82 84 99
4 68 83 85 100
4 69 84 86 101
4 70 85 87 102
4 71 86 88 103
4 72 87 89 104
4 73 88 90 105
4 74 89 91 106
4 75 90 92 107
4 76 91 93 108
4 77 92 94 109
4 78 93 95 110
3 79 94 111
3 80 97 112
4 81 96 98 113
4 82 97 99 114
4 83 98 100 115
4 84 99 101 116
4 85 100 102 117
4 86 101 103 118
4 87 102 104 119
4 88 103 105 120
4 89 104 106 121
4 90 105 107 122
4 91 106 108 123
4 92 107 109 124
4 93 108 110 125
4 94 109 111 126
3 95 110 127
3 96 113 128
4 97 112 114 129
4 98 113 115 130
4 99 114 116 131
4 100 115 117 132
4 101 116 118 133
4 102 117 119 134
4 103 118 120 135
4 104 119 121 136
4 105 120 122 137
4 106 121 123 138
4 107 122 124 139
4 108 123 125 140
4 109 124 126 141
4 110 125 127 142
3 111 126 143
3 112 129 144
4 113 128 130 145
4 114 129 131 146
4 115 130 132 147
4 116 131 133 148
4 117 132 134 149
4 118 133 135 150
4 119 134 136 151
4 120 135 137 152
4 121 136 138 153
4 122 137 139 154
4 123 138 140 155
4 124 139 141 156
4 125 140 142 157
4 126 141 143 158
3 127 142 159
3 128 145 160
4 129 144 146 161
4 130 145 147 162
4 131 146 148 163
4 132 147 149 164
4 133 148 150 165
4 134 149 151 166
4 135 150 152 167
4 136 151 153 168
4 137 152 154 169
4 138 153 155 170
4 139 154 156 171
4 140 155 157 172
4 141 156 158 173
4 142 157 159 174
3 143 158 175
3 144 161 176
4 145 160 162 177
4 146 161 163 178
4 147 162 164 179
4 148 163 165 180
4 149 164 166 181
4 150 165 167 182
4 151 166 168 183
4 152 167 169 184
4 153 168 170 185
4 154 169 171 186
4 155 170 172 187
4 156 171 173 188
4 157 172 174 189
4 158 173 175 190
3 159 174 191
3 160 177 192
4 161 176 178 193
4 162 177 179 194
4 163 178 180 195
4 164 179 181 196
4 165 180 182 197
4 166 181 183 198
4 167 182 184 199
4 168 183 185 200
4 169 184 186 201
4 170 185 187 202
4 171 186 188 203
4 172 187 189 204
4 173 188 190 205
4 174 189 191 206
3 175 190 207
3 176 193 208
4 177 192 194 209
4 178 193 195 210
4 179 194 196 211
4 180 195 197 212
4 181 196 198 213
4 182 197 199 214
4 183 198 200 215
4 184 199 201 216
4 185 200 202 217
4 186 201 203 218
4 187 202 204 219
4 188 203 205 220
4 189 204 206 221
4 190 205 207 222
3 191 206 223
3 192 209 224
4 193 208 210 225
4 194 209 211 226
4 195 210 212 227
4 196 211 213 228
4 197 212 214 229
4 198 213 215 230
4 199 214 216 231
4 200 215 217 232
4 201 216 218 233
4 202 217 219 234
4 203 218 220 235
4 204 219 221 236
4 205 220 222 237
4 206 221 223 238
3 207 222 239
3 208 225 240
4 209 224 226 241
4 210 225 227 242
4 211 226 228 243
4 212 227 229 244
4 213 228 230 245
4 214 229 231 246
4 215 230 232 247
4 216 231 233 248
4 217 232 234 249
4 218 233 235 250
4 219 234 236 251
4 220 235 237 252
4 221 236 238 253
4 222 237 239 254
3 223 238 255
2 224 241
3 225 240 242
3 226 241 243
3 227 242 244
3 228 243 245
3 229 244 246
3 230 245 247
3 231 246 248
3 232 247 249
3 233 248 250
3 234 249 251
3 235 250 252
3 236 251 253
3 237 252 254
3 238 253 255
2 239 254

View File

@ -0,0 +1,259 @@
0
256 960
1 000
2 2 17
3 1 3 18
3 2 4 19
3 3 5 20
3 4 6 21
3 5 7 22
3 6 8 23
3 7 9 24
3 8 10 25
3 9 11 26
3 10 12 27
3 11 13 28
3 12 14 29
3 13 15 30
3 14 16 31
2 15 32
3 1 18 33
4 2 17 19 34
4 3 18 20 35
4 4 19 21 36
4 5 20 22 37
4 6 21 23 38
4 7 22 24 39
4 8 23 25 40
4 9 24 26 41
4 10 25 27 42
4 11 26 28 43
4 12 27 29 44
4 13 28 30 45
4 14 29 31 46
4 15 30 32 47
3 16 31 48
3 17 34 49
4 18 33 35 50
4 19 34 36 51
4 20 35 37 52
4 21 36 38 53
4 22 37 39 54
4 23 38 40 55
4 24 39 41 56
4 25 40 42 57
4 26 41 43 58
4 27 42 44 59
4 28 43 45 60
4 29 44 46 61
4 30 45 47 62
4 31 46 48 63
3 32 47 64
3 33 50 65
4 34 49 51 66
4 35 50 52 67
4 36 51 53 68
4 37 52 54 69
4 38 53 55 70
4 39 54 56 71
4 40 55 57 72
4 41 56 58 73
4 42 57 59 74
4 43 58 60 75
4 44 59 61 76
4 45 60 62 77
4 46 61 63 78
4 47 62 64 79
3 48 63 80
3 49 66 81
4 50 65 67 82
4 51 66 68 83
4 52 67 69 84
4 53 68 70 85
4 54 69 71 86
4 55 70 72 87
4 56 71 73 88
4 57 72 74 89
4 58 73 75 90
4 59 74 76 91
4 60 75 77 92
4 61 76 78 93
4 62 77 79 94
4 63 78 80 95
3 64 79 96
3 65 82 97
4 66 81 83 98
4 67 82 84 99
4 68 83 85 100
4 69 84 86 101
4 70 85 87 102
4 71 86 88 103
4 72 87 89 104
4 73 88 90 105
4 74 89 91 106
4 75 90 92 107
4 76 91 93 108
4 77 92 94 109
4 78 93 95 110
4 79 94 96 111
3 80 95 112
3 81 98 113
4 82 97 99 114
4 83 98 100 115
4 84 99 101 116
4 85 100 102 117
4 86 101 103 118
4 87 102 104 119
4 88 103 105 120
4 89 104 106 121
4 90 105 107 122
4 91 106 108 123
4 92 107 109 124
4 93 108 110 125
4 94 109 111 126
4 95 110 112 127
3 96 111 128
3 97 114 129
4 98 113 115 130
4 99 114 116 131
4 100 115 117 132
4 101 116 118 133
4 102 117 119 134
4 103 118 120 135
4 104 119 121 136
4 105 120 122 137
4 106 121 123 138
4 107 122 124 139
4 108 123 125 140
4 109 124 126 141
4 110 125 127 142
4 111 126 128 143
3 112 127 144
3 113 130 145
4 114 129 131 146
4 115 130 132 147
4 116 131 133 148
4 117 132 134 149
4 118 133 135 150
4 119 134 136 151
4 120 135 137 152
4 121 136 138 153
4 122 137 139 154
4 123 138 140 155
4 124 139 141 156
4 125 140 142 157
4 126 141 143 158
4 127 142 144 159
3 128 143 160
3 129 146 161
4 130 145 147 162
4 131 146 148 163
4 132 147 149 164
4 133 148 150 165
4 134 149 151 166
4 135 150 152 167
4 136 151 153 168
4 137 152 154 169
4 138 153 155 170
4 139 154 156 171
4 140 155 157 172
4 141 156 158 173
4 142 157 159 174
4 143 158 160 175
3 144 159 176
3 145 162 177
4 146 161 163 178
4 147 162 164 179
4 148 163 165 180
4 149 164 166 181
4 150 165 167 182
4 151 166 168 183
4 152 167 169 184
4 153 168 170 185
4 154 169 171 186
4 155 170 172 187
4 156 171 173 188
4 157 172 174 189
4 158 173 175 190
4 159 174 176 191
3 160 175 192
3 161 178 193
4 162 177 179 194
4 163 178 180 195
4 164 179 181 196
4 165 180 182 197
4 166 181 183 198
4 167 182 184 199
4 168 183 185 200
4 169 184 186 201
4 170 185 187 202
4 171 186 188 203
4 172 187 189 204
4 173 188 190 205
4 174 189 191 206
4 175 190 192 207
3 176 191 208
3 177 194 209
4 178 193 195 210
4 179 194 196 211
4 180 195 197 212
4 181 196 198 213
4 182 197 199 214
4 183 198 200 215
4 184 199 201 216
4 185 200 202 217
4 186 201 203 218
4 187 202 204 219
4 188 203 205 220
4 189 204 206 221
4 190 205 207 222
4 191 206 208 223
3 192 207 224
3 193 210 225
4 194 209 211 226
4 195 210 212 227
4 196 211 213 228
4 197 212 214 229
4 198 213 215 230
4 199 214 216 231
4 200 215 217 232
4 201 216 218 233
4 202 217 219 234
4 203 218 220 235
4 204 219 221 236
4 205 220 222 237
4 206 221 223 238
4 207 222 224 239
3 208 223 240
3 209 226 241
4 210 225 227 242
4 211 226 228 243
4 212 227 229 244
4 213 228 230 245
4 214 229 231 246
4 215 230 232 247
4 216 231 233 248
4 217 232 234 249
4 218 233 235 250
4 219 234 236 251
4 220 235 237 252
4 221 236 238 253
4 222 237 239 254
4 223 238 240 255
3 224 239 256
2 225 242
3 226 241 243
3 227 242 244
3 228 243 245
3 229 244 246
3 230 245 247
3 231 246 248
3 232 247 249
3 233 248 250
3 234 249 251
3 235 250 252
3 236 251 253
3 237 252 254
3 238 253 255
3 239 254 256
2 240 255

View File

@ -0,0 +1,19 @@
0
16 48
0 000
2 1 4
3 0 2 5
3 1 3 6
2 2 7
3 0 5 8
4 1 4 6 9
4 2 5 7 10
3 3 6 11
3 4 9 12
4 5 8 10 13
4 6 9 11 14
3 7 10 15
2 8 13
3 9 12 14
3 10 13 15
2 11 14

View File

@ -0,0 +1,19 @@
0
16 48
1 000
2 2 5
3 1 3 6
3 2 4 7
2 3 8
3 1 6 9
4 2 5 7 10
4 3 6 8 11
3 4 7 12
3 5 10 13
4 6 9 11 14
4 7 10 12 15
3 8 11 16
2 9 14
3 10 13 15
3 11 14 16
2 12 15

View File

@ -0,0 +1,207 @@
/* Copyright 2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS
**
** This file is part of the Scotch software package for static mapping,
** graph partitioning and sparse matrix ordering.
**
** This software is governed by the CeCILL-C license under French law
** and abiding by the rules of distribution of free software. You can
** use, modify and/or redistribute the software under the terms of the
** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following
** URL: "http://www.cecill.info".
**
** As a counterpart to the access to the source code and rights to copy,
** modify and redistribute granted by the license, users are provided
** only with a limited warranty and the software's author, the holder of
** the economic rights, and the successive licensors have only limited
** liability.
**
** In this respect, the user's attention is drawn to the risks associated
** with loading, using, modifying and/or developing or reproducing the
** software by the user in light of its specific status of free software,
** that may mean that it is complicated to manipulate, and that also
** therefore means that it is reserved for developers and experienced
** professionals having in-depth computer knowledge. Users are therefore
** encouraged to load and test the software's suitability as regards
** their requirements in conditions enabling the security of their
** systems and/or data to be ensured and, more generally, to use and
** operate it in the same conditions as regards security.
**
** The fact that you are presently reading this means that you have had
** knowledge of the CeCILL-C license and that you accept its terms.
*/
/************************************************************/
/** **/
/** NAME : test_common_thread.c **/
/** **/
/** AUTHOR : Francois PELLEGRINI **/
/** **/
/** FUNCTION : This module tests the sequential **/
/** strategy building routines. **/
/** **/
/** DATES : # Version 6.0 : from : 04 nov 2012 **/
/** to 23 sep 2014 **/
/** **/
/************************************************************/
/*
** The defines and includes.
*/
#ifndef _XOPEN_SOURCE
#define _XOPEN_SOURCE 600
#endif /* _XOPEN_SOURCE */
#ifndef __USE_XOPEN2K
#define __USE_XOPEN2K /* For POSIX pthread_barrier_t */
#endif /* __USE_XOPEN2K */
#include <stdio.h>
#if ((defined COMMON_PTHREAD) || (defined SCOTCH_PTHREAD))
#include <pthread.h>
#endif /* ((defined COMMON_PTHREAD) || (defined SCOTCH_PTHREAD)) */
#include "../libscotch/module.h"
#include "../libscotch/common.h"
#define COMPVAL(n) (((n) * ((n) + 1)) / 2)
/*
** The type and structure definitions.
*/
/*+ The block data structure +*/
typedef struct TestThreadGroup_ {
ThreadGroupHeader thrddat; /*+ Thread handling data +*/
int redusum; /*+ Value to compare reduction to +*/
} TestThreadGroup;
/*+ The thread-specific data block. +*/
typedef struct TestThread_ {
ThreadHeader thrddat; /*+ Thread management data +*/
int reduval; /*+ Value to reduce +*/
int scanval; /*+ Value for scan +*/
int dummval; /*+ Dummy value for scan +*/
} TestThread;
/*************************/
/* */
/* The threaded routine. */
/* */
/*************************/
#if ((defined COMMON_PTHREAD) || (defined SCOTCH_PTHREAD))
static
void
testReduce (
TestThread * restrict const tlocptr, /* Pointer to local thread */
void * restrict const vlocptr, /* Pointer to local value */
void * restrict const vremptr) /* Pointer to remote value */
{
TestThread * restrict const tremptr = (TestThread *) vremptr;
tlocptr->reduval += tremptr->reduval;
}
static
void
testScan (
TestThread * restrict const tlocptr, /* Pointer to local thread */
int * restrict const vlocptr, /* Pointer to local value */
int * restrict const vremptr, /* Pointer to remote value */
const int phasval) /* Phase index */
{
vlocptr[1 - phasval] = vlocptr[phasval] + ((vremptr == NULL) ? 0 : vremptr[phasval]);
}
static
int
testThreads (
TestThread * restrict thrdptr)
{
TestThreadGroup * restrict const grouptr = (TestThreadGroup *) (thrdptr->thrddat.grouptr);
const int thrdnbr = grouptr->thrddat.thrdnbr;
const int thrdnum = thrdptr->thrddat.thrdnum;
int o;
printf ("%d: running\n", thrdnum);
o = 0;
if (thrdnum == 0)
printf ("Performing reduction\n");
threadBarrier (thrdptr);
thrdptr->reduval = 1 + thrdptr->thrddat.thrdnum;
threadReduce (thrdptr, thrdptr, (ThreadReduceFunc) testReduce, 0);
if ((thrdnum == 0) && /* Test reduction result on thread 0 */
(thrdptr->reduval != grouptr->redusum)) {
printf ("0: invalid reduction operator\n");
o = 1;
}
if (thrdnum == 0)
printf ("Performing scan\n");
threadBarrier (thrdptr);
thrdptr->scanval = 1 + thrdptr->thrddat.thrdnum;
threadScan (thrdptr, &thrdptr->scanval, (ThreadScanFunc) testScan);
if (thrdptr->scanval != COMPVAL (thrdnum + 1)) {
printf ("%d: invalid scan operator\n", thrdnum);
o = 1;
}
threadBarrier (thrdptr);
return (o);
}
#endif /* ((defined COMMON_PTHREAD) || (defined SCOTCH_PTHREAD)) */
/*********************/
/* */
/* The main routine. */
/* */
/*********************/
int
main (
int argc,
char * argv[])
{
TestThreadGroup groudat;
#if ((defined COMMON_PTHREAD) || (defined SCOTCH_PTHREAD))
TestThread * restrict thrdtab;
int thrdnbr;
#endif /* ((defined COMMON_PTHREAD) || (defined SCOTCH_PTHREAD)) */
SCOTCH_errorProg (argv[0]);
#if ((defined COMMON_PTHREAD) || (defined SCOTCH_PTHREAD))
thrdnbr = SCOTCH_PTHREAD_NUMBER;
groudat.redusum = COMPVAL (thrdnbr);
if ((thrdtab = malloc (thrdnbr * sizeof (TestThread))) == NULL) {
errorPrint ("main: out of memory");
return (1);
}
if (threadLaunch (&groudat, thrdtab, sizeof (TestThread), (ThreadLaunchStartFunc) testThreads, (ThreadLaunchJoinFunc) NULL,
thrdnbr, THREADCANBARRIER | THREADCANREDUCE | THREADCANSCAN) != 0) {
errorPrint ("main: cannot launch or run threads");
return (1);
}
#else /* ((defined COMMON_PTHREAD) || (defined SCOTCH_PTHREAD)) */
printf ("Scotch not compiled with either COMMON_PTHREAD or SCOTCH_PTHREAD\n");
#endif /* ((defined COMMON_PTHREAD) || (defined SCOTCH_PTHREAD)) */
free (thrdtab);
return (0);
}

View File

@ -0,0 +1,135 @@
/* Copyright 2014 IPB, Universite de Bordeaux, INRIA & CNRS
**
** This file is part of the Scotch software package for static mapping,
** graph partitioning and sparse matrix ordering.
**
** This software is governed by the CeCILL-C license under French law
** and abiding by the rules of distribution of free software. You can
** use, modify and/or redistribute the software under the terms of the
** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following
** URL: "http://www.cecill.info".
**
** As a counterpart to the access to the source code and rights to copy,
** modify and redistribute granted by the license, users are provided
** only with a limited warranty and the software's author, the holder of
** the economic rights, and the successive licensors have only limited
** liability.
**
** In this respect, the user's attention is drawn to the risks associated
** with loading, using, modifying and/or developing or reproducing the
** software by the user in light of its specific status of free software,
** that may mean that it is complicated to manipulate, and that also
** therefore means that it is reserved for developers and experienced
** professionals having in-depth computer knowledge. Users are therefore
** encouraged to load and test the software's suitability as regards
** their requirements in conditions enabling the security of their
** systems and/or data to be ensured and, more generally, to use and
** operate it in the same conditions as regards security.
**
** The fact that you are presently reading this means that you have had
** knowledge of the CeCILL-C license and that you accept its terms.
*/
/************************************************************/
/** **/
/** NAME : test_scotch_arch.c **/
/** **/
/** AUTHOR : Francois PELLEGRINI **/
/** **/
/** FUNCTION : This module tests the operation of **/
/** the SCOTCH_arch*() routines. **/
/** **/
/** DATES : # Version 6.0 : from : 25 jun 2014 **/
/** to 25 jun 2014 **/
/** **/
/************************************************************/
/*
** The defines and includes.
*/
#include <stdio.h>
#if (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H))
#include <stdint.h>
#endif /* (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) */
#include <stdlib.h>
#include <string.h>
#include "scotch.h"
int
SCOTCH_Arch archdat;
/*********************/
/* */
/* The main routine. */
/* */
/*********************/
int
main (
int argc,
char * argv[])
{
SCOTCH_Num baseval;
SCOTCH_Num vertnbr;
SCOTCH_Num vertnum;
SCOTCH_Num colonbr;
SCOTCH_Num colonum;
SCOTCH_Num * colotab;
SCOTCH_Num * cnbrtab;
SCOTCH_errorProg (argv[0]);
if (SCOTCH_graphInit (&grafdat) != 0) { /* Initialize source graph */
SCOTCH_errorPrint ("main: cannot initialize graph");
return (1);
}
if ((fileptr = fopen (argv[1], "r")) == NULL) {
SCOTCH_errorPrint ("main: cannot open file");
return (1);
}
if (SCOTCH_graphLoad (&grafdat, fileptr, -1, 0) != 0) { /* Read source graph */
SCOTCH_errorPrint ("main: cannot load graph");
return (1);
}
fclose (fileptr);
SCOTCH_graphSize (&grafdat, &vertnbr, NULL);
if ((colotab = malloc (vertnbr * sizeof (SCOTCH_Num))) == NULL) {
SCOTCH_errorPrint ("main: out of memory (1)");
return (1);
}
if ((cnbrtab = malloc (vertnbr * sizeof (SCOTCH_Num))) == NULL) {
SCOTCH_errorPrint ("main: out of memory (1)");
return (1);
}
memset (cnbrtab, 0, vertnbr * sizeof (SCOTCH_Num));
if (SCOTCH_graphColor (&grafdat, colotab, &colonbr, 0) != 0) {
SCOTCH_errorPrint ("main: cannot color graph");
return (1);
}
printf ("Number of colors: %ld\n", (long) colonbr);
for (vertnum = 0; vertnum < vertnbr; vertnum ++) /* Sum-up color histogram */
cnbrtab[colotab[vertnum]] ++;
for (colonum = 0; colonum < colonbr; colonum ++)
printf ("Color %5ld: %ld\n",
(long) colonum,
(long) cnbrtab[colonum]);
free (cnbrtab);
free (colotab);
SCOTCH_graphExit (&grafdat);
return (0);
}

View File

@ -0,0 +1,207 @@
/* Copyright 2011,2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS
**
** This file is part of the Scotch software package for static mapping,
** graph partitioning and sparse matrix ordering.
**
** This software is governed by the CeCILL-C license under French law
** and abiding by the rules of distribution of free software. You can
** use, modify and/or redistribute the software under the terms of the
** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following
** URL: "http://www.cecill.info".
**
** As a counterpart to the access to the source code and rights to copy,
** modify and redistribute granted by the license, users are provided
** only with a limited warranty and the software's author, the holder of
** the economic rights, and the successive licensors have only limited
** liability.
**
** In this respect, the user's attention is drawn to the risks associated
** with loading, using, modifying and/or developing or reproducing the
** software by the user in light of its specific status of free software,
** that may mean that it is complicated to manipulate, and that also
** therefore means that it is reserved for developers and experienced
** professionals having in-depth computer knowledge. Users are therefore
** encouraged to load and test the software's suitability as regards
** their requirements in conditions enabling the security of their
** systems and/or data to be ensured and, more generally, to use and
** operate it in the same conditions as regards security.
**
** The fact that you are presently reading this means that you have had
** knowledge of the CeCILL-C license and that you accept its terms.
*/
/************************************************************/
/** **/
/** NAME : test_scotch_dgraph_band.c **/
/** **/
/** AUTHOR : Francois PELLEGRINI **/
/** **/
/** FUNCTION : This module tests the operation of **/
/** the SCOTCH_dgraphBand() routine. **/
/** **/
/** DATES : # Version 6.0 : from : 10 nov 2011 **/
/** to 23 sep 2014 **/
/** **/
/************************************************************/
/*
** The defines and includes.
*/
#include <mpi.h>
#include <stdio.h>
#if (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H))
#include <stdint.h>
#endif /* (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) */
#include <stdlib.h>
#include <sys/time.h>
#include <sys/types.h>
#include <pthread.h>
#include <unistd.h>
#include "ptscotch.h"
#define errorProg SCOTCH_errorProg
#define errorPrint SCOTCH_errorPrint
/*********************/
/* */
/* The main routine. */
/* */
/*********************/
int
main (
int argc,
char * argv[])
{
MPI_Comm proccomm;
int procglbnbr; /* Number of processes sharing graph data */
int proclocnum; /* Number of this process */
SCOTCH_Num vertglbnbr;
SCOTCH_Num vertlocnbr;
SCOTCH_Num * fronloctab;
SCOTCH_Num baseval;
SCOTCH_Dgraph grafdat;
SCOTCH_Dgraph bandgrafdat;
SCOTCH_Num bandvertglbnbr;
SCOTCH_Num bandvertlocnbr;
SCOTCH_Num * bandvlblloctab;
FILE * file;
int procnum;
#ifdef SCOTCH_PTHREAD
int thrdlvlreqval;
int thrdlvlproval;
#endif /* SCOTCH_PTHREAD */
errorProg (argv[0]);
#ifdef SCOTCH_PTHREAD
thrdlvlreqval = MPI_THREAD_MULTIPLE;
if (MPI_Init_thread (&argc, &argv, thrdlvlreqval, &thrdlvlproval) != MPI_SUCCESS)
errorPrint ("main: Cannot initialize (1)");
if (thrdlvlreqval > thrdlvlproval)
errorPrint ("main: MPI implementation is not thread-safe: recompile without SCOTCH_PTHREAD");
#else /* SCOTCH_PTHREAD */
if (MPI_Init (&argc, &argv) != MPI_SUCCESS)
errorPrint ("main: Cannot initialize (2)");
#endif /* SCOTCH_PTHREAD */
if (argc != 2) {
errorPrint ("main: invalid number of parameters");
exit (1);
}
proccomm = MPI_COMM_WORLD;
MPI_Comm_size (proccomm, &procglbnbr); /* Get communicator data */
MPI_Comm_rank (proccomm, &proclocnum);
fprintf (stderr, "Proc %2d of %2d, pid %d\n", proclocnum, procglbnbr, getpid ());
#ifndef SCOTCH_CHECK_AUTO
if (proclocnum == 0) { /* Synchronize on keybord input */
char c;
printf ("Waiting for key press...\n");
scanf ("%c", &c);
}
#endif /* SCOTCH_CHECK_AUTO */
if (MPI_Barrier (proccomm) != MPI_SUCCESS) { /* Synchronize for debug */
errorPrint ("main: cannot communicate");
return (1);
}
if (SCOTCH_dgraphInit (&grafdat, proccomm) != 0) { /* Initialize source graph */
errorPrint ("main: cannot initialize graph (1)");
return (1);
}
file = NULL;
if ((proclocnum == 0) &&
((file = fopen (argv[1], "r")) == NULL)) {
errorPrint ("main: cannot open graph file");
return (1);
}
if (SCOTCH_dgraphLoad (&grafdat, file, 0, 0) != 0) {
errorPrint ("main: cannot load graph");
return (1);
}
if (file != NULL)
fclose (file);
if (MPI_Barrier (proccomm) != MPI_SUCCESS) { /* Synchronize for debug */
errorPrint ("main: cannot communicate");
return (1);
}
SCOTCH_dgraphData (&grafdat, NULL, &vertglbnbr, &vertlocnbr, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
if ((fronloctab = malloc (vertlocnbr * sizeof (SCOTCH_Num))) == NULL) {
errorPrint ("main: cannot allocate frontier array");
return (1);
}
if (SCOTCH_dgraphInit (&bandgrafdat, proccomm) != 0) { /* Initialize band graph */
errorPrint ("main: cannot initialize graph (2)");
return (1);
}
fronloctab[0] = 0;
if (SCOTCH_dgraphBand (&grafdat, (proclocnum == 1) ? 1 : 0, fronloctab, 4, &bandgrafdat) != 0) {
errorPrint ("main: cannot compute band graph");
return (1);
}
SCOTCH_dgraphData (&bandgrafdat, &baseval, &bandvertglbnbr, &bandvertlocnbr, NULL, NULL, NULL, NULL, NULL, &bandvlblloctab, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
for (procnum = 0; procnum < procglbnbr; procnum ++) {
SCOTCH_Num bandvertlocnum;
MPI_Barrier (proccomm);
if (procnum == proclocnum) {
if ((file = fopen ("/tmp/test_scotch_dgraph_band.map", (procnum == 0) ? "w" : "a+")) == NULL) {
errorPrint ("main: cannot open mapping file");
return (1);
}
if (procnum == 0)
fprintf (file, "%ld\n", (long) bandvertglbnbr);
for (bandvertlocnum = 0; bandvertlocnum < bandvertlocnbr; bandvertlocnum ++)
fprintf (file, "%ld\t1\n", (long) bandvlblloctab[bandvertlocnum]);
fclose (file);
}
}
SCOTCH_dgraphExit (&bandgrafdat);
SCOTCH_dgraphExit (&grafdat);
MPI_Finalize ();
exit (0);
}

View File

@ -0,0 +1,160 @@
/* Copyright 2014 IPB, Universite de Bordeaux, INRIA & CNRS
**
** This file is part of the Scotch software package for static mapping,
** graph partitioning and sparse matrix ordering.
**
** This software is governed by the CeCILL-C license under French law
** and abiding by the rules of distribution of free software. You can
** use, modify and/or redistribute the software under the terms of the
** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following
** URL: "http://www.cecill.info".
**
** As a counterpart to the access to the source code and rights to copy,
** modify and redistribute granted by the license, users are provided
** only with a limited warranty and the software's author, the holder of
** the economic rights, and the successive licensors have only limited
** liability.
**
** In this respect, the user's attention is drawn to the risks associated
** with loading, using, modifying and/or developing or reproducing the
** software by the user in light of its specific status of free software,
** that may mean that it is complicated to manipulate, and that also
** therefore means that it is reserved for developers and experienced
** professionals having in-depth computer knowledge. Users are therefore
** encouraged to load and test the software's suitability as regards
** their requirements in conditions enabling the security of their
** systems and/or data to be ensured and, more generally, to use and
** operate it in the same conditions as regards security.
**
** The fact that you are presently reading this means that you have had
** knowledge of the CeCILL-C license and that you accept its terms.
*/
/************************************************************/
/** **/
/** NAME : test_scotch_dgraph_check.c **/
/** **/
/** AUTHOR : Francois PELLEGRINI **/
/** **/
/** FUNCTION : This module tests the operation of **/
/** the SCOTCH_dgraphCheck() routine. **/
/** **/
/** DATES : # Version 6.0 : from : 28 sep 2014 **/
/** to 28 sep 2014 **/
/** **/
/************************************************************/
/*
** The defines and includes.
*/
#include <mpi.h>
#include <stdio.h>
#if (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H))
#include <stdint.h>
#endif /* (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) */
#include <stdlib.h>
#include <sys/time.h>
#include <sys/types.h>
#include <pthread.h>
#include <unistd.h>
#include "ptscotch.h"
#define errorProg SCOTCH_errorProg
#define errorPrint SCOTCH_errorPrint
/*********************/
/* */
/* The main routine. */
/* */
/*********************/
int
main (
int argc,
char * argv[])
{
MPI_Comm proccomm;
int procglbnbr; /* Number of processes sharing graph data */
int proclocnum; /* Number of this process */
SCOTCH_Dgraph grafdat;
FILE * file;
#ifdef SCOTCH_PTHREAD
int thrdlvlreqval;
int thrdlvlproval;
#endif /* SCOTCH_PTHREAD */
errorProg (argv[0]);
#ifdef SCOTCH_PTHREAD
thrdlvlreqval = MPI_THREAD_MULTIPLE;
if (MPI_Init_thread (&argc, &argv, thrdlvlreqval, &thrdlvlproval) != MPI_SUCCESS)
errorPrint ("main: Cannot initialize (1)");
if (thrdlvlreqval > thrdlvlproval)
errorPrint ("main: MPI implementation is not thread-safe: recompile without SCOTCH_PTHREAD");
#else /* SCOTCH_PTHREAD */
if (MPI_Init (&argc, &argv) != MPI_SUCCESS)
errorPrint ("main: Cannot initialize (2)");
#endif /* SCOTCH_PTHREAD */
if (argc != 2) {
errorPrint ("main: invalid number of parameters");
exit (1);
}
proccomm = MPI_COMM_WORLD;
MPI_Comm_size (proccomm, &procglbnbr); /* Get communicator data */
MPI_Comm_rank (proccomm, &proclocnum);
fprintf (stderr, "Proc %2d of %2d, pid %d\n", proclocnum, procglbnbr, getpid ());
#ifndef SCOTCH_CHECK_AUTO
if (proclocnum == 0) { /* Synchronize on keybord input */
char c;
printf ("Waiting for key press...\n");
scanf ("%c", &c);
}
#endif /* SCOTCH_CHECK_AUTO */
if (MPI_Barrier (proccomm) != MPI_SUCCESS) { /* Synchronize for debug */
errorPrint ("main: cannot communicate");
return (1);
}
if (SCOTCH_dgraphInit (&grafdat, proccomm) != 0) { /* Initialize source graph */
errorPrint ("main: cannot initialize graph");
return (1);
}
file = NULL;
if ((proclocnum == 0) &&
((file = fopen (argv[1], "r")) == NULL)) {
errorPrint ("main: cannot open graph file");
return (1);
}
if (SCOTCH_dgraphLoad (&grafdat, file, 0, 0) != 0) {
errorPrint ("main: cannot load graph");
return (1);
}
if (file != NULL)
fclose (file);
if (SCOTCH_dgraphCheck (&grafdat) != 0) {
errorPrint ("main: invalid graph");
return (1);
}
if (MPI_Barrier (proccomm) != MPI_SUCCESS) { /* Synchronize for debug */
errorPrint ("main: cannot communicate");
return (1);
}
SCOTCH_dgraphExit (&grafdat);
MPI_Finalize ();
exit (0);
}

View File

@ -0,0 +1,242 @@
/* Copyright 2014 IPB, Universite de Bordeaux, INRIA & CNRS
**
** This file is part of the Scotch software package for static mapping,
** graph partitioning and sparse matrix ordering.
**
** This software is governed by the CeCILL-C license under French law
** and abiding by the rules of distribution of free software. You can
** use, modify and/or redistribute the software under the terms of the
** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following
** URL: "http://www.cecill.info".
**
** As a counterpart to the access to the source code and rights to copy,
** modify and redistribute granted by the license, users are provided
** only with a limited warranty and the software's author, the holder of
** the economic rights, and the successive licensors have only limited
** liability.
**
** In this respect, the user's attention is drawn to the risks associated
** with loading, using, modifying and/or developing or reproducing the
** software by the user in light of its specific status of free software,
** that may mean that it is complicated to manipulate, and that also
** therefore means that it is reserved for developers and experienced
** professionals having in-depth computer knowledge. Users are therefore
** encouraged to load and test the software's suitability as regards
** their requirements in conditions enabling the security of their
** systems and/or data to be ensured and, more generally, to use and
** operate it in the same conditions as regards security.
**
** The fact that you are presently reading this means that you have had
** knowledge of the CeCILL-C license and that you accept its terms.
*/
/************************************************************/
/** **/
/** NAME : test_scotch_dgraph_coarsen.c **/
/** **/
/** AUTHOR : Francois PELLEGRINI **/
/** **/
/** FUNCTION : This module tests the operation of **/
/** the SCOTCH_dgraphCoarsen() routine. **/
/** **/
/** DATES : # Version 6.0 : from : 28 sep 2014 **/
/** to 28 sep 2014 **/
/** **/
/************************************************************/
/*
** The defines and includes.
*/
#include <mpi.h>
#include <stdio.h>
#if (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H))
#include <stdint.h>
#endif /* (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) */
#include <stdlib.h>
#include <sys/time.h>
#include <sys/types.h>
#include <pthread.h>
#include <unistd.h>
#include "ptscotch.h"
#define errorProg SCOTCH_errorProg
#define errorPrint SCOTCH_errorPrint
/*********************/
/* */
/* The main routine. */
/* */
/*********************/
int
main (
int argc,
char * argv[])
{
MPI_Comm proccomm;
int procglbnbr; /* Number of processes sharing graph data */
int proclocnum; /* Number of this process */
SCOTCH_Num vertglbnbr;
SCOTCH_Num vertlocnbr;
SCOTCH_Num baseval;
SCOTCH_Dgraph grafdat;
SCOTCH_Dgraph coargrafdat;
SCOTCH_Num coarvertglbnbr;
SCOTCH_Num coarvertlocnbr;
double coarrat;
FILE * file;
#ifdef SCOTCH_PTHREAD
int thrdlvlreqval;
int thrdlvlproval;
#endif /* SCOTCH_PTHREAD */
int i;
errorProg (argv[0]);
#ifdef SCOTCH_PTHREAD
thrdlvlreqval = MPI_THREAD_MULTIPLE;
if (MPI_Init_thread (&argc, &argv, thrdlvlreqval, &thrdlvlproval) != MPI_SUCCESS)
errorPrint ("main: Cannot initialize (1)");
if (thrdlvlreqval > thrdlvlproval)
errorPrint ("main: MPI implementation is not thread-safe: recompile without SCOTCH_PTHREAD");
#else /* SCOTCH_PTHREAD */
if (MPI_Init (&argc, &argv) != MPI_SUCCESS)
errorPrint ("main: Cannot initialize (2)");
#endif /* SCOTCH_PTHREAD */
if (argc != 2) {
errorPrint ("main: invalid number of parameters");
exit (1);
}
proccomm = MPI_COMM_WORLD;
MPI_Comm_size (proccomm, &procglbnbr); /* Get communicator data */
MPI_Comm_rank (proccomm, &proclocnum);
fprintf (stderr, "Proc %2d of %2d, pid %d\n", proclocnum, procglbnbr, getpid ());
#ifndef SCOTCH_CHECK_AUTO
if (proclocnum == 0) { /* Synchronize on keybord input */
char c;
printf ("Waiting for key press...\n");
scanf ("%c", &c);
}
#endif /* SCOTCH_CHECK_AUTO */
if (MPI_Barrier (proccomm) != MPI_SUCCESS) { /* Synchronize for debug */
errorPrint ("main: cannot communicate");
return (1);
}
if (SCOTCH_dgraphInit (&grafdat, proccomm) != 0) { /* Initialize source graph */
errorPrint ("main: cannot initialize graph (1)");
return (1);
}
file = NULL;
if ((proclocnum == 0) &&
((file = fopen (argv[1], "r")) == NULL)) {
errorPrint ("main: cannot open graph file");
return (1);
}
if (SCOTCH_dgraphLoad (&grafdat, file, 0, 0) != 0) {
errorPrint ("main: cannot load graph");
return (1);
}
if (file != NULL)
fclose (file);
if (MPI_Barrier (proccomm) != MPI_SUCCESS) { /* Synchronize for debug */
errorPrint ("main: cannot communicate");
return (1);
}
SCOTCH_dgraphData (&grafdat, NULL, &vertglbnbr, &vertlocnbr, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
coarrat = 0.8; /* Lazy coarsening ratio */
for (i = 0; i < 3; i ++) { /* For all test cases */
SCOTCH_Num * multloctab;
SCOTCH_Num multlocsiz;
SCOTCH_Num foldval;
char * foldstr;
char * coarstr;
int procnum;
int o;
switch (i) {
case 0 :
multlocsiz = vertlocnbr;
foldval = SCOTCH_COARSENNONE;
foldstr = "Plain coarsening";
break;
case 1 :
multlocsiz = (SCOTCH_Num) (((double) vertglbnbr * coarrat) / (double) (procglbnbr / 2)) + 1;
foldval = SCOTCH_COARSENFOLD;
foldstr = "Folding";
break;
case 2 :
multlocsiz = (SCOTCH_Num) (((double) vertglbnbr * coarrat) / (double) (procglbnbr / 2)) + 1;
foldval = SCOTCH_COARSENFOLDDUP;
foldstr = "Folding with duplication";
break;
}
if (proclocnum == 0)
printf ("%s\n", foldstr);
if ((multloctab = malloc (multlocsiz * 2 * sizeof (SCOTCH_Num))) == NULL) {
errorPrint ("main: cannot allocate multinode array");
return (1);
}
if (SCOTCH_dgraphInit (&coargrafdat, proccomm) != 0) { /* Initialize band graph */
errorPrint ("main: cannot initialize graph (2)");
return (1);
}
o = SCOTCH_dgraphCoarsen (&grafdat, 0, coarrat, foldval, &coargrafdat, multloctab);
SCOTCH_dgraphData (&coargrafdat, NULL, &coarvertglbnbr, &coarvertlocnbr, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
for (procnum = 0; procnum < procglbnbr; procnum ++) {
switch (o) {
case 0 :
coarstr = "coarse graph created";
break;
case 1 :
coarstr = "graph could not be coarsened";
break;
case 2 :
coarstr = "folded graph not created here";
break;
case 3 :
coarstr = "cannot create coarse graph";
break;
}
if (procnum == proclocnum)
printf ("%d: %s (%ld / %ld / %ld)\n", procnum, coarstr, (long) multlocsiz, (long) coarvertlocnbr, (long) vertlocnbr);
MPI_Barrier (proccomm);
}
if (coarvertlocnbr > multlocsiz) {
errorPrint ("main: invalid local multinode array size");
return (1);
}
SCOTCH_dgraphExit (&coargrafdat);
free (multloctab);
}
SCOTCH_dgraphExit (&grafdat);
MPI_Finalize ();
exit (0);
}

View File

@ -0,0 +1,231 @@
/* Copyright 2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS
**
** This file is part of the Scotch software package for static mapping,
** graph partitioning and sparse matrix ordering.
**
** This software is governed by the CeCILL-C license under French law
** and abiding by the rules of distribution of free software. You can
** use, modify and/or redistribute the software under the terms of the
** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following
** URL: "http://www.cecill.info".
**
** As a counterpart to the access to the source code and rights to copy,
** modify and redistribute granted by the license, users are provided
** only with a limited warranty and the software's author, the holder of
** the economic rights, and the successive licensors have only limited
** liability.
**
** In this respect, the user's attention is drawn to the risks associated
** with loading, using, modifying and/or developing or reproducing the
** software by the user in light of its specific status of free software,
** that may mean that it is complicated to manipulate, and that also
** therefore means that it is reserved for developers and experienced
** professionals having in-depth computer knowledge. Users are therefore
** encouraged to load and test the software's suitability as regards
** their requirements in conditions enabling the security of their
** systems and/or data to be ensured and, more generally, to use and
** operate it in the same conditions as regards security.
**
** The fact that you are presently reading this means that you have had
** knowledge of the CeCILL-C license and that you accept its terms.
*/
/************************************************************/
/** **/
/** NAME : test_scotch_dgraph_grow.c **/
/** **/
/** AUTHOR : Francois PELLEGRINI **/
/** **/
/** FUNCTION : This module tests the operation of **/
/** the SCOTCH_dgraphGrow() routine. **/
/** **/
/** DATES : # Version 6.0 : from : 26 sep 2012 **/
/** to 28 sep 2014 **/
/** **/
/************************************************************/
/*
** The defines and includes.
*/
#include <mpi.h>
#include <stdio.h>
#if (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H))
#include <stdint.h>
#endif /* (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) */
#include <stdlib.h>
#include <string.h>
#include <sys/time.h>
#include <sys/types.h>
#include <pthread.h>
#include <unistd.h>
#include "ptscotch.h"
#define errorProg SCOTCH_errorProg
#define errorPrint SCOTCH_errorPrint
void _SCOTCHintRandInit (void);
SCOTCH_Num _SCOTCHintRandVal (SCOTCH_Num);
/*********************/
/* */
/* The main routine. */
/* */
/*********************/
int
main (
int argc,
char * argv[])
{
MPI_Status statdat;
MPI_Comm proccomm;
int procglbnbr; /* Number of processes sharing graph data */
int proclocnum; /* Number of this process */
long vertlocadj;
SCOTCH_Num vertglbnbr;
SCOTCH_Num vertlocnbr;
SCOTCH_Num vertgstnbr;
SCOTCH_Num * seedloctab;
SCOTCH_Num * partgsttab;
SCOTCH_Num baseval;
SCOTCH_Dgraph grafdat;
FILE * file;
int procnum;
#ifdef SCOTCH_PTHREAD
int thrdlvlreqval;
int thrdlvlproval;
#endif /* SCOTCH_PTHREAD */
errorProg (argv[0]);
#ifdef SCOTCH_PTHREAD
thrdlvlreqval = MPI_THREAD_MULTIPLE;
if (MPI_Init_thread (&argc, &argv, thrdlvlreqval, &thrdlvlproval) != MPI_SUCCESS)
errorPrint ("main: Cannot initialize (1)");
if (thrdlvlreqval > thrdlvlproval)
errorPrint ("main: MPI implementation is not thread-safe: recompile without SCOTCH_PTHREAD");
#else /* SCOTCH_PTHREAD */
if (MPI_Init (&argc, &argv) != MPI_SUCCESS)
errorPrint ("main: Cannot initialize (2)");
#endif /* SCOTCH_PTHREAD */
if (argc != 2) {
errorPrint ("main: invalid number of parameters");
exit (1);
}
proccomm = MPI_COMM_WORLD;
MPI_Comm_size (proccomm, &procglbnbr); /* Get communicator data */
MPI_Comm_rank (proccomm, &proclocnum);
fprintf (stderr, "Proc %2d of %2d, pid %d\n", proclocnum, procglbnbr, getpid ());
#ifndef SCOTCH_CHECK_AUTO
if (proclocnum == 0) { /* Synchronize on keybord input */
char c;
printf ("Waiting for key press...\n");
scanf ("%c", &c);
}
#endif /* SCOTCH_CHECK_AUTO */
if (MPI_Barrier (proccomm) != MPI_SUCCESS) { /* Synchronize for debug */
errorPrint ("main: cannot communicate");
return (1);
}
if (SCOTCH_dgraphInit (&grafdat, proccomm) != 0) { /* Initialize source graph */
errorPrint ("main: cannot initialize graph");
return (1);
}
file = NULL;
if ((proclocnum == 0) &&
((file = fopen (argv[1], "r")) == NULL)) {
errorPrint ("main: cannot open graph file");
return (1);
}
if (SCOTCH_dgraphLoad (&grafdat, file, 0, 0) != 0) {
errorPrint ("main: cannot load graph");
return (1);
}
if (file != NULL)
fclose (file);
if (MPI_Barrier (proccomm) != MPI_SUCCESS) { /* Synchronize for debug */
errorPrint ("main: cannot communicate");
return (1);
}
if (SCOTCH_dgraphGhst (&grafdat) != 0) {
errorPrint ("main: cannot compute ghost edge array");
return (1);
}
SCOTCH_dgraphData (&grafdat, &baseval, &vertglbnbr, &vertlocnbr, NULL, &vertgstnbr, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
if ((seedloctab = malloc (vertlocnbr * sizeof (SCOTCH_Num))) == NULL) {
errorPrint ("main: cannot allocate seed array");
return (1);
}
if ((partgsttab = malloc (vertgstnbr * sizeof (SCOTCH_Num))) == NULL) {
errorPrint ("main: cannot allocate part array");
return (1);
}
memset (partgsttab, ~0, vertgstnbr * sizeof (SCOTCH_Num));
_SCOTCHintRandInit ();
seedloctab[0] = _SCOTCHintRandVal (vertlocnbr);
seedloctab[1] = _SCOTCHintRandVal (vertlocnbr);
seedloctab[2] = _SCOTCHintRandVal (vertlocnbr);
partgsttab[seedloctab[0] - baseval] = 0;
partgsttab[seedloctab[1] - baseval] = 1;
partgsttab[seedloctab[2] - baseval] = 2;
if (SCOTCH_dgraphGrow (&grafdat, 3, seedloctab, 4, partgsttab) != 0) {
errorPrint ("main: cannot compute grown regions");
return (1);
}
for (procnum = 0; procnum < procglbnbr; procnum ++) {
SCOTCH_Num vertlocnum;
MPI_Barrier (proccomm);
if (procnum == proclocnum) {
if ((file = fopen ("/tmp/test_scotch_dgraph_grow.map", (procnum == 0) ? "w" : "a+")) == NULL) {
errorPrint ("main: cannot open mapping file");
return (1);
}
if (procnum == 0) {
fprintf (file, "%ld\n", (long) vertglbnbr);
vertlocadj = (long) baseval;
}
else
MPI_Recv (&vertlocadj, 1, MPI_LONG, procnum - 1, 0, MPI_COMM_WORLD, &statdat);
for (vertlocnum = 0; vertlocnum < vertlocnbr; vertlocnum ++)
fprintf (file, "%ld\t%ld\n", vertlocadj + (long) vertlocnum, (long) partgsttab[vertlocnum]);
fclose (file);
if (procnum < (procglbnbr - 1)) {
vertlocadj += (long) vertlocnbr;
MPI_Send (&vertlocadj, 1, MPI_LONG, procnum + 1, 0, MPI_COMM_WORLD);
}
}
}
SCOTCH_dgraphExit (&grafdat);
MPI_Finalize ();
exit (0);
}

View File

@ -0,0 +1,188 @@
/* Copyright 2012,2014 IPB, Universite de Bordeaux, INRIA & CNRS
**
** This file is part of the Scotch software package for static mapping,
** graph partitioning and sparse matrix ordering.
**
** This software is governed by the CeCILL-C license under French law
** and abiding by the rules of distribution of free software. You can
** use, modify and/or redistribute the software under the terms of the
** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following
** URL: "http://www.cecill.info".
**
** As a counterpart to the access to the source code and rights to copy,
** modify and redistribute granted by the license, users are provided
** only with a limited warranty and the software's author, the holder of
** the economic rights, and the successive licensors have only limited
** liability.
**
** In this respect, the user's attention is drawn to the risks associated
** with loading, using, modifying and/or developing or reproducing the
** software by the user in light of its specific status of free software,
** that may mean that it is complicated to manipulate, and that also
** therefore means that it is reserved for developers and experienced
** professionals having in-depth computer knowledge. Users are therefore
** encouraged to load and test the software's suitability as regards
** their requirements in conditions enabling the security of their
** systems and/or data to be ensured and, more generally, to use and
** operate it in the same conditions as regards security.
**
** The fact that you are presently reading this means that you have had
** knowledge of the CeCILL-C license and that you accept its terms.
*/
/************************************************************/
/** **/
/** NAME : test_scotch_dgraph_redist.c **/
/** **/
/** AUTHOR : Francois PELLEGRINI **/
/** **/
/** FUNCTION : This module tests the operation of **/
/** the SCOTCH_dgraphBand() routine. **/
/** **/
/** DATES : # Version 6.0 : from : 21 feb 2012 **/
/** to 23 sep 2014 **/
/** **/
/************************************************************/
/*
** The defines and includes.
*/
#include <mpi.h>
#include <stdio.h>
#if (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H))
#include <stdint.h>
#endif /* (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) */
#include <stdlib.h>
#include <sys/time.h>
#include <sys/types.h>
#include <pthread.h>
#include <unistd.h>
#include "ptscotch.h"
#define errorProg SCOTCH_errorProg
#define errorPrint SCOTCH_errorPrint
/*********************/
/* */
/* The main routine. */
/* */
/*********************/
int
main (
int argc,
char * argv[])
{
MPI_Comm proccomm;
int procglbnbr; /* Number of processes sharing graph data */
int proclocnum; /* Number of this process */
SCOTCH_Num vertglbnbr;
SCOTCH_Num vertlocnbr;
SCOTCH_Num vertlocnum;
SCOTCH_Num * partloctab;
SCOTCH_Num baseval;
SCOTCH_Dgraph srcgrafdat;
SCOTCH_Dgraph dstgrafdat;
FILE * file;
int procnum;
#ifdef SCOTCH_PTHREAD
int thrdlvlreqval;
int thrdlvlproval;
#endif /* SCOTCH_PTHREAD */
errorProg (argv[0]);
#ifdef SCOTCH_PTHREAD
thrdlvlreqval = MPI_THREAD_MULTIPLE;
if (MPI_Init_thread (&argc, &argv, thrdlvlreqval, &thrdlvlproval) != MPI_SUCCESS)
errorPrint ("main: Cannot initialize (1)");
if (thrdlvlreqval > thrdlvlproval)
errorPrint ("main: MPI implementation is not thread-safe: recompile without SCOTCH_PTHREAD");
#else /* SCOTCH_PTHREAD */
if (MPI_Init (&argc, &argv) != MPI_SUCCESS)
errorPrint ("main: Cannot initialize (2)");
#endif /* SCOTCH_PTHREAD */
if (argc != 2) {
errorPrint ("main: invalid number of parameters");
exit (1);
}
proccomm = MPI_COMM_WORLD;
MPI_Comm_size (proccomm, &procglbnbr); /* Get communicator data */
MPI_Comm_rank (proccomm, &proclocnum);
fprintf (stderr, "Proc %2d of %2d, pid %d\n", proclocnum, procglbnbr, getpid ());
#ifndef SCOTCH_CHECK_AUTO
if (proclocnum == 0) { /* Synchronize on keybord input */
char c;
printf ("Waiting for key press...\n");
scanf ("%c", &c);
}
#endif /* SCOTCH_CHECK_AUTO */
if (MPI_Barrier (proccomm) != MPI_SUCCESS) { /* Synchronize for debug */
errorPrint ("main: cannot communicate");
return (1);
}
if (SCOTCH_dgraphInit (&srcgrafdat, proccomm) != 0) { /* Initialize source graph */
errorPrint ("main: cannot initialize source graph");
return (1);
}
if (SCOTCH_dgraphInit (&dstgrafdat, proccomm) != 0) { /* Initialize destination graph */
errorPrint ("main: cannot initialize destination graph");
return (1);
}
file = NULL;
if ((proclocnum == 0) &&
((file = fopen (argv[1], "r")) == NULL)) {
errorPrint ("main: cannot open graph file");
return (1);
}
if (SCOTCH_dgraphLoad (&srcgrafdat, file, -1, 0) != 0) {
errorPrint ("main: cannot load source graph");
return (1);
}
if (file != NULL)
fclose (file);
if (SCOTCH_dgraphCheck (&srcgrafdat) != 0) {
errorPrint ("main: invalid source graph");
return (1);
}
if (MPI_Barrier (proccomm) != MPI_SUCCESS) { /* Synchronize for debug */
errorPrint ("main: cannot communicate");
return (1);
}
SCOTCH_dgraphData (&srcgrafdat, NULL, &vertglbnbr, &vertlocnbr, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
if ((partloctab = malloc (vertlocnbr * sizeof (SCOTCH_Num))) == NULL) {
errorPrint ("main: cannot allocate frontier array");
return (1);
}
for (vertlocnum = 0; vertlocnum < vertlocnbr; vertlocnum ++) /* Create packs of 3 vertices each */
partloctab[vertlocnum] = (vertlocnum / 3) % procglbnbr;
if (SCOTCH_dgraphRedist (&srcgrafdat, partloctab, NULL, -1, -1, &dstgrafdat) != 0) {
errorPrint ("main: cannot compute redistributed graph");
return (1);
}
SCOTCH_dgraphExit (&dstgrafdat);
SCOTCH_dgraphExit (&srcgrafdat);
free (partloctab);
MPI_Finalize ();
exit (0);
}

View File

@ -0,0 +1,132 @@
/* Copyright 2012 IPB, Universite de Bordeaux, INRIA & CNRS
**
** This file is part of the Scotch software package for static mapping,
** graph partitioning and sparse matrix ordering.
**
** This software is governed by the CeCILL-C license under French law
** and abiding by the rules of distribution of free software. You can
** use, modify and/or redistribute the software under the terms of the
** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following
** URL: "http://www.cecill.info".
**
** As a counterpart to the access to the source code and rights to copy,
** modify and redistribute granted by the license, users are provided
** only with a limited warranty and the software's author, the holder of
** the economic rights, and the successive licensors have only limited
** liability.
**
** In this respect, the user's attention is drawn to the risks associated
** with loading, using, modifying and/or developing or reproducing the
** software by the user in light of its specific status of free software,
** that may mean that it is complicated to manipulate, and that also
** therefore means that it is reserved for developers and experienced
** professionals having in-depth computer knowledge. Users are therefore
** encouraged to load and test the software's suitability as regards
** their requirements in conditions enabling the security of their
** systems and/or data to be ensured and, more generally, to use and
** operate it in the same conditions as regards security.
**
** The fact that you are presently reading this means that you have had
** knowledge of the CeCILL-C license and that you accept its terms.
*/
/************************************************************/
/** **/
/** NAME : test_scotch_graph_color.c **/
/** **/
/** AUTHOR : Francois PELLEGRINI **/
/** **/
/** FUNCTION : This module tests the operation of **/
/** the SCOTCH_graphColor() routine. **/
/** **/
/** DATES : # Version 6.0 : from : 06 jan 2012 **/
/** to 26 sep 2012 **/
/** **/
/************************************************************/
/*
** The defines and includes.
*/
#include <stdio.h>
#if (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H))
#include <stdint.h>
#endif /* (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) */
#include <stdlib.h>
#include <string.h>
#include "scotch.h"
/*********************/
/* */
/* The main routine. */
/* */
/*********************/
int
main (
int argc,
char * argv[])
{
FILE * fileptr;
SCOTCH_Graph grafdat;
SCOTCH_Num baseval;
SCOTCH_Num vertnbr;
SCOTCH_Num vertnum;
SCOTCH_Num colonbr;
SCOTCH_Num colonum;
SCOTCH_Num * colotab;
SCOTCH_Num * cnbrtab;
SCOTCH_errorProg (argv[0]);
if (SCOTCH_graphInit (&grafdat) != 0) { /* Initialize source graph */
SCOTCH_errorPrint ("main: cannot initialize graph");
return (1);
}
if ((fileptr = fopen (argv[1], "r")) == NULL) {
SCOTCH_errorPrint ("main: cannot open file");
return (1);
}
if (SCOTCH_graphLoad (&grafdat, fileptr, -1, 0) != 0) { /* Read source graph */
SCOTCH_errorPrint ("main: cannot load graph");
return (1);
}
fclose (fileptr);
SCOTCH_graphSize (&grafdat, &vertnbr, NULL);
if ((colotab = malloc (vertnbr * sizeof (SCOTCH_Num))) == NULL) {
SCOTCH_errorPrint ("main: out of memory (1)");
return (1);
}
if ((cnbrtab = malloc (vertnbr * sizeof (SCOTCH_Num))) == NULL) {
SCOTCH_errorPrint ("main: out of memory (1)");
return (1);
}
memset (cnbrtab, 0, vertnbr * sizeof (SCOTCH_Num));
if (SCOTCH_graphColor (&grafdat, colotab, &colonbr, 0) != 0) {
SCOTCH_errorPrint ("main: cannot color graph");
return (1);
}
printf ("Number of colors: %ld\n", (long) colonbr);
for (vertnum = 0; vertnum < vertnbr; vertnum ++) /* Sum-up color histogram */
cnbrtab[colotab[vertnum]] ++;
for (colonum = 0; colonum < colonbr; colonum ++)
printf ("Color %5ld: %ld\n",
(long) colonum,
(long) cnbrtab[colonum]);
free (cnbrtab);
free (colotab);
SCOTCH_graphExit (&grafdat);
return (0);
}

View File

@ -0,0 +1,243 @@
/* Copyright 2014 IPB, Universite de Bordeaux, INRIA & CNRS
**
** This file is part of the Scotch software package for static mapping,
** graph partitioning and sparse matrix ordering.
**
** This software is governed by the CeCILL-C license under French law
** and abiding by the rules of distribution of free software. You can
** use, modify and/or redistribute the software under the terms of the
** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following
** URL: "http://www.cecill.info".
**
** As a counterpart to the access to the source code and rights to copy,
** modify and redistribute granted by the license, users are provided
** only with a limited warranty and the software's author, the holder of
** the economic rights, and the successive licensors have only limited
** liability.
**
** In this respect, the user's attention is drawn to the risks associated
** with loading, using, modifying and/or developing or reproducing the
** software by the user in light of its specific status of free software,
** that may mean that it is complicated to manipulate, and that also
** therefore means that it is reserved for developers and experienced
** professionals having in-depth computer knowledge. Users are therefore
** encouraged to load and test the software's suitability as regards
** their requirements in conditions enabling the security of their
** systems and/or data to be ensured and, more generally, to use and
** operate it in the same conditions as regards security.
**
** The fact that you are presently reading this means that you have had
** knowledge of the CeCILL-C license and that you accept its terms.
*/
/************************************************************/
/** **/
/** NAME : test_scotch_graph_map.c **/
/** **/
/** AUTHOR : Francois PELLEGRINI **/
/** **/
/** FUNCTION : This module tests the operation of **/
/** the SCOTCH_graphMap*() routines. **/
/** **/
/** DATES : # Version 6.0 : from : 12 aug 2014 **/
/** to 20 sep 2014 **/
/** **/
/************************************************************/
/*
** The defines and includes.
*/
#include <math.h>
#include <stdio.h>
#if (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H))
#include <stdint.h>
#endif /* (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) */
#include <stdlib.h>
#include <string.h>
#include "scotch.h"
#define ARCHNBR 4
#define STRANBR 2
#define COORD(x,y) ((y) * xdimsiz + (x))
/*********************/
/* */
/* The main routine. */
/* */
/*********************/
int
main (
int argc,
char * argv[])
{
SCOTCH_Mapping mappdat; /* Mapping to compute */
SCOTCH_Mapping mapodat; /* Old mapping */
FILE * fileptr;
SCOTCH_Graph grafdat;
SCOTCH_Num xdimsiz;
int archnum;
SCOTCH_Arch archtab[ARCHNBR];
SCOTCH_Strat stratab[STRANBR];
int stranum;
int typenum;
SCOTCH_Num baseval;
SCOTCH_Num vertnbr;
SCOTCH_Num vertnum;
SCOTCH_Num * parttab;
SCOTCH_Num * parotab;
SCOTCH_Num * vmlotab;
SCOTCH_Num * vmloptr; /* vmlotab or NULL */
SCOTCH_errorProg (argv[0]);
if (SCOTCH_graphInit (&grafdat) != 0) { /* Initialize source graph */
SCOTCH_errorPrint ("main: cannot initialize graph");
return (1);
}
if ((fileptr = fopen (argv[1], "r")) == NULL) { /* Read a square 2D grid graph */
SCOTCH_errorPrint ("main: cannot open file (1)");
return (1);
}
if (SCOTCH_graphLoad (&grafdat, fileptr, -1, 0) != 0) { /* Read source graph */
SCOTCH_errorPrint ("main: cannot load graph");
return (1);
}
fclose (fileptr);
SCOTCH_graphSize (&grafdat, &vertnbr, NULL);
xdimsiz = (SCOTCH_Num) sqrt ((double) vertnbr);
if (vertnbr != (xdimsiz * xdimsiz)) {
SCOTCH_errorPrint ("main: graph is not a square grid");
return (1);
}
if (((parttab = malloc (vertnbr * sizeof (SCOTCH_Num))) == NULL) ||
((parotab = malloc (vertnbr * sizeof (SCOTCH_Num))) == NULL) ||
((vmlotab = malloc (vertnbr * sizeof (SCOTCH_Num))) == NULL)) {
SCOTCH_errorPrint ("main: out of memory");
return (1);
}
for (vertnum = 0; vertnum < vertnbr; vertnum ++) /* Fill vertex migration load array */
vmlotab[vertnum] = vertnum % 3;
for (stranum = 0; stranum < STRANBR; stranum ++) { /* Initialize mapping strategies */
if (SCOTCH_stratInit (&stratab[stranum]) != 0) {
SCOTCH_errorPrint ("main: cannot initialize strategy");
return (1);
}
}
SCOTCH_stratGraphMapBuild (&stratab[0], SCOTCH_STRATRECURSIVE, 4, 0.05);
SCOTCH_stratGraphMapBuild (&stratab[1], SCOTCH_STRATDEFAULT, 4, 0.05);
for (archnum = 0; archnum < ARCHNBR; archnum ++) { /* Initialize architectures */
if (SCOTCH_archInit (&archtab[archnum]) != 0) {
SCOTCH_errorPrint ("main: cannot initialize architecture");
return (1);
}
}
SCOTCH_archCmplt (&archtab[0], 5);
SCOTCH_archMesh2 (&archtab[1], 2, 2);
SCOTCH_archMesh2 (&archtab[2], xdimsiz * 2, xdimsiz * 2); /* Oversized architecture */
SCOTCH_archVhcub (&archtab[3]);
if ((fileptr = tmpfile ()) == NULL) { /* Open temporary file for resulting output */
SCOTCH_errorPrint ("main: cannot open file (2)");
return (1);
}
for (stranum = 0; stranum < STRANBR; stranum ++) {
for (archnum = 0; archnum < ARCHNBR; archnum ++) {
SCOTCH_Num archsiz;
if (SCOTCH_graphMapInit (&grafdat, &mappdat, &archtab[archnum], parttab) != 0) { /* Initialize new mapping */
SCOTCH_errorPrint ("main: cannot initialize mapping (1)");
return (1);
}
if (SCOTCH_graphMapInit (&grafdat, &mapodat, &archtab[archnum], parotab) != 0) { /* Initialize old mapping */
SCOTCH_errorPrint ("main: cannot initialize mapping (2)");
return (1);
}
archsiz = SCOTCH_archSize (&archtab[archnum]);
for (typenum = 0; typenum < 6; typenum ++) {
int i;
int o;
memset (parttab, ~0, xdimsiz * xdimsiz * sizeof (SCOTCH_Num)); /* Assume all vertices are not fixed */
if (archnum < 2) { /* For fixed-size architectures */
for (i = 0; i < (xdimsiz - 1); i ++) { /* Place fixed vertices at all four sides */
parttab[COORD (0, i)] = 0;
parttab[COORD (i + 1, 0)] = 1;
parttab[COORD (xdimsiz - 1, i + 1)] = archsiz - 2;
parttab[COORD (i, xdimsiz - 1)] = archsiz - 1;
}
}
else { /* For variable-sized architectures */
for (i = 0; i < (xdimsiz - 1); i ++) { /* Place fixed vertices at all four sides */
parttab[COORD (0, i)] = vertnbr - 2;
parttab[COORD (i + 1, 0)] = vertnbr - 1;
parttab[COORD (xdimsiz - 1, i + 1)] = vertnbr;
parttab[COORD (i, xdimsiz - 1)] = vertnbr + 1;
}
}
printf ("Strat %d, arch %d, type %d\n", stranum, archnum, typenum);
vmloptr = vmlotab;
switch (typenum) {
case 0 : /* Plain mapping */
o = SCOTCH_graphMapCompute (&grafdat, &mappdat, &stratab[stranum]);
memcpy (parotab, parttab, vertnbr * sizeof (SCOTCH_Num)); /* Use plain mapping as old mapping in the following */
break;
case 1 : /* Plain mapping with fixed vertices */
o = SCOTCH_graphMapFixedCompute (&grafdat, &mappdat, &stratab[stranum]);
break;
case 2 : /* Remapping without vertex migration load array */
vmloptr = NULL;
case 3 : /* Remapping with vertex migration load array */
o = SCOTCH_graphRemapCompute (&grafdat, &mappdat, &mapodat, 0.2, vmloptr, &stratab[stranum]);
break;
case 4 : /* Remapping with fixed vertices and without vertex migration load array */
vmloptr = NULL;
case 5 : /* Remapping with fixed vertices and with vertex migration load array */
o = SCOTCH_graphRemapFixedCompute (&grafdat, &mappdat, &mapodat, 0.2, vmloptr, &stratab[stranum]);
break;
}
if (o != 0) {
SCOTCH_errorPrint ("main: cannot compute mapping");
return (1);
}
}
SCOTCH_graphMapSave (&grafdat, &mappdat, fileptr);
SCOTCH_graphMapExit (&grafdat, &mapodat);
SCOTCH_graphMapExit (&grafdat, &mappdat);
}
}
for (archnum = 0; archnum < ARCHNBR; archnum ++)
SCOTCH_archExit (&archtab[archnum]);
for (stranum = 0; stranum < STRANBR; stranum ++)
SCOTCH_stratExit (&stratab[stranum]);
free (vmlotab);
free (parotab);
free (parttab);
SCOTCH_graphExit (&grafdat);
fclose (fileptr);
return (0);
}

View File

@ -0,0 +1,168 @@
/* Copyright 2014 IPB, Universite de Bordeaux, INRIA & CNRS
**
** This file is part of the Scotch software package for static mapping,
** graph partitioning and sparse matrix ordering.
**
** This software is governed by the CeCILL-C license under French law
** and abiding by the rules of distribution of free software. You can
** use, modify and/or redistribute the software under the terms of the
** CeCILL-C license as circulated by CEA, CNRS and INRIA at the following
** URL: "http://www.cecill.info".
**
** As a counterpart to the access to the source code and rights to copy,
** modify and redistribute granted by the license, users are provided
** only with a limited warranty and the software's author, the holder of
** the economic rights, and the successive licensors have only limited
** liability.
**
** In this respect, the user's attention is drawn to the risks associated
** with loading, using, modifying and/or developing or reproducing the
** software by the user in light of its specific status of free software,
** that may mean that it is complicated to manipulate, and that also
** therefore means that it is reserved for developers and experienced
** professionals having in-depth computer knowledge. Users are therefore
** encouraged to load and test the software's suitability as regards
** their requirements in conditions enabling the security of their
** systems and/or data to be ensured and, more generally, to use and
** operate it in the same conditions as regards security.
**
** The fact that you are presently reading this means that you have had
** knowledge of the CeCILL-C license and that you accept its terms.
*/
/************************************************************/
/** **/
/** NAME : test_scotch_graph_order.c **/
/** **/
/** AUTHOR : Francois PELLEGRINI **/
/** **/
/** FUNCTION : This module tests the operation of **/
/** the SCOTCH_graphOrderCompute*() **/
/** routines. **/
/** **/
/** DATES : # Version 6.0 : from : 05 aug 2014 **/
/** to 29 aug 2014 **/
/** **/
/************************************************************/
/*
** The defines and includes.
*/
#include <stdio.h>
#if (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H))
#include <stdint.h>
#endif /* (((defined __STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || (defined HAVE_STDINT_H)) */
#include <stdlib.h>
#include <string.h>
#include "scotch.h"
/*********************/
/* */
/* The main routine. */
/* */
/*********************/
int
main (
int argc,
char * argv[])
{
FILE * fileptr;
SCOTCH_Graph grafdat;
SCOTCH_Ordering ordedat;
SCOTCH_Strat stradat;
SCOTCH_Num baseval;
SCOTCH_Num vertnbr;
SCOTCH_Num vertnum;
SCOTCH_Num listnbr;
SCOTCH_Num listnum;
SCOTCH_Num * listtab;
SCOTCH_errorProg (argv[0]);
if (SCOTCH_graphInit (&grafdat) != 0) { /* Initialize source graph */
SCOTCH_errorPrint ("main: cannot initialize graph");
return (1);
}
if ((fileptr = fopen (argv[1], "r")) == NULL) {
SCOTCH_errorPrint ("main: cannot open file (1)");
return (1);
}
if (SCOTCH_graphLoad (&grafdat, fileptr, -1, 0) != 0) { /* Read source graph */
SCOTCH_errorPrint ("main: cannot load graph");
return (1);
}
fclose (fileptr);
SCOTCH_graphData (&grafdat, &baseval, &vertnbr, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
listnbr = (vertnbr + 1) / 2; /* Only keep half of the vertices in induced graph */
if ((listtab = malloc (listnbr * sizeof (SCOTCH_Num))) == NULL) {
SCOTCH_errorPrint ("main: out of memory (1)");
return (1);
}
for (listnum = 0, vertnum = baseval + (listnbr / 4); /* Keep only middle half of the vertices */
listnum < listnbr; listnum ++, vertnum ++)
listtab[listnum] = vertnum;
if ((fileptr = tmpfile ()) == NULL) { /* Open temporary file for resulting output */
SCOTCH_errorPrint ("main: cannot open file (2)");
return (1);
}
if (SCOTCH_stratInit (&stradat) != 0) { /* Initialize ordering strategy */
SCOTCH_errorPrint ("main: cannot initialize strategy");
return (1);
}
if (SCOTCH_graphOrderInit (&grafdat, &ordedat, NULL, NULL, NULL, NULL, NULL) != 0) { /* Initialize ordering */
SCOTCH_errorPrint ("main: cannot initialize ordering (1)");
return (1);
}
if (SCOTCH_graphOrderCompute (&grafdat, &ordedat, &stradat) != 0) {
SCOTCH_errorPrint ("main: cannot order graph");
return (1);
}
if (SCOTCH_graphOrderCheck (&grafdat, &ordedat) != 0) {
SCOTCH_errorPrint ("main: invalid ordering (1)");
return (1);
}
SCOTCH_graphOrderSave (&grafdat, &ordedat, fileptr); /* Test ordering data output routines */
SCOTCH_graphOrderSaveMap (&grafdat, &ordedat, fileptr);
SCOTCH_graphOrderSaveTree (&grafdat, &ordedat, fileptr);
SCOTCH_graphOrderExit (&grafdat, &ordedat); /* Free computed ordering */
if (SCOTCH_graphOrderInit (&grafdat, &ordedat, NULL, NULL, NULL, NULL, NULL) != 0) { /* Initialize ordering again */
SCOTCH_errorPrint ("main: cannot initialize ordering (2)");
return (1);
}
if (SCOTCH_graphOrderComputeList (&grafdat, &ordedat, listnbr, listtab, &stradat) != 0) {
SCOTCH_errorPrint ("main: cannot order induced graph");
return (1);
}
if (SCOTCH_graphOrderCheck (&grafdat, &ordedat) != 0) {
SCOTCH_errorPrint ("main: invalid ordering (2)");
return (1);
}
SCOTCH_graphOrderSave (&grafdat, &ordedat, fileptr); /* Test ordering data output routines */
SCOTCH_graphOrderSaveMap (&grafdat, &ordedat, fileptr);
SCOTCH_graphOrderSaveTree (&grafdat, &ordedat, fileptr);
free (listtab);
SCOTCH_stratExit (&stradat);
SCOTCH_graphOrderExit (&grafdat, &ordedat);
SCOTCH_graphExit (&grafdat);
return (0);
}

Some files were not shown because too many files have changed in this diff Show More