Day 2 - Tuesday September 12th 2017
Day two and the weather is holding up for now on what was to be a full day of presentations from both Dyalog and User Delegates.
Moving bits faster with Dyalog 16 - Marshall Lochbaum, Dyalog
New techniques for manipulating bit Booleans in Dyalog have led to significant improvements in the performance of Boolean operations. Dyalog 16 is faster but about half the speed of C.
Dyalog 17 is expected to be faster than C with the current prototype about three times faster.
Boolean transpose, originally done one byte at a time reading full bytes for each bit, is now optimised to transpose as 8×8 arrays with bit interleaving worthy of a Las Vegas card sharp. This 8×8 shuffle is applied to sections from a larger Boolean arrays which all leads to massive speedups on Boolean operations.
APL on GPUs: A Progress Report with a Touch of Machine Learning - Martin Elsman, University of Copenhagen
The goal to provide a high performance in Domain Specific Language (DSL) had selected APL . The progress report gave an update on the development of APL-TAIL-FUTHARK languages to provide significant speed-ups over C by exploiting the GPU.
We were shown a practical implementation of a neural network identify digits.
U05 Co-dfns Report 2017 Ease of Use, Reliability and Features - Aaron Hsu, Indiana University
Co-dfns aims to be an integrated compiler. It is fixed as a namespace and thereafter can be used as a conventional namespace.
Co-dfns supports the core primitives and dfns with branching and recursion but no guards. Supplied with listed the limitations in a file as part of the release.
Current priorities are, index assignment; trains; the new operators; user-defined operators; nested vectors; and character data types.
- Reliability with improved error messages, data type support and overflow in theGPU has to be handled;
- Performance – you have to do some of the work yourself and have to learn how APL performs on the GPU. provide a cheat sheet.
GPUs have a warm up time and you need enough data to fill the GPU. Don’t use the for small amounts of data. For large amounts of data use the GPU and keep the data on the GPU.
Parallel Execution in a Monolith Application - Lars Villadsen, SimCorp
A pragmatic approach was illustrated for introducing parallel processing into a large application consisting of old and traditional code. Isolates and futures were exploited to introduce the concept of remote workspaces.
The solution was sketched out as implementing class like control. Functions , globals and static caches were exported and attach with Ibeam 8666. A Shared Code File(SCF) was implemented and multiple instances of the workspace started.
Parallel database calls were achieved by spitting the processing through the isolates, in one case ‘dbSelect’ database calls. In this way the ability of Oracle to handle parallel calls was exploited by using parallel remote workspaces to make those parallel calls.
Freedom Hunting: Our search for independence in UI design - Annalisa Camillo, SimCorp Italiana
We were taken through the evolutionary path for user interfaces for the SOFIA application as the developers of this long lived application tackled the problem of changing user interfaces.
The early days saw a screen design tool for fixed screen DOS, this later became a problem with larger screens that became available with Windows. The strategy for adapting screens involved using a defining script to describe the screen layout, then a class to manage the screen with defined features like rulers, frames, groups, fields etc. The screen could then be dynamically built by analysing the script to determine structure and space requirements.
Cross Platform User Interfaces using HTMLRenderer - Brian Becker, Dyalog
The GUI Challenge is to provide the same functionality across platforms. Here HTMLRenderer comes into play. It can be created with
WC2 in action enables the application to build the form and there are generic standalone components such ad message boxes that can be employed. Although HTMLRenderer is stable and mature the tools to handle it are experimental.
⎕WC is still good with a responsive layout easier with WC2. However
⎕WC is restricted to windows. WC2 utilises Synchfusion, jQuery and Datatable to deal with form manipulation and data binding.
HTMLRenderer is here to stay and offers a solution for both non-windows and Windows platforms. The 2nd in the series of Webinars on Dyalog.tv demonstrates HTMLRenderer in action.
Literal Notation for Arrays and Namespaces - Adam Brudzewsky, Dyalog
Following on from Phil Last’s proposal at Dyalog15 for the need notation for APL arrays Ada described a notation for higher rank arrays, nested arrays and namespaces. These use line breaks and ⋄ to start next element in multiline input. Examples were given but this is a topic very much open to discussion.
VTV 'abc def' Array (1 2 3 4 5 6) NS (Greeting:'hello' ⋄ 'World' ) (Greeting:'hello World') (Greeting: target ⎕ns 'hello World')
We were treated to low level performance improvements in handling Boolean arrays to high performance features for implementing parallel solutions and integrated compiled functions. Also how some long standing and pervasive issues had been solved with recent advances.
We heard of first hand experience of introducing major upgrades to long lived real world applications; parallelism to achieve faster database calls; and evolving GUI handling toolset in the face of changing software and hardware. This backed up by relatively new user sharing experience of moving from prototyping to deployment and the need to have libraries for utilities that could be trusted to alleviate the substantial effort for testing and deployment.
The day concluded with a two online interactive web resources making APL more accessible to new users and the curious.