Professional modellers deal with a variety of real problems and their main objective is to “translate” each of these problems into a strict mathematical form. In order to achieve something like that, several stages of the modelling process should be preceded. Initially, all the aspects of the problem should be clarified, and then the several variables of the problem should be identified. Finally the modeller should be able to estimate and approximate a set of courses of action that may cost money and time. It is a very important skill for the modeller to be able to identify the critical parts of a problem in order to create an optimised, abstract version, which constitutes the mathematical model of the problem. Generally, any model can be defined as a simplified representation of certain aspects, preferably the most important, of a real system. A mathematical model can be defined as a model which is created using several mathematical concepts such as functions and equations.
It should never be forgotten the fact that modelling, compared to simulation, is usually a less accurate but faster methodology for estimating the behaviour of a system, and that the main purpose of using this methodology is its high performance. Additionally, it is essential to underline, for one more time, the role of systems modelling in industry and business. Optimising the procedures of decision making and systems performance evaluation, a significant competitive advantage in matters of time and money may be gained for the company. A not so naïve observer could possibly identify a gap between the reasoning required for creating a mathematical principle, and this required for creating a mathematical model. It is true that mathematical principles are based on sound reasoning and development but, when we come to model a given real problem, we must feel free to construct the model using whatever mathematical relationships and techniques seem appropriate. In the case of creating a mathematical model, nothing can be considered as totally true or totally false and there are always several ways in which a model of a real problem can be created. [1]
Moreover, new achievements in the area of distributed and parallel computing systems have raised the need for developing models and modelling mechanisms, that can evaluate effectively the behaviour of highly complex systems, such as supercomputers, which have been created using clusters or idle desktop computers connected to the Internet. The second method of creating a supercomputer is based on the principles and the technology that define the term Grid Computing. Using the computational power of idle non-dedicated desktop machines that are connected in the Internet reveals another, more modern, approach to the way supercomputers can be created. This methodology called cycle-scavenging, which is based on volunteer computing, is currently used effectively to projects like BOINC, which was initially developed to support the SETI@home computationally intensive project. SETI was aiming to detect intelligent life outside Earth, after analysing a large amount of data coming from a telescope. There are several freely available technologies, which have been developed around the idea of Grid Computing. Distributed Resource Management Application API (DRMAA) is a high level specification API, provided by the Global Grid Forum (GGF). which is a community which aims to standardise Grid Computing globally. DRMAA tries to specify the way in which the several jobs, within one or more Distributed Resource Management (DRM) systems, are submitted and controlled. “Condor” is a popular open source software framework for course-grained distributed parallelization of computationally intensive tasks. It is commonly used to manage workload on a dedicated cluster of machines or on a Grid of idle non-dedicated desktop computers connected to the Internet. Alternative and complementary frameworks are the Cactus Grid Project and the Sun Grid Engine. Some other popular open source software middlewares for building computing grids are the “Globus Toolkit”, and the “Parallel Virtual Machine” (PVM). OGSA (Open Grid Service Architecture) describes an architecture for grid computing environment, based around services, developed within the GGF (Global Grid Forum) for scientific and business use. It actually constitutes a distributed interaction and computing architecture which assures interoperability on heterogeneous systems, so that different types of resources can communicate and share information in order to provide several services. There are several other applications and middlewares created to support the Grid Computing technology, while additionally several low or higher level APIs have been developed such as the “Message Passing Interface” (MPI) which is used for non-shared memory programming (computer clusters) , the OpenMP API used for shared memory multiprocessing programming, and the most recent “Simple API for Grid Applications” (SAGA), which is an open standard that describes an interface for high level Grid applications programming. Additionally, combining the MPI and OpenMP technologies, several other hybrids have been developed, by different distributors, in a variety of supported programming languages. The main objectives of these technologies are: high performance, scalability and portability. Parallel, multiprocessing programming in a lower level, is based on the use of threads (eg. POSIX Threads), and a key task for achieving maximum efficiency in shared memory parallel architectures is to both use exactly one thread per processor and keep these threads running during the whole lifetime of the parallel program. There are several techniques that can optimise this procedure. Additionally, the most popular and supportive languages for parallel programming are C/C++ and Fortran. Java programming language assures portability, ease of software engineering, automatic garbage collection (using the finalize() method), thorough type checking and absence of pointers. These attributes make Java development less error prone. On the other hand there are some characteristics that make the Java programming language inappropriate for parallel systems programming such as lower performance because of slower compilers, lack of support for complex numbers and multidimensional arrays, lack of suitable standards for parallel programming (no standardised interface for MPI / OpenMP), and problems using native Java Threads instead of a directive system (OpenMP). However there are some efforts to create specifications using OpenMP-like directives, in order to standardise somehow the parallel programming with Java. Similar efforts have been done for other languages as well, such as Perl and Python.
To sum up, having as a task to evaluate the behaviour of a highly complex system, such as a supercomputer, can be very demanding. This is another challenge for professional system modellers. Taking into account the recent evolution in the area of supercomputers, several questions can be derived. Which is the way, and what kind of tools could be developed and used in order to help modellers, to evaluate and optimise modern, large-scale systems, such as projects based on Grid Computing technology? How could the Queueing Networks be used in order to model and evaluate the quite complex procedures taking place within a multi-platform, shared memory (or not), multiprocessing environment. Although the low level technology and middlewares related to the Grid computing have been already matured, there are not many high level Grid applications created yet. This lack of experience in the particular field, makes the Grid computing systems modelling and evaluation even more demanding and challenging.
Reference
[1] Edwards & Hamson, “Guide Mathematical Modelling”, Palgrave 2001.
Thursday, 2 August 2007
Subscribe to:
Post Comments (Atom)
0 comments:
Post a Comment