THIS PROJECT IS STILL EXPERIMENTAL. THINGS ARE SUBJECT TO CHANGE, although the interface and tests haven't changed since the beginning, about 2 years ago.
See digikar99.github.io/numericals/ for documentation.
SIMD powered simple-math numerical operations on arrays for Common Lisp through CFFI [still experimental]
Home Page: https://digikar99.github.io/numericals/
License: MIT License
THIS PROJECT IS STILL EXPERIMENTAL. THINGS ARE SUBJECT TO CHANGE, although the interface and tests haven't changed since the beginning, about 2 years ago.
See digikar99.github.io/numericals/ for documentation.
Building with SBCL 2.3.3.83-562a1a329 / ASDF 3.3.5 for quicklisp dist creation.
Trying to build commit id c8dd3ab
dense-numericals fails to build with the following error:
Unhandled ASDF/FIND-COMPONENT:MISSING-DEPENDENCY in thread #<SB-THREAD:THREAD tid=542952 "main thread" RUNNING {1001738003}>: Component "dense-arrays+static-vectors" not found, required by #<SYSTEM "dense-numericals">
dense-numericals/magicl fails to build with the following error:
Unhandled ASDF/FIND-COMPONENT:MISSING-DEPENDENCY in thread #<SB-THREAD:THREAD tid=542948 "main thread" RUNNING {1001738003}>: Component "dense-arrays+static-vectors" not found, required by #<SYSTEM "dense-numericals">
numericals/benchmarks fails to build with the following error:
; caught ERROR:
; READ error during COMPILE-FILE: Package TRIVIAL-COERCE does not exist. Line: 21, Column: -1, File-Position: 465 Stream: #<SB-INT:FORM-TRACKING-STREAM for "file /home/quicklisp/quicklisp-controller/dist/build-cache/numericals/372c3a674706749c1f5a7b55b8171c33037c6142/numericals-2023.05.0/benchmarks/benchmark.lisp" {1015455A03}>
...
Unhandled UIOP/LISP-BUILD:COMPILE-FILE-ERROR in thread #<SB-THREAD:THREAD tid=542956 "main thread" RUNNING {1001730113}>: COMPILE-FILE-ERROR while compiling #<CL-SOURCE-FILE "numericals/benchmarks" "benchmark">
The current notion of broadcasting adapted from numpy has been argued to be ugly on this reddit thread because it violates the pitman's two-bit rule.
Some exploration about this topic has suggested that the two bits of information, here, are (i) what are the arrays you want to operate on (ii) what is the operation you want to perform. Broadcasting properly for more-than-trivial use cases involves doing it correctly for not just the simple monadic trigonometric and dyadic arithmetic operators, but also for other operators such as matrix-multiply, concatenation, horizontal-reductions, determinants, matrix equation solving and perhaps many more. The programming language J - but not numpy - seems to keep these two bits separate, and involves the notion of ranks for both nouns aka arrays, as well as verbs aka operators or functions.
Some references for anyone who attempts to reimplement the basics while taking verb ranks into account:
And perhaps also see the above reddit thread by u/moon-chilled!
Building with SBCL 2.3.1.122-1455d60f6 / ASDF 3.3.5 for quicklisp dist creation.
Trying to build commit id 69bfa08
dense-numericals fails to build with the following error:
Unhandled ASDF/FIND-COMPONENT:MISSING-DEPENDENCY in thread #<SB-THREAD:THREAD "main thread" RUNNING {1001728003}>: Component "extensible-compound-types-interfaces" not found, required by #<SYSTEM "trivial-coerce">
numericals fails to build with the following error:
Unhandled ASDF/FIND-COMPONENT:MISSING-DEPENDENCY in thread #<SB-THREAD:THREAD "main thread" RUNNING {1001728003}>: Component "extensible-compound-types-interfaces" not found, required by #<SYSTEM "trivial-coerce">
numericals/benchmarks fails to build with the following error:
Unhandled ASDF/FIND-COMPONENT:MISSING-DEPENDENCY in thread #<SB-THREAD:THREAD "main thread" RUNNING {1001728003}>: Component "extensible-compound-types-interfaces" not found, required by #<SYSTEM "trivial-coerce">
Building with SBCL 2.3.1.122-1455d60f6 / ASDF 3.3.5 for quicklisp dist creation.
Trying to build commit id a8995ea
dense-numericals fails to build with the following error:
; caught ERROR:
; (during macroexpansion of (DEFPOLYMORPH (NU:COPY :MORE-OPTIMAL-TYPE-LIST ...) ...))
; Can't match (((OUT (ARRAY <TYPE>)))) with ((LIST* (LIST POLYMORPHIC-FUNCTIONS::PARAMETER TYPE) POLYMORPHIC-FUNCTIONS::DEFAULT POLYMORPHIC-FUNCTIONS::SUPPLIED-P)).
...
; caught ERROR:
; (during macroexpansion of (DEFPOLYMORPH (NU:COPY :SUBOPTIMAL-NOTE ...) ...))
; Can't match (((OUT NULL))) with ((LIST* (LIST POLYMORPHIC-FUNCTIONS::PARAMETER TYPE) POLYMORPHIC-FUNCTIONS::DEFAULT POLYMORPHIC-FUNCTIONS::SUPPLIED-P)).
...
; caught ERROR:
; (during macroexpansion of (DEFPOLYMORPH NU:COPY ...))
; Can't match (((OUT (SIMPLE-ARRAY <TYPE>)))) with ((LIST* (LIST POLYMORPHIC-FUNCTIONS::PARAMETER TYPE) POLYMORPHIC-FUNCTIONS::DEFAULT POLYMORPHIC-FUNCTIONS::SUPPLIED-P)).
...
; caught ERROR:
; (during macroexpansion of (DEFPOLYMORPH (NU:COPY :MORE-OPTIMAL-TYPE-LIST ...) ...))
; Can't match (((OUT (ARRAY SINGLE-FLOAT)))) with ((LIST* (LIST POLYMORPHIC-FUNCTIONS::PARAMETER TYPE) POLYMORPHIC-FUNCTIONS::DEFAULT POLYMORPHIC-FUNCTIONS::SUPPLIED-P)).
...
; caught ERROR:
; (during macroexpansion of (DEFPOLYMORPH NU:COPY ...))
; Can't match (((OUT (SIMPLE-ARRAY SINGLE-FLOAT)))) with ((LIST* (LIST POLYMORPHIC-FUNCTIONS::PARAMETER TYPE) POLYMORPHIC-FUNCTIONS::DEFAULT POLYMORPHIC-FUNCTIONS::SUPPLIED-P)).
...
; caught ERROR:
; (during macroexpansion of (DEFPOLYMORPH (NU:COPY :MORE-OPTIMAL-TYPE-LIST ...) ...))
; Can't match (((OUT (ARRAY DOUBLE-FLOAT)))) with ((LIST* (LIST POLYMORPHIC-FUNCTIONS::PARAMETER TYPE) POLYMORPHIC-FUNCTIONS::DEFAULT POLYMORPHIC-FUNCTIONS::SUPPLIED-P)).
...
; caught ERROR:
; (during macroexpansion of (DEFPOLYMORPH NU:COPY ...))
; Can't match (((OUT (SIMPLE-ARRAY DOUBLE-FLOAT)))) with ((LIST* (LIST POLYMORPHIC-FUNCTIONS::PARAMETER TYPE) POLYMORPHIC-FUNCTIONS::DEFAULT POLYMORPHIC-FUNCTIONS::SUPPLIED-P)).
...
Unhandled UIOP/LISP-BUILD:COMPILE-FILE-ERROR in thread #<SB-THREAD:THREAD "main thread" RUNNING {1040610113}>: COMPILE-FILE-ERROR while compiling #<CL-SOURCE-FILE "dense-numericals" "copy-coerce">
numericals fails to build with the following error:
; caught ERROR:
; (during macroexpansion of (DEFPOLYMORPH (NU:ASARRAY :INLINE ...) ...))
; Can't match (((TYPE (EQL :AUTO)))) with ((LIST* (LIST POLYMORPHIC-FUNCTIONS::PARAMETER TYPE) POLYMORPHIC-FUNCTIONS::DEFAULT POLYMORPHIC-FUNCTIONS::SUPPLIED-P)).
...
Unhandled UIOP/LISP-BUILD:COMPILE-FILE-ERROR in thread #<SB-THREAD:THREAD "main thread" RUNNING {1001728003}>: COMPILE-FILE-ERROR while compiling #<CL-SOURCE-FILE "numericals" "primitives">
numericals/benchmarks fails to build because of a failure in numericals.
Dear digikar,
I am trying to use numericals but I am facing with a lot of issues.
I can't even run the benchmark since sbcl-numerical package doesn't exist neither d+ d- etc or d2+.
I've planning to play with simd avx2 and sse2 and numericals seemed to be a good option but I am struggling with it.
Do you plan to work on it and make it stable for at least what is implemented.
I wish I contribute but I am not that familiar with simd.
Regards,
Bela
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.