Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.programming > #2341

Re: 64 bit code

From Rui Maciel <rui.maciel@gmail.com>
Newsgroups comp.programming
Subject Re: 64 bit code
Date 2012-10-13 17:05 +0100
Organization Aioe.org NNTP Server
Message-ID <k5c3ft$ha9$1@speranza.aioe.org> (permalink)
References (4 earlier) <162dnU-Rw5IpVOrNnZ2dnUVZ8qCdnZ2d@bt.com> <k59snb$oqm$1@speranza.aioe.org> <k59un2$qem$1@dont-email.me> <k5beod$t0h$1@speranza.aioe.org> <k5blp3$3fj$1@dont-email.me>

Show all headers | View raw


BartC wrote:

> If the hardware can directly deal with 64-bit floats, then there is little
> performance loss (compared with attempting 64-bit arithmetic on 32-bit
> hardware, or in software).

It really depends on the hardware and how the code was compiled.  For 
example, the x86-64 ISA includes instructions which take operands that pack 
four single-precision numbers, while the double precision version can only 
pack two double-precision ones, which means that compilers are able to pull 
some magic tricks.  For instance, take the following functions:

<code>
float foo(float const A[], float const B[], float const C[], float const 
D[])
{
        float value = 0;
        for(int i = 0; i < 10; i++)
                value += A[i]+B[i] + C[i] + D[i];

        return value;
}

double bar(double const A[], double const B[], double const C[], double 
const D[])
{
        float value = 0;
        for(int i = 0; i < 10; i++)
                value += A[i]+B[i] + C[i] + D[i];

        return value;
}
</code>


With g++ 4.6, compiling this code with -mtune=k8 -O2, foo() results in a 
loop with 9 instructions, while bar() results in a loop with 11 
instructions.  If -mtune=k8 -O3 is used, foo() unrolls to 50 instructions 
while bar() is unrolled to 71.  

This example might be very specific, but it indicates thath the performance 
penalty associated with the use of double-precision numbers instead of 
single-precision ones may not be that small.  


> Anyway, I remember using 32-bit floats in an application (originally using
> software emulation), and they weren't of sufficient accuracy for some
> types of problems (mapping for example). They only have 1 in 8 million
> precision after all. Switching to 64-bits solved that problem.

That isn't a FP error, only a blatant design error.  Single-precision 
numbers simply weren't capable of representing the numbers that needed to be 
represented.  It's like trying to represent unicode characters in 7-bit 
ASCII.


Rui Maciel

Back to comp.programming | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

