A Generic Distributed Architecture for Business Computations. Application to Financial Risk Analysis.

Similar documents
A N-dimensional Stochastic Control Algorithm for Electricity Asset Management on PC cluster and Blue Gene Supercomputer

xsim The Extreme-Scale Simulator

Simulation of Conditional Value-at-Risk via Parallelism on Graphic Processing Units

Adaptive Cluster Computing using JavaSpaces

Scaling up MATLAB Analytics Marta Wilczkowiak, PhD Senior Applications Engineer MathWorks

Computing and energy performance

Programming with MPI. Pedro Velho

Programming with MPI on GridRS. Dr. Márcio Castro e Dr. Pedro Velho

The MOSIX Scalable Cluster Computing for Linux. mosix.org

Understanding Parallelism and the Limitations of Parallel Computing

HOW TO WRITE PARALLEL PROGRAMS AND UTILIZE CLUSTERS EFFICIENTLY

Scalability of Processing on GPUs

Parallelization of Sequential Programs

Evaluation of Parallel Programs by Measurement of Its Granularity

Outline. Speedup & Efficiency Amdahl s Law Gustafson s Law Sun & Ni s Law. Khoa Khoa học và Kỹ thuật Máy tính - ĐHBK TP.HCM

Transactions on Information and Communications Technologies vol 15, 1997 WIT Press, ISSN

The Need for Speed: Understanding design factors that make multicore parallel simulations efficient

Outline. Speedup & Efficiency Amdahl s Law Gustafson s Law Sun & Ni s Law. Khoa Khoa học và Kỹ thuật Máy tính - ĐHBK TP.HCM

Monte Carlo Method on Parallel Computing. Jongsoon Kim

Huge market -- essentially all high performance databases work this way

Introduction to Parallel Programming and Computing for Computational Sciences. By Justin McKennon

Introduction to Parallel Programming

Distributed Scheduling for the Sombrero Single Address Space Distributed Operating System

Asian Option Pricing on cluster of GPUs: First Results

Outline. CSC 447: Parallel Programming for Multi- Core and Cluster Systems

MATE-EC2: A Middleware for Processing Data with Amazon Web Services

Experiences with the Parallel Virtual File System (PVFS) in Linux Clusters

Most real programs operate somewhere between task and data parallelism. Our solution also lies in this set.

DPHPC: Performance Recitation session

"Charting the Course to Your Success!" MOC A Developing High-performance Applications using Microsoft Windows HPC Server 2008

Contents. Preface xvii Acknowledgments. CHAPTER 1 Introduction to Parallel Computing 1. CHAPTER 2 Parallel Programming Platforms 11

Introduction to Parallel Computing

Advanced Topics UNIT 2 PERFORMANCE EVALUATIONS

A Cloud Framework for Big Data Analytics Workflows on Azure

SUN CUSTOMER READY HPC CLUSTER: REFERENCE CONFIGURATIONS WITH SUN FIRE X4100, X4200, AND X4600 SERVERS Jeff Lu, Systems Group Sun BluePrints OnLine

Dell Reference Configuration for Large Oracle Database Deployments on Dell EqualLogic Storage

Evaluating Algorithms for Shared File Pointer Operations in MPI I/O

USES AND ABUSES OF AMDAHL'S LAW *

arxiv: v1 [cs.dc] 2 Apr 2016

What is Performance for Internet/Grid Computation?

Application and System Memory Use, Configuration, and Problems on Bassi. Richard Gerber

Contents Overview of the Gateway Performance and Sizing Guide... 5 Primavera Gateway System Architecture... 7 Performance Considerations...

Andrea Sciabà CERN, Switzerland

Introduction to Parallel Programming

ECE 550D Fundamentals of Computer Systems and Engineering. Fall 2017

Energy issues of GPU computing clusters

Parallel Programming Concepts. Parallel Algorithms. Peter Tröger

Designing for Scalability. Patrick Linskey EJB Team Lead BEA Systems

Performance Study of the MPI and MPI-CH Communication Libraries on the IBM SP

COSC 6385 Computer Architecture - Multi Processor Systems

Analytical Modeling of Parallel Programs

A Load Balancing Fault-Tolerant Algorithm for Heterogeneous Cluster Environments

High Performance Computing. Introduction to Parallel Computing

Hardware-Efficient Parallelized Optimization with COMSOL Multiphysics and MATLAB

Memory Management Strategies for Data Serving with RDMA

Parallelization Principles. Sathish Vadhiyar

