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 <fricas-devel@googlegroups.com> 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 fricas-devel...@googlegroups.com >> > > <mailto:fricas-devel...@googlegroups.com>. >> > > 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 fricas-devel...@googlegroups.com >> > <mailto:fricas-devel...@googlegroups.com>. >> > 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 fricas-devel+unsubscr...@googlegroups.com. > 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 fricas-devel+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/fricas-devel/CAGBJN92fMF_En5OO7wR6fauG0UbFmeMa9hAjc4td2omvhxc0TA%40mail.gmail.com.