Abstract

Software to support the Monte Carlo method generates large vectors of pseudo-random numbers and uses these as operands in complex mathematical expressions. When such software is run on standard PC-based hardware, the volume of data involved often exceeds the physical RAM available. To address this problem, vectors must be paged out to disk and paged back in when required. This paging is often the performance bottleneck limiting the execution speed of the software. Because the mathematical expressions are specified in advance of execution, predictive solutions are possible – for instance, by treating the problem similarly to register allocation. The problem of allocating scalar variables to processor registers is a widely studied aspect of compiler implementation. A register allocation algorithm decides which variable is held in which register, when the value in a register can be overwritten, and when a value is stored in, or later retrieved from, main memory. In this paper, register allocation techniques are used to plan the paging of vectors in Monte Carlo software. Two register allocation algorithms are applied to invented vector programs written in a prototype low-level vector language and the results are compared.

Highlights

  • In the Monte Carlo method, a random sample of inputs is fed through a deterministic set of computations

  • Tian and Benkrid [2] demonstrated the use of field-programmable gate arrays (FPGAs) to speed up a Monte Carlo simulation, but the need for specialized hardware limits the commercial relevance of the findings

  • The Monte Carlo models considered here perform deterministic computations which are defined in advance of the model run, making it possible to predict when values will be required in memory, when they can be paged to disk, and what the performance impact of paging would be

Read more

Summary

Introduction

In the Monte Carlo method, a random sample of inputs is fed through a deterministic set of computations. One problem that arises when implementing such software is that the volume of data involved in the computations exceeds the physical RAM available on the host This leads to vectors of values being paged out to disk to make more memory available, and a particular vector is paged back in when it is required for a later stage of computation. Tian and Benkrid [2] demonstrated the use of field-programmable gate arrays (FPGAs) to speed up a Monte Carlo simulation, but the need for specialized hardware limits the commercial relevance of the findings. This project assumes that the software will run on a conventional PC or server. The conclusion (section 8) summarises the findings and suggests further research

Terminology
Applications
Approaches
Colouring an interference graph
Splitting live ranges to reduce interference
Coalescing
Eliminating φ-functions
Handling architectural complications
Alternatives to graph colouring
Linear scan
Puzzle solving
Introducing register-allocated paging
Regarding memory as a register file for large vectors
Spilling vector pseudos
Program structure and problem size
Coalescing moves of vector pseudos
Overview of prototype
Prototype language and virtual machine
Algorithm implementations
Overview of experiments
Effect of program size on spilling
Comparing spilling at different register pressures
Resource consumption by IRC
Resource consumption by ELS1
Key findings
Future research
Full Text
Paper version not known

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call

Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.