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


Groups > comp.lang.c > #15579

Re: The container abstraction and parallel programming

From jacob navia <jacob@spamsink.net>
Newsgroups comp.lang.c
Subject Re: The container abstraction and parallel programming
Date 2012-01-08 12:29 +0100
Organization lccwin
Message-ID <jebumn$ih4$1@speranza.aioe.org> (permalink)
References <je7uhf$hjj$1@speranza.aioe.org> <87ty46obu6.fsf@gmail.com> <jebrs4$cgv$1@speranza.aioe.org> <jebt9c$7mm$1@dont-email.me>

Show all headers | View raw


Le 08/01/12 12:05, ec429 a écrit :
> On 08/01/12 10:41, jacob navia wrote:
> Actually, those programs aren't "exactly the same", due to the lack of
> the aforementioned "restrict" keyword. For instance:
> double array[3]={0,1,2};
> doADD(array+1, array+1, array, 2);

Adding the "restrict" keyword doesn't change anything.


> In general, the correct approach to parallel programming is giving the
> compiler as few constraints as possible. This can sometimes be achieved
> with 'restrict', but not much can be done in procedural languages unless
> they have some explicit means of telling the compiler that normal order
> constraints can be relaxed (which would be a /much/ more useful
> extension to C than processor-specific vectorisation primitives, since
> the latter would reduce the portable glory of C to the provincial
> insularity of assembler (not that assembler isn't valuable in
> appropriate circumstances, of course!)).


Well, thanks a lot. It is EXACTLY what I proposed in the message that 
started this discussion. We should have a way to tell the compiler
to use SIMD operations in a special object that we declare as SIMD.

> In C as it stands, the
> canonical way to do this is by means of threads (at least in C11; '99
> and its predecessors don't mention threaded execution, but many
> implementations support it). SIMD has its uses, of course; but unless
> your code is perversely written (and so long as you have used 'restrict'
> where appropriate) the compiler knows better than you do. Besides, your
> time as a programmer is worth enough that you generally shouldn't be
> expending it on non-portable performance hacks unless you /know/ your
> code will be run a very large number of times. YAGNI.

1) Using threads to make SIMD is not possible. The overhead of thread
    creation and maintenance is impossible high.

2) Your remarks about "The compiler knows better" have no connection
    with reality. Gcc, that is a highly advanced compiler, is unable
    to do SIMD reliably, as I proved. It suffices a small change and
    the whole thing COLLAPSES.

3) Your remarks about avoiding performance hacks are welcome since it is
    exactly what I was saying: we need a portable way of using SIMD that
    is supported by the language.


> If you really want to write strongly parallelisable programs (rather
> than merely hand-optimising with a few vector ops that probably don't
> gain you much anyway) try a functional language, such as LISP - with a
> properly designed data-flow model parallel processing becomes something
> that the implementation can do transparently.
>

Well, I am using C, and I do not see how LISP would be useful in this 
context since it would need the same extensions that you would need in 
C. Lisp is NOT SIMD per se.

> I think you just don't like gcc, because you know (and don't want to
> admit to yourself) that it's better than yours.


I have never denied that gcc generates better code than lcc.
In my posting I spoke of two mainstream compilers like gcc and MSVC
That is all. And what I said was right: they aren't able to use SIMD
programming in a useful way.

But you do not like what I say (and you do not want to admit it
to yourself) because I am NOT using gcc and even have the audacity of
trying to build a different compiler!

You see?

If you get to personal attacks or suppositions we just can't discuss.
Everything becomes a stupid war of "gcc is the best and you are wrong
because you use another compiler"

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


Thread

