{"id":{"repo_id":"cambridge","oai_identifier":"oai:www.repository.cam.ac.uk:1810/390136"},"canonical_url":"https://search.dev.ndltd.org/etd/cambridge/oai:www.repository.cam.ac.uk:1810/390136","repository":{"repo_id":"cambridge","name":"Cambridge University","base_url":"https://api.repository.cam.ac.uk/server/oai/request"},"display":{"title":"Exploiting heterogeneous parallelism in software and hardware","abstract":"Modern computer hardware is becoming increasingly diverse, necessitating the consideration of heterogeneous parallelism. This means dividing algorithms into tasks running simultaneously which are not all identical, and may run on non-identical hardware. This has clear advantages, but has many issues, particularly in software development. A heterogeneous program is often directly implemented as a series of communicating sequential programs, but I argue that this approach is limiting and unhelpful. It leads to early and fixed decomposition of the program by the designer which then limits flexibility if this decomposition is later found to be sub-optimal. This also hurts portability; migrating to a system with different hardware may require a new parallelisation strategy which therefore means a complete reimplementation of all the synchronisation and communication in the program. My thesis is that heterogeneous parallelism is a powerful technique for generating high performance software on modern and future hardware, but that exploiting it practically requires a new optimisation paradigm. I present my novel design for an optimisation and parallelisation framework based on a guided transformation of a functional specification program into an efficient and optimised parallel implementation. I implement this in a tool called DKAR and show it is practical for case studies on the Loki architecture, a representative many-core architecture that I helped fabricate. Software developed by DKAR is competitive with hand generated code, despite a principled, error-free, and flexible development process. These transformations can make substantial changes to the specification, including true algorithmic transformation. I argue this represents the first practical formalisation of the notion of program optimisation and parallelisation, with potential applications in better defining existing algorithms in terms of transformation of a specification, as well as potentially discovering new algorithms with search techniques. Crucially, the faster development process with DKAR allows ideas to be explored rapidly compared with existing development methodologies, allowing more ideas to be tried, and providing flexibility in the face of changing platforms or requirements.","abstract_html":"Modern computer hardware is becoming increasingly diverse, necessitating the consideration of heterogeneous parallelism. This means dividing algorithms into tasks running simultaneously which are not all identical, and may run on non-identical hardware. This has clear advantages, but has many issues, particularly in software development. A heterogeneous program is often directly implemented as a series of communicating sequential programs, but I argue that this approach is limiting and unhelpful. It leads to early and fixed decomposition of the program by the designer which then limits flexibility if this decomposition is later found to be sub-optimal. This also hurts portability; migrating to a system with different hardware may require a new parallelisation strategy which therefore means a complete reimplementation of all the synchronisation and communication in the program. My thesis is that heterogeneous parallelism is a powerful technique for generating high performance software on modern and future hardware, but that exploiting it practically requires a new optimisation paradigm. I present my novel design for an optimisation and parallelisation framework based on a guided transformation of a functional specification program into an efficient and optimised parallel implementation. I implement this in a tool called DKAR and show it is practical for case studies on the Loki architecture, a representative many-core architecture that I helped fabricate. Software developed by DKAR is competitive with hand generated code, despite a principled, error-free, and flexible development process. These transformations can make substantial changes to the specification, including true algorithmic transformation. I argue this represents the first practical formalisation of the notion of program optimisation and parallelisation, with potential applications in better defining existing algorithms in terms of transformation of a specification, as well as potentially discovering new algorithms with search techniques. Crucially, the faster development process with DKAR allows ideas to be explored rapidly compared with existing development methodologies, allowing more ideas to be tried, and providing flexibility in the face of changing platforms or requirements.","abstract_has_math":false,"creators":["Chadwick, Alexandra"],"institution":"University of Cambridge","degree_name":"Doctor of Philosophy (PhD)","degree_level":"Doctoral","degree_discipline":null,"degree_department":null,"school":null,"contributors":[],"advisors":["Mullins, Robert"],"committee_chairs":[],"committee_members":[],"year":2022,"date_issued":"2022-07-26","date_published":"2022-07-26","updated_at":"2026-07-22T22:23:59Z","subjects":["Parallelism","Compilers","Computer Architecture","Microarchitecture","Programming Languages"],"languages":["eng"],"rights":[],"rights_urls":["https://www.repository.cam.ac.uk/bitstreams/6b6497ee-016f-454a-ae31-df05fa13fd1c/download","https://creativecommons.org/licenses/by/4.0/"],"identifier_entries":[{"key":"dc:creator.authoridentifier","label":"Author Identifier","values":["0000000340915355"],"render_values":[{"text":"0000-0003-4091-5355","href":"https://orcid.org/0000-0003-4091-5355","code":true}]}]},"links":{"outbound_url":"https://doi.org/10.17863/CAM.121792","outbound_label":"DOI","outbound_source":"dc:identifier.doi"},"metadata_groups":[{"id":"people","label":"People","entries":[{"key":"dc:contributor.advisor","label":"Advisor","values":["Mullins, Robert"]},{"key":"dc:contributor.sponsor","label":"Sponsor","values":["George and Lillian Schiff Foundation"]},{"key":"dc:creator","label":"Author","values":["Chadwick, Alexandra"]},{"key":"dc:creator.authoridentifier","label":"Author Identifier","values":["0000000340915355"]}]},{"id":"academic_context","label":"Academic Context","entries":[{"key":"dc:date.issued","label":"Date","values":["2022-07-26"]},{"key":"dc:publisher.institution","label":"Dc Publisher Institution","values":["University of Cambridge"]},{"key":"dc:relation.isreferencedby.uri","label":"Dc Relation Isreferencedby URI","values":["https://www.repository.cam.ac.uk/handle/1810/390136"]},{"key":"dc:type","label":"Dc Type","values":["Thesis"]},{"key":"dc:type.qualificationlevel","label":"Dc Type Qualificationlevel","values":["Doctoral"]},{"key":"dc:type.qualificationname","label":"Dc Type Qualificationname","values":["Doctor of Philosophy (PhD)"]}]},{"id":"subjects_keywords","label":"Subjects and Keywords","entries":[{"key":"dc:subject","label":"Dc Subject","values":["Parallelism","Compilers","Computer Architecture","Microarchitecture","Programming Languages"]}]},{"id":"language_rights","label":"Language and Rights","entries":[{"key":"dc:language","label":"Dc Language","values":["eng"]},{"key":"dc:rights","label":"Dc Rights","values":["https://www.repository.cam.ac.uk/bitstreams/6b6497ee-016f-454a-ae31-df05fa13fd1c/download","https://creativecommons.org/licenses/by/4.0/"]}]},{"id":"identifiers","label":"Identifiers","entries":[{"key":"dc:identifier.doi","label":"DOI","values":["https://doi.org/10.17863/CAM.121792"]},{"key":"dc:identifier.uri","label":"Identifier URI","values":["https://www.repository.cam.ac.uk/bitstreams/cc1fbb91-b7b3-48d5-9df1-6873af351520/download"]}]},{"id":"additional","label":"Additional Metadata","entries":[{"key":"dc:description.abstract","label":"Abstract","values":["Modern computer hardware is becoming increasingly diverse, necessitating the consideration of heterogeneous parallelism. This means dividing algorithms into tasks running simultaneously which are not all identical, and may run on non-identical hardware. This has clear advantages, but has many issues, particularly in software development. A heterogeneous program is often directly implemented as a series of communicating sequential programs, but I argue that this approach is limiting and unhelpful. It leads to early and fixed decomposition of the program by the designer which then limits flexibility if this decomposition is later found to be sub-optimal. This also hurts portability; migrating to a system with different hardware may require a new parallelisation strategy which therefore means a complete reimplementation of all the synchronisation and communication in the program. My thesis is that heterogeneous parallelism is a powerful technique for generating high performance software on modern and future hardware, but that exploiting it practically requires a new optimisation paradigm. I present my novel design for an optimisation and parallelisation framework based on a guided transformation of a functional specification program into an efficient and optimised parallel implementation. I implement this in a tool called DKAR and show it is practical for case studies on the Loki architecture, a representative many-core architecture that I helped fabricate. Software developed by DKAR is competitive with hand generated code, despite a principled, error-free, and flexible development process. These transformations can make substantial changes to the specification, including true algorithmic transformation. I argue this represents the first practical formalisation of the notion of program optimisation and parallelisation, with potential applications in better defining existing algorithms in terms of transformation of a specification, as well as potentially discovering new algorithms with search techniques. Crucially, the faster development process with DKAR allows ideas to be explored rapidly compared with existing development methodologies, allowing more ideas to be tried, and providing flexibility in the face of changing platforms or requirements."]},{"key":"dc:format.checksum.md5","label":"Dc Format Checksum Md5","values":["30b6a7c0f72b8856e9422a28de3c85cf","87eda9de84448d1f82354d60eee3eb5f"]},{"key":"dc:title","label":"Title","values":["Exploiting heterogeneous parallelism in software and hardware"]}]}],"canonical_facts":{"dc:contributor.advisor":["Mullins, Robert"],"dc:contributor.sponsor":["George and Lillian Schiff Foundation"],"dc:creator":["Chadwick, Alexandra"],"dc:creator.authoridentifier":["0000000340915355"],"dc:date.issued":["2022-07-26"],"dc:description.abstract":["Modern computer hardware is becoming increasingly diverse, necessitating the consideration of heterogeneous parallelism. This means dividing algorithms into tasks running simultaneously which are not all identical, and may run on non-identical hardware. This has clear advantages, but has many issues, particularly in software development. A heterogeneous program is often directly implemented as a series of communicating sequential programs, but I argue that this approach is limiting and unhelpful. It leads to early and fixed decomposition of the program by the designer which then limits flexibility if this decomposition is later found to be sub-optimal. This also hurts portability; migrating to a system with different hardware may require a new parallelisation strategy which therefore means a complete reimplementation of all the synchronisation and communication in the program. My thesis is that heterogeneous parallelism is a powerful technique for generating high performance software on modern and future hardware, but that exploiting it practically requires a new optimisation paradigm. I present my novel design for an optimisation and parallelisation framework based on a guided transformation of a functional specification program into an efficient and optimised parallel implementation. I implement this in a tool called DKAR and show it is practical for case studies on the Loki architecture, a representative many-core architecture that I helped fabricate. Software developed by DKAR is competitive with hand generated code, despite a principled, error-free, and flexible development process. These transformations can make substantial changes to the specification, including true algorithmic transformation. I argue this represents the first practical formalisation of the notion of program optimisation and parallelisation, with potential applications in better defining existing algorithms in terms of transformation of a specification, as well as potentially discovering new algorithms with search techniques. Crucially, the faster development process with DKAR allows ideas to be explored rapidly compared with existing development methodologies, allowing more ideas to be tried, and providing flexibility in the face of changing platforms or requirements."],"dc:format.checksum.md5":["30b6a7c0f72b8856e9422a28de3c85cf","87eda9de84448d1f82354d60eee3eb5f"],"dc:identifier.doi":["https://doi.org/10.17863/CAM.121792"],"dc:identifier.uri":["https://www.repository.cam.ac.uk/bitstreams/cc1fbb91-b7b3-48d5-9df1-6873af351520/download"],"dc:language":["eng"],"dc:publisher.institution":["University of Cambridge"],"dc:relation.isreferencedby.uri":["https://www.repository.cam.ac.uk/handle/1810/390136"],"dc:rights":["https://www.repository.cam.ac.uk/bitstreams/6b6497ee-016f-454a-ae31-df05fa13fd1c/download","https://creativecommons.org/licenses/by/4.0/"],"dc:subject":["Parallelism","Compilers","Computer Architecture","Microarchitecture","Programming Languages"],"dc:title":["Exploiting heterogeneous parallelism in software and hardware"],"dc:type":["Thesis"],"dc:type.qualificationlevel":["Doctoral"],"dc:type.qualificationname":["Doctor of Philosophy (PhD)"]},"updated_at":"2026-07-22T22:23:59Z"}