GNU bug report logs - #68871
Can't use od to print half-precision floats

Previous Next

Package: coreutils;

Reported by: "Rozenberg, Eyal (Consultant)" <Eyal.Rozenberg <at> gehealthcare.com>

Date: Thu, 1 Feb 2024 14:28:02 UTC

Severity: normal

Done: Pádraig Brady <P <at> draigBrady.com>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: "Rozenberg, Eyal (Consultant)" <Eyal.Rozenberg <at> gehealthcare.com>
Subject: bug#68871: closed (Re: bug#68871: Can't use od to print
 half-precision floats)
Date: Sun, 04 Feb 2024 15:01:02 +0000
[Message part 1 (text/plain, inline)]
Your bug report

#68871: Can't use od to print half-precision floats

which was filed against the coreutils package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to 68871 <at> debbugs.gnu.org.

-- 
68871: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=68871
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Pádraig Brady <P <at> draigBrady.com>
To: Paul Eggert <eggert <at> cs.ucla.edu>,
 "Rozenberg, Eyal (Consultant)" <Eyal.Rozenberg <at> gehealthcare.com>,
 68871-done <at> debbugs.gnu.org
Subject: Re: bug#68871: Can't use od to print half-precision floats
Date: Sun, 4 Feb 2024 15:00:19 +0000
[Message part 3 (text/plain, inline)]
On 02/02/2024 01:47, Paul Eggert wrote:
> On 2/1/24 13:59, Pádraig Brady wrote:
>>
>> bfloat16 looks like a truncated single precision IEEE,
>> so we should be able to just pad the extra 16 bits with zeros
>> when converting to single precision internally for processing.
> 
> Sounds good. This would mean od could work even the platform doesn't
> support bfloat16_t, since od.c could fall back on the above code (though
> I suppose it could be endianness-dependent).

I see that __bf16 is supported by released versions of gcc and clang,
so rather than add conversion complexity to the core od print loop,
the attached relies on compiler support for _Float16 and __bf16 types,
which compilers will expand to more targets going forward.

I tested the attached on:

gcc 13, clang 17 x86 (Both types supported)
gcc 7 aarch64 (Only -fH supported)
gcc 13 ppc(be) (Neither supported (both will be with GCC 14))

I'll commit this later.
Marking this bug as done.

thanks,
Pádraig
[od-half-float.patch (text/x-patch, attachment)]
[Message part 5 (message/rfc822, inline)]
From: "Rozenberg, Eyal (Consultant)" <Eyal.Rozenberg <at> gehealthcare.com>
To: "bug-coreutils <at> gnu.org" <bug-coreutils <at> gnu.org>
Subject: Can't use od to print half-precision floats
Date: Thu, 1 Feb 2024 12:43:47 +0000
[Message part 6 (text/plain, inline)]
If I try to use the od utility to print half-precision (FP16) floating-point values, I get:

$ od -t f2 myfloats.bin
od: invalid type string 'f2';
this system doesn't provide a 2-byte floating point type

I'm not exactly sure what "this system" means, but that should work and print out my floats.

Eyal

PS - This is my first bug-coreutils post, please be gentle.
[Message part 7 (text/html, inline)]

This bug report was last modified 1 year and 162 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.