The container abstraction and parallel programming jacob navia <jacob@spamsink.net> - 2012-01-07 00:02 +0100
  Re: The container abstraction and parallel programming blp@cs.stanford.edu (Ben Pfaff) - 2012-01-06 15:08 -0800
    Re: The container abstraction and parallel programming jacob navia <jacob@spamsink.net> - 2012-01-07 00:27 +0100
      Re: The container abstraction and parallel programming blp@cs.stanford.edu (Ben Pfaff) - 2012-01-06 15:30 -0800
        Re: The container abstraction and parallel programming jacob navia <jacob@spamsink.net> - 2012-01-07 00:41 +0100
  Re: The container abstraction and parallel programming Kaz Kylheku <kaz@kylheku.com> - 2012-01-07 00:04 +0000
    Re: The container abstraction and parallel programming jacob navia <jacob@spamsink.net> - 2012-01-07 09:06 +0100
    Re: The container abstraction and parallel programming Nick Keighley <nick_keighley_nospam@hotmail.com> - 2012-01-08 03:42 -0800
  Re: The container abstraction and parallel programming Ian Collins <ian-news@hotmail.com> - 2012-01-07 13:50 +1300
    Re: The container abstraction and parallel programming jacob navia <jacob@spamsink.net> - 2012-01-07 09:31 +0100
      Re: The container abstraction and parallel programming Ian Collins <ian-news@hotmail.com> - 2012-01-07 22:03 +1300
      Re: The container abstraction and parallel programming Stephen Sprunk <stephen@sprunk.org> - 2012-01-07 07:39 -0600
        Re: The container abstraction and parallel programming Gene <gene.ressler@gmail.com> - 2012-01-07 09:27 -0800
          Re: The container abstraction and parallel programming Stephen Sprunk <stephen@sprunk.org> - 2012-01-08 11:37 -0600
            Re: The container abstraction and parallel programming jacob navia <jacob@spamsink.net> - 2012-01-08 18:42 +0100
        Re: The container abstraction and parallel programming jacob navia <jacob@spamsink.net> - 2012-01-08 11:48 +0100
          Re: The container abstraction and parallel programming ec429 <ec429@cam.ac.uk> - 2012-01-08 11:16 +0000
          Re: The container abstraction and parallel programming Stephen Sprunk <stephen@sprunk.org> - 2012-01-08 11:52 -0600
            Re: The container abstraction and parallel programming Keith Thompson <kst-u@mib.org> - 2012-01-08 14:17 -0800
              Re: The container abstraction and parallel programming pete <pfiland@mindspring.com> - 2012-01-08 22:08 -0500
              Re: The container abstraction and parallel programming Stephen Sprunk <stephen@sprunk.org> - 2012-01-09 11:07 -0600
                Re: The container abstraction and parallel programming Keith Thompson <kst-u@mib.org> - 2012-01-09 14:55 -0800
            Re: The container abstraction and parallel programming jacob navia <jacob@spamsink.net> - 2012-01-09 00:22 +0100
          Re: The container abstraction and parallel programming Nobody <nobody@nowhere.com> - 2012-01-09 14:19 +0000
            Re: The container abstraction and parallel programming Ben Bacarisse <ben.usenet@bsb.me.uk> - 2012-01-09 16:40 +0000
            Re: The container abstraction and parallel programming Kaz Kylheku <kaz@kylheku.com> - 2012-01-09 17:53 +0000
            Re: The container abstraction and parallel programming Gene <gene.ressler@gmail.com> - 2012-01-10 16:58 -0800
  Re: The container abstraction and parallel programming Robert Wessel <robertwessel2@yahoo.com> - 2012-01-07 01:28 -0600
  Re: The container abstraction and parallel programming Jens Gustedt <jens.gustedt@loria.fr> - 2012-01-07 09:39 +0100
    Re: The container abstraction and parallel programming jacob navia <jacob@spamsink.net> - 2012-01-07 09:54 +0100
      Re: The container abstraction and parallel programming Jens Gustedt <jens.gustedt@loria.fr> - 2012-01-07 11:36 +0100
  Re: The container abstraction and parallel programming Gareth Owen <gwowen@gmail.com> - 2012-01-08 08:08 +0000
    Re: The container abstraction and parallel programming jacob navia <jacob@spamsink.net> - 2012-01-08 11:41 +0100
      Re: The container abstraction and parallel programming jacob navia <jacob@spamsink.net> - 2012-01-08 11:53 +0100
      Re: The container abstraction and parallel programming jacob navia <jacob@spamsink.net> - 2012-01-08 11:59 +0100
      Re: The container abstraction and parallel programming ec429 <ec429@cam.ac.uk> - 2012-01-08 11:05 +0000
        Re: The container abstraction and parallel programming jacob navia <jacob@spamsink.net> - 2012-01-08 12:29 +0100
          Re: The container abstraction and parallel programming ec429 <ec429@cam.ac.uk> - 2012-01-08 13:35 +0000
      Re: The container abstraction and parallel programming gwowen <gwowen@gmail.com> - 2012-01-09 01:09 -0800
      Re: The container abstraction and parallel programming Tim Rentsch <txr@alumni.caltech.edu> - 2012-01-26 09:23 -0800
        Re: The container abstraction and parallel programming jacob navia <jacob@spamsink.net> - 2012-01-26 23:41 +0100
          Re: The container abstraction and parallel programming Tim Rentsch <txr@alumni.caltech.edu> - 2012-03-07 16:18 -0800

csiph-web