Releases: numcl/numcl
Version 0.2.0 Pick-axe
Pick-axe can't really cut things, but it sounds like an axe. It may work. This is the second release of NUMCL.
Major update: Einsum now has broadcasting and more!
In this release the powerful Einsum facility got a major update and will become the backbone of all complex operations and optimization. It now supports not only broadcasting (supported by numpy's einsum), but also the stepped iteration, backward iteration, the start and the end of iteration. In the future, all operations will be implemented using einsum. Merging multiple consecutive calls to einsum in order to avoid creating the intermediate array is future work.
The new interface to Einsum is as follows. Detailed specification of the Einsum interface is available from here.
(defun einsum (subscript &rest args) ...)
Performs Einstein's summation. The SUBSCRIPT specification is significantly extended
from that of Numpy and can be seen as a full-brown DSL for array operations.
SUBSCRIPTS is a sequence of the form
(<ISPEC>+ [-> <TRANSFORM>*] [-> <OSPEC>*] [-> <IOPTION>*] [-> <OOPTION>*]).
The remaining arguments ARGS contain the input arrays and optionally the output arrays.
Inputs are interpreted in the following rule, depending on the number of arrows.
(<ISPEC>+)
(<ISPEC>+ -> <OSPEC>*)
(<ISPEC>+ -> <TRANSFORM>* -> <OSPEC>*)
(<ISPEC>+ -> <TRANSFORM>* -> <OSPEC>* -> <IOPTION>*)
(<ISPEC>+ -> <TRANSFORM>* -> <OSPEC>* -> <IOPTION>* -> <OOPTION>*)
Other updates
- 6b9bfc0 , 80efb69 optimized the basic element-wise math operations (e.g. sin, log)
- 8a90edb optimizing broadcasting with
specializing - 116ac96 optimized
arangewithspecializing - 61c2854 optimized
arangewith compiler macro to avoid parsing the python-style argument in runtime - 1e64422 einsum respects locality better, encouraging the blocked execution (e.g. for matmul)
- 484307e optimized
copywithspecializing - e14aacb optimized
asarraywithspecializing - bc508ba added numcl-array-p and type numcl-array
- 470c7eb 20760e3 4e4d162 7cd98e6 fixed / added type inferer for cosh, sinh, tanh, acos, asin, atan, realpart, imagpart , log, conjugate
- c8bb026 fix issue #18 : single operand
- - a90555d 236a3ac added a new function log2 , fixed square
- other misc fixes
Version 0.1.0 ButterKnife: Feature complete
Butter knife doesn't cut through anything but soft materials like butter. This is the initial release of NUMCL.
It provides a baseline, unoptimized implementation that is expected to be slow. The optimized version (e.g. #4) will be released in the next version. You can find the documentation (preliminary) at https://numcl.github.io/numcl/ .
This version also depends on the latest Trivia pattern matcher (https://github.com/guicho271828/trivia) and the sub-libraries ( https://github.com/numcl/specialized-function , https://github.com/numcl/gtype ). Also make sure you run (ql:update-all-dists) before testing!
The exported functions include:
shapesizerankdtypelengthto-simple-arrayreshapeflattensqueezeexpand-dimsarefarangelinspaceasarraycopyastypezerosonesemptyfullempty-likefull-likezeros-likeones-likeconcatenatestackunstackmapmap-intomap-arraymap-array-intobroadcastsincostanasinacosatansinhcoshtanhexplogabssignum1+1-cisconjugatephaserealpartimagpartnumeratordenominatorlogcountinteger-length-+*/maxminclip=<><=>=/=squaresqrtlogandlogandc1logandc2logeqvlogiorlognandlognorlogorc1logorc2logxorlognotmodremroundfloorceilingtruncatefroundffloorfceilingftruncatereduce-arraysumprodamaxaminmeanvariancestandard-deviationvarstdevavghistogramarray-index-from-row-major-indexargwherewherenonzerotakeshufflebernoullibernoulli-likebetabinomialexponentialfgammamultinomialnegative-binomialnormalpoissonuniformeinsumtransposematmulinnervdotouterkroneyediagtritriltriuvander