#DYNA16 Dyalog Version 15.0 Highlights Jay Foad, John Daintree Dan Baronet, Brian Becker Morten Kromberg.

Slides:



Advertisements
Similar presentations
Introduction to C Programming
Advertisements

Memory.
Part IV: Memory Management
Hashing as a Dictionary Implementation
Introduction to Programming Lesson 1. Objectives Skills/ConceptsMTA Exam Objectives Understanding Computer Programming Understand computer storage and.
Parallelization and Tuning. Rough Timetable 09:00-09:05 Introduction 09:10-09:50 Dyalog Tuning Tools (Jay Foad) Break 10:00-10:45 Parallel Each (Michael.
© 2004 Goodrich, Tamassia Hash Tables1  
V14 New Features Dan Baronet. Many new features V14 is probably the release of Dyalog with the most new features.
NUMERIC ARRAYS DEBBI HAMNER CIT 336 TEACHING PRESENTATION.
1 Storage Registers vs. memory Access to registers is much faster than access to memory Goal: store as much data as possible in registers Limitations/considerations:
Dictionaries and Hash Tables1  
Review for Test 2 i206 Fall 2010 John Chuang. 2 Topics  Operating System and Memory Hierarchy  Algorithm analysis and Big-O Notation  Data structures.
Hash Tables1 Part E Hash Tables  
Hash Tables1 Part E Hash Tables  
Environments and Evaluation
Chapter 3 Program translation1 Chapt. 3 Language Translation Syntax and Semantics Translation phases Formal translation models.
Parallelizing Compilers Presented by Yiwei Zhang.
Hash Tables1 Part E Hash Tables  
Technical Road Map Morten Kromberg, CTO Back in the UK!
Efficient Pseudo-Random Number Generation for Monte-Carlo Simulations Using GPU Siddhant Mohanty, Subho Shankar Banerjee, Dushyant Goyal, Ajit Mohanty.
VPC3: A Fast and Effective Trace-Compression Algorithm Martin Burtscher.
Parallel Programming with v14.0. Parallel Paths to Parallel Performance 1.Parallel Compiler Research –”Concurrent Dfns Compiler” targets fine-grained.
Topic #10: Optimization EE 456 – Compiling Techniques Prof. Carl Sable Fall 2003.
Technical Road Map Update Morten Kromberg, CTO. Show of Hands Workshops Today: –Putting Dyalog’s Latest Features to Use –MiServer 3.0 – A Framework for.
or Reducing Interpreter Overhead Jay Foad Dyalog The Compiler Project.
File System Implementation Chapter 12. File system Organization Application programs Application programs Logical file system Logical file system manages.
Technical Road Map Morten Kromberg 0. 1 (Same Old) Focus Areas -Performance -(includes parallel computing) -Portability -(includes user interfaces) -Language.
Random Number Generators 1. Random number generation is a method of producing a sequence of numbers that lack any discernible pattern. Random Number Generators.
Pseudo-random generators Random Number Generating There are three types of generators table look-up generators hardware generators algorithmic (software)
Hash Tables1   © 2010 Goodrich, Tamassia.
COMPILERS Symbol Tables hussein suleman uct csc3003s 2007.
Interpretation Environments and Evaluation. CS 354 Spring Translation Stages Lexical analysis (scanning) Parsing –Recognizing –Building parse tree.
Utilities in Dyalog APL Dan Baronet Boston 2011 V1.00 0Dyalog’11 - BostonUtilities.
1 5. Abstract Data Structures & Algorithms 5.2 Static Data Structures.
Memory Management Fundamentals Virtual Memory. Outline Introduction Motivation for virtual memory Paging – general concepts –Principle of locality, demand.
Data TypestMyn1 Data Types The type of a variable is not set by the programmer; rather, it is decided at runtime by PHP depending on the context in which.
© 2004 Goodrich, Tamassia Hash Tables1  
Robbie CSCI2100A Data Structures Tutorial
CS 598 Scripting Languages Design and Implementation 14. Self Compilers.
I MPLEMENTING FILES. Contiguous Allocation:  The simplest allocation scheme is to store each file as a contiguous run of disk blocks (a 50-KB file would.
Chapter 15 A External Methods. © 2004 Pearson Addison-Wesley. All rights reserved 15 A-2 A Look At External Storage External storage –Exists beyond the.
+ Arrays & Random number generator. + Introduction In addition to arrays and structures, C supports creation and manipulation of the following data structures:
1D Arrays and Random Numbers Artem A. Lenskiy, PhD May 26, 2014.
Higher Computing Science 2016 Prelim Revision. Topics to revise Computational Constructs parameter passing (value and reference, formal and actual) sub-programs/routines,
New Language Features For Parallel and Asynchronous Execution Morten Kromberg Dyalog LTD Dyalog’13.
ONE DIMENSIONAL ARRAYS AND RANDOM NUMBERS. Introduction In addition to arrays and structures, C supports creation and manipulation of the following data.
 Data Type is a basic classification which identifies different types of data.  Data Types helps in: › Determining the possible values of a variable.
#DYNA16 vecdb The Dyalog Vector Database Workshop W2: Managing Data with Dyalog Morten Kromberg, CXO.
Technical Road Map Spring 2016 Morten Kromberg, CXO 0.
1 V15 - Spring 2016 Toutes les nouveautes de V15 Dan Baronet Dyalog.
Introduction to Programming Lesson 1. Algorithms Algorithm refers to a method for solving problems. Common techniques for representing an algorithms:
#DYNA16 Technical Road Map Update Jay Foad, CTO Morten Kromberg, CXO.
Memory Management in Java Mr. Gerb Computer Science 4.
Hash Tables 1/28/2018 Presentation for use with the textbook Data Structures and Algorithms in Java, 6th edition, by M. T. Goodrich, R. Tamassia, and M.
V15 new features Ce printemps Dyalog annonce les nouveautes Salutations. Presentations.
CS1371 Introduction to Computing for Engineers
Hash Tables 3/25/15 Presentation for use with the textbook Data Structures and Algorithms in Java, 6th edition, by M. T. Goodrich, R. Tamassia, and M.
A cryptographically secure pseudorandom number generator for Julia
Toutes Les Nouveautes de V15
Jay Foad & Adám Brudzewsky
Fun with Total Array Ordering (TAO)
Proposed Version 16.0 Language Features
CH 9.2 : Hash Tables Acknowledgement: These slides are adapted from slides provided with Data Structures and Algorithms in C++, Goodrich, Tamassia and.
CS200: Algorithms Analysis
Dictionaries 1/17/2019 7:55 AM Hash Tables   4
CH 9.2 : Hash Tables Acknowledgement: These slides are adapted from slides provided with Data Structures and Algorithms in C++, Goodrich, Tamassia and.
Introduction to Programming
CS210- Lecture 16 July 11, 2005 Agenda Maps and Dictionaries Map ADT
Dyalog Version 15.0 Highlights
Dictionaries and Hash Tables
Presentation transcript:

#DYNA16 Dyalog Version 15.0 Highlights Jay Foad, John Daintree Dan Baronet, Brian Becker Morten Kromberg

#DYNA16 Agenda Primitive speed-ups Compiler and bytecode execution improvements Hashed arrays Catenate-reduction of empty arrays Random numbers Dyalog Version 15 Highlights 1

#DYNA16 Primitive speed-ups Count trailing ones: b ⊥ b is now faster than +/ ∧ \ ⌽ b Partition pseudo-operator: b( ≢ ¨ ⊂ )x b(+/¨ ⊂ )x b( ⌈ /¨ ⊂ )x And so on. Typical 5x speed-up Dyalog Version 15 Highlights 2

#DYNA16 Primitive speed-ups Linear time algorithm for n ⌈ /x and n ⌊ /x Typical 3x speed-up when n=10 Formatting floating point data ⍺⍕⍵ and ⍺ ⎕ FMT ⍵ (E, F and I formats) Typical 2x to 5x speed-up Dyalog Version 15 Highlights 3

#DYNA16 Primitive speed-ups Depth (≡X) reimplemented. Typical 2x speed-up, more on deeply nested arrays x*b for scalar x and Boolean array b Up to 90x speed-up! ≢ ¨X: 25x speed-up Dyalog Version 15 Highlights 4

#DYNA16 Primitive speed-ups ⍺ +.× ⍵ for Boolean arguments Also +. ∧ +. ∨ +.= +.≠ etc. Typical 4x speed-up 0 ∊ b and 1 ∊ b are as fast as ∨ /b and ∧ /b Set functions on small arguments Typical 3x to 10x speed-up Dyalog Version 15 Highlights 5

#DYNA16 Dyalog Compiler Coming in 15.0: Better support for nested dfns Better support for global variables Show compiler errors in the editor Plus many parser improvements Come to workshop W1 after lunch! Dyalog Version 15 Highlights 6

#DYNA16 Hashed arrays Recap: retained hash tables A←#.BigData.someVector f←A ∘⍳ Repeated applications of f will cache the hash table generated for A Dyalog Version 15 Highlights 7

#DYNA16 Hashed arrays New I-beam achieves the same thing A←#.BigData.someVector A←1500 ⌶ A ⍝ Hash A Applications of A ⍳ Y, X ∊ A etc will share the hash table for A Dyalog Version 15 Highlights 8

#DYNA16 Hashed arrays Hashed arrays can be updated A ← 1500 ⌶ someVector A,← moreData A↓ ⍨ ← ¯1 Updates with,← and (new idiom) ↓ ⍨ ← will efficiently update the stored hash table Dyalog Version 15 Highlights 9

#DYNA16 Catenate reduction This is long overdue: A←'one' 'two' 'three' ⊃,/3↑A ←→ 'onetwothree' ⊃,/2↑A ←→ 'onetwo' ⊃,/1↑A ←→ 'one' ⊃,/0↑A ←→ '' Dyalog Version 15 Highlights 10

#DYNA16 Catenate reduction Introduces an identity function for catenate (APL2 had this for many primitives) Handles all combinations of catenate-with-axis and reduce-with-axis ⍴⊃⍪⌿ 0 2 ⍴⊂ 3 4 ⍴ Dyalog Version 15 Highlights 11

#DYNA16 Random numbers The old algorithm, Lehmer's linear congruential generator, lacked Randomness Range Speed New algorithm Mersenne Twister (since Dyalog APL 13.1) addresses all of these Also: truly random numbers from the OS Dyalog Version 15 Highlights 12

#DYNA16 Random numbers In 15.0 ⎕ RL is a two item vector: (seed)(algorithm) Allows switching algorithm safely and without an I-beam ⎕ RL← ⍬ for non-repeatable sequences Most existing uses of ⎕ RL unaffected ⌶ will be withdrawn in 16.0 Dyalog Version 15 Highlights 13

#DYNA16 Random numbers Existing uses of ⎕ RL unaffected: foo; ⎕ RL ⍝ localise ⎕ RL←5*7 ⍝ initialise ⎕ RL←+/ ⎕ TS ⍝ randomise Dyalog Version 15 Highlights 14

#DYNA16 Random numbers ⎕ RL←0 generates a random seed ⎕ RL← ⍬ generates a random seed and a non-repeatable sequence Future interpreters will change the sequence but generate numbers much faster, especially Booleans Dyalog Version 15 Highlights 15