A multiprocessing Framework for SAR Image Processing Christian Andres, Torben Keil, Raik Herrmann and Rolf Scheiber Microwaves and Radar Institute German Aerospace Center (DLR) Oberpfaffenhofen Email: [christian.andres, torben.keil, raik.herrmann, rolf.scheiber]@dlr.de Abstract—This paper introduces a framework developed for image processing of synthetic apterure radar (SAR) images. It en- capsulates features of modern hardware architectures, including symmetric and asymmetric multiprocessing, within an easy and intuitive to use application programming interface (API). The multiprocessing part is designed for unified usage of different architectures reaching from multicore processors to cluster of workstations to grids of clusters. So an applcation using the framework can be ported from one architecture to another without any changes in the source code. The framework builds the bottom layer of the processing system developed for the German Aerospace Center’s (DLR) new airborne SAR sensor, the F-SAR [1]. I. I NTRODUCTION The German Aerospace Centers new airborne SAR sen- sor (F-SAR) gets more and more operative, and first data sets are already acquired. Therefore new requirements to the processing software appear, in terms of data rates and operational modes. Due to the massive amount of data, the processing time required for one data acquisition (without interferometry) has been estimated from 8 to 28 hours using one AMD Athlon64 CPU at 2.2GHz. So new strategies for data handling and processing are required. Therefore a new processor implementation is done. The processor implemen- tation is realized object oriented using the C++ programming language which was identified to achieve maximum speed and flexibility. The processor will provide support for different kinds of hardware including symmetrical and asymmetrical multiprocessing architectures. Algorithms are developed from many different scientists, so a mechanism to handle the mul- tiprocessing transparently is required to decrease development time of the different algorithms. This is encapsulated within a numerical framework. A. Interface The framework is used from many different developers from many different countries, most of them barely familiar with C++ programming. The design goal is to provide a simple interface to the numerical operations, e.g. the easies way write the summation of two arrays x and y is: z = x + y, (1) ignoring the fact, that C++ is originally not able to add arrays. The task of the framework is to provide these operators to the Fig. 1. Array boundary template application developer, encapsulating all the multiprocessing possibilities. B. Policy based problem decomposition First of all, the framework is designed for speed. Therefore a few rules were taken into account: avoid data copy as often as possible, avoid branches, keep the flexibility necessary for SAR processing. In object oriented design, flexibility is often achieved using polymorphism. The problem with polymorphism is, that the branch it replaces, is just handled transparently by the compiler using virtual function pointers, but it is not eliminated. A method to eliminate those branches is the policy based class configuration introduced in [2]. Here, the problem is divided into different subclasses (policies) which are passed as generic parameters to a main class template, which is derived from the different policies. The compiler generates now native classes for each possibility of the class instance. Method calls are now native calls, and flexibility is achieved by exchanging the policies, which is carried out using generic copy constructors. II. ARRAY ABSTRACTION Many libraries for array abstraction are spread across the internet, but most developers prefer to create their own, be- cause none of those libraries provides exactly the functionality needed. SAR processing requires the following features: iterating through array lines and columns (avoid corner turns or subscripts), possibility to store different data types including complex samples, overlapped block processing