Pascal is an old programming language whose relative popularity has declined over the years, but like Fortran and C it lends itself to ecient code generation. Vector Pascal was rst developed by Turner and Formella. It supports whole array operations in a manner that is similar to Fortran 90. This manual describes the Glasgow Pascal Compiler which supports vector extensions similar to those developed by Turner and Formella, extensions introduced in ISO Extended Pascal, and some new extensions.
Modern processors have provision for parallelism in two ways:
- The Single Instruction-stream Multiple Data-stream (SIMD) model in which a single instruction causes the same mathematical operation to be carried out on several operands, or pairs of operands at the same time. The level of parallelism supported ranges from 2 oating point operations at a time on the older AMD K6 architecture to 8 oating point operations at a time on the Intel AVX architecture.
- The provision of multiple cores on one chip which execute parallel instructionsets. These may all run the same instructionset as on Intel processors, or run distinct instructionsets as on the IBM Cell chip.
Whilst processor architectures are moving towards greater levels of parallelism, the most widely used programming languages like C, Java and Delphi are structured around a model of computation in which operations take place on a single value at a time. This was appropriate when processors worked this way, but has become an impediment to programmers seeking to make use of the performance oered by multi-media instructionsets. The introduction of SIMD instruction sets to Personal Computers potentially provided substantial performance increases, but the ability of most programmers to harness this performance was held back by two factors. The rst was the limited availability of compilers that make eective use of these instructionsets in a machine independent manner. The second is the fact that most popular programming languages were designed on the word at a time model of the classic von Neumann computer.
The Glasgow Pascal Compiler aims to provide an ecient and concise notation for programmers using Multi-core and SIMD enhanced CPUs. In doing so it borrows concepts for expressing data parallelism that have a long history, dating back to Iverson’s work on APL in the early ’60s.