Some aspects of parallel program design. R. Bader (LRZ) G. Hager (RRZE)

Parallel Nested Loops

Parallel Partition-Based. Parallel Nested Loops. Median. More Join Thoughts. Parallel Office Tools 9/15/2011

I. INTRODUCTION FACTORS RELATED TO PERFORMANCE ANALYSIS

Lecture 4: Locality and parallelism in simulation I

Comparison of Storage Protocol Performance ESX Server 3.5

Benchmarking Cloud Serving Systems with YCSB 詹剑锋 2012 年 6 月 27 日

Communication and Optimization Aspects of Parallel Programming Models on Hybrid Architectures

Optimizing LS-DYNA Productivity in Cluster Environments

Interconnect Technology and Computational Speed

CONCURRENT DISTRIBUTED TASK SYSTEM IN PYTHON. Created by Moritz Wundke

Evolution of Database Systems

COMP/CS 605: Introduction to Parallel Computing Topic: Parallel Computing Overview/Introduction

A Study of High Performance Computing and the Cray SV1 Supercomputer. Michael Sullivan TJHSST Class of 2004

A Case for High Performance Computing with Virtual Machines

Database Services at CERN with Oracle 10g RAC and ASM on Commodity HW

The Use of Cloud Computing Resources in an HPC Environment

Layer-Based Scheduling Algorithms for Multiprocessor-Tasks with Precedence Constraints

GPU- Aware Design, Implementation, and Evaluation of Non- blocking Collective Benchmarks

Performance Tools for Technical Computing

Algorithms PART I: Embarrassingly Parallel. HPC Fall 2012 Prof. Robert van Engelen

Network. Department of Statistics. University of California, Berkeley. January, Abstract

PowerCenter 7 Architecture and Performance Tuning

Homework # 2 Due: October 6. Programming Multiprocessors: Parallelism, Communication, and Synchronization

HPX. High Performance ParalleX CCT Tech Talk Series. Hartmut Kaiser

High-Performance ACID via Modular Concurrency Control

An Analysis of Linux Scalability to Many Cores

Technische Universitat Munchen. Institut fur Informatik. D Munchen.

LOAD BALANCING ALGORITHMS ROUND-ROBIN (RR), LEAST- CONNECTION, AND LEAST LOADED EFFICIENCY

SHARCNET Workshop on Parallel Computing. Hugh Merz Laurentian University May 2008

Cloud Computing Paradigms for Pleasingly Parallel Biomedical Applications

Memory-Based Cloud Architectures

Optimizing the use of the Hard Disk in MapReduce Frameworks for Multi-core Architectures*

IBM Clustering Solutions for Unix Servers

PARALLEL IMPLEMENTATION OF DIJKSTRA'S ALGORITHM USING MPI LIBRARY ON A CLUSTER.

Contents Overview of the Compression Server White Paper... 5 Business Problem... 7

Specifying Storage Servers for IP security applications

Harp-DAAL for High Performance Big Data Computing

Performance Tuning in SAP BI 7.0

LS-DYNA Best-Practices: Networking, MPI and Parallel File System Effect on LS-DYNA Performance

Functional Partitioning to Optimize End-to-End Performance on Many-core Architectures

Parallel Program for Sorting NXN Matrix Using PVM (Parallel Virtual Machine)

IME (Infinite Memory Engine) Extreme Application Acceleration & Highly Efficient I/O Provisioning

MONTE CARLO SIMULATION FOR RADIOTHERAPY IN A DISTRIBUTED COMPUTING ENVIRONMENT

Transcription:

A Generic Distributed Architecture for Business Computations. Application to Financial Risk Analysis. Arnaud Defrance, Stéphane Vialle, Morgann Wauquier Firstname.Lastname@supelec.fr Supelec, 2 rue Edouard Belin, 77 Metz, France Philippe Akim, Denny Dewnarain, Razak Loutou, Ali Methari Firstname.Lastname@summithq.com Summit Systems S.A, 62 Rue Beaubourg, 73 Paris, France Abstract This paper introduces a generic n-tier distributed architecture for business applications, and its basic component: a computing server distributed on a PC cluster. Design of this distributed server is relevant of both cluster programming and business standards: it mixes TCP client-server mechanisms, programming and database accesses from cluster nodes. The main topics investigated in this paper are the design of a generic distributed TCP server based on the paradigm, and the experimentation and optimization of concurrent accesses to databases from cluster nodes. Finally, this new distributed architecture has been integrated in the industrial Summit environment, and a Hedge application (a famous risk analysis computation) has been implemented and performances have been measured on laboratory and industrial testbeds. They have validated the architecture, exhibiting interesting speed up. 1 Motivations Typical HPC scientific applications run long computations in batch mode on large clusters or super-computers, and use flat files to read and write data. Classical paradigm is well adapted to implement these applications on clusters. But business applications are different. They use client-server mechanisms, are often 3- tiers, 4-tiers or n-tiers architectures [2], access databases, and need to be run immediately in interactive mode. Users run numerous short or medium computations from client applications, at any time and need to get the results quickly (on-demand computations). They need to run their computations on available servers in interactive mode. Moreover, business application architectures are evolutive: new functionalities can be added easily, just including new server es in the architecture. Considering all these industrial constraints, we have designed a parallel architecture including on demand parallel computing servers. These computing servers run on PC clusters and mix distributed programming paradigm, client-server mechanism and database accesses. This parallel architecture has been evaluated on financial risk analysis based on Monte-Carlo simulations[6], leading to intensive computations and including time constraints. For example, traders in market places need to run large risk computations and to get the results quickly to make their deal on time! The financial application we wanted to speed up and to size up used a distributed database, several scalable computing servers and some presentation servers, but still needed to increase the power of its computing servers (applicative servers). The new solution uses a generic distributed server architecture, some standard development libraries, and has been integrated in the industrial Summit environment. Section 2 introduces our complete generic architecture and its basic component (a distributed on-demand server), section 3 focusses on the mix of TCP client-server paradigm and distributed programming, and section 4 introduces our investigations about database accesses from cluster nodes. Then, section describes the implementation of a complete financial application on our distributed architecture, and ex- 1

hibits some experimental performances in an industrial environment. Finally, section 6 summarizes the achieved results and points out the next steps of the project. 2 Architecture overview To parallelize our business applications we consider a large pool of PCs, organized in clusters (see figure 1), and a two level distributed architecture. The high level takes into account the partitioning of the pool of PCs into clusters. These clusters can be statically defined or dynamically created and cancelled. They can have fixed size or on demand size. These topics are still under analyze, the high level of our architecture is not totally fixed. The low level defines the basic component of our architecture: the cluster architecture of our distributed on-demand server, and its distributed programming strategy. This strategy will be TCP- and -based and will have to interface databases, TCP clients and distributed es on cluster nodes (see figure 2). In the next sections this paper focusses on the design of the basic component of our distributed architecture, and introduces our first experiments on two different testbeds. 3 -based TCP server We have identified three important features for the based TCP server we want to design (see figure 2): 1. The server node has to be clearly identified (ex: PE-3 on figure 2) and fixed by users, not by the runtime mechanism. 2. The TCP server node has to be a worker node, listening for client request and ing a part of this request. 3. The server has to remain up after ing a client request, listening for a new request and ready to it. 3.1 TCP server identification A usual program is run specifying just the number of es needed and a file listing all available machines to host these es[7]. We do not make any assumption on the numbering of the es and their mapping on the available machines: they are fixed by the runtime mechanism. So, we decided the TCP server will not be a with a specific number but will be the running on a specific node. The TCP server node will be specified in a config file or in the command line (ex: mpirun -np 1 -machinefile machines.txt prog.exe -sn PE-3, where -sn specifies the server name). It will be identified at execution time, during the initialization step of the program. Top of figure 3 illustrates this initialization step. Each reads the name of the TCP server node, gets the name of its host node, detects if it is running on the server node, and sends this information to the. So, the can identify the rank of the hosted by the server node, and broadcasts this rank to all es. Finally, each knows the rank of the server. Moreover, this algorithm chooses automatically the with the lower rank if several es are hosted by the server node. 3.2 Distributed server algorithm When the server is identified, the first computation step starts. The server initializes and listens a socket, waiting for a client request, while other es wait for a message of the server, as illustrated on the left-bottom part of the figure 3. Each time the server receives a client request, it reads this request, may load some data from the database, and splits and load balances the work on all the es (it broadcasts or scatters a mission to each ). Then each receives its mission, usually loads data from the database and starts its work (see right-bottom part of figure 3). These computation steps can include some inter- communications, depending if we a set of embarrassingly parallel operations or some more complex computations. At the end the server gathers the different results (for example with a gather operation), and returns the global result to the client. Finally, the server waits for a new client request, while other es wait for a new message from the server. This algorithm has been successfully implemented using CH and the CommonC++ socket library[1] on Windows and Linux. Next experiments introduced in this article use this client/distributed-server architecture. 2

