GSoC Progress - Week 6
Programming · GSoC · SymPyHello, received a mail few minutes into typing this, passed the midterm review successfully :)
Just left me wondering how do these guys process so many evaluations so quickly. I do have to confirm with Ondřej about this.
Anyways, the project goes on and here is my this week's summary.
Progress
SymEngine
successfully moved to using Catch
as a testing framework.
The travis builds for clang were breaking, this let me to play around with travis and clang builds to fix this issue. The linux clang build used to break because we used to mix-up and link libraries like GMP
compiled with different standard libraries.
Thanks to Isuru for lending a helping hand and fixing it in his PR.
Next task to make SYMENGINE_ASSERT
not use standard assert()
, hence I wrote my custom assert which simulates the internal assert
.
Now we could add the DNDEBUG
as a release flag when Piranha
is a dependence, this was also done.
Started work on Expression
wrapper, PR that starts off from Francesco's work sent in.
Investigated the slow down in benchmarks that I have been reporting in the last couple of posts. Using git commit
(amazing tool, good to see binary search in action!), the first bad commit was tracked. We realized that the inclusion of piranha.hpp
header caused the slowdown and was resolved by using mp_integer.hpp
, just the requirement header.
With immense help of Franceso, the problem was cornered to this:
* Inclusion of thread_pool
leads to the slowdown, a global variable that it declares to be specific.
* In general a multi-threaded application may result in some compiler optimizations going off, hence slowdown.
* Since this benchmark is memory allocation intensive, another speculation is that compiler allocates memory differently.
This SO question asked by @bluescarni should lead to very interesting developments.
We have to investigate this problem and get it sorted. Not only because we depend on Piranha
, we might also have multi-threading in SymEngine
later too.
Report
No benchmarking was done this week.
Here is my PR reports.
WIP
* #500 - Expression Wrapper
Merged
* #493 - The PR with Catch
got merged.
* #498 - Made SYMENGINE_ASSERT
use custom assert instead of assert()
and DNDEBUG
as a release flag with PIRANHA
.
* #502 - Make poly_mul
used mpz_addmul
(FMA), nice speedup of expand2b
.
* #496 - En route to fixing SYMENGINE_ASSERT
led to a minor fix in one of the assert statements.
* #491 - Minor fix in compiler choice documentation.
Targets for Week 7
- Get the
Expression
class merged. - Investigate and fix the slow-downs.
The rest of tasks can be finalized in later discussion with Ondřej.
That's all this week.
Ciao