Jump to content

Vector Pascal

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Bearcat (talk | contribs) at 08:59, 11 February 2011 (categorization/tagging using AWB). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

Template:Unencyclopedic

Vector Pascal is an extension to Pascal programming language. It is designed to support elegant and efficient expression of algorithms using the SIMD model of computation. It imports into Pascal abstraction mechanisms derived from functional languages having their origins in APL programming language. In particular it extends all operators to work on vectors of data. The type system is also extended to handle pixels and dimensional analysis.

Introduction

The introduction of SIMD instruction sets [1][2][3][4] to Personal Computers potentially provides substantial performance increases, but the ability of most programmers to harness this performance is held back by two factors. The first is the limited availability of compilers that make effective use of these instruction sets in a machine independent manner. This remains the case despite the research efforts to develop compilers for multi-media instruction sets[5][6][7]. The second is the fact that most popular programming languages were designed on the word at a time model of the classic von Neuman computer rather than the SIMD model.

Vector Pascal aims to provide an efficient and elegant notation for programmers using Multi-Media 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 [8]. We are using the word elegant in the technical sense introduced by Chaiten [9].

By an elegant algorithm we mean one which is expressed as concisely as possible. Elegance is a goal that one approaches asymtotically, approaching but never attaining. APL and J [10] allow the construction of very elegant programs, but at a cost. An inevitable consequence of elegance is the loss of redundancy. APL programs are as concise, or even more concise than conventional mathematical notation [11] and use a special characterset. This makes them hard for the uninitiated to understand. J attempts to remedy this by restricting itself to the ASCII characterset, but still looks dauntingly unfamiliar to programmers brought up on more conventional languages. The aim of Vector Pascal is to provide the conceptual gains of Iverson's notation within a framework familiar to imperative programmers.

Pascal was chosen as a base language over the alternatives of C and Java. C was rejected because notations like x+y for x and y declared as arithmetic operations are already overloaded for address operations in a way which precludes their use in map operations.

Documentation

Vector Pascal[12]

Vector Pascal, an Array Language[13]

Orthogonal Parallel Processing in Vector Pascal ][14]

Direct Compilation of High Level Languages for Multi-media Instruction-sets [15]

Supported Architectures

Standards

The syntax generally follows that of Turbo Pascal. It includes many features of Extended Standard ( ISO 8651-2:1988) and most Turbo Pascal standard (an extended Pascal standard was created as ISO/IEC 10206). For more details Click Vector Pascal Features [16]

Download

To download the latest binary or source version of Vector Pascal CLICK Download

Performance

Pascal provides considerable speedups on vector loop based applications see performance [17]

Books

References

  1. ^ Intel, Intel Architecture Software Developers Manual Volumes 1 and 2, 1999.
  2. ^ Advanced Micro Devices, 3DNow! Technology Manual, 1999.
  3. ^ Peleg, A., Wilke S., Weiser U., Intel MMX for Multimedia PCs, Comm. ACM, vol 40, no. 1 1997.
  4. ^ Intel, Willamette Processor Software Developer's Guide, February, 2000.
  5. ^ Cheong, G., and Lam, M., An Optimizer for Multimedia Instruction Sets, 2nd SUIF Workshop, Stanford University, August 1997.
  6. ^ Krall, A., and Lelait, S., Compilation Techniques for Multimedia Processors, International Journal of Parallel Programming, Vol. 28, No. 4, pp 347-361, 2000.
  7. ^ Srereman, N., and Govindarajan, G., A Vectorizing Compiler for Multimedia Extensions, International Journal of Parallel Programming, Vol. 28, No. 4, pp 363-400, 2000.
  8. ^ Iverson K. E., A Programming Language, John Wiley & Sons, Inc., New York (1962), p. 16.
  9. ^ Chaitin. G., Elegant Lisp Programs, in The Limits of Mathematics, pp. 29-56, Springer, 1997.
  10. ^ Iverson, Kenneth E., J Introduction and Dictionary, Iverson Software Inc. (ISI), Toronto, Ontario, 1995.
  11. ^ Iverson, K. E. . Notation as a tool of thought. Communications of the ACM, 23(8), 444-465, 1980.
  12. ^ Paul Cockshott, "Glasgow University", 2005
  13. ^ Paul Cockshott, Greg Michaelson, "Glasgow University and Heriot Watt University"
  14. ^ Paul Cockshott, Greg Michaelson, "Imaging Faraday Partnership, University of Glasgow School of Computing Science , 2006
  15. ^ Paul Cockshott, "Glasgow University", 2000
  16. ^ Paul Cockshott, Glasgow Univeristy
  17. ^ Paul Cockshott, "Glasgow University"