Dear PDL folks,

PDL 2.057_01 has just been released. Notable changes since 2.057:

  *   pthreading can be over non-divisible number of threads
  *   replace a lot of complicated build stuff with C macros
  *   all PDL operations now have a C function interface called pdl_(name)_run
  *   zeroes now quicker as only does memset, not assgn operation
  *   fix pp_add_boot to remove any blank lines (such as added by 
pp_line_numbers), which broke at least one CPAN module
  *   Example/doc-pp script to use GraphViz2 to show pp_def key dependencies
  *   remove many obsolete/unused Core-struct members and functions
  *   fix setnantobad doc to match behaviour fixed in 2.040, add 
setnonfinitetobad and setinftobad

Due to changes to the “Core” structure, you will need to reinstall all your PDL 
modules. Sorry. I’ve been holding off the dev-release in order to only do this 
once, but the various changes are large enough that a dev-release is the best 
way to shake out problems with the changes so far. There are still going to 
need to be a couple more “Core” changes, which will mean another reinstall of 
other modules on the next version. Hopefully you will find it worth the hassle.

The first point (it makes use of all the resources you asked it to) will be 
further developed (after an intervening stable release, so we can know more 
surely when things broke if problems arise) to default to calculating how many 
cores are available, and using those. A further development will be to divide 
tasks up to 2-3 times that many as a “task queue”, and let threads pick off 
that, to maximise efficiency for non-deterministic operations such as things 
that might converge quickly. This will also allow efficient use of processing 
units of differing speeds (see next point).

A further intended development is to use OpenCL where available to 
automatically translate pp_def-ed functions to use GPUs as well.

The second and third main points are intended to transform PDL into a C library 
with a Perl interface, which could then be used in C programs, or via 
interfaces in other dynamic languages.

Another aim (nearly complete) is to have the PP system generate one C file per 
function, which allows parallel compilation of PDL modules. This will greatly 
speed up installation on systems that are configured to use such, and is needed 
because e.g. Slices.xs is currently >34k lines, and takes >20secs to compile on 
my machine. It will be opt-in for each module.

This work has been aided hugely by the tireless, superb efforts on the PDL 
ecosystem’s continuous integration (CI) capability by the mighty Zaki Mughal. 
Thanks, Zaki!

The IRC channel (#pdl on irc.perl.org) is a great virtual place to come and ask 
questions, or just watch the GitHub messages flow by.
As usual, please give the new PDL a try and report problems.

Best regards,
Ed
_______________________________________________
pdl-devel mailing list
pdl-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/pdl-devel

Reply via email to