Title: Dyalog
1Dyalog09
2Technical Road Map 09
- Morten Kromberg
- Dyalog09 Princeton, NJ
3Agenda
- Introducing Version 12.1
- Demonstration of some Key Features
- The Next Release Cycle
- Version 13.0
- Conga 2.1, Encryption Encoding Library
- APL - A new APL interpreter to complement
Dyalog APL - Cirrus or Cumulo-Nimbus?
- Eagles Eye View of Curves in the Road
- Recommendations on preparing for the future
4Version 12.1 Overview
- It was supposed to be a Year of Consolidation
- Let the new QA manager take charge
- Build, Install QA on every platform, every
night - Find and Kill more bugs, Speed things up a bit
- ... But we managed to sneak a few new things into
v12.1 ?
5Version 12.1 Overview
- Faster on Single Core, Some Multi-Core Features
- Editor Enhancements
- Fast XML-to-Array Conversion Tool (?XML)
- Microsoft.Net components embeddable in Dyalog GUI
- User Command Processor for Tool Delivery
- IPv6 Support with Conga v2.0
- Journaling Component Files Protection against
O/S Crashes - New Developer Tools SAWS, MildServer, LoadData,
GRAPL - Applications deployable as single .exe file
(interpreterws) - Improved Keyboard and Terminal Support
- I-Beam (?) allows experimental undocumented
features
6V12.1 Core Performance
v10.1 ms v10.1 ms v12.1 ms Factor
Boolean Scans and Reductions Highly Optimized Boolean Scans and Reductions Highly Optimized Boolean Scans and Reductions Highly Optimized Boolean Scans and Reductions Highly Optimized Boolean Scans and Reductions Highly Optimized Boolean Scans and Reductions Highly Optimized Boolean Scans and Reductions Highly Optimized Boolean Scans and Reductions Highly Optimized Boolean Scans and Reductions Highly Optimized
mat?1000 1000 rand 2 mat?1000 1000 rand 2 mat?1000 1000 rand 2 ?mat 5200 5200 680 7,6
vec?1000000 rand 2 vec?1000000 rand 2 vec?1000000 rand 2 ?\vec 51000 51000 830 61,4
Set Functions (? ? ? n ) Optimized for One Small Argument Set Functions (? ? ? n ) Optimized for One Small Argument Set Functions (? ? ? n ) Optimized for One Small Argument Set Functions (? ? ? n ) Optimized for One Small Argument Set Functions (? ? ? n ) Optimized for One Small Argument Set Functions (? ? ? n ) Optimized for One Small Argument Set Functions (? ? ? n ) Optimized for One Small Argument Set Functions (? ? ? n ) Optimized for One Small Argument Set Functions (? ? ? n ) Optimized for One Small Argument
vec?1000000 rand 100 vec?1000000 rand 100 vec?1000000 rand 100 vec5 vec5 33000 6500 5,1
(vec?5)/vec (vec?5)/vec 11000 7200 1,5
Transpose Rewritten Transpose Rewritten Transpose Rewritten Transpose Rewritten ?mat ?mat 32000 23000 1,4
?vec ?vec 3 0 11,3
Indexing Uses Less Memory Indexing Uses Less Memory Indexing Uses Less Memory Indexing Uses Less Memory Indexing Uses Less Memory Indexing Uses Less Memory
i j?1000?1000 1000 i j?1000?1000 1000 i j?1000?1000 1000 mati ? (kb used) mati ? (kb used) 4125 129 31,9
Indexing is also (often) Faster Indexing is also (often) Faster Indexing is also (often) Faster Indexing is also (often) Faster Indexing is also (often) Faster Indexing is also (often) Faster
data?mati data?mati 23000 240 95,8
matj?data matj?data 59000 230 256,5
7V12.1 Core Performance
v10.1 ms v10.1 ms v12.1 ms Factor
Grade Uses New (lexicographic) Algorithm Grade Uses New (lexicographic) Algorithm Grade Uses New (lexicographic) Algorithm
vec?1e6 rand 1e9 ?vec 500000 500000 180000 2,8
For Small Range Data, Even Faster For Small Range Data, Even Faster For Small Range Data, Even Faster
vec?1e6 rand 10000 ?vec 460000 460000 34000 13,5
Sort is now an idiom Sort is now an idiom ???vec 480000 480000 6300 76,2
mat?100000 4 rand 10000 mat?100000 4 rand 10000 ???mat 85000 85000 16000 5,3
Basic arithmetic ( - ) has been fully rewritten in assembly Basic arithmetic ( - ) has been fully rewritten in assembly Basic arithmetic ( - ) has been fully rewritten in assembly Basic arithmetic ( - ) has been fully rewritten in assembly Basic arithmetic ( - ) has been fully rewritten in assembly Basic arithmetic ( - ) has been fully rewritten in assembly Basic arithmetic ( - ) has been fully rewritten in assembly
Simple Arith uses SSE instructions where possible Simple Arith uses SSE instructions where possible Simple Arith uses SSE instructions where possible Simple Arith uses SSE instructions where possible
a b?1000rand50 ? 1-byte ints ab ab 8 2 3,7
More Optimized Cross-Type Operations More Optimized Cross-Type Operations More Optimized Cross-Type Operations More Optimized Cross-Type Operations More Optimized Cross-Type Operations More Optimized Cross-Type Operations More Optimized Cross-Type Operations
a b?1 0.001(1000 1000)rand50 1000000 ? a 1-byte ints, bfloats a b?1 0.001(1000 1000)rand50 1000000 ? a 1-byte ints, bfloats a b?1 0.001(1000 1000)rand50 1000000 ? a 1-byte ints, bfloats a b?1 0.001(1000 1000)rand50 1000000 ? a 1-byte ints, bfloats a b?1 0.001(1000 1000)rand50 1000000 ? a 1-byte ints, bfloats a b?1 0.001(1000 1000)rand50 1000000 ? a 1-byte ints, bfloats
ab ab 16000 9000 1,8
Matrix iota idiom extended to numeric arrays Matrix iota idiom extended to numeric arrays Matrix iota idiom extended to numeric arrays Matrix iota idiom extended to numeric arrays
data?10000 10 rand 1E6 data(??)???data data(??)???data 16000 7300 2,2
8Multi-Core Support
- Most Scalar Dyadic Functions on Floating-Point
arguments will use multiple cores (configurable) - But not and -
Function 2 cores 4 cores
12 12
- 12 12
12 12
45-50 70-75
GCD/LCM 45-50 70-75
9Parallel Each Operator
- A user-defined operator called PEACH is included
with v12.1. It uses Conga to orchestrate multiple
cores. - Demo
- Parallel Each on a single machine works well with
algorithms that have a good CPUMemory ratio - Distributed Each works for any kind of
calculation if transfer or arguments and results
not too expensive
10Performance Case Study
- Visited company in Bruxelles doing actuarial
calculations - V12.1 gave a 20 speedup out of the box
- We found 20 more by doing hot spot analysis
for a couple of hours - An 8 core machine (2xQuad) gave a 5x speedup
using PEACH on the inner loop of the
application - Summary 7-8x faster. 1 Hour calculation takes
lt10 minutes. Customer is pleased ?.
11User Command Processor
- Same idea as in APLPLUS, but based on Unicode
text files as source for user commands - A User command consists of a single Unicode
Text file, all you need to do is drop it in a
particular folder (no need to restart APL) - Makes it VERY easy to share development tools
- display 2 2?3 3?'UCMDS' 'Rock!'
- ?----------------
- ? ?---- ?----
- UCMDS Rock!
- ----- -----
- ?---- ?----
- Rock! UCMDS
- ----- -----
- ?----------------
12IDE Enhancements
- The Editor has been completely rewritten to
better support editing large classes and
functions - Outlining, Collapsible Regions, Refactoring
- John Daintree will show you all the new features
after lunch!
13Fast XML Transformations
- Converts XML text to (from) an array1
Level of nesting2 Element Name3 Element
Data4 Attributes5 Node type (0Empty Tag,
1Text only, 3Has Children, etc) - 4 not required when generating XML, 5
ignored
14Integrated MS.Net GUI
15Version 12.1 Overview
- Faster on Single Core, Some Multi-Core Features
- Editor Enhancements
- Fast XML-to-Array Conversion Tool (?XML)
- Microsoft.Net components embeddable in Dyalog GUI
- User Command Processor for Tool Delivery
- IPv6 Support with Conga v2.0
- Journaling Component Files Protection against
O/S Crashes - New Developer Tools SAWS, MildServer, LoadData,
GRAPL - Applications deployable as single .exe file
(interpreterws) - Improved Keyboard and Terminal Support
- I-Beam (?) allows experimental undocumented
features
16v12.1 Timeframe
- Complete except for packaging and a rapidly
diminishing number of bugs in the new editor - Target for General Availability on WindowsAIX is
August/September 2009 (was before Dyalog09) - Linux and PDA before year end
- It isnt too late to join the Beta-Test
programme Write to mkrom_at_dyalog.com and explain
what you would like to test - Monitor http//www.dyalog.com or
twitter.com/dyalogapl for notifications
17(No Transcript)
18The Next Release Cycle
19Conga 2.1
- Support for More Certificate Types
- Weve had help from Peter-Michael Hager
- Encrypted Certificates
- The Windows Certificate Store (allows use of
SmartCards and other Tokens that interface with
this) - General available early in 2010
20Likely Features for v13
- More Performance and QA work
- Continued focus on multi-core, cache optimization
and other aspects of modern chip architectures - Industrial Strength local and distributed PEACH
- Remove 2 billion element limit from 64-bit
version - New Data Types
- 128-bit Decimal Floating Point (IEEE-754-2008)
for banking applications - Complex Numbers to attract educational users
- Rational Numbers / Unlimited Precision Integers
can wait - We have decided we do NOT NEED 64-bit Integers
21Likely Features for v13
- Improve and rationalise internal developer tools
- ?DMX Diagnostic Message eXtended
- Provide more detailed information about errors
- ?MONITOR Measure CPU and Elapsed Time with
higher precision, easier to use, handle recursion - ?STACK, ?NSI to return refs
- ?NC, ?NL Rationalise Metadata or Reflection
tools
22More Likely v13 Features
- Support for Unicode source files built-in to
interpreter - Load, Save and direct Edit of Unicode Text files
- General-purpose Encryption Library (Hashing,
Symmetrical and Asymmetrical encryption) - Target availability for v13 in roughly 12 months
23Other Potential Projects
- SQAPL Server Allow an APL application to appear
to be a Relational Database Engine (with ODBC,
ADO, ADO.NET and JDBC drivers) - (This will not be a free product due to 3rd party
licensing) - Remote IDE for DyalogAPL on all platforms
- Mono Bridge use .Net Framework under Linux
- Provide More Developer Tools as part of the APL
Library. Cultivate an Open Source code
repository,
24APL
- We have started a research project, to produce a
completely new, Fully Managed APL Interpreter - We will publish a specification and discuss it,
first with major customers and then in public - Will be fully integrated with Microsoft.Net but
the core language syntax will be independent of
.Net
25APL - Benefits
- Applications written in APL will be deployable
in a secure fashion over the internet, and in
other scenarios where managed code is a
requirement or provides a significant advantage - For example, you will be able to write web
applications with APL code executing in the
browser to provide a rich client experience
26APL - Likely Characteristics
- Full set of APL primitives, operators and other
core language features - Designed as a tool for APL thinkers but
comfortable for software engineers - ONE BIG difference No semiglobals (a function
cannot see the locals of its calling environment)
- There WILL be true globals
- And the equivalent of namespaces will provide a
reasonable migration path
27APL - Likely Characteristics
- WILL PROBABLY NOT HAVE
- Auxiliary Processors, ?ML, ?OR, ?SM, ?RTL, ?SD,
?SR, ?NTIE, ?ARBIN, ?W, ?AI, ?SVO, ?DQ, ?D.. - (Library functions for which a perfectly good
equivalent exists in the .Net framework) - Saved workspaces will not be able to have an )SI
stack - First versions may not be able )SAVE workspaces
at all - WILL PROBABLY HAVE
- ?CT, ?IO (jury is still out), and a small set of
carefully selected library functions, Component
Files, ?XML (etc) which provide unique value to
APL programmers
28Dyalog vs APL
- APL is a complimentary product which allows the
use of APL in places where it can not be deployed
today - It is useful to organizations who need managed
code, or use Visual Studio / C or are otherwise
heavily invested in Microsoft.Net - The rate of development of the core product will
continue to accelerate - The two products will inter-operate seamlessly
29Dyalog ? APL Interop
- APL assemblies can be called by Dyalog APL (as
any other .NET assembly) - Dyalog and APL will (eventually) be able to
share Component Files and communicate (many) APL
arrays via TCP/IP - But not saved workspaces
- Selected New Language Features in APL will be
ported to Dyalog APL - Will allow the writing of code which can be used
in both environments
30Timelines
- APL is still being designed, but see
C\aplsharp\silverlight\aplsharp.html - We will start reviewing the design externally
this winter (come to APL2010 to heckle) - A prototype may be available at APL2010
earliest General Availability in 2011. - Pressure (and funding ?) from customers could
make us more ambitious about the features, but
probably not the timing, of the first release
31Cirrus or Cumulo-Nimbus?
- A good home for Vapourware?
- Dave Thomas is about to teach us how to recognize
and use different forms of clouds
32Amazon Web Services (AWS)
- A mature provider of web and computing
infrastructure (since 2006) - You provide a virtual machine image and Amazon
scales it infinitely at reasonable cost - We are investigating providing tools to support
EC2 (Elastic Compute Cloud), S3 (Simple Storage
Service) - Goal is to provide recipes, or pre-configured
Amazon Machine Images to build upon - We have a lot to learn, but hope to wrap our new
knowledge up nicely for Dyalog users - No timeline... Talk to us if you have a potential
app.
33Thoughts aboutthe Road Ahead
34Looking Back Very Briefly
- Version 11.0 (Autumn 2006)
- Object Orientation Classes
- New Tool of Thought
- Significantly Improved Integration with .Net
- Source code management using standard tools
- 64-bit Version - LARGE Workspaces
- Core Language Extensions
- A number of new primitives ? ? ? ?
35Looking Back v12.0
- First Release (Win32) in February 2008
- Main Features
- Unicode Support
- Journaling Component Files
- Simplified, Secure Communications Toolkit
(Conga) - Built-In Charting and Document Creation
- Language Bar and On-Screen Keyboard
36Looking Back v12.1
- October 2009, Key Features
- Faster, more Robust
- Multi-Core Support
- Enhanced Editor
- XML, Web Services
- Tutorials and Tools and more to come
37To Come ...
- New Commercial and Technical Data Types
- More Speed Especially On Multiple Cores
- Encryption and Other Web Enabling Tools
- Managed Code Interpreter
- More Ways to Run APL as a Service across Multiple
Platforms (ODBC Data Source etc)
38Recommendations
- 64-bit is Becoming Common, even on Windows
- Good news Porting to 64-bit requires few code
changes (once all the other components you need
are available in 64-bit) - Unicode
- Please investigate what it will take to migrate
- No hurry but eventually, we will start adding
new features in Unicode only (well need more
symbols ?) - Multi (at least 2)-core machines are everywhere
- Look at PEACH and other forms of multicore
splits
39Recommendations
- To prepare for the Web or Cloud - think about
addding - Web Front Ends using ASP.NET, MildServer etc
- Web Services using ASP.NET or SAWS
- An ODBC or ADO frontend using the SQAPL Server?
- Take a look at Source Code in Unicode Text Files
- Easier sharing and management
- Access to many excellent (often free) tools!
40Other Talks by Devt. Team...
Today (Monday) Today (Monday)
1415 John Daintree The Version 12.1 IDE
1615 Richard Smith ?XML, Journaled Files Phase II
1615 Roger Hui Complex Numbers Implementation Stories
1930 John Scholes Complex Numbers
Tomorrow (Tuesday) Tomorrow (Tuesday)
0900 Morten Kromberg An ODBC Driver for APL
0900 John Scholes Session Whizbangs
Wednesday (Courses) Wednesday (Courses)
1400 Dan Baronet Source Code Mgt using SALT and SubVersion
1400 John Daintree Using the Microsoft.Net framework
1400 Morten Kromberg Multicore / Application Tuning Workshop
41Conclusion
- Weve been keeping busy!
- Were starting to enjoy the benefits of being a
significantly larger team. - We hope that you will enjoy some of the new
Features - and Products - that are heading your
way! - Thank You For Listening!
42Other Talks by Devt. Team...
Today (Monday) Today (Monday)
1415 John Daintree The Version 12.1 IDE
1615 Richard Smith ?XML, Journaled Files Phase II
1615 Roger Hui Complex Numbers Implementation Stories
1930 John Scholes Complex Numbers
Tomorrow (Tuesday) Tomorrow (Tuesday)
0900 Morten Kromberg An ODBC Driver for APL
0900 John Scholes Session Whizbangs
Wednesday (Courses) Wednesday (Courses)
1400 Dan Baronet Source Code Mgt using SALT and SubVersion
1400 John Daintree Using the Microsoft.Net framework
1400 Morten Kromberg Multicore / Application Tuning Workshop