I will wait until an official Fricas release is made. This way I know what version I am actually using.
It is no problem for CAS integration tests as I can always update the result when Fricas is released even if it take 6 months from now or a year. The tests take very long time to do anyway. I am still struggling now to figure how to tell sagemath 9.6 to use latest versions of other CAS systems (giac and maxima) and so far, not getting any help how to do that. I need to resolve that issue first. regards --Nasser On Tuesday, May 17, 2022 at 2:35:53 PM UTC-5 oldk1331 wrote: > Hi Nasser: > > Since you are building FriCAS from source, > so for next CAS integration tests, will you > use git version instead of 1.3.7? > > - Qian > > On Sat, May 14, 2022, 7:39 AM 'Nasser M. Abbasi' via FriCAS - computer > algebra system <[email protected]> wrote: > >> >> >>>> >> Second, about the new patch. I wonder if you are running Sage >> on Windows or Linux? Is it easy to replace the FriCAS binary? >> Also, IIRC, the Sage compiles FriCAS with ecl instead of sbcl. >> Using sbcl may give a good performance boost. Also building >> with GMP may increase performance slightly. With better >> performance, we can expect less timeout results. >> >>>>> >> >> Hello Qian; >> >> When running CAS integration tests, I use Fricas build directly from >> sources outside of sagemath. >> >> Sources from >> >> >> https://sourceforge.net/projects/fricas/files/fricas/1.3.7/fricas-1.3.7-full.tar.bz2/download >> >> I run everything on Linux. Now using WSL 2.0 under windows 10 Linux >> subsystem >> >> ``` >> >which fricas >> /usr/local/bin/fricas >> >fricas --version >> FriCAS 1.3.7 >> based on sbcl 2.0.1.debian >> ``` >> >> If I wanted to use Fricas that builds by sagemath, I would do, inside >> sagemath >> >> ./configure --enable-fricas >> >> And this gives when done the following >> ``` >> >which fricas >> /home/me/TMP/sage-9.6.rc4/local/bin/fricas >> >fricas --version >> FriCAS 1.3.7 >> based on ecl 21.2.1 >> ``` >> >> So it is the first one above I will use for CAS integration tests. Not >> the version that comes with sagemath. >> >> I have to check if Fricas was build with GMP or not. I just followed the >> instructions to build fricas >> from source, and do not know now how to check if Fricas was build with >> GMP or not. But next >> time I build Fricas from source I look to see if there is an option for >> this. >> >> Thanks. >> >> --Nasser >> >> >> On Friday, May 13, 2022 at 2:33:30 PM UTC-5 oldk1331 wrote: >> >>> Hi Nasser, >>> >>> First, so you are already starting a new process for each integral. >>> Then there's no problem of slow down caused by big kernel cache. >>> >>> Second, about the new patch. I wonder if you are running Sage >>> on Windows or Linux? Is it easy to replace the FriCAS binary? >>> Also, IIRC, the Sage compiles FriCAS with ecl instead of sbcl. >>> Using sbcl may give a good performance boost. Also building >>> with GMP may increase performance slightly. With better >>> performance, we can expect less timeout results. >>> >>> - Qian >>> >>> On 5/13/22 08:09, 'Nasser M. Abbasi' via FriCAS - computer algebra >>> system wrote: >>> > Hello Qian; >>> > >>> > If I understand you, you are recommending that each call to integrate >>> > to Fricas from sagemath be done by first clearing all kernel cache in >>> > Fricas first? >>> > >>> > Well, it happens that this is what CAS integration test does. Because, >>> > sagemath >>> > does not have a direct way to do a timeout on an integrate call when >>> calling >>> > external CAS process (I need to look at their pexpect interface >>> > <https://groups.google.com/g/sage-devel/c/9_VdKmiu5Ts/m/mcUtUWOKAAAJ> >>> to >>> > see if >>> > that works with Fricas. I never used it before. >>> > >>> > So what CAS integration test does now is spawn a new process for each >>> > call to integrate >>> > and sets a timeout on the subprocess itself. This works. >>> > >>> > Here I show one sagemath script to test one integral. I also post the >>> > code for the script >>> > below and a link to it as well. If you have Sagemath and Fricas >>> > installed on your PC, >>> > then you can do >>> > >>> > ``` >>> > >cd CAS_integration_tests/ >>> > >cd reports/ >>> > >cd summer_2022/ >>> > >sage ./test_one_integral_in_sage_direct.sage >>> > Test starting..... >>> > after process start()..waiting to finish >>> > inside doTheIntegration integrand= sin(x) >>> > inside doTheIntegration x= x >>> > inside subprocess. integrate returned -cos(x) >>> > process.join completed.... >>> > process completed in time. Read the result >>> > ['-cos(x)'] >>> > finished, closing file.... >>> > ``` >>> > >>> > The script test_one_integral_in_sage_direct.sage is >>> > ``` >>> > >>> > #!/usr/bin/env sage >>> > >>> > #script to test one integral for Fricas, giac and maxima >>> > #spawns a process for each integral call, in order to do >>> > #timeout since sagemath does not directly supports putting >>> > #a timeout on a call to integrate. >>> > >>> > import os, sys, time, datetime, ntpath >>> > import multiprocessing as mp >>> > from sage.all import * >>> > >>> > def doTheIntegration(THE_INPUT): >>> > >>> > problem = THE_INPUT.get() >>> > try: >>> > print("inside doTheIntegration integrand=", problem[0]) >>> > print("inside doTheIntegration x=", problem[1]) >>> > >>> > #change algorithm to "giac" or "maxima" to test others >>> > >>> > anti = integrate(problem[0],problem[1],algorithm="fricas") >>> > >>> > print("inside subprocess. integrate returned ", anti) >>> > resultBack = [str(anti)] >>> > >>> > except Exception as ee: >>> > anti = "Exception raised: " + type(ee).__name__ + " >> " >>> > +ee.args[0] >>> > print(anti) >>> > resultBack = [anti] >>> > >>> > THE_INPUT.put(resultBack) >>> > >>> > if __name__ == "__main__": >>> > >>> > #in actual program, this is read from a file by main() >>> > #which sets the variables. Then it calls subprocess to do >>> > #the integration. >>> > x = var('x') >>> > variable = x >>> > integrand = "sin(x)" >>> > >>> > mp.set_start_method('spawn') >>> > print("Test starting.....") >>> > >>> > theQueue = mp.Queue() >>> > theQueue.put([integrand,str(variable)]) #integrand, variable, >>> optimal >>> > process = mp.Process(group=None,target=doTheIntegration, >>> > args=(theQueue,)) >>> > process.start() >>> > print("after process start()..waiting to finish") >>> > >>> > #changed to 4 minutes to compensate for extra time >>> > #needed to start subprocess for each call. Keep all other >>> > #CAS systems (Maple, Mathematica, mupad, Rubi, Sympy) at >>> > #3 minutes since those are called directly. >>> > >>> > process.join(4*60) >>> > >>> > print("process.join completed....") >>> > >>> > if process.exitcode == None or process.is_alive(): >>> > print ("process did not terminate. Kill it. Timed out") >>> > process.terminate() >>> > else: >>> > print ("process completed in time. Read the result") >>> > anti = theQueue.get() >>> > print(anti) >>> > >>> > del(theQueue) >>> > print ("finished, closing file....") >>> > ``` >>> > >>> > Here is a link to the above. test_one_integral_in_sage_direct.sage >>> > < >>> https://12000.org/tmp/sagemath_test_script/test_one_integral_in_sage_direct.sage> >>> >>> >>> > >>> > So based on what you said, to clear the cache before each call, the >>> > above does this >>> > already. So it is OK to test Fricas like this? >>> > >>> > In the next test (summer 2022) I added one minute to Fricas, Maxima >>> and >>> > Giac to >>> > compensate for the extra overheads of spawning new process each time >>> to >>> > be fair >>> > with other CAS systems which are called directly, >>> > >>> > --Nasser >>> > >>> > >>> > >>> > On Wednesday, May 11, 2022 at 10:13:56 PM UTC-5 oldk1331 wrote: >>> > >>> > Hi Nasser, >>> > >>> > I just remembered that there is a change that may have huge effects >>> > on your CAS integration tests. >>> > >>> > That is about kernel caching. >>> > >>> > There is a change after 1.3.7 that fixes a bug, that improves accuracy >>> > but deceases performance. >>> > [commit 56a678d4c43f88bade75d0072f8f44487adb2206] >>> > >>> > Also on the same subject, this kernel caching mechanism may heavily >>> > affect benchmark test -- simply put, run a test that computes 5000 >>> > integrals will take much longer time than computes each integral >>> > individually. Because of kernel caching, if you compute 5000 >>> integrals, >>> > in the end there might be hundreds of thousands kernels sitting in >>> > cache, making integration (and all other expression operation) very >>> > slow (because of most time spent on kernel look up, which requires >>> > expression comparison, which are expensive and unnecessary in this >>> > case) >>> > >>> > So, if in your test, FriCAS needs to compute many integrals in one >>> > batch, I strongly advise you to clear the kernel cache after each >>> > integration or 10 integrations. This may very likely gives a huge >>> > performance boost to the result. (The accuracy percentage may also >>> > improve very very slightly as well.) >>> > >>> > So although FriCAS will not have a release soon, I hope you can >>> > use FriCAS from git or just with this kernel cache patch, and together >>> > with "clear kernel cache after a few integrals" advice, in your >>> > next CAS integration tests, I'm sure the results will be interesting. >>> > >>> > You can contact me or let's discuss here for technical details to make >>> > this happen. >>> > >>> > - Qian >>> > >>> > On 5/4/22 03:49, 'Nasser M. Abbasi' via FriCAS - computer algebra >>> > system >>> > wrote: >>> > > I am planning to make new version of [cas integration >>> > > >>> > tests](https://www.12000.org/my_notes/CAS_integration_tests/index.htm >>> <https://www.12000.org/my_notes/CAS_integration_tests/index.htm>) >>> > >>> > > when sagemath 9.6 is released which should happen in the next few >>> > weeks. >>> > > >>> > > I was wondering if Fricas next version will be released any time >>> > this >>> > > summer, so I can hold on and wait for that, or if I should use 1.3.7 >>> > > from last year. >>> > > >>> > > I know it is not possible to predict a release time, just asking for >>> > > possible time frame. >>> > > >>> > > Thanks >>> > > --Nasser >>> > > >>> > > -- >>> > > You received this message because you are subscribed to the Google >>> > > Groups "FriCAS - computer algebra system" group. >>> > > To unsubscribe from this group and stop receiving emails from it, >>> > send >>> > > an email to [email protected] >>> > > <mailto:[email protected]>. >>> > > To view this discussion on the web visit >>> > > >>> > >>> https://groups.google.com/d/msgid/fricas-devel/56017115-cacf-4079-9454-5b2b75d6352fn%40googlegroups.com >>> >>> > < >>> https://groups.google.com/d/msgid/fricas-devel/56017115-cacf-4079-9454-5b2b75d6352fn%40googlegroups.com> >>> >>> >>> > >>> > > >>> > < >>> https://groups.google.com/d/msgid/fricas-devel/56017115-cacf-4079-9454-5b2b75d6352fn%40googlegroups.com?utm_medium=email&utm_source=footer >>> >>> > < >>> https://groups.google.com/d/msgid/fricas-devel/56017115-cacf-4079-9454-5b2b75d6352fn%40googlegroups.com?utm_medium=email&utm_source=footer>>. >>> >>> >>> > >>> > >>> > -- >>> > You received this message because you are subscribed to the Google >>> > Groups "FriCAS - computer algebra system" group. >>> > To unsubscribe from this group and stop receiving emails from it, send >>> > an email to [email protected] >>> > <mailto:[email protected]>. >>> > To view this discussion on the web visit >>> > >>> https://groups.google.com/d/msgid/fricas-devel/7b770128-5553-407a-8e60-dc2f1f028f5fn%40googlegroups.com >>> >>> > < >>> https://groups.google.com/d/msgid/fricas-devel/7b770128-5553-407a-8e60-dc2f1f028f5fn%40googlegroups.com?utm_medium=email&utm_source=footer>. >>> >>> >>> >> -- >> You received this message because you are subscribed to the Google Groups >> "FriCAS - computer algebra system" group. >> > To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/fricas-devel/ef9198fc-422b-4066-9040-3825e02cd5dbn%40googlegroups.com >> >> <https://groups.google.com/d/msgid/fricas-devel/ef9198fc-422b-4066-9040-3825e02cd5dbn%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> > -- You received this message because you are subscribed to the Google Groups "FriCAS - computer algebra system" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/fricas-devel/d252ae90-c541-4bf2-9fe4-f332c32568dbn%40googlegroups.com.
