[Coin-discuss] OsiDylp --- what's it been like?

Lou Hafer lou at cs.sfu.ca
Thu May 2 14:09:54 EDT 2002


Folks,

	Before JP grabs all the responsibility, let me appropriate a very
large chunk. There's been quite a lot going on, very little of which has
shown up on the discussion list. I have a generic excuse at hand --- SFU
claims that my contract requires me to stand in front of a class at regular
intervals. January through August are my teaching terms, and progress slows.
But that's not the major problem.

	Far and away the biggest headaches in moving from `almost ready' to
`done' have been cross-platform compatibility issues, particularly when it
came time to compile optimized versions of the code. COIN --- at least the
Osi and Common portions --- is currently supported in Linux/GCC environments
(many hardware platforms), Microsoft Windows, and now (because they're my
environments) Sun Solaris with the Workshop and GCC programming
environments.  As I type, I'm watching a Solaris/GCC run of the unitTest,
having just quashed an alignment bug in a routine that passes a variable
argument list from Fortran to C. This bug doesn't show in unoptimised GCC
builds, nor does in show in all versions of GCC (seems to show up around the
2.95/2.96 boundary, when the Gnu folks made some fundamental changes in the
implementation of varargs), nor does it occur in debug or optimised Workshop
builds.

	Debugging optimised code is the pits. Juggling code to satisfy the
whims of multiple environments is a deeper pit. Juggling code to satisfy
optimizers across multiple environments is a deeper pit with 10 feet of water
at the bottom. Changes that I wanted in order to satisfy Workshop would break
Microsoft or AIX. I don't have those environment to test in, and the IBM
folks are limited, due to the Fortran component in dylp. (Soon to be gone,
thanks to Andrew Makhorin.) Sometimes we could find common ground, other
times we resorted to conditional compilation. All of this work has resulted
in much give-and-take as JP and I have exchanged files, tweaked code, and
gradually converged to something that will build and run correctly in all the
various environments. And we started with two large bodies of existing code,
so time was required. I'm assuming that's the level of quality we're all
aiming at.

	Well, I feel better :-). And now you know why it's taken so long.

	Pretty much none of this has shown up in COIN-discuss. About the only
hint you have seen was a message a few weeks ago asking about experience with
GCC compiler versions. In the main, I kept this off the list because it would
be mostly unintelligble (and hence uninteresting) to those not actively
working on dylp or the osi and common components of COIN.

	What I take from this is that there is a place for a development
branch of the code tree. If, for example, John Forrest's proposal to create a
top-of-the-line simplex code goes forward, I think we'd want the development
to sit a little off to the side of the public code tree. Juan Vielma & others
have been working with BCP (and that's where I hope to move, once OsiDylp is
posted.) We'll need a place to do this type of convergence, so that my neat
new feature doesn't undo two months of Juan's work.  It would provide a
place to post code that's `almost ready', with the understanding that when
you try to build it in a new programming environment, it might well break.

							Lou



More information about the Coin-discuss mailing list