University of Cape Town Declaration

Total Page:16

File Type:pdf, Size:1020Kb

University of Cape Town Declaration The copyright of this thesis vests in the author. No quotation from it or information derived from it is to be published without full acknowledgementTown of the source. The thesis is to be used for private study or non- commercial research purposes only. Cape Published by the University ofof Cape Town (UCT) in terms of the non-exclusive license granted to UCT by the author. University Automated Gateware Discovery Using Open Firmware Shanly Rajan Supervisor: Prof. M.R. Inggs Co-supervisor: Dr M. Welz University of Cape Town Declaration I understand the meaning of plagiarism and declare that all work in the dissertation, save for that which is properly acknowledged, is my own. It is being submitted for the degree of Master of Science in Engineering in the University of Cape Town. It has not been submitted before for any degree or examination in any other university. Signature of Author . Cape Town South Africa May 12, 2013 University of Cape Town i Abstract This dissertation describes the design and implementation of a mechanism that automates gateware1 device detection for reconfigurable hardware. The research facilitates the pro- cess of identifying and operating on gateware images by extending the existing infrastruc- ture of probing devices in traditional software by using the chosen technology. An automated gateware detection mechanism was devised in an effort to build a software system with the goal to improve performance and reduce software development time spent on operating gateware pieces by reusing existing device drivers in the framework of the chosen technology. This dissertation first investigates the system design to see how each of the user specifica- tions set for the KAT (Karoo Array Telescope) project in [28] could be achieved in terms of design decisions, toolchain selection and software modifications. The final design satisfies the user specifications by treating the gateware programmed on reconfigurable hardware just like any other physical device attached to the system, extending the device database available to bootloader, mapping kernel device driver to operate on the gateware programmed and allowing the user to run suitable applications based on the personality of the gateware image programmed. The system implementation is then described and issues related to the process of integrating gateware, bootloader and kernel interfaces are discussed. The resultsUniversity of tests conducted onof the actualCape hardware Town demonstrating the overall concept are presented. Conclusions are drawn based on these results and suggestions for future work and design improvements are recommended. 1Gateware is a University of California, Berkeley coined term for design logic that goes into the FPGA ii To The Lord Almighty, my family, friends for all their support and guidance. If not for all of you, I would not be the man I am today. University of Cape Town iii Acknowledgements I would like to thank the following parties for their assistance and involvement in the completion of this project: • My supervisor, Prof Mike Inggs who believed in me as a professional and gave me the freedom and space to research at my own pace. A special thanks for his valuable time for reading through the draft of this dissertation and recommending corrections. • My cosupervisor, Dr Marc Welz who has been instrumental in the success of this research. His valuable advice, steadfast support and kind words has been of im- mense value during the tenure of this research. A special thanks for his time for reading through and recommending corrections to the draft of this dissertation. • Dr Alan Langman for providing the initial support and advice for the research. • The SKA / KAT bursary programme for providing funding for this research. • The entire DBE Team which i regard and respect as a family, ably led by Mr Fran- cois Kapp. A special thanks to Mr Andrew Martens and Mr David George for assisting me with inputs for the design stages. University of Cape Town • My family and friends for their love and encouragement throughout the project. • My wife, Bifin Shanly, who has been very instrumental in providing a peaceful family atmosphere so that i could focus on my research. iv Contents Declaration i Abstract ii Acknowledgements iv Nomenclature xiii 1 Introduction 1 1.1 Background of Investigation . 1 1.2 Project Motivation . 2 1.3 Project Scope . 2 1.4 Objectives . 3 1.5 DissertationUniversity Overview . .of . .Cape . .Town . 3 2 Background 9 2.1 Device detection in conventional computer platforms . 10 2.1.1 PCI (Peripheral Component Interconnect) . 10 2.1.1.1 Brief history . 10 2.1.1.2 Overview . 10 2.1.1.3 Device Detection . 12 2.1.2 ACPI (Advanced Configuration and Power Interface) . 12 v 2.1.2.1 Brief history . 12 2.1.2.2 Overview . 13 2.1.2.3 Device Detection . 14 2.1.3 OF (Open Firmware) . 15 2.1.3.1 Brief history . 15 2.1.3.2 Overview . 15 2.1.3.3 Device Detection . 17 2.1.4 Summary . 18 2.2 Device detection in FPGA-based software systems . 20 2.2.1 Related Studies . 20 2.2.2 Linux . 21 2.2.2.1 Background . 21 2.2.2.2 Overview . 22 2.2.2.3 Features . 23 2.2.2.4 Device Detection in Linux . 24 2.2.3 BORPH . 24 2.2.3.1 Background . 24 University of Cape Town 2.2.3.2 Overview . 24 2.2.3.3 Features . 26 2.2.3.4 Device Detection in BORPH . 27 2.2.4 Summary . 27 2.3 Chapter Summary . 29 vi 3 Design 31 3.1 Design Constraints . 32 3.2 Design Choices . 32 3.3 Design Methodology . 35 3.4 System Architecture . 36 3.5 System Design . 38 3.5.1 System Overview . 38 3.5.1.1 System Connection Diagram . 38 3.5.1.2 AMCC PowerPC Architecture . 39 3.5.2 FPGA Programming Design . 41 3.5.2.1 From U-Boot . 44 3.5.2.2 From linux . 45 3.5.3 Gateware Design . 46 3.5.3.1 Gateware Toolflow . 46 3.5.3.2 Gateware Support . 47 3.5.4 Device Detection Design . 52 3.5.4.1 From U-Boot . 53 3.5.4.2University From Linux .of . .Cape . .Town . 55 3.5.5 Design Optimisations . 58 3.5.5.1 Memory mapped device driver . 58 3.6 Chapter Summary . 59 4 Implementation and Results 61 4.1 Embedded Development Setup . 62 4.2 High level implementation block diagram . 64 4.3 Gateware implementation . 65 vii 4.3.1 Serial loopback implementation . 66 4.3.2 Simple data capture implementation . 67 4.4 Device description . 69 4.5 Device discovery and enumeration . 71 4.6 Device operation and control . 75 4.6.1 Device Drivers . 75 4.6.2 Userspace Applications . 79 4.7 Chapter Summary . 81 5 Conclusions and Future Directions 83 5.1 Summary . 83 5.2 Conclusions . 83 5.3 Dissemination Strategy . 84 5.4 Recommendations for future work . 84 A Source Code 86 B ROACH Board Connections 87 C DTC CompilerUniversity Usage of Cape Town 89 Bibliography 90 viii List of Figures 1.1 Device detection overview . 5 2.1 Layout of a typical PCI system [23] . 10 2.2 PCI configuration header [23] . 11 2.3 ACPI system architecture . 13 2.4 ACPI device detection . 14 2.5 Open Firmware internal and external interfaces . 16 2.6 Open Firmware probe and detection . 17 2.7 Recent operating systems for FPGAs [32] . 20 2.8 Linux kernel overview [23] . 22 2.9 High level overview of GNU / Linux [27] . 23 2.10 High level block diagram of BORPH [16] . 25 2.11 BORPHUniversity [5] . .of . .Cape . .Town . 26 2.12 Results of test conducted between BORPH and Linux device driver with memory mapped support . 28 3.1 Linux and BORPH operating system flow diagram . 33 3.2 Design steps to reach the final system . 35 3.3 Automated gateware discovery system architecture . 37 3.4 System connectivity diagram . 38 3.5 PPC440EPx functional block diagram [4] . 40 ix 3.6 Slave configuration modes [44] . 41 3.7 SelectMAP Configuration Flow Chart . 42 3.8 FPGA-PowerPC SelectMAP programming interface . 43 3.9 Programming FPGA from U-Boot using SelectMAP interface . 44 3.10 Character device driver for FPGA programming . 45 3.11 MSSGE toolflow diagram for CASPER hardware . 46 3.12 UARTLite serial OPB core connectivity in EDK . 48 3.13 Graphical representation of sound card design using iADC in Simulink . 50 3.14 Graphical representation of PPC440EPx device tree . 52 3.15 Graphical representation of ROACH device tree . 54 3.16 Device tree usage and detection in Linux . 56 3.17 Memory mapping FPGA . 58 4.1 Cross-development setup for ROACH . 62 4.2 U-Boot port changes for ROACH2 . 63 4.3 High level implementation block diagram of automated gateware discov- ery mechanism using OF .......................... 64 4.4 Gateware connections to PowerPC, buses and FPGA . 65 4.5 Serial designUniversity running on PowerPC of and Cape FPGA . .Town . 66 4.6 PowerPC-FPGA interface for sound capture design..
Recommended publications
  • Application of TRIE Data Structure and Corresponding Associative Algorithms for Process Optimization in GRID Environment
    Application of TRIE data structure and corresponding associative algorithms for process optimization in GRID environment V. V. Kashanskya, I. L. Kaftannikovb South Ural State University (National Research University), 76, Lenin prospekt, Chelyabinsk, 454080, Russia E-mail: a [email protected], b [email protected] Growing interest around different BOINC powered projects made volunteer GRID model widely used last years, arranging lots of computational resources in different environments. There are many revealed problems of Big Data and horizontally scalable multiuser systems. This paper provides an analysis of TRIE data structure and possibilities of its application in contemporary volunteer GRID networks, including routing (L3 OSI) and spe- cialized key-value storage engine (L7 OSI). The main goal is to show how TRIE mechanisms can influence de- livery process of the corresponding GRID environment resources and services at different layers of networking abstraction. The relevance of the optimization topic is ensured by the fact that with increasing data flow intensi- ty, the latency of the various linear algorithm based subsystems as well increases. This leads to the general ef- fects, such as unacceptably high transmission time and processing instability. Logically paper can be divided into three parts with summary. The first part provides definition of TRIE and asymptotic estimates of corresponding algorithms (searching, deletion, insertion). The second part is devoted to the problem of routing time reduction by applying TRIE data structure. In particular, we analyze Cisco IOS switching services based on Bitwise TRIE and 256 way TRIE data structures. The third part contains general BOINC architecture review and recommenda- tions for highly-loaded projects.
    [Show full text]
  • Beyond BIOS Developing with the Unified Extensible Firmware Interface
    Digital Edition Digital Editions of selected Intel Press books are in addition to and complement the printed books. Click the icon to access information on other essential books for Developers and IT Professionals Visit our website at www.intel.com/intelpress Beyond BIOS Developing with the Unified Extensible Firmware Interface Second Edition Vincent Zimmer Michael Rothman Suresh Marisetty Copyright © 2010 Intel Corporation. All rights reserved. ISBN 13 978-1-934053-29-4 This publication is designed to provide accurate and authoritative information in regard to the subject matter covered. It is sold with the understanding that the publisher is not engaged in professional services. If professional advice or other expert assistance is required, the services of a competent professional person should be sought. Intel Corporation may have patents or pending patent applications, trademarks, copyrights, or other intellectual property rights that relate to the presented subject matter. The furnishing of documents and other materials and information does not provide any license, express or implied, by estoppel or otherwise, to any such patents, trademarks, copyrights, or other intellectual property rights. Intel may make changes to specifications, product descriptions, and plans at any time, without notice. Fictitious names of companies, products, people, characters, and/or data mentioned herein are not intended to represent any real individual, company, product, or event. Intel products are not intended for use in medical, life saving, life sustaining, critical control or safety systems, or in nuclear facility applications. Intel, the Intel logo, Celeron, Intel Centrino, Intel NetBurst, Intel Xeon, Itanium, Pentium, MMX, and VTune are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries.
    [Show full text]
  • CS 106X, Lecture 21 Tries; Graphs
    CS 106X, Lecture 21 Tries; Graphs reading: Programming Abstractions in C++, Chapter 18 This document is copyright (C) Stanford Computer Science and Nick Troccoli, licensed under Creative Commons Attribution 2.5 License. All rights reserved. Based on slides created by Keith Schwarz, Julie Zelenski, Jerry Cain, Eric Roberts, Mehran Sahami, Stuart Reges, Cynthia Lee, Marty Stepp, Ashley Taylor and others. Plan For Today • Tries • Announcements • Graphs • Implementing a Graph • Representing Data with Graphs 2 Plan For Today • Tries • Announcements • Graphs • Implementing a Graph • Representing Data with Graphs 3 The Lexicon • Lexicons are good for storing words – contains – containsPrefix – add 4 The Lexicon root the art we all arts you artsy 5 The Lexicon root the contains? art we containsPrefix? add? all arts you artsy 6 The Lexicon S T A R T L I N G S T A R T 7 The Lexicon • We want to model a set of words as a tree of some kind • The tree should be sorted in some way for efficient lookup • The tree should take advantage of words containing each other to save space and time 8 Tries trie ("try"): A tree structure optimized for "prefix" searches struct TrieNode { bool isWord; TrieNode* children[26]; // depends on the alphabet }; 9 Tries isWord: false a b c d e … “” isWord: true a b c d e … “a” isWord: false a b c d e … “ac” isWord: true a b c d e … “ace” 10 Reading Words Yellow = word in the trie A E H S / A E H S A E H S A E H S / / / / / / / / A E H S A E H S A E H S A E H S / / / / / / / / / / / / A E H S A E H S A E H S / / / / / / /
    [Show full text]
  • Introduction to Linked List: Review
    Introduction to Linked List: Review Source: http://www.geeksforgeeks.org/data-structures/linked-list/ Linked List • Fundamental data structures in C • Like arrays, linked list is a linear data structure • Unlike arrays, linked list elements are not stored at contiguous location, the elements are linked using pointers Array vs Linked List Why Linked List-1 • Advantages over arrays • Dynamic size • Ease of insertion or deletion • Inserting a new element in an array of elements is expensive, because room has to be created for the new elements and to create room existing elements have to be shifted For example, in a system if we maintain a sorted list of IDs in an array id[]. id[] = [1000, 1010, 1050, 2000, 2040] If we want to insert a new ID 1005, then to maintain the sorted order, we have to move all the elements after 1000 • Deletion is also expensive with arrays until unless some special techniques are used. For example, to delete 1010 in id[], everything after 1010 has to be moved Why Linked List-2 • Drawbacks of Linked List • Random access is not allowed. • Need to access elements sequentially starting from the first node. So we cannot do binary search with linked lists • Extra memory space for a pointer is required with each element of the list Representation in C • A linked list is represented by a pointer to the first node of the linked list • The first node is called head • If the linked list is empty, then the value of head is null • Each node in a list consists of at least two parts 1.
    [Show full text]
  • Designing PCI Cards and Drivers for Power Macintosh Computers
    Designing PCI Cards and Drivers for Power Macintosh Computers Revised Edition Revised 3/26/99 Technical Publications © Apple Computer, Inc. 1999 Apple Computer, Inc. Adobe, Acrobat, and PostScript are Even though Apple has reviewed this © 1995, 1996 , 1999 Apple Computer, trademarks of Adobe Systems manual, APPLE MAKES NO Inc. All rights reserved. Incorporated or its subsidiaries and WARRANTY OR REPRESENTATION, EITHER EXPRESS OR IMPLIED, WITH No part of this publication may be may be registered in certain RESPECT TO THIS MANUAL, ITS reproduced, stored in a retrieval jurisdictions. QUALITY, ACCURACY, system, or transmitted, in any form America Online is a service mark of MERCHANTABILITY, OR FITNESS or by any means, mechanical, Quantum Computer Services, Inc. FOR A PARTICULAR PURPOSE. AS A electronic, photocopying, recording, Code Warrior is a trademark of RESULT, THIS MANUAL IS SOLD “AS or otherwise, without prior written Metrowerks. IS,” AND YOU, THE PURCHASER, ARE permission of Apple Computer, Inc., CompuServe is a registered ASSUMING THE ENTIRE RISK AS TO except to make a backup copy of any trademark of CompuServe, Inc. ITS QUALITY AND ACCURACY. documentation provided on Ethernet is a registered trademark of CD-ROM. IN NO EVENT WILL APPLE BE LIABLE Xerox Corporation. The Apple logo is a trademark of FOR DIRECT, INDIRECT, SPECIAL, FrameMaker is a registered Apple Computer, Inc. INCIDENTAL, OR CONSEQUENTIAL trademark of Frame Technology Use of the “keyboard” Apple logo DAMAGES RESULTING FROM ANY Corporation. (Option-Shift-K) for commercial DEFECT OR INACCURACY IN THIS purposes without the prior written Helvetica and Palatino are registered MANUAL, even if advised of the consent of Apple may constitute trademarks of Linotype-Hell AG possibility of such damages.
    [Show full text]
  • Chapter 1. Origins of Mac OS X
    1 Chapter 1. Origins of Mac OS X "Most ideas come from previous ideas." Alan Curtis Kay The Mac OS X operating system represents a rather successful coming together of paradigms, ideologies, and technologies that have often resisted each other in the past. A good example is the cordial relationship that exists between the command-line and graphical interfaces in Mac OS X. The system is a result of the trials and tribulations of Apple and NeXT, as well as their user and developer communities. Mac OS X exemplifies how a capable system can result from the direct or indirect efforts of corporations, academic and research communities, the Open Source and Free Software movements, and, of course, individuals. Apple has been around since 1976, and many accounts of its history have been told. If the story of Apple as a company is fascinating, so is the technical history of Apple's operating systems. In this chapter,[1] we will trace the history of Mac OS X, discussing several technologies whose confluence eventually led to the modern-day Apple operating system. [1] This book's accompanying web site (www.osxbook.com) provides a more detailed technical history of all of Apple's operating systems. 1 2 2 1 1.1. Apple's Quest for the[2] Operating System [2] Whereas the word "the" is used here to designate prominence and desirability, it is an interesting coincidence that "THE" was the name of a multiprogramming system described by Edsger W. Dijkstra in a 1968 paper. It was March 1988. The Macintosh had been around for four years.
    [Show full text]
  • Linux Kernel and Driver Development Training Slides
    Linux Kernel and Driver Development Training Linux Kernel and Driver Development Training © Copyright 2004-2021, Bootlin. Creative Commons BY-SA 3.0 license. Latest update: October 9, 2021. Document updates and sources: https://bootlin.com/doc/training/linux-kernel Corrections, suggestions, contributions and translations are welcome! embedded Linux and kernel engineering Send them to [email protected] - Kernel, drivers and embedded Linux - Development, consulting, training and support - https://bootlin.com 1/470 Rights to copy © Copyright 2004-2021, Bootlin License: Creative Commons Attribution - Share Alike 3.0 https://creativecommons.org/licenses/by-sa/3.0/legalcode You are free: I to copy, distribute, display, and perform the work I to make derivative works I to make commercial use of the work Under the following conditions: I Attribution. You must give the original author credit. I Share Alike. If you alter, transform, or build upon this work, you may distribute the resulting work only under a license identical to this one. I For any reuse or distribution, you must make clear to others the license terms of this work. I Any of these conditions can be waived if you get permission from the copyright holder. Your fair use and other rights are in no way affected by the above. Document sources: https://github.com/bootlin/training-materials/ - Kernel, drivers and embedded Linux - Development, consulting, training and support - https://bootlin.com 2/470 Hyperlinks in the document There are many hyperlinks in the document I Regular hyperlinks: https://kernel.org/ I Kernel documentation links: dev-tools/kasan I Links to kernel source files and directories: drivers/input/ include/linux/fb.h I Links to the declarations, definitions and instances of kernel symbols (functions, types, data, structures): platform_get_irq() GFP_KERNEL struct file_operations - Kernel, drivers and embedded Linux - Development, consulting, training and support - https://bootlin.com 3/470 Company at a glance I Engineering company created in 2004, named ”Free Electrons” until Feb.
    [Show full text]
  • Powerpc™ Open Firmware Quick Start Guide Release
    PowerPC™ Open Firmware Quick Start Guide Release 2.0 PPCOFWQSA/UG2 Notice While reasonable efforts have been made to assure the accuracy of this document, Motorola, Inc. assumes no liability resulting from any omissions in this document, or from the use of the information obtained therein. Motorola reserves the right to revise this document and to make changes from time to time in the content hereof without obligation of Motorola to notify any person of such revision or changes. No part of this material may be reproduced or copied in any tangible medium, or stored in a retrieval system, or transmitted in any form, or by any means, radio, electronic, mechanical, photocopying, recording or facsimile, or otherwise, without the prior written permission of Motorola, Inc. It is possible that this publication may contain reference to, or information about Motorola products (machines and programs), programming, or services that are not announced in your country. Such references or information must not be construed to mean that Motorola intends to announce such Motorola products, programming, or services in your country. Restricted Rights Legend If the documentation contained herein is supplied, directly or indirectly, to the U.S. Government, the following notice shall apply unless otherwise agreed to in writing by Motorola, Inc. Use, duplication, or disclosure by the Government is subject to restrictions as set forth in subparagraph (c)(1)(ii) of the Rights in Technical Data and Computer Software clause at DFARS 252.227-7013. Motorola, Inc. Computer Group 2900 South Diablo Way Tempe, Arizona 85282 Preface The PowerPC Open Firmware Quick Start Guide provides the general information and procedures required to test and initialize the system hardware, determine the hardware conÞguration, and to boot the operating system.
    [Show full text]
  • Implementing the Map ADT Outline
    Implementing the Map ADT Outline ´ The Map ADT ´ Implementation with Java Generics ´ A Hash Function ´ translation of a string key into an integer ´ Consider a few strategies for implementing a hash table ´ linear probing ´ quadratic probing ´ separate chaining hashing ´ OrderedMap using a binary search tree The Map ADT ´A Map models a searchable collection of key-value mappings ´A key is said to be “mapped” to a value ´Also known as: dictionary, associative array ´Main operations: insert, find, and delete Applications ´ Store large collections with fast operations ´ For a long time, Java only had Vector (think ArrayList), Stack, and Hashmap (now there are about 67) ´ Support certain algorithms ´ for example, probabilistic text generation in 127B ´ Store certain associations in meaningful ways ´ For example, to store connected rooms in Hunt the Wumpus in 335 The Map ADT ´A value is "mapped" to a unique key ´Need a key and a value to insert new mappings ´Only need the key to find mappings ´Only need the key to remove mappings 5 Key and Value ´With Java generics, you need to specify ´ the type of key ´ the type of value ´Here the key type is String and the value type is BankAccount Map<String, BankAccount> accounts = new HashMap<String, BankAccount>(); 6 put(key, value) get(key) ´Add new mappings (a key mapped to a value): Map<String, BankAccount> accounts = new TreeMap<String, BankAccount>(); accounts.put("M",); accounts.put("G", new BankAcnew BankAccount("Michel", 111.11)count("Georgie", 222.22)); accounts.put("R", new BankAccount("Daniel",
    [Show full text]
  • Progress Codes
    Power Systems Progress codes Power Systems Progress codes Note Before using this information and the product it supports, read the information in “Notices,” on page 109, “Safety notices” on page v, the IBM Systems Safety Notices manual, G229-9054, and the IBM Environmental Notices and User Guide, Z125–5823. This edition applies to IBM Power Systems™ servers that contain the POWER6® processor and to all associated models. © Copyright IBM Corporation 2007, 2009. US Government Users Restricted Rights – Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. Contents Safety notices ............v Chapter 13. (CAxx) Partition firmware progress codes ...........79 Chapter 1. Progress codes overview . 1 Chapter 14. (CF00) Linux kernel boot Chapter 2. AIX IPL progress codes . 3 progress codes ...........91 Chapter 3. AIX diagnostic load Chapter 15. (D1xx) Service processor progress indicators .........29 firmware progress codes .......93 Chapter 4. Dump progress indicators Chapter 16. (D1xx) Service processor (dump status codes) .........33 status progress codes ........95 Chapter 5. AIX crash progress codes Chapter 17. (D1xx) Service processor (category 1) ............35 dump status progress codes .....97 Chapter 6. AIX crash progress codes Chapter 18. (D1xx) Platform dump (category 2) ............37 status progress codes .......101 Chapter 7. AIX crash progress codes Chapter 19. (D2xx) Partition status (category 3) ............39 progress codes ..........103 Chapter 8. (C1xx) Service processor Chapter 20. (D6xx) General status progress codes ...........41 progress codes ..........105 Chapter 9. (C2xx) Virtual service Chapter 21. (D9xx) General status processor progress codes ......63 progress codes ..........107 Chapter 10. (C3xx, C5xx, C6xx) IPL Appendix. Notices .........109 status progress codes ........67 Trademarks ..............110 Electronic emission notices .........111 Chapter 11.
    [Show full text]
  • Algorithms & Data Structures: Questions and Answers: May 2006
    Algorithms & Data Structures: Questions and Answers: May 2006 1. (a) Explain how to merge two sorted arrays a1 and a2 into a third array a3, using diagrams to illustrate your answer. What is the time complexity of the array merge algorithm? (Note that you are not asked to write down the array merge algorithm itself.) [Notes] First compare the leftmost elements in a1 and a2, and copy the lesser element into a3. Repeat, ignoring already-copied elements, until all elements in either a1 or a2 have been copied. Finally, copy all remaining elements from either a1 or a2 into a3. Loop invariant: left1 … i–1 i … right1 a1 already copied still to be copied left2 … j–1 j … right2 a2 left left+1 … k–1 k … right–1 right a3 already copied unoccupied Time complexity is O(n), in terms of copies or comparisons, where n is the total length of a1 and a2. (6) (b) Write down the array merge-sort algorithm. Use diagrams to show how this algorithm works. What is its time complexity? [Notes] To sort a[left…right]: 1. If left < right: 1.1. Let mid be an integer about midway between left and right. 1.2. Sort a[left…mid]. 1.3. Sort a[mid+1…right]. 1.4. Merge a[left…mid] and a[mid+1…right] into an auxiliary array b. 1.5. Copy b into a[left…right]. 2. Terminate. Invariants: left mid right After step 1.1: a unsorted After step 1.2: a sorted unsorted After step 1.3: a sorted sorted After step 1.5: a sorted Time complexity is O(n log n), in terms of comparisons.
    [Show full text]
  • Highly Parallel Fast KD-Tree Construction for Interactive Ray Tracing of Dynamic Scenes
    EUROGRAPHICS 2007 / D. Cohen-Or and P. Slavík Volume 26 (2007), Number 3 (Guest Editors) Highly Parallel Fast KD-tree Construction for Interactive Ray Tracing of Dynamic Scenes Maxim Shevtsov, Alexei Soupikov and Alexander Kapustin† Intel Corporation Figure 1: Dynamic scenes ray traced using parallel fast construction of kd-tree. The scenes were rendered with shadows, 1 TM reflection (except HAND) and textures at 512x512 resolution on a 2-way Intel °R Core 2 Duo machine. a) HAND - a static model of a man with a dynamic hand; 47K static and 8K dynamic triangles; 2 lights; 46.5 FPS. b) GOBLIN - a static model of a hall with a dynamic model of a goblin; 297K static and 153K dynamic triangles; 2 lights; 9.2 FPS. c) BAR - a static model of bar Carta Blanca with a dynamic model of a man; 239K static and 53K dynamic triangles; 2 lights; 12.6 FPS. d) OPERA TEAM - a static model of an opera house with a dynamic model of 21 men without instancing; 78K static and 1105K dynamic triangles; 4 lights; 2.0 FPS. Abstract We present a highly parallel, linearly scalable technique of kd-tree construction for ray tracing of dynamic ge- ometry. We use conventional kd-tree compatible with the high performing algorithms such as MLRTA or frustum tracing. Proposed technique offers exceptional construction speed maintaining reasonable kd-tree quality for ren- dering stage. The algorithm builds a kd-tree from scratch each frame, thus prior knowledge of motion/deformation or motion constraints are not required. We achieve nearly real-time performance of 7-12 FPS for models with 200K of dynamic triangles at 1024x1024 resolution with shadows and textures.
    [Show full text]