9examples – Scotch Brand 5.1.10 User Manual

Page 127

Advertising
background image

COMMON FILE COMPRESS LZMA

for lzma decompression. Note that the correspond-

ing development libraries must be installed on your system before compile time,
and that compressed file handling can take place only on systems which support
multi-threading or multi-processing. In the first case, you must set the SCOTCH
PTHREAD

flag in order to take advantage of these features.

On Linux systems, the development libraries to install are libbzip2 1-devel for

the bzip2 format, zlib1-devel for the gzip format, and liblzma0-devel for the
lzma

format. The names of the libraries may vary according to operating systems

and library versions. Ask your system engineer in case of trouble.

8.3

Machine word size issues

The integer values handled by Scotch are based on the SCOTCH Num type, which
equates by default to the int C type, corresponding to the INTEGER Fortran type,
both of which being of machine word size. To coerce the length of the SCOTCH
Num

integer type to 32 or 64 bits, one can use the “-DINTSIZE32” or “-DINTSIZE64”

flags, respectively, or else use the “-DINT=” definition, at compile time. For instance,
adding “-DINT=long” to the CFLAGS variable in the Makefile.inc file to be placed
at the root of the source tree will make all SCOTCH Num integers become long C
integers.

Whenever doing so, make sure to use integer types of equivalent length to declare

variables passed to Scotch routines from caller C and Fortran procedures. Also,
because of API conflicts, the MeTiS compatibility library will not be usable. It is
usually safer and cleaner to tune your C and Fortran compilers to make them inter-
pret int and INTEGER types as 32 or 64 bit values, than to use the aforementioned
flags and coerce type lengths in your own code.

Fortran users also have to take care of another size issue: since there are no

pointers in Fortran 77, the Fortran interface of some routines converts pointers to be
returned into integer indices with respect to a given array (e.g. see sections 7.5.10,
7.8.8 and 7.11.3). For 32 64 architectures, such indices can be larger than the
size of a regular INTEGER. This is why the indices to be returned are defined by
means of a specific integer type, SCOTCH Idx. To coerce the length of this index
type to 32 or 64 bits, one can use the “-DIDXSIZE32” or “-DIDXSIZE64” flags,
respectively, or else use the “-DIDX=” definition, at compile time. For instance,
adding “-DIDX="long long"” to the CFLAGS variable in the Makefile.inc file to
be placed at the root of the source tree will equate all SCOTCH Idx integers to C long
long

integers. By default, when the size of SCOTCH Idx is not explicitly defined, it

is assumed to be the same as the size of SCOTCH Num.

9

Examples

This section contains chosen examples destined to show how the programs of the
Scotch

project interoperate and can be combined. It is supposed that the current

directory is directory “scotch 5.1” of the Scotch distribution. Character “%”
represents the shell prompt.

• Partition source graph brol.grf into 7 parts, and save the result to file

/tmp/brol.map

.

% echo cmplt 7 > /tmp/k7.tgt
% gmap brol.grf /tmp/k7.tgt /tmp/brol.map

127

Advertising