Client application Client machine Client application Client machine Client application Client machine Client(s) Gigabit network PC PC PC PC PC PC PC PC PC Pool of PC organized in different PC clusters PC cluster 1 PC cluster 2 PC cluster 3 Parallel and Distributed Applicative Server(s) Database Database Database Data Server(s) Figure 1: Global architecture: a N-tiers client-server architecture and a pool of PCs split into clusters. Applicative servers are distributed on PC clusters. Client User machine TCP socket Database PE-1 PE-2 PE-3 TCP server... communications (Broadcast & Point-to-Point) Figure 2: Detail of the basic component of the architecture: a distributed and parallel TCP applicative server. PE-xx 4 DB access experiments Business Application use databases, so our distributed architecture needs to access databases from cluster nodes. In the next sections we identify three main kinds of database accesses and several access strategies from cluster nodes. Then we try to point out a generic and efficient strategy for each kind of access. 4.1 Three kinds of DB accesses We can easily identify three kinds of data accesses from concurrent es: 1. Independent data reading: each reads specific data. For example, financial computing es load different lists of trades to evaluate. 2. Identical data reading: all es need to read the same data. For example, financial computing es need to load the same market data before to evaluate their trades. 3. Independent data writing: each writes its results in a database. 4.2 Possible DB access strategies From a parallel programming point of view, we can adopt different implementation strategies. Database accesses can be distributed on the different es, or can be centralized (gathered) on a that will forward/collect the data to/from other es, using communications. When centralized on a, database accesses and data forward/collection can be serialized or overlapped depending on communication used. When database accesses are distributed in all es, their executions can be highly concurrent or scheduled using synchronization mechanisms. All these strategies have been experimented on the three kinds of database access identified previously, and on two testbeds using different databases. 3

Detection of the rank and of the total number of es Reads the name of the server node in the command line or in the config file Gets its HostName (system call) Checks if it runs on the server node (HostName = ServerName?) Sets its ServerNodeFlag gathers all the ServerNodeFlag looks for the with the lower rank that has a ServerNodeFlag set store this ServerProcessId broadcasts the ServerProcessId to all other Compars its rank and the ServerProcessId, and sets its ServerProcessFlag Server initializes a TCP socket and listens its TCP port _Init() Initialization step Computation steps Server waits for a client TCP request Server reads some data in the database Server splits the client request Server scaters the work to do to each worker Server reads some data and executes its work Server gathers the results Server sends the final result to the TCP client (or to a result server!) Non server es wait for a msg from the server Non server es read some data and executes their works Non server es send their result to the server Server closes the TCP socket _Finalize() Figure 3: Generic algorithm of a TCP parallel server implemented on a cluster with. 4.3 MySQL database experiments Figures 4, 6 and 8 show the times we have measured on our laboratory testbed: a 6 node Gigabit Ethernet PC cluster accessing a MySQL database across the native MySQL API. This database was hosted on one devoted PC with SCSI disks. When reading independent data from each node (ex: loading some trades to evaluate), it is really faster each node makes its own database access than centralizing the requests on one node (see figure 4). The database did not slow down when all the cluster nodes emit concurrent requests, and there is no improvement when trying to schedule and serialize the different accesses. At the opposite, when reading identical set of data from each node (ex: loading some common market data on each or) the most efficient way is to make only one database access on one node and to broadcast the data to all other nodes (see figure 6). A broadcast operation makes it easy to implement. Finally, when writing independent results from each node in the database, it is more efficient to make concurrent write operations than to centralize the data on one node before to write in the database (see figure 8). This was similar to read independent data, but concurrent writes in our MySQL database were a little bit more efficient when scheduled and serialized to avoid contention on the database (see the distributedscheduled curve). synchronization barriers 4

