GSoC 2022 openlibm project

Hello mentors!
I am shreya from India. I am interested in your project ’ openlibm '. I am experienced in C/C++ and learning Octave. I would like to know if there is any repo and documentation dedicated to this project so that I can start contributing to this project at the earliest. please guide me. thank you.

Welcome @shreyaswikriti :wave:

Thanks for your interest in the openlibm project. There is a small project description in the Octave wiki https://wiki.octave.org/gsoc#openlibm and in the surrounding text.

A useful good and challenging first task for the project is actually building Octave itself from its source code. For this you can follow the guides in the wiki as well:

We are looking forward to work with you this summer. If you face any problems or unclear documentation, please reach out for us here :slightly_smiling_face:

1 Like

Greetings Mentors,
My name is Riva Malthiyar. I am from India. I am interested in your project ‘openlibm’. I am experienced in C/C++ and now learning octave. I needed guidance regarding 2 things.

  1. I am taking guidance from this YouTube Video: Octave Tutorial for Absolute Beginners: Learn Octave in 1 hr and 30 min - YouTube. Am I going on the right track?
  2. Is there any repository where I need to contribute before preparing the proposal in order to show my skills?

Thank you @siko1056 for guiding me.


I have built the Octave by following the instructions given on the wiki Building-Octave and right now trying to understand mercurial. I would like to fix some small bugs. As I am a complete beginner, It would be kind of you if you can refer me to some small bugs to start with. Thank you.

Greetings @Riva_Malthiyar,

Thanks for your interest in Octave and the openlibm project :slightly_smiling_face:

  1. Regarding the video, it looks nice and might be a good start to get into working with Octave. Compared to C/C++, the Octave language is more mathematical with a great syntax to handle vectors and matrices with ease. To work on this project, learning how to use Octave is important. During the project you will write tests for numerical results that should be consistent on macOS, MS Windows, and Unix systems using openlibm. A second important step (as outlined in my previous post) is familiarity with building Octave itself and the Octave build system. This is a tough task for a beginner and should not be underestimated. If you do not “get warm” with Octaves build system, this task will become a burden during the summer and another project might be more suited. Thus please ask if you get stuck at some point. Here are many experts, who build Octave on a daily basis and like to help out :wink:

  2. So far there does not exist an explicit on-boarding task. Focusing on the openlibm project, we would like you to become able to build Octave itself on your system and we would like you to discuss with us about you ideas how to include openlibm into Octaves build system.

@shreyaswikriti congratulations :+1: Did you see any errors or warnings about missing dependencies during the build? Can you start the Octave GUI via “./run-octave --gui”? What is the system you are able to work on this summer?

A list of small bugs was maintained in the wiki Short projects - Octave, but it is time consuming to keep it up to date from the full list of 1500+ open bugs on Savannah. If you find an item in the long list that interest you, just start working on it. Tell us why you are interested in solving this item and we can help assessing the difficulty.

Otherwise, you already built Octave yourself and started using it. If there is anything you do not like or you want to see changed or improved, start working on that and tell us about your experience with your work :slightly_smiling_face:

Yes, there are some warnings regarding the configurations.

configure: WARNING: SUNDIALS IDA library not configured with SUNLINSOL_KLU or sunlinksol_klu.h is not usable.  The solvers ode15i and ode15s will not support the sparse Jacobian feature.
configure: WARNING: Include file <jni.h> not found.  Octave will not be able to call Java methods.
configure: 
configure: NOTE: Libraries or auxiliary programs may be skipped if they are not found
configure: NOTE: OR if they are missing required features on your system.

I tried to fix these by the instruction given in JAVA/SUNDIALS CONFIGURATION . at a time only one configuration warning get solved and other remains. I couldn’t get rid of all at once.

1 Like

Right now, I am using Ubuntu 20.04 but I can switch to Windows 10 if it’s necessary.

Yes, I can. Attaching some images for your reference.



1 Like

@shreyaswikriti Your Octave looks pretty good. Great work already :+1:

Regarding the configuration warnings: in general those are not a big issue, but still an issue, if you want to use Java code with Octave for example. As you will become an expert of GNU Autotools and the Octave build system, let’s try to figure out why configure is complaining and let’s find a solution for it :wink:

During the ./configure step usually a huge config.log file is written, that can be analyzed with an editor for tests that lead to those warnings. Please try to resolve those warnings, let’s start with <jni.h>. What is the reason and is there an Ubuntu package to satisfy this missing dependency :question:

Thank you @siko1056. I’ll try to figure out the problem in the configuration. By the way, I’m not a JAVA developer. :slightly_smiling_face: If this task requires some pro-JAVA skills I’m afraid it will be hard for me. Looking for your guidance in this.Thanks.

In my perception, this is more an Ubuntu missing header from package problem. A perfect task for understanding messages from Octave build configuration. No Java skills should be required.

1 Like

Right now I’m facing two configuration warnings:
1.configure: WARNING: JAVA_HOME environment variable not initialized. Auto-detection will proceed but is unreliable.
2.configure: WARNING: SUNDIALS IDA library not configured with SUNLINSOL_KLU or sunlinksol_klu.h is not usable. The solvers ode15i and ode15s will not support the sparse Jacobian feature.
For 1
On my system:
openjdk 11.0.14 2022-01-18
I tried to fix this by configuring JAVA_HOME variable.

./configure JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64

Result:
The warning disappeared but problem 2 remains. echo $JAVA_HOME gives no output(it’s weird for me as after configuring this variable still gives nothing but in console.log file it’s already set). BUt in console.log, the warning for JAVA is solved and variables are set as per the file output.
extract from the console.log:

ac_cv_env_JAVA_HOME_set=set
ac_cv_env_JAVA_HOME_value=/usr/lib/jvm/java-11-openjdk-amd64

jini.h warning solved.

configure:77105: checking for include file <jni.h>
configure:77133: result: /usr/lib/jvm/java-11-openjdk-amd64/include

For problem 2
On my system:
well, I don’t know the sundial version and couldn’t find any way to check it but as I have installed libsundials-dev package that provides the 3.1 version of sundials.
I tried to fix the warning by ./configure CPPFLAGS="-I/usr/include/suitesparse".
Result: the problem got fixed but again JAVA initialization warning appear.
extract from console.log:

configure:76716: result: yes
configure:76818: WARNING: JAVA_HOME environment variable not initialized.  Auto-detection will proceed but is unreliable.

Hence, the JAVA_HOME variable got reset to default which is NULL.
jni.h warning doesn’t appear here either.

When I configure for one thing other things get configure to default.

Configure arguments don’t retain after configure has finished.

Try setting both arguments when configuring. I.e.:

./configure CPPFLAGS="-I/usr/include/suitesparse" JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
2 Likes

Thank you. problem solved. :smiley:

@shreyaswikriti Great you solved both issues and do not see any warnings during the Octave configuration and many thanks @mmuetzel :slightly_smiling_face:

After changing the ./configure step, one has to run make -j8 (or any convenient number of parallel jobs) again to apply that configuration to the Octave that is used. Did you see any errors during the make step?

Finally, after building Octave, there is a large “Built-In Self Test” (BIST) Suite. This will certainly become important for the project as well. Thus getting familiar with it will be our next step and probably your first commit to the Octave repo (writing a small BIST).

2 Likes

Hi,

Welcome @shreyaswikriti !

I agree with @siko1056 that getting familiar with the BIST suite is an important next step.

Something very helpful would be also to browse the bug tracker and find a list of issues that are related to the differences in math libraries among different systems and make a list of them.

Usually those issues are those that have to do with floating point truncation errors, but not only, for example the most recent discussion I recall was about definitions of math constants …

c.

2 Likes

No I’m not getting any errors.
I just got one warning when I run command make install

warning: relinking 'libinterp/liboctinterp.la'

For GNU Autotools I just followed one article autotool

I’ll go through this step and update my progress. Really excited about my first contribution. :smiley:

Ok, thank you for assigning me a task.
For this, I have to follow this link right?

Looks good to me.

Yes, this is the official link. If you want to use another interface to browse the data, you can try https://octave.space/savannah/ as well.

Hello Mentor
I am Sami . I am interested in the above project I have worked on C++ as well as octave so that can you guide me to how will i contribute your project
Thanks