64 bit code bob <bob@coolfone.comze.com> - 2012-10-10 08:22 -0700
  Re: 64 bit code Jongware <jongware@no-spam.plz> - 2012-10-10 17:35 +0200
    Re: 64 bit code "BartC" <bc@freeuk.com> - 2012-10-10 17:37 +0100
      Re: 64 bit code Robert Wessel <robertwessel2@yahoo.com> - 2012-10-10 12:54 -0500
      Re: 64 bit code Fritz Wuehler <fritz@spamexpire-201210.rodent.frell.theremailer.net> - 2012-10-10 21:37 +0200
        Re: 64 bit code BGB <cr88192@hotmail.com> - 2012-10-10 21:46 -0500
      Re: 64 bit code Rui Maciel <rui.maciel@gmail.com> - 2012-10-10 20:43 +0100
        Re: 64 bit code "Chris Uppal" <chris.uppal@metagnostic.REMOVE-THIS.org> - 2012-10-12 08:40 +0100
          Re: 64 bit code BGB <cr88192@hotmail.com> - 2012-10-12 12:36 -0500
          Re: 64 bit code Rui Maciel <rui.maciel@gmail.com> - 2012-10-12 20:57 +0100
            Re: 64 bit code "BartC" <bc@freeuk.com> - 2012-10-12 21:30 +0100
              Re: 64 bit code BGB <cr88192@hotmail.com> - 2012-10-12 16:33 -0500
                Re: 64 bit code "BartC" <bc@freeuk.com> - 2012-10-13 00:44 +0100
                Re: 64 bit code Ben Pfaff <blp@cs.stanford.edu> - 2012-10-12 20:07 -0700
              Re: 64 bit code Rui Maciel <rui.maciel@gmail.com> - 2012-10-13 11:11 +0100
                Re: 64 bit code "BartC" <bc@freeuk.com> - 2012-10-13 13:11 +0100
                Re: 64 bit code Willem <willem@turtle.stack.nl> - 2012-10-13 12:34 +0000
                Re: 64 bit code BGB <cr88192@hotmail.com> - 2012-10-13 09:50 -0500
                Re: 64 bit code "BartC" <bc@freeuk.com> - 2012-10-13 17:25 +0100
                Re: 64 bit code Rui Maciel <rui.maciel@gmail.com> - 2012-10-13 17:53 +0100
                Re: 64 bit code Rui Maciel <rui.maciel@gmail.com> - 2012-10-13 17:05 +0100
          Re: 64 bit code "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> - 2012-10-13 10:37 +0200
            Re: 64 bit code "Chris Uppal" <chris.uppal@metagnostic.REMOVE-THIS.org> - 2012-10-27 12:18 +0100
              Re: 64 bit code "Chris Uppal" <chris.uppal@metagnostic.REMOVE-THIS.org> - 2012-10-27 12:54 +0100
              Re: 64 bit code "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> - 2012-10-27 15:13 +0200
                Re: 64 bit code Robert Miles <milesrf@Usenet-News.net> - 2012-10-28 04:12 -0500
                Re: 64 bit code "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> - 2012-10-28 13:10 +0100
                Re: 64 bit code "LudovicoVan" <julio@diegidio.name> - 2012-10-29 04:38 +0000
                Re: 64 bit code "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> - 2012-10-29 09:30 +0100
                Re: 64 bit code "LudovicoVan" <julio@diegidio.name> - 2012-10-30 22:09 +0000
                Re: 64 bit code "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> - 2012-10-31 09:47 +0100
                Re: 64 bit code "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> - 2012-10-31 09:55 +0100
                Re: 64 bit code "LudovicoVan" <julio@diegidio.name> - 2012-10-31 14:32 +0000
            Re: 64 bit code Patricia Shanahan <pats@acm.org> - 2012-10-27 08:51 -0700
              Re: 64 bit code "LudovicoVan" <julio@diegidio.name> - 2012-10-27 17:23 +0100
              Re: 64 bit code "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> - 2012-10-27 20:43 +0200
                Re: 64 bit code "LudovicoVan" <julio@diegidio.name> - 2012-10-30 22:16 +0000
                Re: 64 bit code "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> - 2012-10-31 09:53 +0100
                Re: 64 bit code "LudovicoVan" <julio@diegidio.name> - 2012-10-31 14:33 +0000
                Re: 64 bit code Fritz Wuehler <fritz@spamexpire-201211.rodent.frell.theremailer.net> - 2012-11-01 00:25 +0100
      Re: 64 bit code Rui Maciel <rui.maciel@gmail.com> - 2012-10-10 21:04 +0100
        Re: 64 bit code "BartC" <bc@freeuk.com> - 2012-10-10 21:52 +0100
          Re: 64 bit code Ian Collins <ian-news@hotmail.com> - 2012-10-11 10:50 +1300
            Re: 64 bit code BGB <cr88192@hotmail.com> - 2012-10-10 21:54 -0500
              Re: 64 bit code "BartC" <bc@freeuk.com> - 2012-10-11 13:11 +0100
                Re: 64 bit code BGB <cr88192@hotmail.com> - 2012-10-11 11:17 -0500
      Re: 64 bit code Ben Pfaff <blp@cs.stanford.edu> - 2012-10-10 13:17 -0700
        Re: 64 bit code Fritz Wuehler <fritz@spamexpire-201210.rodent.frell.theremailer.net> - 2012-10-11 19:36 +0200
          Re: 64 bit code Ben Pfaff <blp@cs.stanford.edu> - 2012-10-12 08:13 -0700
    Re: 64 bit code Rui Maciel <rui.maciel@gmail.com> - 2012-10-10 20:38 +0100
    Re: 64 bit code Robin Vowels <robin.vowels@gmail.com> - 2012-10-10 15:22 -0700
  Re: 64 bit code Robert Miles <milesrf@Usenet-News.net> - 2012-10-12 02:13 -0500

csiph-web