Total data access time(s) 4 3 3 2 1 1 centralized-serialized centralized-overlapped distributed-concurrent distributed-scheduled 1 1 2 3 Total size of data read in DB (MB) Figure 4: Loading different data on a 6-node cluster from a MySQL database, with SCSI disks and across the native MySQL API. Total data access time(s) 1 8 6 4 centralized-serialized centralized-overlapped distributed-concurrent distributed-scheduled 1 3 4 6 7 Total size of data read in DB (KB) Figure : Loading different data on a 3-node cluster from a Sybase database, with IDE disks and across the Summit API. 7 3 Total data access time(s) 6 4 3 1 distributed & concurrent centralized & broadcasted Total data access time(s) 2 1 1 distributed & concurrent centralized & broadcasted 1 1 2 3 Size of common data read in DB (MB) Figure 6: Loading a same set of data on a 6- node cluster from a MySQL database, with SCSI disks and across the native MySQL API. 1 3 4 6 7 Size of common data read in DB (KB) Figure 7: Loading a same set of data on a 3- node cluster from a Sybase database, with IDE disks and across the Summit API. make this scheduling easy to implement. 4.4 Sybase database experiments This section introduces experiments on a Sybase database, accessed across the Summit API (used by all Summit applications), and hosted on one devoted PC connected to the cluster across a Gigabit Ethernet network. However, this PC had only IDE disks, leading to longer execution times than previous experiments on the laboratory testbed. For each kind of database access, the distributed & concurrent strategy appeared the most efficient, or one of the most efficient (see figures, 7 and 9). Then it has been the favorite, because it is efficient and it is very easy to implement. It seems the industrial Sybase database (accessed across the Summit API) supports any kind of concurrent accesses from a small number of nodes. 4. Best strategies Experiments on industrial and laboratory testbeds have led to point out different best strategies to access a database from a cluster (see table 1). Finally, it is possible to identify the best common strategies for the two testbeds we have experimented, considering only efficient strategies and looking for good compromises. But we prefer to consider real business applications will use only industrial databases (like Sybase), and to focus on the distributed-concurrent strategy. However, performances and optimal strategies could change when the number of ors will increase. So, our next experiments will focus on larger industrial systems. The Hedge application The Hedge computation is a famous computation in risk analysis. It calls a lot of basic pricing operations (frequently based on Monte-Carlo

Total data access time(s) 4 3 1 centralized-serialized centralized-overlapped distributed-concurrent distributed-scheduled 1 1 2 3 Total size of data written in DB (MB) Figure 8: Storing different data on a MySQL database from a 6-node cluster, with SCSI disks and across the native MySQL API. Total data access time(s) 4 3 3 2 1 1 centralized-serialized centralized-overlapped distributed-concurrent distributed-scheduled 2 4 6 8 1 12 14 Total size of data written in DB (MB) Figure 9: Storing different data on a Sybase database from a 3-node cluster, with IDE disks and across the Summit API. Independent Identical Independent data reading data reading data writing MySQL - native MySQL API distributed & centralized & distributed & most interesting strategies concurrent broadcast scheduled Sybase - Summit API distributed & distributed & distributed & most interesting strategies concurrent concurrent concurrent Best common strategies distributed & centralized & distributed & (interesting compromises) concurrent broadcast concurrent Table 1: Best database access strategies from cluster nodes simulations) and consider large sets of market data. It is time consuming and a good candidate for distributed computing, like many financial risk computations ([8, 4]). The following sections introduce its implementation in the industrial Summit environment, according to our distributed TCP-server architecture..1 Introduction to the Hedge The Hedge is the computation of a set of discrete derivatives, based on finite differences. The market data are artificially disturbed, some trade values are re-computed, and the difference with their previous values measure their sensitivity to the market data changes. These computations allow to detect and reduce the risks associated to trades and to market data evolution. The distributed algorithm of our Hedge computation is illustrated on the figure 1. The server receives a client request (a request for a Hedge computation) (1), loads from the database some informations on the trades to (2), and splits the job for the different cluster nodes, according to a load balancing strategy (3). Then the server sends to each a description of their job, using a collective communication (broadcast or scatter operation). So, each receives a description of a task to (4) and then loads data from the database: a list of trades to (4) and a list of up to date market data (). Then all cluster nodes shift the market data (6) to artificially disturb these data, and re-evaluate all their trades (7). Finally, the server gathers these elementary results (8) (executing a gather operation) and returns the global result to the client (9)..2 Optimized implementation We have implemented the distributed algorithm introduced in the previous section in the Summit environment with different optimizations. First optimization has been to implement the database accesses with respect to the optimal strategies identified on an industrial database in section 4.. Each or need to read the trades and the market data it has to (step 4 and of algorithm 1). The corresponding database accesses are achieved according to the distributed-concurrent strategy: each or accesses its data concurrently to other ors. The second optimization has been to call a specific function of the Summit API to read 6

