Theoretically-Efficient and Practical Parallel In-Place Radix Sorting

Total Page:16

File Type:pdf, Size:1020Kb

Theoretically-Efficient and Practical Parallel In-Place Radix Sorting Theoretically-Efficient and Practical Parallel In-Place Radix Sorting by Omar Obeya B.S., Massachusetts Institute of Technology (2018) Submitted to the Department of Electrical Engineering and Computer Science in partial fulfillment of the requirements for the degree of Master of Engineering in Electrical Engineering and Computer Science at the MASSACHUSETTS INSTITUTE OF TECHNOLOGY June 2019 ○c Massachusetts Institute of Technology 2019. All rights reserved. Author................................................................ Department of Electrical Engineering and Computer Science May 24, 2019 Certified by. Julian Shun Assistant Professor Thesis Supervisor Accepted by . Katrina LaCurts Chair, Master of Engineering Thesis Committee 2 Theoretically-Efficient and Practical Parallel In-Place Radix Sorting by Omar Obeya Submitted to the Department of Electrical Engineering and Computer Science on May 24, 2019, in partial fulfillment of the requirements for the degree of Master of Engineering in Electrical Engineering and Computer Science Abstract Radix sort stands out for having a better worse case theoretical bound than any comparison-based sort, for fixed length integers. Despite the fact that radix sort can be implemented either in-place or in parallel, there exists no parallel in-place implementation for radix sort that guarantees a sub-linear worst case span. The challenge arises due to read-write races when reading from and writing to the same array. In this thesis, I introduce Regions sort and use it to implement a parallel work-efficient in-place radix sorting algorithm. To sort n integers from a range r, and a parameter K, the algorithm requires only O(K log r log n) auxiliary memory, O(n log r) work and O((n=K + log K) log r) span. Regions sort uses a divide-and-conquer paradigm. It first divides the array into sub-arrays, each of which is sorted independently in parallel. This decreases the irregularity in the input and reorders it into a set of regions, each of which has similar properties. Next, it builds a data structure, called the regions graph to represent the needed data movements to completely sort the array. Finally, Regions sort iteratively plans swaps that satisfies the required data movements. The algorithm then hasto recurse on records with so-far equal keys to break ties. I compare two variants of Regions sort with the state-of-the-art sorting integer sort and comparison sort algorithms. Experiments show that the best variant of Regions sort usually outperforms other sorting algorithms. In addition, I perform different experiments showing that Regions sort maintains its superiority regardless input distribution and range. More importantly, the single-threaded implementation of Regions sort outperforms the highly optimized Ska Sort implementation for serial in-place radix sort. Thesis Supervisor: Julian Shun Title: Assistant Professor 3 4 Acknowledgments This thesis is based on paper titled: Theoretically-Efficient and Practical Parallel In- Place Radix Sorting with doi: https://doi.org/10.1145/3323165.3323198 [26]. This paper is to be published in ACM SPAA 2019, and is joint work with Endrias Kahssay, Edward Fan and Prof. Julian Shun without whom it would not have been possible to complete this research. This research was supported by DARPA SDH Award #HR0011-18-3-0007, Applications Driving Architectures (ADA) Research Center, a JUMP Center co-sponsored by SRC and DARPA, DOE Early Career Award #DE- SC0018947, and NSF CAREER Award #CCF-1845763. Finally, I would like to ex- press my sincere gratitude to my advisor Prof. Julian Shun for his support, patience, guidance and immense knowledge. I could not have imagined having a better advisor and mentor. 5 6 Contents 1 Introduction 15 2 Related Work 19 2.1 Preliminaries . 19 2.2 Previous Work . 21 2.2.1 Serial In-place Radix Sort . 21 2.2.2 Parallel Out-of-place Radix Sort . 21 2.2.3 PARADIS Algorithm . 22 2.2.4 IPS4o Algorithm . 24 3 Algorithm 25 3.1 Algorithm Overview . 25 3.2 Local Sorting . 26 3.3 Regions Graph Construction . 26 3.4 Global Sorting . 29 3.4.1 Cycle Finding . 30 3.4.2 2-path Finding . 33 3.5 Recursion . 38 4 Analysis 39 4.1 Local Sorting . 39 4.2 Graph Construction . 40 4.3 Global Sorting . 40 7 4.3.1 Cycle Finding . 40 4.3.2 2-path finding . 41 4.4 Overall algorithm . 43 5 Optimizations 45 5.1 Batching Cycles . 45 5.2 Prioritizing 2-cycles . 45 5.3 Early Recursion . 47 5.4 Country Sorting . 47 5.5 Coarsening . 47 6 Evaluation 49 6.1 Experiment Setup . 49 6.1.1 Experiment Environment . 49 6.1.2 Implementation Details . 49 6.1.3 Test Inputs . 50 6.2 Tested algorithms . 51 6.3 Results . 51 6.3.1 Results Overview . 51 6.3.2 Parallel Scalability . 54 6.3.3 Input Size Scalability . 54 6.3.4 Effect of Key Range . 55 6.3.5 Effect of Skewness in Zipfian Distributions . 56 6.3.6 Breakdown of Running Time . 57 6.3.7 Effect of Radix Size . 59 6.3.8 Effect of K ............................ 60 6.4 Conclusion . 61 8 List of Figures 1-1 Represents data movements required to sort records in one iteration of in-place radix sort, thus introducing potential read-write races. The colors and numbers in the records represent the bucket each record belongs to. The colored line under the array illustrates where records belonging to each bucket will end up after the array gets sorted. 16 3-1 (a) shows the value of the current radix of keys in the input for a 2-bit radix (B = 4), and lines below corresponds to the countries (blue is country 0, orange is country 1, green is country 2, and purple is country 3). (b) shows the corresponding regions graph. 28 3-2 (a) shows the value of the current radix of keys in the input for a 2-bit radix (B = 4). At each step, the corresponding swaps for each cycle is shown in the array above the regions graph. (b) shows the correspond- ing regions graph of (a), and the cycle to process is highlighted in red. (c) and (d) show the array and regions graph after processing the high- lighted cycle in (b). In particular, the edges (0; 2; 1) and (1; 0; 1) are deleted, and (2; 1; 2) is modified to (2; 1; 1). The next cycle to process is highlighted in (d). (e) and (f) shows the input and regions graph after processing the highlighted cycle in (d). After processing the remaining cycle in (f), the array is completely sorted for the current recursion level, shown in (g), and the regions graph with no edges, shown in (h). 32 9 3-3 (a) and (b) show an example of processing a 2-path formed by the edges (1; 0; 1) and (0; 2; 1). Here vertex 1 is the source, vertex 0 is the broker, and vertex 2 is the sink. The result of processing this 2-path is shown in (c) and (d). The edges (1; 0; 1) and (0; 2; 1) are deleted, and a new edge (1; 2; 1) is formed (the dashed edge in (b)). 34 3-4 An illustration of how 2-paths incident on a broker are processed in parallel. The current broker being processed is circled in bold. At each step, the corresponding swap for each 2-path is shown in the array above the regions graph using the same color as the 2-path. In (b), The algorithm processes the single 2-path with vertex 0 as broker, which is (1; 0; 1); (0; 2; 1), and creates the dashed edge (1; 2; 1) resulting in (d). In (d), Regions sort processes all three 2-paths with vertex 1 as broker in parallel. The three 2-paths are (1; 2; 1); (2; 1; 2), which does not add any new edges; (3; 1; 1); (1; 2; 1), which creates the dashed edge (3; 2; 1); and (2; 1; 1); (1; 3; 1), which creates the dashed edge (2; 3; 1). This results in (f). Finally, in (f), The algorithm processes the single 2-path with vertex 2 as broker, which is (2; 3; 1); (3; 2; 1), and is left with an empty graph in (h), at which point the array is sorted. 36 5-1 An illustration of how 2-paths incident on a broker are processed in parallel. The current broker being processed is circled in bold. At each step, the corresponding swap for each 2-path is shown in the array above the regions graph using the same color as the 2-path. In (b), The algorithm processes the single 2-path with vertex 0 as broker, which is (1; 0; 1); (0; 2; 1), and creates the dashed edge (1; 2; 1) resulting in (d). In (d), Regions sort processes all three 2-paths with vertex 1 as broker in parallel. The three 2-paths are (1; 2; 1); (2; 1; 2), (3; 1; 1); (1; 3; 1); and (2; 1; 1); (1; 2; 1) each of which does not add any new edges. This results in (e) at which point the array is sorted and the algorithm is left with an empty graph in (f). 46 10 6-1 Speedup over single-thread performance of 2-path vs. thread count for unif(109; 109)................................ 55 6-2 Speedup over single-thread performance of 2-path vs. thread count for 9 9 zipf0:75(10 ; 10 )............................... 56 6-3 36-core running time vs. input size n for unif(108; n). 57 6-4 36-core running time vs.
Recommended publications
  • Radix Sort Comparison Sort Runtime of O(N*Log(N)) Is Optimal
    Radix Sort Comparison sort runtime of O(n*log(n)) is optimal • The problem of sorting cannot be solved using comparisons with less than n*log(n) time complexity • See Proposition I in Chapter 2.2 of the text How can we sort without comparison? • Consider the following approach: • Look at the least-significant digit • Group numbers with the same digit • Maintain relative order • Place groups back in array together • I.e., all the 0’s, all the 1’s, all the 2’s, etc. • Repeat for increasingly significant digits The characteristics of Radix sort • Least significant digit (LSD) Radix sort • a fast stable sorting algorithm • begins at the least significant digit (e.g. the rightmost digit) • proceeds to the most significant digit (e.g. the leftmost digit) • lexicographic orderings Generally Speaking • 1. Take the least significant digit (or group of bits) of each key • 2. Group the keys based on that digit, but otherwise keep the original order of keys. • This is what makes the LSD radix sort a stable sort. • 3. Repeat the grouping process with each more significant digit Generally Speaking public static void sort(String [] a, int W) { int N = a.length; int R = 256; String [] aux = new String[N]; for (int d = W - 1; d >= 0; --d) { aux = sorted array a by the dth character a = aux } } A Radix sort example A Radix sort example A Radix sort example • Problem: How to ? • Group the keys based on that digit, • but otherwise keep the original order of keys. Key-indexed counting • 1. Take the least significant digit (or group of bits) of each key • 2.
    [Show full text]
  • Zero Displacement Ternary Number System: the Most Economical Way of Representing Numbers
    Revista de Ciências da Computação, Volume III, Ano III, 2008, nº3 Zero Displacement Ternary Number System: the most economical way of representing numbers Fernando Guilherme Silvano Lobo Pimentel , Bank of Portugal, Email: [email protected] Abstract This paper concerns the efficiency of number systems. Following the identification of the most economical conventional integer number system, from a solid criteria, an improvement to such system’s representation economy is proposed which combines the representation efficiency of positional number systems without 0 with the possibility of representing the number 0. A modification to base 3 without 0 makes it possible to obtain a new number system which, according to the identified optimization criteria, becomes the most economic among all integer ones. Key Words: Positional Number Systems, Efficiency, Zero Resumo Este artigo aborda a questão da eficiência de sistemas de números. Partindo da identificação da mais económica base inteira de números de acordo com um critério preestabelecido, propõe-se um melhoramento à economia de representação nessa mesma base através da combinação da eficiência de representação de sistemas de números posicionais sem o zero com a possibilidade de representar o número zero. Uma modificação à base 3 sem zero permite a obtenção de um novo sistema de números que, de acordo com o critério de optimização identificado, é o sistema de representação mais económico entre os sistemas de números inteiros. Palavras-Chave: Sistemas de Números Posicionais, Eficiência, Zero 1 Introduction Counting systems are an indispensable tool in Computing Science. For reasons that are both technological and user friendliness, the performance of information processing depends heavily on the adopted numbering system.
    [Show full text]
  • Number Systems and Radix Conversion
    Number Systems and Radix Conversion Sanjay Rajopadhye, Colorado State University 1 Introduction These notes for CS 270 describe polynomial number systems. The material is not in the textbook, but will be required for PA1. We humans are comfortable with numbers in the decimal system where each po- sition has a weight which is a power of 10: units have a weight of 1 (100), ten’s have 10 (101), etc. Even the fractional apart after the decimal point have a weight that is a (negative) power of ten. So the number 143.25 has a value that is 1 ∗ 102 + 4 ∗ 101 + 3 ∗ 0 −1 −2 2 5 10 + 2 ∗ 10 + 5 ∗ 10 , i.e., 100 + 40 + 3 + 10 + 100 . You can think of this as a polyno- mial with coefficients 1, 4, 3, 2, and 5 (i.e., the polynomial 1x2 + 4x + 3 + 2x−1 + 5x−2+ evaluated at x = 10. There is nothing special about 10 (just that humans evolved with ten fingers). We can use any radix, r, and write a number system with digits that range from 0 to r − 1. If our radix is larger than 10, we will need to invent “new digits”. We will use the letters of the alphabet: the digit A represents 10, B is 11, K is 20, etc. 2 What is the value of a radix-r number? Mathematically, a sequence of digits (the dot to the right of d0 is called the radix point rather than the decimal point), : : : d2d1d0:d−1d−2 ::: represents a number x defined as follows X i x = dir i 2 1 0 −1 −2 = ::: + d2r + d1r + d0r + d−1r + d−2r + ::: 1 Example What is 3 in radix 3? Answer: 0.1.
    [Show full text]
  • Scalability of Algorithms for Arithmetic Operations in Radix Notation∗
    Scalability of Algorithms for Arithmetic Operations in Radix Notation∗ Anatoly V. Panyukov y Department of Computational Mathematics and Informatics, South Ural State University, Chelyabinsk, Russia [email protected] Abstract We consider precise rational-fractional calculations for distributed com- puting environments with an MPI interface for the algorithmic analysis of large-scale problems sensitive to rounding errors in their software imple- mentation. We can achieve additional software efficacy through applying heterogeneous computer systems that execute, in parallel, local arithmetic operations with large numbers on several threads. Also, we investigate scalability of the algorithms for basic arithmetic operations and methods for increasing their speed. We demonstrate that increased efficacy can be achieved of software for integer arithmetic operations by applying mass parallelism in het- erogeneous computational environments. We propose a redundant radix notation for the construction of well-scaled algorithms for executing ba- sic integer arithmetic operations. Scalability of the algorithms for integer arithmetic operations in the radix notation is easily extended to rational- fractional arithmetic. Keywords: integer computer arithmetic, heterogeneous computer system, radix notation, massive parallelism AMS subject classifications: 68W10 1 Introduction Verified computations have become indispensable tools for algorithmic analysis of large scale unstable problems (see e.g., [1, 4, 5, 7, 8, 9, 10]). Such computations require spe- cific software tools; in this connection, we mention that our library \Exact computa- tion" [11] provides appropriate instruments for implementation of such computations ∗Submitted: January 27, 2013; Revised: August 17, 2014; Accepted: November 7, 2014. yThe author was supported by the Federal special-purpose program "Scientific and scientific-pedagogical personnel of innovation Russia", project 14.B37.21.0395.
    [Show full text]
  • Lecture 8.Key
    CSC 391/691: GPU Programming Fall 2015 Parallel Sorting Algorithms Copyright © 2015 Samuel S. Cho Sorting Algorithms Review 2 • Bubble Sort: O(n ) 2 • Insertion Sort: O(n ) • Quick Sort: O(n log n) • Heap Sort: O(n log n) • Merge Sort: O(n log n) • The best we can expect from a sequential sorting algorithm using p processors (if distributed evenly among the n elements to be sorted) is O(n log n) / p ~ O(log n). Compare and Exchange Sorting Algorithms • Form the basis of several, if not most, classical sequential sorting algorithms. • Two numbers, say A and B, are compared between P0 and P1. P0 P1 A B MIN MAX Bubble Sort • Generic example of a “bad” sorting 0 1 2 3 4 5 algorithm. start: 1 3 8 0 6 5 0 1 2 3 4 5 Algorithm: • after pass 1: 1 3 0 6 5 8 • Compare neighboring elements. • Swap if neighbor is out of order. 0 1 2 3 4 5 • Two nested loops. after pass 2: 1 0 3 5 6 8 • Stop when a whole pass 0 1 2 3 4 5 completes without any swaps. after pass 3: 0 1 3 5 6 8 0 1 2 3 4 5 • Performance: 2 after pass 4: 0 1 3 5 6 8 Worst: O(n ) • 2 • Average: O(n ) fin. • Best: O(n) "The bubble sort seems to have nothing to recommend it, except a catchy name and the fact that it leads to some interesting theoretical problems." - Donald Knuth, The Art of Computer Programming Odd-Even Transposition Sort (also Brick Sort) • Simple sorting algorithm that was introduced in 1972 by Nico Habermann who originally developed it for parallel architectures (“Parallel Neighbor-Sort”).
    [Show full text]
  • Tutorial 2: Heapsort, Quicksort, Counting Sort, Radix Sort
    Tutorial 2: Heapsort, Quicksort, Counting Sort, Radix Sort Mayank Saksena September 20, 2006 1 Heapsort We review Heapsort, and prove some loop invariants for it. For further information, see Chapter 6 of Introduction to Algorithms. HEAPSORT(A) 1 BUILD-MAX-HEAP(A) Ð eÒg Øh A 2 for i = ( ) downto 2 A i 3 swap A[1] and [ ] ×iÞ e A heaÔ ×iÞ e A 4 heaÔ- ( )= - ( ) 1 5 MAX-HEAPIFY(A; 1) BUILD-MAX-HEAP(A) ×iÞ e A Ð eÒg Øh A 1 heaÔ- ( )= ( ) Ð eÒg Øh A = 2 for i = ( ) 2 downto 1 3 MAX-HEAPIFY(A; i) MAX-HEAPIFY(A; i) i 1 Ð =LEFT( ) i 2 Ö =RIGHT( ) heaÔ ×iÞ e A A Ð > A i Ð aÖ g eר Ð 3 if Ð - ( ) and ( ) ( ) then = i 4 else Ð aÖ g eר = heaÔ ×iÞ e A A Ö > A Ð aÖ g eר Ð aÖ g eר Ö 5 if Ö - ( ) and ( ) ( ) then = i 6 if Ð aÖ g eר = i A Ð aÖ g eר 7 swap A[ ] and [ ] 8 MAX-HEAPIFY(A; Ð aÖ g eר) 1 Loop invariants First, assume that MAX-HEAPIFY(A; i) is correct, i.e., that it makes the subtree with A root i a max-heap. Under this assumption, we prove that BUILD-MAX-HEAP( ) is correct, i.e., that it makes A a max-heap. A We show: at the start of iteration i of the for-loop of BUILD-MAX-HEAP( ) (line ; i ;:::;Ò 2), each of the nodes i +1 +2 is the root of a max-heap.
    [Show full text]
  • Sorting Algorithm 1 Sorting Algorithm
    Sorting algorithm 1 Sorting algorithm In computer science, a sorting algorithm is an algorithm that puts elements of a list in a certain order. The most-used orders are numerical order and lexicographical order. Efficient sorting is important for optimizing the use of other algorithms (such as search and merge algorithms) that require sorted lists to work correctly; it is also often useful for canonicalizing data and for producing human-readable output. More formally, the output must satisfy two conditions: 1. The output is in nondecreasing order (each element is no smaller than the previous element according to the desired total order); 2. The output is a permutation, or reordering, of the input. Since the dawn of computing, the sorting problem has attracted a great deal of research, perhaps due to the complexity of solving it efficiently despite its simple, familiar statement. For example, bubble sort was analyzed as early as 1956.[1] Although many consider it a solved problem, useful new sorting algorithms are still being invented (for example, library sort was first published in 2004). Sorting algorithms are prevalent in introductory computer science classes, where the abundance of algorithms for the problem provides a gentle introduction to a variety of core algorithm concepts, such as big O notation, divide and conquer algorithms, data structures, randomized algorithms, best, worst and average case analysis, time-space tradeoffs, and lower bounds. Classification Sorting algorithms used in computer science are often classified by: • Computational complexity (worst, average and best behaviour) of element comparisons in terms of the size of the list . For typical sorting algorithms good behavior is and bad behavior is .
    [Show full text]
  • Number Systems Radix Number Systems Radix Number Systems
    Number Systems 4/26/2010 Number Systems Radix Number Systems binary, octal, and hexadecimal numbers basic idea of a radix number system ‐‐ why used how do we count: conversions, including to/from decimal didecimal : 10 dis tinc t symblbols, 0‐9 negative binary numbers when we reach 9, we repeat 0‐9 with 1 in front: 0,1,2,3,4,5,6,7,8,9, 10,11,12,13, …, 19 floating point numbers then with a 2 in front, etc: 20, 21, 22, 23, …, 29 character codes until we reach 99 then we repeat everything with a 1 in the next position: 100, 101, …, 109, 110, …, 119, …, 199, 200, … other number systems follow the same principle with a different base (radix) Lubomir Bic 1 Lubomir Bic 2 Radix Number Systems Radix Number Systems octal: we have only 8 distinct symbols: 0‐7 binary: we have only 2 distinct symbols: 0, 1 when we reach 7, we repeat 0‐7 with 1 in front why?: digital computer can only represent 0 and 1 012345670,1,2,3,4,5,6,7, 10,11,12,13, …, 17 when we reach 1, we repeat 0‐1 with 1 in front then with a 2 in front, etc: 20, 21, 22, 23, …, 27 0,1, 10,11 until we reach 77 then we repeat everything with a 1 in the next position: then we repeat everything with a 1 in the next position: 100, 101, 110, 111, 1000, 1001, 1010, 1011, 1100, … 100, 101, …, 107, 110, …, 117, …, 177, 200, … decimal to binary correspondence: decimal to octal correspondence: D 01234 5 6 7 8 9 101112… D 0 1 … 7 8 9 10 11 … 15 16 17 … 23 24 … 63 64 … B 0 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 … O 0 1 … 7 10 11 12 13 … 17 20 21 … 27 30 … 77 100 …
    [Show full text]
  • United States Patent 15 3,700,872 May [45] Oct
    United States Patent 15 3,700,872 May [45] Oct. 24, 1972 54 RADX CONVERSON CRCUTS Primary Examiner - Maynard R. Wilbur Assistant Examiner- Leo H. Boudreau (72) Inventor: Frederick T. May, Austin,Tex. Attorney-Hanifin and Clark and D. Kendall Cooper (73) Assignee: International Business Corporation, Armonk, N.Y. 57) ABSTRACT 22 Filed: Aug. 22, 1969 Data conversion circuits with optimized common hardware convert numbers expressed in a first radix C (21) Appl. No.: 852,272 to other radices n1, m2, etc., with the mode of opera Related U.S. Application Data tion being controlled to establish a radix C to radix ml conversion in one mode, a radix C to radix n2 conver 63 Continuation-in-part of Ser. No. 517,764, Dec. sion in another mode, etc., on a selective basis, as 30, 1965, abandoned. desired. In a first embodiment, numbers represented in a binary (base 2) radix Care converted to a base 10 52 U.S. Ct.............. 235/155,340/347 DD, 235/165 (n1) or base 12(m2) representation. In a second em 51 int. Cl.............................................. HO3k 13/24 bodiment, numbers stored in a ternary (base 3) radix 58 Field of Search......... 340/347 DD; 235/155, 165 C representation are converted to a base 12 (n1) or base 10 (m2) representation. The circuits are 56 References Cited predicated upon recognition of the fact that a number UNITED STATES PATENTS represented in a first radix can be converted readily to a second radix using shared hardware if the following 2,620,974 12/1952 Waltat.................... 23.5/155 X equation is satisfied: 2,831,179 4/1958 Wright et al..........
    [Show full text]
  • Basic Digit Sets for Radix Representation
    LrBRAJ7T LIBRARY r TECHNICAL REPORT SECTICTJ^ Kkl B7-CBT SSrTK*? BAVAI PC "T^BADUATB SCSOp POSTGilADUAIS SCSftQl NPS52-78-002 . NAVAL POSTGRADUATE SCHOOL Monterey, California BASIC DIGIT SETS FOR RADIX REPRESENTATION David W. Matula June 1978 a^oroved for public release; distribution unlimited. FEDDOCS D 208.14/2:NPS-52-78-002 NAVAL POSTGRADUATE SCHOOL Monterey, California Rear Admiral Tyler Dedman Jack R. Bor sting Superintendent Provost The work reported herein was supported in part by the National Science Foundation under Grant GJ-36658 and by the Deutsche Forschungsgemeinschaft under Grant KU 155/5. Reproduction of all or part of this report is authorized. This report was prepared by: UNCLASSIFIED SECURITY CLASSIFICATION OF THIS PAGE (When Data Entered) READ INSTRUCTIONS REPORT DOCUMENTATION PAGE BEFORE COMPLETING FORM 1. REPORT NUMBER 2. GOVT ACCESSION NO. 3. RECIPIENT'S CATALOG NUMBER NPS52-78-002 4. TITLE (and Subtitle) 5. TYPE OF REPORT ft PERIOD COVERED BASIC DIGIT SETS FOR RADIX REPRESENTATION Final report 6. PERFORMING ORG. REPORT NUMBER 7. AUTHORS 8. CONTRACT OR GRANT NUM8ERfa; David W. Matula 9. PERFORMING ORGANIZATION NAME AND ADDRESS 10. PROGRAM ELEMENT, PROJECT, TASK AREA ft WORK UNIT NUMBERS Naval Postgraduate School Monterey, CA 93940 11. CONTROLLING OFFICE NAME AND ADDRESS 12. REPORT DATE Naval Postgraduate School June 1978 Monterey, CA 93940 13. NUMBER OF PAGES 33 14. MONITORING AGENCY NAME ft AODRESSf// different from Controlling Olllce) 15. SECURITY CLASS, (ot thta report) Unclassified 15«. DECLASSIFI CATION/ DOWN GRADING SCHEDULE 16. DISTRIBUTION ST ATEMEN T (of thta Report) Approved for public release; distribution unlimited. 17. DISTRIBUTION STATEMENT (of the mbatract entered In Block 20, if different from Report) 18.
    [Show full text]
  • A Useful Tool for Rhinoplasty to Correct High Radix
    Brazilian Journal of Otorhinolaryngology 87 (2021) 59---65 Brazilian Journal of OTORHINOLARYNGOLOGY www.bjorl.org ORIGINAL ARTICLE Radix saw: a useful tool for rhinoplasty to correct high radix a b,∗ c Süreyya ¸eneldirS , Denizhan Dizdar , Altu˘g Tuna a Süreyya ¸eneldirS Clinic, Istanbul, Turkey b ˙Istinye University, Faculty of Medicine, Bahc¸elievler Medical Park Hospital, Department of Otolaryngology, ˙Istanbul, Turkey c Private Office, Frankfurt, Germany Received 13 February 2019; accepted 26 June 2019 Available online 7 August 2019 KEYWORDS Abstract Rhinoplasty; Introduction: The most difficult aspect of radix lowering is determining the maximum amount Radix; of bone that can be removed with osteotomes; here, we describe use of a radix saw, which is Nose a new tool for determining this amount. Objective: In this study, we describe use of a radix saw, which is a new tool to reduce the radix. Methods: The medical charts of 96 patients undergoing surgery to lower a high radix between 2016 and 2017 were assessed retrospectively. All operations were performed by the senior surgeon. Outcomes were assessed by comparing preoperative photographs with the most recent follow-up photographs (minimum of 6 months postoperatively). The photographs were all taken using the same imaging settings, and with consistent subject distance and angulation. The photographs were subsequently analysed by authors. Results: The study population consisted of 96 patients (70 women, 26 men) who underwent rhinoplasty between 2016 and 2017. The mean age of the patients was 28.8 years (range: 18---50 years) and the mean clinical follow-up period was 1.8 years. No patient required revision surgery due to radix problems, and there were no cases with unwanted bone fragments or radix asymmetry.
    [Show full text]
  • About Numbers How These Basic Tools Appeared and Evolved in Diverse Cultures by Allen Klinger, Ph.D., New York Iota ’57
    About Numbers How these Basic Tools Appeared and Evolved in Diverse Cultures By Allen Klinger, Ph.D., New York Iota ’57 ANY BIRDS AND Representation of quantity by the AUTHOR’S NOTE insects possess a The original version of this article principle of one-to-one correspondence 1 “number sense.” “If is on the web at http://web.cs.ucla. was undoubtedly accompanied, and per- … a bird’s nest con- edu/~klinger/number.pdf haps preceded, by creation of number- mtains four eggs, one may be safely taken; words. These can be divided into two It was written when I was a fresh- but if two are removed, the bird becomes man. The humanities course had an main categories: those that arose before aware of the fact and generally deserts.”2 assignment to write a paper on an- the concept of number unrelated to The fact that many forms of life “sense” thropology. The instructor approved concrete objects, and those that arose number or symmetry may connect to the topic “number in early man.” after it. historic evolution of quantity in differ- At a reunion in 1997, I met a An extreme instance of the devel- classmate from 1954, who remem- ent human societies. We begin with the bered my paper from the same year. opment of number-words before the distinction between cardinal (counting) As a pack rat, somehow I found the abstract concept of number is that of the numbers and ordinal ones (that show original. Tsimshian language of a tribe in British position as in 1st or 2nd).
    [Show full text]