What platforms are supported?
Presently, we have tested MTL on the following platforms:
- IRIX64 6.4
- SunOS 5.6
- Linux 2.0.35
Since the compiler is the most important issue (see below),
we expect that MTL will also work on closely similar platforms (e.g.,
SunOS 5.5).
Under Windows 9x or NT, MTL may possibly compile using
egcs and one of
the unix emulation environments such as
cygwin or
UWIN. We
have tried neither but would be interested to know if anyone tries
these out.
For compatibility with Visual C++, see
What compilers are supported?
What compilers are supported?
MTL should work with any compiler that completely supports the ANSI
C++ standard.
The following compilers have been tested and are known to work:
- SGI
- MIPSpro Compilers: Version 7.2.1.1m
- KAI C++ 3.3f
- Solaris
- KAI C++ 3.3e
- egcs-2.91.60 (which is called version 1.1.1)
- Linux
- KAI C++ 3.3g
- egcs-2.91.60
For commercial compilers, it seems that compilers based on the
Edison Design Group front end are
able to compile MTL.
MTL is known not to work with Microsoft Visual
C++ through 6.0 (VC++ does not have partial specialization support).
Version 4.0 of the Intel
C++ compiler (which can plug into the Visual Studio Environment)
is compliant enough with ANSI C++ to compile MTL. Unfortunately, it
still relies on the VC++ header files, which must be hacked somewhat to
allow MTL to compile (among other things, reverse_iterator and
iterator_traits are broken). Version 4.0 is presently finishing its
beta testing but should be released sometime in March 1999.
Nothing is known about other Windows compilers (e.g., Borland) at the
present time.
Why is MTL written in C++ and not Fortran?
MTL has two particular strengths: genericity and high performance.
To implement MTL, a language must support genericity and it must offer
high performance. Presently, there are various languages that offer
one or the other of these, but only C++ offers both. Fortran, for
instance, has the reputation of offering high performance. However,
it does not support generic programming. As our performance results
clearly show, C++ can provide performance on par with Fortran.
There are even some applications where the presence of
higher-level abstractions can allow significantly higher performance
than Fortran.
Why is MTL written in C++ and not Java?
The Java language was developed for certain particular purposes. Scientific
computing was not one of those purposes. Generic programming was not
one of those purposes.
To offer sufficient performance for scientific computing, Java must
be compiled to native object code, not byte code. To provide
genericity, the Java language would have to be changed to include
operator overloading and templates. Hmm. Templates, overloading,
compilation to native object code.
On top of all that, Java has some problems with its floating point
model.
|