Data-Parallel Spreadsheet Programming
- Florian Biermann
Research Output:
Theses
PhD thesis
Open access
Abstract
Spreadsheets are used in industry and academia across all domains and their application ranges from simple accounting to sequencing of amino acids. Some businesses re-use and extend spreadsheets over years and not only complexity but also performance becomes a problem.
In the last two decades, parallel shared-memory multiprocessor computers have become abundant, but they remain notoriously difficult to program correctly. Therefore, it is often not possible for end-users to make full use of their parallel hardware. Declarative, functional programming languages are an alternative to imperative programming languages that makes programming shared-memory multiprocessors much easier: due to the absence of side effects in these languages, compilers and libraries can parallelize programs automatically. The formula language of spreadsheets is a declarative, first-order functional language and therefore potentially allows for an automatic parallelization of spreadsheet calculations.
This thesis explores the design space of automatically parallelizing spreadsheet recalculations. Often times, computations in spreadsheets are structured in a way that corresponds to declarative high-level programming on arrays. Therefore, the focus of this thesis lies on practical data-parallelism in a spreadsheet model of computations. This thesis makes the following contributions:
• we show how to automatically re-write high-level spreadsheet
structures into higher-order functional programs for parallel
execution;
• we contrast and combine our re-writing technique with a
recalculation algorithm that dynamically exploits dataflow
parallelism in spreadsheets;
• we describe a representation of two-dimensional arrays that
pragmatically caters to the needs of high-level array programming; and
• we explore a hypothetical approach to array fusion and laziness in a purely functional, strict spreadsheet language.
In the last two decades, parallel shared-memory multiprocessor computers have become abundant, but they remain notoriously difficult to program correctly. Therefore, it is often not possible for end-users to make full use of their parallel hardware. Declarative, functional programming languages are an alternative to imperative programming languages that makes programming shared-memory multiprocessors much easier: due to the absence of side effects in these languages, compilers and libraries can parallelize programs automatically. The formula language of spreadsheets is a declarative, first-order functional language and therefore potentially allows for an automatic parallelization of spreadsheet calculations.
This thesis explores the design space of automatically parallelizing spreadsheet recalculations. Often times, computations in spreadsheets are structured in a way that corresponds to declarative high-level programming on arrays. Therefore, the focus of this thesis lies on practical data-parallelism in a spreadsheet model of computations. This thesis makes the following contributions:
• we show how to automatically re-write high-level spreadsheet
structures into higher-order functional programs for parallel
execution;
• we contrast and combine our re-writing technique with a
recalculation algorithm that dynamically exploits dataflow
parallelism in spreadsheets;
• we describe a representation of two-dimensional arrays that
pragmatically caters to the needs of high-level array programming; and
• we explore a hypothetical approach to array fusion and laziness in a purely functional, strict spreadsheet language.
Publication Information
Output type
Research Output:
Theses
PhD thesis
Original language
EnglishQualification
PhDPublication milestones
- Published - 2018
Publication status
Published - 2018
Supervisors/Advisors
- Peter Sestoft (Principal Supervisor)
Award date
11/10/2018Publisher
IT-Universitetet i København, DenmarkBook series
- Book series name: ITU-DS
Series number: 148
ISSN: 1602-3536
ISBN (Print)
978-87-7949-015-4Access to documents
Final published version, 861.25 KB
