Network


Latest external collaboration on country level. Dive into details by clicking on the dots.

Hotspot


Dive into the research topics where Paul Cockshott is active.

Publication


Featured researches published by Paul Cockshott.


Archive | 2004

Introduction to VIPER

Paul Cockshott; Kenneth Renfrew

When originally developed, Vector Pascal used a command line compiler operating in the classical Unix fashion. This interface is documented in Appendix C. However it has been conventional, at least since the release of UCSD Pascal in the late 1970s, for Pascal Compilers to be provided with an integrated development environment (IDE). The Vector Pascal IDE provides the usual capabilities of such environments, but with the additional feature of literate programming support.


Archive | 2004

Parallel Image Processing

Paul Cockshott; Kenneth Renfrew

Vector Pascal does not have a predeclared image data type. However, one can readily declare one. There are two common approaches to representing full-colour image data. In both of them the colour is represented as three components, each of 8-bit precision.


Archive | 2004

User-defined Types

Paul Cockshott; Kenneth Renfrew

Thus far we have seen that data in Pascal can be of types integer, real, Boolean, character or string. In addition, Pascal provides a rich set of type constructors that allow user-defined types to be declared. A user-defined type is given a name which follows the normal scope rules of the language. It associates an identifier with the set of possible values that a variable of that type may take on at run time.


Archive | 2004

SIMD Programming in Assembler and C

Paul Cockshott; Kenneth Renfrew

There is little exploitation of the SIMD instructions described in the previous chapter because of relatively poor compiler support. When the MMX and SSE instructions became available, Intel supplied a C compiler that had low-level extensions allowing the extended instructions to be used. Intel terms these extensions ‘assembler intrinsics’. Syntactically these look like C functions but they are translated one for one into equivalent assembler instructions. The use of assembler intrinsics simplifies the process of developing MMX code, in that programmers use a single tool — the C compiler, and do not need to concern themselves with low-level linkage issues. However, the other disadvantages of assembler coding remain. The Intel C compiler comes with a set of C++ classes that correspond to the fundamental types supported by the MMX and SIMD instruction sets. The SIMD classes do a good job of presenting the underlying capabilities of the architecture within the context of the C language. The code produced is also efficient. However, although the C++ code has a higher level of expression than assembler intrinsics, it is not portable to other processors. The same approach of essentially allowing assembler inserts into a high-level language was adopted by other compilers: TMT-Pascal, Free-Pascal and a release of gcc for the G4 processor used in the iMac.


Archive | 2004

Another Approach: Data Parallel Languages

Paul Cockshott; Kenneth Renfrew

There has been sustained research within the parallel programming community into the exploitation of SIMD parallelism on multi-processor architectures. Most work in this field has been driven by the needs of high-performance scientific processing, from finite element analysis to meteorology. In particular, there has been considerable interest in exploiting data parallelism in Fortran array processing, culminating in High Performance Fortran, Fortran 90 and F (Metcalf and Reid, 1996). Typically this involves two approaches. First, operators may be overloaded to allow array-valued expressions, similar to APL. Second, loops may be analysed to establish where it is possible to unroll loop bodies for parallel evaluation. Compilers embodying these techniques tend to be architecture specific to maximise performance and they have been aimed primarily at specialised super-computer architectures, even though contemporary general purpose microprocessors provide similar features, albeit on a far smaller scale.


Archive | 2004

Permutations and Polymorphism

Paul Cockshott; Kenneth Renfrew

Standard Pascal allows the assignment of whole arrays. As we have seen in Section 7.5, Vector Pascal extends this to allow the consistent use of mixed-rank expressions on the right-hand side of an assignment. For example, given rl: real; rl: array [0..7] of real; r2: array [0..7, 0..7] of real then we can write 1. r1:= 1/2; 2. r2:= rl*3; 3. rl:= \+ r2; 4. r1:= rl+r2[1]; Line 1 assigns 0.5 to each element of r1. Line 2 assigns 1. 5 to every element of r2. In line 3, r l gets the totals along the rows of r2. In line 4, r 1 is incremented with the corresponding elements of row 1 of r2.


Archive | 2004

Computer Speed, Program Speed

Paul Cockshott; Kenneth Renfrew

Since their invention in the 1940s, the speed of electronic computers has increased exponentially. Their raw speed is usually measured in MHz or millions of cycles per second. In the last few years, MHz have been replaced by GHz, or thousands of millions of cycles per second. These figures describe what is called the clock speed of the computer.


Archive | 2004

Input and Output

Paul Cockshott; Kenneth Renfrew

Pascal provides the word FILE as a type constructor. For any type t then FILE 0F t is the type of an extensible n-tuple whose elements are of type t. Associated with each such n-tuple is a file cursor which defines the point within the tuple at which data can be read or written. Variables may be declared to have file types.


Archive | 2004

Pattern Recognition and Image Compression

Paul Cockshott; Kenneth Renfrew

Our next examples of SIMD programming will be drawn from image compression. The encoding and decoding of compressed images were one of the original target applications of the MMX architecture. In this chapter we will give some theoretical background to image compression for those unfamiliar with it, and then go on to examine an example compressor—decompressor (CODEC) that makes use of SIMD parallelism.


Archive | 2004

Advanced Set Programming

Paul Cockshott; Kenneth Renfrew

Let us look at a simple but practical algorithm that uses sets. The algorithm is a very old one for finding prime numbers and is shown in Alg. 38.

Collaboration


Dive into the Paul Cockshott's collaboration.

Top Co-Authors

Avatar
Researchain Logo
Decentralizing Knowledge