<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="static/style.xsl"?><OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd"><responseDate>2026-09-20T20:05:19Z</responseDate><request verb="GetRecord" identifier="oai:www.repository.cam.ac.uk:1810/245471" metadataPrefix="uketd_dc">https://api.repository.cam.ac.uk/server/oai/request</request><GetRecord><record><header><identifier>oai:www.repository.cam.ac.uk:1810/245471</identifier><datestamp>2024-06-27T10:47:42Z</datestamp><setSpec>com_1810_219481</setSpec><setSpec>com_1810_256065</setSpec><setSpec>col_1810_219482</setSpec></header><metadata><uketd_dc:uketddc xmlns:uketd_dc="http://naca.central.cranfield.ac.uk/ethos-oai/2.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:uketdterms="http://naca.central.cranfield.ac.uk/ethos-oai/terms/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:doc="http://www.lyncode.com/xoai" xsi:schemaLocation="http://naca.central.cranfield.ac.uk/ethos-oai/2.0/ http://naca.central.cranfield.ac.uk/ethos-oai/2.0/uketd_dc.xsd">
   <dc:title>Extending old languages for new architectures</dc:title>
   <dc:identifier xsi:type="dcterms:DOI">10.17863/CAM.16383</dc:identifier>
   <dc:creator>White, Leo</dc:creator>
   <dcterms:abstract>Architectures evolve quickly. The number of transistors available to chip designers doubles every 18 months, allowing&#xd;
increasingly complex architectures to be developed on a single chip. Power dissipation issues have forced chip designers&#xd;
to look for new ways to use the transistors at their disposal. This situation inevitably leads to new architectural&#xd;
features on a fairly regular basis. Enabling programmers to benefit from these new architectural features can be&#xd;
problematic.&#xd;
&#xd;
Since architectures change frequently, and compilers last for a long time, it is clear that compilers should be designed&#xd;
to be extensible. This thesis argues that to support evolving architectures a compiler should support the creation of&#xd;
high-level language extensions. In particular, it must support extending the compiler's middle-end.  We describe the&#xd;
design of EMCC, a C compiler that allows extension of its front-, middle- and back-ends.&#xd;
&#xd;
OpenMP is an extension to the C programming language to support parallelism. It has recently added support for&#xd;
task-based parallelism, a dynamic form of parallelism made popular by Cilk. However, implementing task-based parallelism&#xd;
efficiently requires much more involved program transformation than the simple static parallelism originally supported&#xd;
by OpenMP. We use EMCC to create an implementation of OpenMP, with particular focus on efficient implementation of&#xd;
task-based parallelism.&#xd;
&#xd;
We also demonstrate the benefits of supporting high-level analysis through an extended middle-end, by developing and&#xd;
implementing an interprocedural analysis that improves the performance of task-based parallelism by allowing tasks to&#xd;
share stacks. We develop a novel generalisation of logic programming that we use to concisely express this analysis, and&#xd;
use this formalism to demonstrate that the analysis can be executed in polynomial time.&#xd;
&#xd;
Finally, we design extensions to OpenMP to support heterogeneous architectures.</dcterms:abstract>
   <uketdterms:institution>University of Cambridge</uketdterms:institution>
   <dcterms:issued>2014-07-01</dcterms:issued>
   <dc:type>Thesis</dc:type>
   <uketdterms:qualificationlevel>Doctoral</uketdterms:qualificationlevel>
   <uketdterms:qualificationname>Doctor of Philosophy (PhD)</uketdterms:qualificationname>
   <dc:language>en</dc:language>
   <dcterms:isReferencedBy xsi:type="dcterms:URI">https://www.repository.cam.ac.uk/handle/1810/245471</dcterms:isReferencedBy>
   <dc:identifier xsi:type="dcterms:URI">https://apollo8-f-pro.lib.cam.ac.uk/bitstreams/e6ee1afc-5fee-4371-916d-ff9eacc025d8/download</dc:identifier>
   <uketdterms:checksum xsi:type="uketdterms:MD5">0698ed9194ace97e2bd07f30043ba94f</uketdterms:checksum>
   <dcterms:license>https://apollo8-f-pro.lib.cam.ac.uk/bitstreams/1026a7fe-f53a-460d-98d1-0d96e47903f6/download</dcterms:license>
   <uketdterms:checksum xsi:type="uketdterms:MD5">835269bda140c10400fe0606a14c3d21</uketdterms:checksum>
   <dc:subject>Computer science</dc:subject>
</uketd_dc:uketddc>
</metadata></record></GetRecord></OAI-PMH>