[Numpy-discussion] Does float16 exist?

David Cournapeau david@ar.media.kyoto-u.ac...
Tue Jan 8 21:55:30 CST 2008


Charles R Harris wrote:
>
>
> On Jan 8, 2008 8:42 PM, David Cournapeau <david@ar.media.kyoto-u.ac.jp 
> <mailto:david@ar.media.kyoto-u.ac.jp>> wrote:
>
>     Charles R Harris wrote:
>     >
>     >
>     > On Jan 8, 2008 6:49 PM, Eric Firing <efiring@hawaii.edu
>     <mailto:efiring@hawaii.edu>
>     > <mailto: efiring@hawaii.edu <mailto:efiring@hawaii.edu>>> wrote:
>     >
>     >     Bill Baxter wrote:
>     >     > On Jan 9, 2008 9:18 AM, Charles R Harris
>     >     <charlesr.harris@gmail.com
>     <mailto:charlesr.harris@gmail.com>
>     <mailto:charlesr.harris@gmail.com
>     <mailto:charlesr.harris@gmail.com>>> wrote:
>     >     >> On Jan 8, 2008 5:01 PM, Bill Baxter < wbaxter@gmail.com
>     <mailto:wbaxter@gmail.com>
>     >     <mailto:wbaxter@gmail.com <mailto:wbaxter@gmail.com>>> wrote:
>     >     >>> On Jan 9, 2008 8:03 AM, Charles R Harris
>     >     < charlesr.harris@gmail.com
>     <mailto:charlesr.harris@gmail.com>
>     <mailto:charlesr.harris@gmail.com <mailto:charlesr.harris@gmail.com>>>
>     >     >> wrote:
>     >     >>>> On Jan 8, 2008 1:58 PM, Bill Baxter < wbaxter@gmail.com
>     <mailto:wbaxter@gmail.com>
>     >     <mailto:wbaxter@gmail.com <mailto:wbaxter@gmail.com>>> wrote:
>     >     >>>>> If you're really going to try to do it, Charles,
>     there's an
>     >     >>>>> implementation of float16 in the OpenEXR toolkit.
>     >     >>>>> http://www.openexr.com/
>     >     >>>>>
>     >     >>>>> Or more precisely it's in the files in the Half/ directory
>     >     of this:
>     >     >>>>>
>     >     >>
>     >    
>     http://download.savannah.nongnu.org/releases/openexr/ilmbase-1.0.1.tar.gz
>     >     >>>>> I don't know if it's IEEE conformant or not (especially
>     >     w.r.t. NaN's
>     >     >>>>> and such) but it should be a good start.  The code
>     seems to
>     >     be well
>     >     >>>>> documented.
>     >     >>>> The license looks good, essentially BSD. The code is
>     all C++,
>     >     which is
>     >     >> the
>     >     >>>> obvious way to go for this sort of thing, and I would
>     like to
>     >     stick with
>     >     >> it,
>     >     >>>> but that could lead to build/compatibility problems. I
>     think
>     >     NumPy
>     >     >> itself
>     >     >>>> should really be in C++.  Maybe scons can help with the
>     build.
>     >     >>> Yeh, I was just thinking you'd rip out and C-ify the main
>     >     algorithms
>     >     >>> rather than trying to wrap it as-is.
>     >     >> I'd rather not C-ify the thing, I'd rather C++-ify parts of
>     >     NumPy. I note
>     >     >> that MatPlotLab uses C++, so some of the problems must have
>     >     been solved.
>     >
>     >     A big chunk of C++ in matplotlib has just been replaced, largely
>     >     because
>     >     it was so hard to understand and extend for everyone but its
>     author.
>     >     There is still C++ code as well as C code in mpl.  Personally, I
>     >     prefer
>     >     the C.
>     >
>     >     >
>     >     > If you think that's easier then go for it.
>     >
>     >     The opinion that C++ would improve numpy is not universal,
>     and has
>     >     been
>     >     discussed.
>     >
>     >     http://article.gmane.org/gmane.comp.python.numeric.general/13244
>     >     <
>     http://article.gmane.org/gmane.comp.python.numeric.general/13244>
>     >
>     >
>     > Ah, the trick to interfacing C to C++ is to derive the C++ classes
>     > from the numpy structures and keep the function pointers. Then
>     all the
>     > offsets would work. I would think the main advantage of C++ would be
>     > in arithmetic operator overloading and using template classes while
>     > carefully restricting such things to numbers. Mostly, I would
>     use C++
>     > inline class methods as shorthand that would compile to what the C
>     > approach would do. I suppose we could write a python
>     preprocessor that
>     > would do essentially the same thing; C++ started that way.
>     Are you suggesting to write a compiler to be able to use operator
>     overloading ? :) More seriously, the problem of C/C++ is not only at
>     source level but also at binary level.
>
>
> As  I tried to say, there are ways of dealing with the compatibility 
> problems at the binary level.
Sorry, I was not precise enough: I talked at the binary level wrt 
compilers. C++ object code compiled by different compilers are not 
always compatible, without talking about known linking problems. I am 
afraid this would quickly become a headache to support, specially when 
you start using external C++ libraries (if the float16 library is BSD, 
the source code could be incorporated directly into numpy, though, but 
then compiling the code may be an issue wrt distutils: I don't know how 
flexible C++ support is in distutils).

This is such a big issue (ABI issues) with C++ that some open source 
projects incorporate the libraries they used in their source tree.

David


More information about the Numpy-discussion mailing list