The compiler war!
If you think that all compilers are born equal, you are very wrong. In the case
of C and Fortran, at the IAC you have mainly three choices: the GNU suite, the
Intel compilers or the PGI ones. Leaving aside the documentation or the tools
(parallel support, debuggers, profilers, etc.) that come with each of them, choosing
the right compiler and the right compiling options can make your executable considerably
faster. As a basic example, we got the spectral-norm benchmark, compiled it with
the three compilers and basic optimization options, and the table below summarises
the results in a 3GHz Pentium4 machine (percentages are given over the fastest
version). Does this mean that you should always use the Intel compiler? Certainly
not!! It just means that if you want the fastest execution time you should take
timings, which can show a completely different picture depending on the code,
the machine, the compiler and the compiler options that you use...
|
Intel (-fast) |
PGI (-O4) |
GNU (-O5) |
C code |
16.68 sec (100%) |
17.25 sec (103.42%) |
26.86 sec (161.03%) |
Fortran code |
16.68 sec (100%) |
17.20 sec (103.12%) |
20.47 sec (122.72%) |
Helping you to live in a parallel universe...
Some of you might not be aware that if you are in need of speed, the SIE can
help you to parallelize your code. As an example, during the past weeks we helped
Jorge Sanchez to parallelize his IDL K-means clustering program. The parallel
version of the code was developed using Fortran and MPI (Message Passing Interface),
and we managed to obtain a very scalable and efficient new code. With it the
performance obtained is much better than the equivalent IDL code. As an example,
100 executions of the parallel code using 48 Intel Xeon CPUs (2.4GHz) of one
of our clusters took in the order of 1 hour. At the same time, one single execution
with the IDL code using a 8-core (Intel Xeon 2.66GHz) computer takes in the order
of 4-8 hours. Get in touch with us for more details...
Programming languages and bottles of beer
Have you ever wondered how many programming and scripting languages and variants
exist out there? Well, it seems that there are more than 1200, at least according
to the
99 Bottles of Beer website,
which holds a collection of the Song "99
Bottles of Beer" programmed in different programming languages
(see
http://99-bottles-of-beer.net/language-perl-737.html
for a striking example of what may happen when one values more the "artistic" side
of programming rather than clarity). Admittedly, some of these programming languages
have somewhat suspicious names and are quite unlikely to become popular in the
academic world (we can tell you for sure that the SIE does not plan to provide
support for such languages as
Brainfuck,
Cow, or
Whitespace).
However, it's still astonishing to see that there are hundreds of serious, legitimate,
different programming languages in active use.
Which leads us to the next, perhaps more interesting question: how many different
types and brands of beer are there?
Less known, but useful Python gems
As you know, one of the best selling points of Python is its impressive array
of add-on modules, and there are many python-based applications that can be
of interest for astronomers. Some are well known (for instance pyraf, pyfits,
numpy), others may have gone unnoticed, but still can be very useful. Here
go a few selected ones:
- Blender, a free open source 3D content creation suite. Its magnificent GUI
will take your breath away. Just type blender to launch it.
- pygmentize, as its name suggests,
is a syntax highlighter, with multiple
output formats. Type pygmentize to use it.
- idl2python provides tools for
converting programs and scripts written in
the IDL programming language to Python. The command is idl2python.
- f2py is a
Python extension tool for creating Python C/API modules from (handwritten
or F2PY generated) signature files, or directly from Fortran sources. Unfortunately
for now it only works in 32bit machines.
- sympy is a Python library
for symbolic mathematics. For more info, see
http://denebola.org/siliconastronomy/?p=4.
- APLpy is a Python module
aimed at producing publication-quality plots of
astronomical imaging data in FITS format.
To find what other Pyhton modules are installed here at the IAC, please see
https://research.iac.es/sieinvens/SINFIN/Software_pages/Python_modules.php
Talon, a useful Firefox extension
If from time to time you need to save images from the Web, and add annotations
for, say, a presentation or a manual you are writing, Talon, a Firefox extension
which integrates
Falcon right in the browser,
may be the right tool for you!
(
Note: aviary.com is no longer a working website. See
What Happened to Aviary.com?
for details.)
With Talon, you can capture areas, whole pages, or the entire application window;
then you can annotate the image with arrows, lines, squares etc., and text, and
save it on your desktop. For a more detailed description of the Talon and Falcon
capabilities, please read this
Sitepoint article.
Also worth mentioning is
Canva, a simple,
drag-and-drop, design software that is completely online and free to use.