Enhancing APL with Co-dfns: Revolutionizing Scalability and Accessibility

co dfns report n.w
1 / 58
Embed
Share

"Discover how Co-dfns is transforming the APL language to be more scalable and accessible. Explore parallelism, domain-specific applications, and improved error handling. Use APL everywhere for faster data processing and seamless integration."

  • APL Transformation
  • Scalability
  • Accessibility
  • Parallelism
  • Error Handling

Uploaded on | 0 Views


Download Presentation

Please find below an Image/Link to download the presentation.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author. If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.

You are allowed to download the files provided on this website for personal or commercial use, subject to the condition that they are used lawfully. All files are the property of their respective owners.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.

E N D

Presentation Transcript


  1. Co-dfns Report Dyalog 22 Aaron Hsu - aaron@dyalog.com

  2. Why Co-dfns?

  3. Make APL more scalable/accessible

  4. Parallelism

  5. Domains

  6. How to APL + Where to APL

  7. Use APL everywhere

  8. Data-parallel tree processing

  9. Data-parallel Parser + Code-generation

  10. Much faster (62) Error handling Ambiguous APL Type inference Language features Input types

  11. Public Parser API

  12. codfns.PS':Namespace' 'X5' 'F{Y3 X-+Y}' ':EndNamespace F0:4[] B1:0[ ] V1:0[X] A1:0[5] B2:0[ ] V2:0[F] C2:0[] F2:4[] B1:0[ ] V1:0[Y] A1:0[3] E2:0[] V1:1[X] P2:3[-] E2:0[] P1:4[ ] P2:3[+] E2:0[] P1:4[ ] P2:3[ ] V1:0[Y] V1:0[X]

  13. codfns.PS '(2=+0=X.|X)X20' E2:0[] E2:0[] A1:0[2] P2:3[=] E1:0[] O2:3[] P2:3[+] P3:3[ ] E2:0[] A1:0[0] P2:3[=] E2:0[] V1:0[X] O2:3[] P2:3[|] P3:3[ .] V1:0[X] P2:3[ ] B1:0[ ] V1:0[X] E1:0[] P2:3[ ] A1:0[20]

  14. LBL (dwh pp3) p LBL (dwv pp3) p

  15. (d t k n lx pos end)(xn xt)sym IN

  16. codfns.PS':Namespace' 'F{(+}' ':EndNamespace' SYNTAX ERROR: MISMATCHED PARENS/BRACKETS [2] F {( + } codfns.PS ':Namespace' 'F {( )[)]}' ':EndNamespa' SYNTAX ERROR: UNRECOGNIZED KEYWORD(S) [3] :EndNamespa codfns.PS ':Namespace' 'F {[ ]}' ':EndNamespace' SYNTAX ERROR: BRACKET SYNTAX REQUIRES FUNCTION OR ARRAY TO ITS LEFT [2] F {[ ]}

  17. Static Analysis

  18. Text Processing in APL

  19. Data-parallel code gen?

  20. Where?

  21. ML + HPC

  22. U-net Neural Network

  23. (Ronneberger, Fischer, and Brox 2015)

  24. 0 2 1 3 4+.

  25. New platforms = New applications

  26. Portable Code Generation

  27. Separate runtime distributable

  28. Runtime implemented in APL

  29. Retargeting code gen + kernel retargets the runtime

  30. Flexibility

  31. Extensibility

  32. Low-overhead foreign function interface

  33. foreign

  34. First-class namespace objects

  35. Integrate with other software environments

  36. Javascript/WASM Python Java/C# Scheme/Lisp Custom Hardware

  37. Native Interface + DWA

  38. int my_func(ARR **, ARR *, ARR *); int my_func_dwa(DWA *, DWA *, DWA*);

  39. Optimized Runtimes

  40. CPU vectors Energy efficiency Space efficiency Scalar-optimized

  41. CPU + GPU Data buffers

  42. What to expect

  43. New runtime may run slower initially

  44. Fuller coverage of APL primitives

  45. Characters Mixed Arrays Complex Numbers Noble Arrays+ Nesting

  46. Add the big missing language features

  47. Trad-fns Dynamic Scope Control Structures Branching Error trapping/guards Selective assignment Execute/ambiguous values Exporting user-defined operators Namespaces

Related


More Related Content