- Example of Concrete Technology Implementation
The involvement of high-performance computers to the solution of time-consuming tasks of remote sensing data processing presently leads to the problem of supercomputer "hostility" to user. Typically, multicomputer works under UNIX-like operating system and acts as a computational server interacting with its clients via secured SSH channel; but widespread SSH access software (like PuTTy or SSH Secure Shell) provide user only with text console service. Thus, using multicomputers turns out to be available for those users only who are experienced in UNIX systems and unavailable to average users of MS Windows family systems which are installed on absolute majority of Russian PCs. And even after this, data processing on multicomputer is carried out in several steps: uploading data to multicomputer with SFTP client (SFTP – Secure FTP – secured protocol for data transfer over SSH), launching processing command on multicomputer with SSH terminal, and downloading results from multicomputer with same SFTP client.
Thus, for mass involvement of high-performance computers to the solution of time-consuming image processing tasks, it is necessary to create not only software implementing wide range of image processing methods and algorithms on multicomputers, but also technologies simplifying complicated for average user process of using remote multiprocessor UNIX computer. In the paper we consider an attempt to solve this problem, the experimental SSCCIP software.
We formulated the following requirements for SSCCIP software:
- The system shall be operator workstation software under MS Windows providing the service of high-performance remote sensing data processing on remote multicomputer.
- The system shall provide the visualization of input and output data.
- The system shall provide the possibility to form processing task interactively.
- The system shall provide transparent for operator execution of processing task on remote multicomputer.
- The system shall be customizable to concrete computational environment (multicomputer, computational library, task queue management, etc).
- The system shall provide maximal extensibility with new algorithms.
The latter requirement is especially important because the ease of extension and customization of such systems for the needs of concrete users are the necessary conditions of their further development.
- Client component working on client computer under operator’s control.
- Server component working on remote multicomputer and carrying out calculations proper.
- Communication component securely connecting the client and the server ones.
The vast majority of multicomputer servers accept only secured SSH client connections. What provides such a connection in SSCCIP system is:
On the server side, system SSH daemon supporting applied SSH-based protocols SFTP (for files transfer) and rexec (for remote execution of commands/programs on the server).
On the client side, CryptLib library by Peter Gutmann from Auckland University, New Zeeland. On the CryptLib basis, we implemented SFTP and rexec applied protocols.
On the higher level, the client component interacts with the server by the following scheme:
- Client component uploads source files and the special file containing task description including specification of the names of source and result files, processing algorithms, and their parameters (hereafter “task file”) to the server.
- Client component launches (enqueues task) server component on the remote multicomputer and waits for calculations completion (polls task queue with some time interval).
- Server component parses task file, performs the specified operation on the specified data, and stores results in the specified files.
- After finishing calculations, client component downloads processing results from the server to client computer and visualizes them.
Client component is a Windows application SSCCIP_Client implemented in C++. Its source code is organized as a framework providing the ease of introducing new processing operations: code performing the actions which are common for all processing operations (uploading source data and task files to server, launching and tracking task, downloading results from server), forms executeParallelTask() generic subprogram; to code a concrete processing operation, one need to implement only the actions which are specific for the operation: interactive configuration (source and result files selection, processing algorithm parameterization) and visualization of the results. For this aim framework declares IParallelTask interface with two abstract methods, Configure() and Visualize(), which must be implemented by any concrete processing class. Configure() method must return the content of task file, the list of files to upload to the server before calculations, and the list of files to download from the server after calculations. With Visialize()method, which is called by framework after downloading results from the server, a concrete processing operation performs result visualization. To execute a concrete processing operation, one must parameterize executeParallelTask() generic operation with this concrete operation class.
Also, the framework contains the tools for loading and visualizing images in various graphic formats.
Server component is a UNIX application SSCCIP_Server implemented in C++ with the use of SSCC_PIPL library for high-performance image processing on multicomputer which was created by authors earlier (reference to the library!!!). SSCCIP_Server is MPI-based application, executing on each multiprocessor node by mpirun task launcher. SSCCIP_Server source code is also organized as framework. Particularly, generic subprograms was created for some important types of processing procedures like “pixel-to-pixel” and “neighborhood-to-pixel”, implementing the actions which are common for all the procedures (parsing task file, loading source image with the support of various graphic formats, determining parallelization parameters, parallelizing itself, storing result image in graphic file). To implement a concrete processing operation, one must create C++ algorithm class whose interface is compatible with SSCC_PIPL library.
Practical testing of SSCCIP framework was carried out via implementation of technology of circle structures detection in space images.
- The circle structures detection algorithm is a “neighborhood-to-pixel” operation; therefore the implementation of server part of the technology came to design of C++ class compatible with SSCC_PIPL library which describes the algorithm in terms of “neighborhood of the pixel to be processed”) and subsequent parameterization of generic “neighborhood-to-pixel” SSCC_PIPL subroutine with this class.
- For client part of the technology, it was necessary to implement procedures of algorithm configuration and result visualization.
- Interactive configuration procedure allows operator to select paths to both source image and to processing result, radius of circle structures to search, statistical parameters of search procedure etc.; it was implemented via displaying dialog box.
- The result of algorithm execution on multicomputer is an image with black background pixels and grey/white pixels marking the centers of the concave upward/downward circle structures. So the result visualization procedure was implemented by drawing black/white circles of given radius in original image, marking location of the concave upward/downward circle structures and subsequent visualizing this combined image.
All remaining operations (uploading source image and task file to multicomputer, enqueuing computational task and tracking its status, parsing task file, loading source image and storing result image, parallelizing calculations, and downloading result to the client computer) was implemented in SSCCIP framework code. As one can see, creating new high-performance technology did not require from programmer to deal with parallelism or network communications.
The main result of the work on SSCCIP software development is the creation of the framework for high-performance remote sensing data processing on remote multicomputer. The framework allows solving a various range of remote sensing data processing and analysis problems and a developer of concrete high-performance technology within the framework must implement only details specific for the algorithm to be implemented.