- initializations 1 - Server node receives a request on its TCP port 2 - Server node asks to the DB a list of the trade descriptions 3 - Server node loads balance the set of trades to evaluate on the different nodes, and sends a task description to each node ( communication) 4 - Each node receives a task description ( comm.), and loads trades from the DB - Each node loads its data from the DB 6 - Each node shifts the data 7 - Each node evaluates its trades 8 - Server node gathers results ( comm.) 9 - Server node sends the final result to the client (on the TCP socket) Server 4 - Each node receives a task description ( comm.), and loads trades from the DB - Each node loads its data from the DB 6 - Each node shifts the data 7 - Each node evaluates its trades 8 - Server node gathers results ( comm.) Halt (if halt msg received) All other es Figure 1: Main steps of our Hedge computation. short trade descriptions on the server, in place of complete descriptions, to achieve the step 2 of the algorithm (see figure 1). This specific function was available but not used in sequential programs. This optimization has decreased the serial fraction of the Hedge computation of 3%. Its impact will be great on large clusters, when the execution time of the serial fraction will become the most important part of the total execution time, according to Amdahl s law[3]. The third optimization has been to improve the load balancing mechanism (step 3 on figure 1) taking into account the trades are heterogeneous. Now the server sorts the trades according to their kinds or to their estimated ing times, and distribute the trades on the different ors applying a round-robin algorithm. To estimate the ing time of the trades, some benchmarks have to be run before the Hedge computation to measure some elementary execution times. These measures are stored in a database and read by the server. However, trades with the same kind have similar ing times, and optimizations of the load balancing based on the kind of the trades or on their estimated execution time have led to close improvements. Finally, compared to a basic load balancing of the amount of trades, the total execution time has decreased of 3% on 3 PCs, when ing trades of different kinds..3 Experimental performances We have run an optimized distributed Hedge computations on a 8-node industrial cluster, with a Sybase database and the Summit environment. We have ed a small portfolio of trades and a larger one with 1 trades, both were heterogeneous portfolios including different kinds of trades. The curves on the figure 11 show the speed up reaches approximately on 8 PCs for the small portfolio, and increase until.8 for the large portfolio, leading to an efficiency close to 73%. These first real experiments are very good, considering the entire Hedge application includes database accesses, sequential parts and heterogeneous data. Moreover, performances seem to increase when the problem size increases, according to Gustafson s law []. Our distributed architecture and algorithm are promising to larger problems on larger clusters. 7

Speed up of Hedge computation 8 7 6 4 3 2 1 1 S(P) = P SU trades SU 1 trades 2 3 4 Number of PC Figure 11: Experimental speed up of a Hedge computation distributed on an industrial system, including a Sybase database, a Gigabit Ethernet network and the Summit environment. 6 Conclusion This research has introduced a generic n-tiers distributed architecture for business applications, and has validated its basic component: a distributed on-demand server mixing TCP client-server mechanism, programming and concurrent accesses to databases from cluster nodes. We have designed and implemented a distributed TCP server based on both TCP clientserver and paradigms, and we have tracked the optimal strategies to access databases from cluster nodes. Then we have distributed a Hedge computation (a famous risk analysis computation) on an industrial testbed, using our distributed TCP server architecture and optimizing the database accesses and the load balancing mechanism. We have achieved very good speedup, and an efficiency close to 73% when ing a classical 1-trade portfolio on a 8-node industrial testbed. These performances show our distributed approach is promising. Implementation of the basic component of our distributed architecture has been successful under Windows on the Summit industrial environment. We have both used the CommonC++ and CH-1 libraries, a Sybase database and the Summit proprietary toolkit. Next step will consist in running bigger computations on larger clusters, and testing the scalability of our distributed architecture. 6 7 8 Acknowledgment Authors want to thank Region Lorraine that has supported a part of this research. References [1] GNU Common C++ documentation. http://gnu.mirrors.atn.ro/software/commonc++/ commonc++.html. [2] R. M. Adler. Distributed coordination models for client/sever computing. Computer, 4(28), April 199. [3] G.M. Amdahl. Validity of the single or approach to achieving large scale computing capabilities. In AFIPS Conference Proceedings, pages 483 48, 1967. [4] J-Y. Girard and I.M. Toke. Monte carlo valuation of multidimensional american options deployed as a grid service. 3rd EGEE conference, Athens, 18-22 April,. [] J.L. Gustafson. Reevaluating Amdahl s law. Communications of the ACM, 31(), May 1988. [6] John C. Hull. Options, Futures and Other Derivatives, th Edition. Prentice Hall College Div, July 2. [7] P.S. Pacheco. Parallel programming with. Morgan Kaufmann, 1997. [8] Shuji Tanaka. Joint development project applies grid computing technology to financial risk management. NLI Research report 11/21/3, 3. 8