/virginia/HTML_files/accessV6N2/92.2.AIPS.html

AIPS++ --- C++ software for fast, standardized astronomical images

by Randall Graham, Science Writer
Three main challenges stand in the way of real-time synthesis radio telescope observation: a computer system with sufficient power, a high-speed network linking telescopes to computers, and software that rapidly produces an image from large amounts of data. Radio telescopic images are produced by intensive use of the Fast Fourier Transform process to mathematically convert observed data into pictures.

Although the three problems are broad, UIUC astronomy professor Richard Crutcher expects all of them to be resolved within the next few years. NCSA's new CONVEX C3 and Thinking Machines Corporation's CM-5, both recently installed at NCSA, will provide the computing power. And plans are underway to set up a high-speed network link from the Berkeley-Illinois-Maryland Array (BIMA) telescope system at the Hat Creek Observatory in northern California to NCSA via fiber optics or a satellite transponder.

As for software, the BIMA project produced a package called MIRIAD, which could enable astronomers to experiment with real-time observation within a year. Long-term hopes for fast imaging are pinned on a new package being developed by an international collaboration including BIMA member institutions; the National Radio Astronomy Observatory (NRAO); and scientists from Australia, Canada, England, the Netherlands, and India. Crutcher sits on the steering committee for the project.

Standardized code

The new code will be named AIPS++, an abbreviation of Astronomical Image Processing System in C++. Although real-time observation is expected to be one advantage of AIPS++, the primary goal of its development is to create an easily expandable, maintainable software that is standardized for a wide range of computer architectures and telescopes.

It will be POSIX compliant to facilitate porting to a wide variety of architectures. POSIX is a hardware-independent standard for operating systems. With AIPS++, an astronomer can learn the system once and then process images on nearly any computer using data from almost any radio telescope.

Another goal is for the software to make as many image processing decisions as possible. "Right now data processing is a very labor intensive effort," says Crutcher. "Astronomers must make hundreds of decisions as to how to process data using their expert knowledge. We'd like to program that expert knowledge into the software so that the computer system instantaneously gives us a 'best effort' image."

Concentrated effort

AIPS++ will replace the roughly 20-year-old Fortran code AIPS and the MIRIAD program written in Fortran and C. For the first half of 1992, software engineers from each member country have been working together at NRAO headquarters in Char-lottesville, VA, in a concentrated effort to develop the AIPS++ kernel as well as the overall design of the system.

Twelve programmers are working full time on the project. NCSA's representative is research programmer Mark Stupar. NRAO is providing space, workstations, training, and housing for the team. Once the kernel is complete, team members will return home to guide local teams in writing applications software.

"By January of 1993 we hope to have the kernel to the stage where we can begin fleshing it out and writing applications code," says Crutcher. "There should be limited functionality by then--but quite limited."

AIPS++ on the metacomputer

NCSA's metacomputer is expected to play a vital role in the processing of large datasets. Crutcher intends to use the planned HIPPI link between the CONVEX C3 and the CM-5 to turn the CM- 5 into a high-powered number cruncher working transparently for the computa-tionally intensive portions of his code.

Says Crutcher, "AIPS++ will run on the CONVEX C3, which is a general-purpose computer. It handles the less computationally intensive portions of the code--data I/O, graphics, user interfaces, visualization, and editing. Simultaneously the plan is to try to develop stand-alone algorithms on the CM-5 when that machine stabilizes a bit--with the concept of being able to hook those into the AIPS++ code so that it will appear as a single code to the user on the meta-computer. When you reach a compu-tationally intensive task, AIPS++ will off-load the data over the HIPPI link to the CM-5 for processing, so the Connection Machine will appear as almost a high-speed coprocessor on the CONVEX."

Initially the CM-5 will not have a C++ compiler. Its portion of the code will be implemented in Fortran 90.

The C++ advantage

The strength of AIPS++ is in its use of the C++ programming language, a language that is easily expanded and maintained.

"For the last 40 years," says Herb Schildt, author of 35 computer books, "every innovation in programming has had one focus: to allow programmers to handle increasingly complex--that is, larger--programs." Schildt's books include C++: The Complete Reference and Teach Yourself C++. (Both books are published by Osborne/McGraw-Hill, Berkeley, CA.) "C++ takes the C language, which was standardized a couple of years ago, and adds to it eleven key words that support object oriented programming. Object orientation enables a programmer to handle more complex programs by compartmentalizing code and data. With it, you can build what we call 'black boxes' containing code fragments. These boxes provide very controlled access to the fragments. So once you get a subunit of your program working and you define the interface to that subunit, you can put it into your program and forget about it. If you need to make changes inside that black box, you can do so without affecting the rest of your program as long as you leave the interface the same. This means you can enhance that subunit without changing the rest of the code."

Crutcher compares this advantage to older code, such as AIPS and MIRIAD, "The old AIPS evolved on a smaller system in a more haphazard way. It is written in Fortran and uses constructs called common blocks. If you change one common block, then all parts of the code using that common block have to be updated to reflect the change. An object code such as C++ is not interdependent except through well- defined interfaces. It provides a much greater expansion capability because you can build new code by piecing together building blocks from the original code. And you can maintain the code more easily. Upgrading the operating system or adding a new functionality will involve changing only parts of the code. You don't reinvent the wheel every time you do something new."

Avoiding obsolescence

The ability to expand and maintain code is important. First, as computer technology advances, an expandable code will remain useful longer than a rigid code, regardless of the application. Secondly, the radio telescopes that supply data for the AIPS++ code generate large datasets. And scheduled expansions of those telescopes will result in even larger datasets. The goal of obtaining real-time image processing and maintaining it with growing datasets depends on the expandability of C++.

Other uses for AIPS++

The original AIPS code found many users outside of radio astronomy, and Crutcher expects the same thing to happen with AIPS++. It will have an international standard data format--Flexible Image Transport System (FITS). NCSA has an HDF conversion routine for FITS, and the design is well suited for writing modules to fit other applications. The programming methodology may also be useful for developing other large codes. Note: NCSA and NRAO's role in AIPS++ development is funded by NSF. __________________________________________________________________
access / May-June 1992 / NCSA / pubs@ncsa.uiuc.edu