|
|



























 |
 |
 |
 |
 |
Pascal FAQ
|
 |
 |
| This is a short FAQ on programming
in Pascal on the Sun Fire cluster. Pascal is
not supported as a native programming language on either
AIX or Solaris 9. Instead, we have the publi domain GNU
Pascal compiler installed on both machines.
Questions:
-
Why Pascal?
-
What Pascal compiler is running on the
HPCVL machines??
-
How do I use gpc?
-
How can I debug my Pascal programs?
-
Is there a way to run Pascal programs
in parallel?
-
Where can I get further help?
Answers:
Why Pascal?
Pascal is a computer language that was designed for
teaching purposes. It makes extensive use of function and
subroutine calls and allows code do be written in a very
"readable" manner. Pascal is one of the
precursors of the arguably most successful programming
language C. Many people learned programming with Pascal,
and a good deal of code exists that was written in this
language. In recent times, Pascal has been extended a great
deal, and with those extensions, the language can compete
with more modern programming languages such as C/C++ or
Java. We provide a Pascal compiler to enable those of our
users who have "legacy code" in Pascal, or want
to use modern programming techniques without having to
learn a new programming language. However, Pascal is
not supported as such by Sun/Solaris or IBM/AIX,
i.e. there is no native Pascal compiler for our
systems. Instead we use a portable public-domain compiler.
-
What is the Pascal compiler used on HPCVL
machines?
The Pascal compiler installed on the Sun Fire system of HPCVL is the
Gnu Pascal Compiler (GPC). This is a public-domain compiler
that has a great deal of extensions and compatibility
features built into it, and is designed to be very
portable. The versions are at present:
GNU Pascal version 20000707, based on gcc-2.95.2 19991024
(for SUN Sun Fire).
This compiler supports ISO-7185 Standard Pascal and
ISO-10206 Extended Pascal, as well as Borland Pascal 7.0
and parts of Pascal-SC. For more detailed specifications
which features are available, see the
the language specification page of GPC.
GPC is located in the /usr/local directory hierarchy. It
makes use of some features of the Gnu C Compiler (GCC) and
therefore needs access to libraries and header files from
that distribution. Its close relationship with GCC also
enables it (to some degree) to use the GNU debugger (see Question 4).
-
How do I run gpc?
This FAQ is not meant as a manual for the GNU Pascal
Compiler. The usage of the compiler is very
straightforward, though. The command gpc is used
both for compiling and linking the programs. For linking,
it will invoke the system-supplied ld feature with
the appropriate switches and environment variables. To use
GPC you have to have to have
"/usr/local/bin" in your PATH. It
might in some cases be necessary to set the system
environment variable LD_LIBRARY_PATH to
"/usr/local/lib:/usr/lib" in order for
your executable to find the proper dynamic libraries at runtime.
GPC uses command-line options to guide the
compilation. These options are often very standard, such as
-c to avoid linking and produce only object files,
-O# to specify optimization levels, -o to
specify the name of the output (executable of object)
file. Almost all options
are documented in HTML format. For a complete list,
obtain the
GNU Pascal Manual . There are no useful Unix
man pages for this compiler.
Because of its close relationship with the GNU C-compiler
GCC, almost all of the options that are available for the
latter are also part of the Pascal compiler command
set. Another effect of this is that there is usually no
problems with using C-routines in conjunction with the
Pascal compiler. This comes in handy when you are trying to
compile Pascal programs to run in parallel mode on a
multi-processor system (see next
question).
How do I debug my Pascal programs?
In any cases where your program is longer than a few
hundred lines, you will need to be able to run it through a
debugger. Pascal programs compiled with GPC can be debugged
via the GNU debugger dbg which we have installed
on our Sun Fire system. However, the debugger is
designed for C-code, and is rather kloncky if used with
Pascal. But it is the only debugger available that works
with GPC.
To be able to use the debuuger with your Pascal code, you
have to include the -g option in your
compilation. Since this option and optimization of the code
(i.e. the -O options) are mutually exclusive, you
will have to remove any -O directives from your
compile command lines.
Then you can start the debugger by typing "gdb
name_of_executable". The debugger is operated
by typing in commands such as
run Start the program from the beginning
stop Stop the program from executing
break Insert a break at a given line of the code, or
in a specific subroutine or
function
cont Continue from the present position in the code
until the next break is
encountered
list List the code around the present break point
print Show the value of a variable
Since the debugger has trouble handling Pascal code
instead of C-code, the following command lines should be
typed in as sson as the debugger was entered (you can
copy-and-paste them onto the dgb command line): break
init_pascal_main_program run break
pascal_main_program break '_p_runfinalizers' cont
This will enable the debugger to display the current
lines in Pascal code.
The documentation for this debugger is
available online or in
PDF format for printing .
Is there a way to run my Pascal programs in
parallel?
There is indeed, but it's not going to be easy. One way of
"parallelizing" your programs is to include
"message passing" in the code. Different portions
of the code are thereby executed by different processors,
and information is shared by passing messages between the
processors. The most widely used method to do this is
called Message Passing Interface (MPI), and is available in
the form of libraries on the SUN Fire muti-processor machines of HPCVL.
However, MPI works only with FORTRAN and C directly. The
libraries consist of subroutines that can be called from
code written in those two languages. In order to write
parallel code in Pascal, you therefore have to do the
following things.
- Write your code in a "single code multiple
data" manner by inserting calls to message-passing
functions. The interface with these functions will
have to be designed by you.
- Implement the message-passing functions in C
and use the C-bindings of the MPI library inside of
those functions.
- Compile your Pascal routines with GPC, and your
C-routines with the native C-compiler to produce
object code. Include the proper header files in the
C functions via the "-I" option. Collect
the C-functions in a library using the ar
command.
- Link the object code with GPC, including the
C-functions in the form of a library. MPI is linked
in by specifying "-l",
"-L", "-R", and
"-I" options.
You can read our
Parallel Programming FAQ to make yourself familiar
with the usage of the native C compiler on the Sun
systems. You will also need to follow up some of the links
in that file to make yourself familiar with usage of MPI.
Note that the author of this FAQ has very limited
experience with Pascal programming, and none with the
interfacing of C-programs with Pascal. If you want to
contribute some of your expertise to this worthy cause,
please contact
Hartmut Schmider
.
Where can I get further help?
The
GNU Pascal Project is your first address on help with
Pascal on our machines. The people associated with it are
extremely dedicated, and operate a variety of help
facilities, including an
FAQ , a
mailing list and
an archive .
For help with the debugger, you can check out the web page , and
the manual . The GDB people also run several
mailing lists to help you with concrete problems.
For the interfacing of Pascal and C-programs, and for the
usage of MPI to parallelize your code, you can get some
initial ideas from our
parallel programming FAQ . Many of the link therein are
also useful, in particular the one to the Sun Documentation Site
(assuming you're doing what you're doing on the Sun Fire
cluster).
HPCVL also provides user support. If you can't get it to
run by reading manuals,
contact us and we can make an appointment and try to
sort it out. In case we cannot help, we might be able to
put you in touch with someone who can.
|
|
|
|
|
 |
 |
|