Rocksolid Light

Welcome to novaBBS (click a section below)

mail  files  register  newsreader  groups  login

Message-ID:  

"One lawyer can steal more than a hundred men with guns." -- The Godfather


devel / comp.arch / Re: The Computer of the Future

SubjectAuthor
* The Computer of the FutureQuadibloc
+* Re: The Computer of the FutureMitchAlsup
|+- Re: The Computer of the FutureBrett
|+* Re: The Computer of the FutureQuadibloc
||`* Re: The Computer of the FutureMitchAlsup
|| `- Re: The Computer of the FutureScott Smader
|`* Re: The Computer of the FutureQuadibloc
| `* Re: The Computer of the FutureMitchAlsup
|  +* Re: The Computer of the FutureQuadibloc
|  |+* Re: The Computer of the FutureQuadibloc
|  ||+* Re: The Computer of the FutureQuadibloc
|  |||`* Re: The Computer of the FutureQuadibloc
|  ||| `- Re: The Computer of the FutureQuadibloc
|  ||`* Re: The Computer of the FutureMitchAlsup
|  || +* Re: The Computer of the FutureQuadibloc
|  || |`* Re: The Computer of the FutureStefan Monnier
|  || | `- Re: The Computer of the FutureMitchAlsup
|  || `* Re: The Computer of the FutureIvan Godard
|  ||  +- Re: The Computer of the FutureQuadibloc
|  ||  +* Re: The Computer of the FutureTim Rentsch
|  ||  |`* Re: The Computer of the FutureTerje Mathisen
|  ||  | `* Re: The Computer of the FutureTim Rentsch
|  ||  |  `* Re: The Computer of the FutureTerje Mathisen
|  ||  |   `* Re: The Computer of the FutureTim Rentsch
|  ||  |    `* Re: The Computer of the FutureTerje Mathisen
|  ||  |     +* Re: The Computer of the FutureTim Rentsch
|  ||  |     |`* Re: The Computer of the FutureTerje Mathisen
|  ||  |     | +* Re: The Computer of the FutureDavid Brown
|  ||  |     | |+* Re: The Computer of the FutureMichael S
|  ||  |     | ||`- Re: The Computer of the FutureTim Rentsch
|  ||  |     | |`* Re: The Computer of the FutureIvan Godard
|  ||  |     | | +- Re: The Computer of the FutureDavid Brown
|  ||  |     | | +* Re: The Computer of the FutureBGB
|  ||  |     | | |`* Re: The Computer of the FutureTerje Mathisen
|  ||  |     | | | +* Re: The Computer of the FutureDavid Brown
|  ||  |     | | | |`* Re: The Computer of the FutureNiklas Holsti
|  ||  |     | | | | +- Re: The Computer of the FutureDavid Brown
|  ||  |     | | | | `* Re: The Computer of the FutureTerje Mathisen
|  ||  |     | | | |  `* Re: The Computer of the FutureThomas Koenig
|  ||  |     | | | |   `* Re: The Computer of the FutureDavid Brown
|  ||  |     | | | |    +* Re: The Computer of the FutureThomas Koenig
|  ||  |     | | | |    |`- Re: The Computer of the FutureDavid Brown
|  ||  |     | | | |    +* Re: The Computer of the FutureNiklas Holsti
|  ||  |     | | | |    |`- Re: The Computer of the FutureDavid Brown
|  ||  |     | | | |    `* Re: The Computer of the FutureMichael S
|  ||  |     | | | |     +* Re: The Computer of the FutureDavid Brown
|  ||  |     | | | |     |`* Re: The Computer of the FutureMitchAlsup
|  ||  |     | | | |     | `* Re: The Computer of the FutureDavid Brown
|  ||  |     | | | |     |  +- Re: The Computer of the FutureThomas Koenig
|  ||  |     | | | |     |  `- Re: The Computer of the FutureQuadibloc
|  ||  |     | | | |     +- Re: The Computer of the FutureQuadibloc
|  ||  |     | | | |     `- Re: The Computer of the FutureQuadibloc
|  ||  |     | | | `* Re: The Computer of the FutureBGB
|  ||  |     | | |  `* Re: The Computer of the FutureMitchAlsup
|  ||  |     | | |   `- Re: The Computer of the FutureBGB
|  ||  |     | | `* Re: The Computer of the FutureQuadibloc
|  ||  |     | |  `- Re: The Computer of the FutureIvan Godard
|  ||  |     | +* Re: The Computer of the FutureTim Rentsch
|  ||  |     | |`* Re: The Computer of the FutureTerje Mathisen
|  ||  |     | | `- Re: The Computer of the FutureBGB
|  ||  |     | `- Re: The Computer of the FutureQuadibloc
|  ||  |     `* Re: The Computer of the FutureBill Findlay
|  ||  |      +- Re: The Computer of the FutureTerje Mathisen
|  ||  |      +* Re: The Computer of the FutureMichael S
|  ||  |      |`* Re: The Computer of the FutureMichael S
|  ||  |      | `* Re: The Computer of the FutureDavid Brown
|  ||  |      |  +- Re: The Computer of the FutureMichael S
|  ||  |      |  +* Re: The Computer of the FutureTom Gardner
|  ||  |      |  |+- Re: The Computer of the FutureThomas Koenig
|  ||  |      |  |`* Re: The Computer of the FutureDavid Brown
|  ||  |      |  | `* Re: The Computer of the FutureTom Gardner
|  ||  |      |  |  `* Re: The Computer of the FutureDavid Brown
|  ||  |      |  |   `* Re: The Computer of the FutureNiklas Holsti
|  ||  |      |  |    `- Re: The Computer of the FutureDavid Brown
|  ||  |      |  `- Re: The Computer of the FutureAndy Valencia
|  ||  |      +* Re: The Computer of the FutureTim Rentsch
|  ||  |      |`- Re: The Computer of the FutureBill Findlay
|  ||  |      `* Re: The Computer of the FutureQuadibloc
|  ||  |       `* Re: The Computer of the FutureQuadibloc
|  ||  |        `* Re: The Computer of the FutureQuadibloc
|  ||  |         `- Re: The Computer of the FutureQuadibloc
|  ||  +* Re: The Computer of the FutureJohn Levine
|  ||  |+- Re: The Computer of the FutureAnton Ertl
|  ||  |`* Re: The Computer of the FutureQuadibloc
|  ||  | +* Re: The Computer of the FutureThomas Koenig
|  ||  | |+- Re: The Computer of the FutureJimBrakefield
|  ||  | |+* Re: The Computer of the FutureQuadibloc
|  ||  | ||`* Re: The Computer of the FutureBGB
|  ||  | || `* Re: The Computer of the FutureMitchAlsup
|  ||  | ||  `* Re: The Computer of the FutureBGB
|  ||  | ||   `- Re: The Computer of the FutureMitchAlsup
|  ||  | |`* Re: The Computer of the FutureTerje Mathisen
|  ||  | | +* Re: The Computer of the FutureStephen Fuld
|  ||  | | |+* FPGAs (was: The Computer of the Future)Anton Ertl
|  ||  | | ||+- Re: FPGAs (was: The Computer of the Future)BGB
|  ||  | | ||+* Re: FPGAs (was: The Computer of the Future)JimBrakefield
|  ||  | | |||`* Re: FPGAs (was: The Computer of the Future)Michael S
|  ||  | | ||| `* Re: FPGAs (was: The Computer of the Future)JimBrakefield
|  ||  | | |||  `* Re: FPGAs (was: The Computer of the Future)Michael S
|  ||  | | |||   +- Re: FPGAs (was: The Computer of the Future)BGB
|  ||  | | |||   +* Re: FPGAs (was: The Computer of the Future)MitchAlsup
|  ||  | | |||   +* Re: FPGAsTerje Mathisen
|  ||  | | |||   `* Re: FPGAs (was: The Computer of the Future)Quadibloc
|  ||  | | ||+- Re: FPGAs (was: The Computer of the Future)Michael S
|  ||  | | ||`* Re: FPGAs (was: The Computer of the Future)MitchAlsup
|  ||  | | |`- Re: The Computer of the FutureTerje Mathisen
|  ||  | | `- Re: The Computer of the FutureThomas Koenig
|  ||  | +- Re: The Computer of the FutureBrian G. Lucas
|  ||  | +- Re: The Computer of the FutureIvan Godard
|  ||  | `- Re: The Computer of the FutureMitchAlsup
|  ||  `* Re: The Computer of the FutureTom Gardner
|  |`* Re: The Computer of the FutureMitchAlsup
|  `* Re: The Computer of the FutureIvan Godard
+* Re: The Computer of the FutureThomas Koenig
`- Re: The Computer of the FutureJimBrakefield

Pages:123456
Re: The Computer of the Future

<d3da98fa-63c9-4937-a425-5fdb22ddecd3n@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=24093&group=comp.arch#24093

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a05:6214:e48:b0:435:b3d5:2219 with SMTP id o8-20020a0562140e4800b00435b3d52219mr1930qvc.48.1646837265151;
Wed, 09 Mar 2022 06:47:45 -0800 (PST)
X-Received: by 2002:a05:6808:1152:b0:2da:c7f:66c2 with SMTP id
u18-20020a056808115200b002da0c7f66c2mr5675224oiu.253.1646837264657; Wed, 09
Mar 2022 06:47:44 -0800 (PST)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Wed, 9 Mar 2022 06:47:44 -0800 (PST)
In-Reply-To: <t0a3gl$5tr$1@newsreader4.netcologne.de>
Injection-Info: google-groups.googlegroups.com; posting-host=2001:56a:fb70:6300:f824:2850:4064:6ef;
posting-account=1nOeKQkAAABD2jxp4Pzmx9Hx5g9miO8y
NNTP-Posting-Host: 2001:56a:fb70:6300:f824:2850:4064:6ef
References: <b94f72eb-d747-47a4-85cd-d4c351cfcc5fn@googlegroups.com>
<005ee5af-519a-4d45-93bd-87f4ab580c61n@googlegroups.com> <66d1cc8e-c8b9-4ecb-be59-fee1ab1da715n@googlegroups.com>
<suljuo$it1$1@dont-email.me> <t02s9j$360$1@gal.iecc.com> <fcace6e8-30a2-40f4-bfae-4c59529c6c10n@googlegroups.com>
<t0a3gl$5tr$1@newsreader4.netcologne.de>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <d3da98fa-63c9-4937-a425-5fdb22ddecd3n@googlegroups.com>
Subject: Re: The Computer of the Future
From: jsav...@ecn.ab.ca (Quadibloc)
Injection-Date: Wed, 09 Mar 2022 14:47:45 +0000
Content-Type: text/plain; charset="UTF-8"
Lines: 27
 by: Quadibloc - Wed, 9 Mar 2022 14:47 UTC

On Wednesday, March 9, 2022 at 4:36:57 AM UTC-7, Thomas Koenig wrote:
> If you want, you can have a softcore for your CPU and define special
> instructions for your special needs. I don't think it is easy
> to modify the FPGA programming on the fly.

It depends what FPGA you use. Some use fusible links, others use
logic gates that are controlled by data stored in flip-flops. I'm thinking of
something a bit less flexible, but with wiring that is somewhat like that in
the latter type of FPGA. Thus, one doesn't have components to replace
arbitrary Boolean logic, one just makes connections between adders,
multipliers, and dividers.

Over the course of a single program, the dataflow logic would likely
get set up differently several times, because a computer program
doesn't normally consist of just one inner loop.

The idea is _not_ to have a computer designed for one "special need",
but to have a computer that does what computers do now, just faster,
due to the use of dataflow circuitry - designed to do _better_ than just
deducing data flows from regular code with a limited window, as done
in out-of-order designs.

However, I have my doubts that this idea can be made to work. Regular
FPGAs, as you suggest, do have their uses. I don't quarrel with that,
but I am looking to satisfy a different use case.

John Savard

Re: The Computer of the Future

<t0aj55$74s$1@dont-email.me>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=24095&group=comp.arch#24095

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: bage...@gmail.com (Brian G. Lucas)
Newsgroups: comp.arch
Subject: Re: The Computer of the Future
Date: Wed, 9 Mar 2022 10:03:47 -0600
Organization: A noiseless patient Spider
Lines: 69
Message-ID: <t0aj55$74s$1@dont-email.me>
References: <b94f72eb-d747-47a4-85cd-d4c351cfcc5fn@googlegroups.com>
<005ee5af-519a-4d45-93bd-87f4ab580c61n@googlegroups.com>
<66d1cc8e-c8b9-4ecb-be59-fee1ab1da715n@googlegroups.com>
<suljuo$it1$1@dont-email.me> <t02s9j$360$1@gal.iecc.com>
<fcace6e8-30a2-40f4-bfae-4c59529c6c10n@googlegroups.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Wed, 9 Mar 2022 16:03:49 -0000 (UTC)
Injection-Info: reader02.eternal-september.org; posting-host="e26e5ae517dad90ec6a3e427317c894a";
logging-data="7324"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19Oq3/1c965M0ke/0FfDJXM"
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101
Thunderbird/91.5.0
Cancel-Lock: sha1:FjzjwV6wI1Tf1IdzfZ6XtBNHNHM=
In-Reply-To: <fcace6e8-30a2-40f4-bfae-4c59529c6c10n@googlegroups.com>
Content-Language: en-US
 by: Brian G. Lucas - Wed, 9 Mar 2022 16:03 UTC

On 3/9/22 01:32, Quadibloc wrote:
> On Sunday, March 6, 2022 at 10:50:47 AM UTC-7, John Levine wrote:
>> According to Ivan Godard <iv...@millcomputing.com>:
>>> I think the problem is really a linguistic one: our programming
>>> languages have caused us to think about our programs in control flow
>>> terms, when they are more naturally (and more efficiently) thought of
>>> in dataflow terms.
>
>> I blame von Neumann. Look at the First Draft of a Report on the EDVAC
>> and it's brutally serial, one step after another, one word at a time
>> loaded or stored from the iconoscope.
>
>> Compare it to the lovely ENIAC where you could plug anything into
>> anything else, cables permitting, and the data flowed as soon as it
>> was ready. Yeah, it was a little harder to program and only five
>> people in the world could do it, but you can't have everything.
>
> After the ENIAC, though, eventually more people learned how to
> program in dataflow terms. Because that's how analog computers
> were programmed.
>
> And what about punched-card accounting machines?
>
> Originally, the victory of the von Neumann machine came about
> for a very simple reason: such a machine required far less hardware.
> One ALU for a program of any length or complexity, instead of as many
> arithmetic stages as there were steps in the problem.
>
> But the other problem is that a lot of uses were found for computers.
> Dataflow seems to be good for one thing: turning a stack of input numbers
> into a stack of output numbers. Now that programs are written to work in
> a GUI instead of from a command line, however, a paradigm that's at least
> analogous to dataflow is needed on the highest level, instead of just in
> the innermost loops.
>
> Also, while a computer could be designed to be a dataflow engine on
> one level, there is the brutal slowness of the interface to main memory,
> to external DRAM.
>
> So it would be simple enough to design a dataflow processor. You
> put a pile of ALUs on a chip. You have a lot of switchable connections
> linking them. And you also put a pile of separate memories in the chip,
> so that you can link multiple inputs and outputs to the computation.
>
> Some of those memories could be used as look-up tables instead of
> input or output hoppers.
>
> The problem is: how useful would such a processor be? Assume it
> shares a die with a conventional processor, which is used to set it up
> for problems. How often will setting it up for a problem be faster than
> just having the serial processor do the problem?
>
> I have tried to think of a way to define a dataflow instruction for
> what is otherwise a conventional processor. Basically, the instruction
> performs a vector operation, but with multiple opcodes, with all the
> data forwarding specified.
>
> John Savard

For an attempt at a dataflow co-processor to an Arm-9, see
<www.microarch.org/micro36/html/pdf/may-ReconfigStreaming.pdf>
I was the lead architect. It obviously was not successful but we
did have working silicon. The memory system we had to use was way
too slow to keep up.

brian

Re: The Computer of the Future

<t0ak90$9m1$1@dont-email.me>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=24097&group=comp.arch#24097

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: iva...@millcomputing.com (Ivan Godard)
Newsgroups: comp.arch
Subject: Re: The Computer of the Future
Date: Wed, 9 Mar 2022 08:22:57 -0800
Organization: A noiseless patient Spider
Lines: 62
Message-ID: <t0ak90$9m1$1@dont-email.me>
References: <b94f72eb-d747-47a4-85cd-d4c351cfcc5fn@googlegroups.com>
<005ee5af-519a-4d45-93bd-87f4ab580c61n@googlegroups.com>
<66d1cc8e-c8b9-4ecb-be59-fee1ab1da715n@googlegroups.com>
<suljuo$it1$1@dont-email.me> <t02s9j$360$1@gal.iecc.com>
<fcace6e8-30a2-40f4-bfae-4c59529c6c10n@googlegroups.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Wed, 9 Mar 2022 16:22:56 -0000 (UTC)
Injection-Info: reader02.eternal-september.org; posting-host="5f542763a2ddb2adf56facc010c4f50a";
logging-data="9921"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19UKW7FrT4t/NMZy102cZ+Y"
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101
Thunderbird/91.6.1
Cancel-Lock: sha1:qNEFjBdOEZeZzX6zV6ONusgSPc4=
In-Reply-To: <fcace6e8-30a2-40f4-bfae-4c59529c6c10n@googlegroups.com>
Content-Language: en-US
 by: Ivan Godard - Wed, 9 Mar 2022 16:22 UTC

On 3/8/2022 11:32 PM, Quadibloc wrote:
> On Sunday, March 6, 2022 at 10:50:47 AM UTC-7, John Levine wrote:
>> According to Ivan Godard <iv...@millcomputing.com>:
>>> I think the problem is really a linguistic one: our programming
>>> languages have caused us to think about our programs in control flow
>>> terms, when they are more naturally (and more efficiently) thought of
>>> in dataflow terms.
>
>> I blame von Neumann. Look at the First Draft of a Report on the EDVAC
>> and it's brutally serial, one step after another, one word at a time
>> loaded or stored from the iconoscope.
>
>> Compare it to the lovely ENIAC where you could plug anything into
>> anything else, cables permitting, and the data flowed as soon as it
>> was ready. Yeah, it was a little harder to program and only five
>> people in the world could do it, but you can't have everything.
>
> After the ENIAC, though, eventually more people learned how to
> program in dataflow terms. Because that's how analog computers
> were programmed.
>
> And what about punched-card accounting machines?
>
> Originally, the victory of the von Neumann machine came about
> for a very simple reason: such a machine required far less hardware.
> One ALU for a program of any length or complexity, instead of as many
> arithmetic stages as there were steps in the problem.
>
> But the other problem is that a lot of uses were found for computers.
> Dataflow seems to be good for one thing: turning a stack of input numbers
> into a stack of output numbers. Now that programs are written to work in
> a GUI instead of from a command line, however, a paradigm that's at least
> analogous to dataflow is needed on the highest level, instead of just in
> the innermost loops.
>
> Also, while a computer could be designed to be a dataflow engine on
> one level, there is the brutal slowness of the interface to main memory,
> to external DRAM.
>
> So it would be simple enough to design a dataflow processor. You
> put a pile of ALUs on a chip. You have a lot of switchable connections
> linking them. And you also put a pile of separate memories in the chip,
> so that you can link multiple inputs and outputs to the computation.
>
> Some of those memories could be used as look-up tables instead of
> input or output hoppers.

Sounds a lot like the data plane of a network control processor.

> The problem is: how useful would such a processor be? Assume it
> shares a die with a conventional processor, which is used to set it up
> for problems. How often will setting it up for a problem be faster than
> just having the serial processor do the problem?
>
> I have tried to think of a way to define a dataflow instruction for
> what is otherwise a conventional processor. Basically, the instruction
> performs a vector operation, but with multiple opcodes, with all the
> data forwarding specified.
>
> John Savard

Re: The Computer of the Future

<3aeec684-1697-471f-878b-7e3b31302ce5n@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=24101&group=comp.arch#24101

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a05:6214:2269:b0:435:af16:8fb0 with SMTP id gs9-20020a056214226900b00435af168fb0mr758014qvb.77.1646848821577;
Wed, 09 Mar 2022 10:00:21 -0800 (PST)
X-Received: by 2002:a05:6808:e8e:b0:2ce:27e4:3b97 with SMTP id
k14-20020a0568080e8e00b002ce27e43b97mr505402oil.54.1646848821148; Wed, 09 Mar
2022 10:00:21 -0800 (PST)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Wed, 9 Mar 2022 10:00:20 -0800 (PST)
In-Reply-To: <fcace6e8-30a2-40f4-bfae-4c59529c6c10n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=2600:1700:291:29f0:bcfe:c7b0:9f9e:9c9d;
posting-account=H_G_JQkAAADS6onOMb-dqvUozKse7mcM
NNTP-Posting-Host: 2600:1700:291:29f0:bcfe:c7b0:9f9e:9c9d
References: <b94f72eb-d747-47a4-85cd-d4c351cfcc5fn@googlegroups.com>
<005ee5af-519a-4d45-93bd-87f4ab580c61n@googlegroups.com> <66d1cc8e-c8b9-4ecb-be59-fee1ab1da715n@googlegroups.com>
<suljuo$it1$1@dont-email.me> <t02s9j$360$1@gal.iecc.com> <fcace6e8-30a2-40f4-bfae-4c59529c6c10n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <3aeec684-1697-471f-878b-7e3b31302ce5n@googlegroups.com>
Subject: Re: The Computer of the Future
From: MitchAl...@aol.com (MitchAlsup)
Injection-Date: Wed, 09 Mar 2022 18:00:21 +0000
Content-Type: text/plain; charset="UTF-8"
Lines: 62
 by: MitchAlsup - Wed, 9 Mar 2022 18:00 UTC

On Wednesday, March 9, 2022 at 1:33:02 AM UTC-6, Quadibloc wrote:
> On Sunday, March 6, 2022 at 10:50:47 AM UTC-7, John Levine wrote:
> > According to Ivan Godard <iv...@millcomputing.com>:
> > >I think the problem is really a linguistic one: our programming
> > >languages have caused us to think about our programs in control flow
> > >terms, when they are more naturally (and more efficiently) thought of
> > >in dataflow terms.
>
> > I blame von Neumann. Look at the First Draft of a Report on the EDVAC
> > and it's brutally serial, one step after another, one word at a time
> > loaded or stored from the iconoscope.
>
> > Compare it to the lovely ENIAC where you could plug anything into
> > anything else, cables permitting, and the data flowed as soon as it
> > was ready. Yeah, it was a little harder to program and only five
> > people in the world could do it, but you can't have everything.
> After the ENIAC, though, eventually more people learned how to
> program in dataflow terms. Because that's how analog computers
> were programmed.
>
> And what about punched-card accounting machines?
>
> Originally, the victory of the von Neumann machine came about
> for a very simple reason: such a machine required far less hardware.
> One ALU for a program of any length or complexity, instead of as many
> arithmetic stages as there were steps in the problem.
>
> But the other problem is that a lot of uses were found for computers.
> Dataflow seems to be good for one thing: turning a stack of input numbers
> into a stack of output numbers. Now that programs are written to work in
> a GUI instead of from a command line, however, a paradigm that's at least
> analogous to dataflow is needed on the highest level, instead of just in
> the innermost loops.
>
> Also, while a computer could be designed to be a dataflow engine on
> one level, there is the brutal slowness of the interface to main memory,
> to external DRAM.
>
> So it would be simple enough to design a dataflow processor. You
> put a pile of ALUs on a chip. You have a lot of switchable connections
> linking them. And you also put a pile of separate memories in the chip,
> so that you can link multiple inputs and outputs to the computation.
<
The problem with data flow is managing to constrain the width of
execution congruent with the width of the resources. While conventional
machine struggle to find parallelism, data flow machines struggled to
bound parallelism so as to avoid overflowing the "reservation stations"
of the machine.
>
> Some of those memories could be used as look-up tables instead of
> input or output hoppers.
>
> The problem is: how useful would such a processor be? Assume it
> shares a die with a conventional processor, which is used to set it up
> for problems. How often will setting it up for a problem be faster than
> just having the serial processor do the problem?
>
> I have tried to think of a way to define a dataflow instruction for
> what is otherwise a conventional processor. Basically, the instruction
> performs a vector operation, but with multiple opcodes, with all the
> data forwarding specified.
>
> John Savard

Re: The Computer of the Future

<t0b217$eus$1@dont-email.me>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=24106&group=comp.arch#24106

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: cr88...@gmail.com (BGB)
Newsgroups: comp.arch
Subject: Re: The Computer of the Future
Date: Wed, 9 Mar 2022 14:17:37 -0600
Organization: A noiseless patient Spider
Lines: 100
Message-ID: <t0b217$eus$1@dont-email.me>
References: <b94f72eb-d747-47a4-85cd-d4c351cfcc5fn@googlegroups.com>
<005ee5af-519a-4d45-93bd-87f4ab580c61n@googlegroups.com>
<66d1cc8e-c8b9-4ecb-be59-fee1ab1da715n@googlegroups.com>
<suljuo$it1$1@dont-email.me> <t02s9j$360$1@gal.iecc.com>
<fcace6e8-30a2-40f4-bfae-4c59529c6c10n@googlegroups.com>
<t0a3gl$5tr$1@newsreader4.netcologne.de>
<d3da98fa-63c9-4937-a425-5fdb22ddecd3n@googlegroups.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Wed, 9 Mar 2022 20:17:43 -0000 (UTC)
Injection-Info: reader02.eternal-september.org; posting-host="8df13030d16cd666421288ad29864a11";
logging-data="15324"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+9uGUXL8VMuXSdyR51YPsb"
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101
Thunderbird/91.6.1
Cancel-Lock: sha1:0wk9e3iFyvW6OxsywuYbtLQ0fSs=
In-Reply-To: <d3da98fa-63c9-4937-a425-5fdb22ddecd3n@googlegroups.com>
Content-Language: en-US
 by: BGB - Wed, 9 Mar 2022 20:17 UTC

On 3/9/2022 8:47 AM, Quadibloc wrote:
> On Wednesday, March 9, 2022 at 4:36:57 AM UTC-7, Thomas Koenig wrote:
>
>> If you want, you can have a softcore for your CPU and define special
>> instructions for your special needs. I don't think it is easy
>> to modify the FPGA programming on the fly.
>
> It depends what FPGA you use. Some use fusible links, others use
> logic gates that are controlled by data stored in flip-flops. I'm thinking of
> something a bit less flexible, but with wiring that is somewhat like that in
> the latter type of FPGA. Thus, one doesn't have components to replace
> arbitrary Boolean logic, one just makes connections between adders,
> multipliers, and dividers.
>

Most are SRAM based, some are Flash based.

Fusible links seems to be more a thing for one-time-programmable PAL and
CPLD devices.

> Over the course of a single program, the dataflow logic would likely
> get set up differently several times, because a computer program
> doesn't normally consist of just one inner loop.
>
> The idea is _not_ to have a computer designed for one "special need",
> but to have a computer that does what computers do now, just faster,
> due to the use of dataflow circuitry - designed to do _better_ than just
> deducing data flows from regular code with a limited window, as done
> in out-of-order designs.
>
> However, I have my doubts that this idea can be made to work. Regular
> FPGAs, as you suggest, do have their uses. I don't quarrel with that,
> but I am looking to satisfy a different use case.
>

I guess it could be possible to make an FPGA that, instead of being
built around 1-bit interconnections, is mostly 4 and 8 bit
interconnections (Say, 4-bit mostly for local connections, and 8-bit for
longer-distance pathways).

This could potentially be used to make the routing cheaper, though would
be much better suited for larger coarse-grain signals, rather than
fine-grain signals.

So, LUT elements are primarily 8->4 bit, ADD units are 8+8=>8 (With
CarryIn/CarryOut).

Adders could be in groups of 4, so that they can use 4b inputs/outputs
for carry signaling, with "bit-transform" units placed in the "carry-in
/ carry-out" paths to allow readily feeding the carry signals back into
to other adders within the same unit (this unit being usable as a
32+32->32 ADD, with 1-bit left for carry-in / carry-out).

Ideally, the unit could also be configured for SUB/AND/OR/XOR as well.

Would be less efficient in some ways, things like bit-shuffling, etc,
would now require using LUTs, and emulating smaller LUTs would be
inefficient.

It is likely that, along with LUT and FF elements, one would also need
bit-transform elements 2x4->2x4 with a configurable mapping between the
input and output bits, likely glued onto the output side of each LUT
(between the LUT and a 4b FF).

The bit-transform elements could allow for more efficiently emulating
smaller LUTs, like 4->1 or 4->2 (and would operate in a similar way to
an SSE shuffle with two inputs and two outputs).

Would likely need to widen DSPs to 20-bit inputs (A20*B20+C48), or
narrow to 16 (A16*B16+C40).

Or, maybe a DSP unit that could be configured as, say:
Two 16 or 20 bit multiply MUL or MAC units;
One 32-bit MUL;
One 32-bit FMUL or FMAC.

Though, another option would be to use a mixed approach, with mostly
1-bit local routing (would function more like in existing FPGAs), but
then use coarser grain 4 and 8 bit signaling for moving signals between
distant parts of the FPGA.

Say, for example, each group of 16 or 64 CLBs has internal 1-bit
routing, with a 4-bit interconnect to other groups of CLBs.

Some of this is based on the thought that larger multi-bit signals and
operations tend to be a lot more common than 1-bit operations, that some
loss of efficiency for 1-bit operations could be acceptable.

....

Re: The Computer of the Future

<79729c5d-b6e1-424a-82ef-28987122c16cn@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=24107&group=comp.arch#24107

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a05:6214:27e3:b0:435:8fac:e5f6 with SMTP id jt3-20020a05621427e300b004358face5f6mr1273448qvb.24.1646858197614;
Wed, 09 Mar 2022 12:36:37 -0800 (PST)
X-Received: by 2002:a05:6871:60e:b0:da:b3f:325e with SMTP id
w14-20020a056871060e00b000da0b3f325emr838370oan.270.1646858197320; Wed, 09
Mar 2022 12:36:37 -0800 (PST)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Wed, 9 Mar 2022 12:36:37 -0800 (PST)
In-Reply-To: <t0b217$eus$1@dont-email.me>
Injection-Info: google-groups.googlegroups.com; posting-host=2600:1700:291:29f0:bcfe:c7b0:9f9e:9c9d;
posting-account=H_G_JQkAAADS6onOMb-dqvUozKse7mcM
NNTP-Posting-Host: 2600:1700:291:29f0:bcfe:c7b0:9f9e:9c9d
References: <b94f72eb-d747-47a4-85cd-d4c351cfcc5fn@googlegroups.com>
<005ee5af-519a-4d45-93bd-87f4ab580c61n@googlegroups.com> <66d1cc8e-c8b9-4ecb-be59-fee1ab1da715n@googlegroups.com>
<suljuo$it1$1@dont-email.me> <t02s9j$360$1@gal.iecc.com> <fcace6e8-30a2-40f4-bfae-4c59529c6c10n@googlegroups.com>
<t0a3gl$5tr$1@newsreader4.netcologne.de> <d3da98fa-63c9-4937-a425-5fdb22ddecd3n@googlegroups.com>
<t0b217$eus$1@dont-email.me>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <79729c5d-b6e1-424a-82ef-28987122c16cn@googlegroups.com>
Subject: Re: The Computer of the Future
From: MitchAl...@aol.com (MitchAlsup)
Injection-Date: Wed, 09 Mar 2022 20:36:37 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Lines: 118
 by: MitchAlsup - Wed, 9 Mar 2022 20:36 UTC

On Wednesday, March 9, 2022 at 2:17:47 PM UTC-6, BGB wrote:
> On 3/9/2022 8:47 AM, Quadibloc wrote:
> > On Wednesday, March 9, 2022 at 4:36:57 AM UTC-7, Thomas Koenig wrote:
> >
> >> If you want, you can have a softcore for your CPU and define special
> >> instructions for your special needs. I don't think it is easy
> >> to modify the FPGA programming on the fly.
> >
> > It depends what FPGA you use. Some use fusible links, others use
> > logic gates that are controlled by data stored in flip-flops. I'm thinking of
> > something a bit less flexible, but with wiring that is somewhat like that in
> > the latter type of FPGA. Thus, one doesn't have components to replace
> > arbitrary Boolean logic, one just makes connections between adders,
> > multipliers, and dividers.
> >
> Most are SRAM based, some are Flash based.
>
> Fusible links seems to be more a thing for one-time-programmable PAL and
> CPLD devices.
> > Over the course of a single program, the dataflow logic would likely
> > get set up differently several times, because a computer program
> > doesn't normally consist of just one inner loop.
> >
> > The idea is _not_ to have a computer designed for one "special need",
> > but to have a computer that does what computers do now, just faster,
> > due to the use of dataflow circuitry - designed to do _better_ than just
> > deducing data flows from regular code with a limited window, as done
> > in out-of-order designs.
> >
> > However, I have my doubts that this idea can be made to work. Regular
> > FPGAs, as you suggest, do have their uses. I don't quarrel with that,
> > but I am looking to satisfy a different use case.
> >
> I guess it could be possible to make an FPGA that, instead of being
> built around 1-bit interconnections, is mostly 4 and 8 bit
> interconnections (Say, 4-bit mostly for local connections, and 8-bit for
> longer-distance pathways).
>
>
> This could potentially be used to make the routing cheaper, though would
> be much better suited for larger coarse-grain signals, rather than
> fine-grain signals.
>
>
> So, LUT elements are primarily 8->4 bit, ADD units are 8+8=>8 (With
> CarryIn/CarryOut).
>
> Adders could be in groups of 4, so that they can use 4b inputs/outputs
> for carry signaling, with "bit-transform" units placed in the "carry-in
> / carry-out" paths to allow readily feeding the carry signals back into
> to other adders within the same unit (this unit being usable as a
> 32+32->32 ADD, with 1-bit left for carry-in / carry-out).
<
Adders should be built in units of 9-bits. The "extra bit" can be used to
clip-carry (inputs = 0 and 0), propagate carry (1 0 or 0 1), or insert carry
(1 1). Thus, you can perform SIMD arithmetic in a std integer adder.
>
> Ideally, the unit could also be configured for SUB/AND/OR/XOR as well.
>
>
>
> Would be less efficient in some ways, things like bit-shuffling, etc,
> would now require using LUTs, and emulating smaller LUTs would be
> inefficient.
>
> It is likely that, along with LUT and FF elements, one would also need
> bit-transform elements 2x4->2x4 with a configurable mapping between the
> input and output bits, likely glued onto the output side of each LUT
> (between the LUT and a 4b FF).
<
4×4 or 8×8 bit-matrix-multiply
>
> The bit-transform elements could allow for more efficiently emulating
> smaller LUTs, like 4->1 or 4->2 (and would operate in a similar way to
> an SSE shuffle with two inputs and two outputs).
>
>
> Would likely need to widen DSPs to 20-bit inputs (A20*B20+C48), or
> narrow to 16 (A16*B16+C40).
>
> Or, maybe a DSP unit that could be configured as, say:
> Two 16 or 20 bit multiply MUL or MAC units;
> One 32-bit MUL;
> One 32-bit FMUL or FMAC.
>
>
> Though, another option would be to use a mixed approach, with mostly
> 1-bit local routing (would function more like in existing FPGAs), but
> then use coarser grain 4 and 8 bit signaling for moving signals between
> distant parts of the FPGA.
>
> Say, for example, each group of 16 or 64 CLBs has internal 1-bit
> routing, with a 4-bit interconnect to other groups of CLBs.
>
>
>
> Some of this is based on the thought that larger multi-bit signals and
> operations tend to be a lot more common than 1-bit operations, that some
> loss of efficiency for 1-bit operations could be acceptable.
>
> ...

Re: The Computer of the Future

<t0b4jv$5ej$1@dont-email.me>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=24108&group=comp.arch#24108

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: cr88...@gmail.com (BGB)
Newsgroups: comp.arch
Subject: Re: The Computer of the Future
Date: Wed, 9 Mar 2022 15:01:46 -0600
Organization: A noiseless patient Spider
Lines: 137
Message-ID: <t0b4jv$5ej$1@dont-email.me>
References: <b94f72eb-d747-47a4-85cd-d4c351cfcc5fn@googlegroups.com>
<005ee5af-519a-4d45-93bd-87f4ab580c61n@googlegroups.com>
<66d1cc8e-c8b9-4ecb-be59-fee1ab1da715n@googlegroups.com>
<suljuo$it1$1@dont-email.me> <t02s9j$360$1@gal.iecc.com>
<fcace6e8-30a2-40f4-bfae-4c59529c6c10n@googlegroups.com>
<t0a3gl$5tr$1@newsreader4.netcologne.de>
<d3da98fa-63c9-4937-a425-5fdb22ddecd3n@googlegroups.com>
<t0b217$eus$1@dont-email.me>
<79729c5d-b6e1-424a-82ef-28987122c16cn@googlegroups.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Wed, 9 Mar 2022 21:01:51 -0000 (UTC)
Injection-Info: reader02.eternal-september.org; posting-host="8df13030d16cd666421288ad29864a11";
logging-data="5587"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19tKiGMmOaNzZ7iylcqlNjg"
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101
Thunderbird/91.6.1
Cancel-Lock: sha1:bsxMt3eTS7cgB//bHGAMlH6mzSY=
In-Reply-To: <79729c5d-b6e1-424a-82ef-28987122c16cn@googlegroups.com>
Content-Language: en-US
 by: BGB - Wed, 9 Mar 2022 21:01 UTC

On 3/9/2022 2:36 PM, MitchAlsup wrote:
> On Wednesday, March 9, 2022 at 2:17:47 PM UTC-6, BGB wrote:
>> On 3/9/2022 8:47 AM, Quadibloc wrote:
>>> On Wednesday, March 9, 2022 at 4:36:57 AM UTC-7, Thomas Koenig wrote:
>>>
>>>> If you want, you can have a softcore for your CPU and define special
>>>> instructions for your special needs. I don't think it is easy
>>>> to modify the FPGA programming on the fly.
>>>
>>> It depends what FPGA you use. Some use fusible links, others use
>>> logic gates that are controlled by data stored in flip-flops. I'm thinking of
>>> something a bit less flexible, but with wiring that is somewhat like that in
>>> the latter type of FPGA. Thus, one doesn't have components to replace
>>> arbitrary Boolean logic, one just makes connections between adders,
>>> multipliers, and dividers.
>>>
>> Most are SRAM based, some are Flash based.
>>
>> Fusible links seems to be more a thing for one-time-programmable PAL and
>> CPLD devices.
>>> Over the course of a single program, the dataflow logic would likely
>>> get set up differently several times, because a computer program
>>> doesn't normally consist of just one inner loop.
>>>
>>> The idea is _not_ to have a computer designed for one "special need",
>>> but to have a computer that does what computers do now, just faster,
>>> due to the use of dataflow circuitry - designed to do _better_ than just
>>> deducing data flows from regular code with a limited window, as done
>>> in out-of-order designs.
>>>
>>> However, I have my doubts that this idea can be made to work. Regular
>>> FPGAs, as you suggest, do have their uses. I don't quarrel with that,
>>> but I am looking to satisfy a different use case.
>>>
>> I guess it could be possible to make an FPGA that, instead of being
>> built around 1-bit interconnections, is mostly 4 and 8 bit
>> interconnections (Say, 4-bit mostly for local connections, and 8-bit for
>> longer-distance pathways).
>>

Granted, this does carry the unverified assumption that 4b or 8b paths
would be cheaper than a bunch of independent 1-bit paths.

The number of signal wires would be similar, as would the number of
transistors needed for the crossbar itself. It would mostly effect to
the cost of configuring the crossbar (eg: controlling 4 or 8 MOSFETs
with a single input signal).

It would mostly reduce the number of SRAM cells, and the number of
signals being used in the crossbar for configuring said SRAM cells.

>>
>> This could potentially be used to make the routing cheaper, though would
>> be much better suited for larger coarse-grain signals, rather than
>> fine-grain signals.
>>
>>
>> So, LUT elements are primarily 8->4 bit, ADD units are 8+8=>8 (With
>> CarryIn/CarryOut).
>>
>> Adders could be in groups of 4, so that they can use 4b inputs/outputs
>> for carry signaling, with "bit-transform" units placed in the "carry-in
>> / carry-out" paths to allow readily feeding the carry signals back into
>> to other adders within the same unit (this unit being usable as a
>> 32+32->32 ADD, with 1-bit left for carry-in / carry-out).
> <
> Adders should be built in units of 9-bits. The "extra bit" can be used to
> clip-carry (inputs = 0 and 0), propagate carry (1 0 or 0 1), or insert carry
> (1 1). Thus, you can perform SIMD arithmetic in a std integer adder.

Issue is 9b would not fit into a pathway build on 4-bit interconnects.

But, ideally, one wants to minimize the number of 4-bit paths being used
to carry 1 or 2 bit signals, hence the idea of a bit-transform.

>>
>> Ideally, the unit could also be configured for SUB/AND/OR/XOR as well.
>>
>>
>>
>> Would be less efficient in some ways, things like bit-shuffling, etc,
>> would now require using LUTs, and emulating smaller LUTs would be
>> inefficient.
>>
>> It is likely that, along with LUT and FF elements, one would also need
>> bit-transform elements 2x4->2x4 with a configurable mapping between the
>> input and output bits, likely glued onto the output side of each LUT
>> (between the LUT and a 4b FF).
> <
> 4×4 or 8×8 bit-matrix-multiply

Yeah, could probably be done this way.

An 8x8 multiply could do it in one step, but would need 64 control bits.
In effect it reduces to a bunch of AND and OR operations.

The number of control bits would be higher with this than doing it SSE
style, but this could also implement a few simple logic operations
between groups of bits.

....

>>
>> The bit-transform elements could allow for more efficiently emulating
>> smaller LUTs, like 4->1 or 4->2 (and would operate in a similar way to
>> an SSE shuffle with two inputs and two outputs).
>>
>>
>> Would likely need to widen DSPs to 20-bit inputs (A20*B20+C48), or
>> narrow to 16 (A16*B16+C40).
>>
>> Or, maybe a DSP unit that could be configured as, say:
>> Two 16 or 20 bit multiply MUL or MAC units;
>> One 32-bit MUL;
>> One 32-bit FMUL or FMAC.
>>
>>
>> Though, another option would be to use a mixed approach, with mostly
>> 1-bit local routing (would function more like in existing FPGAs), but
>> then use coarser grain 4 and 8 bit signaling for moving signals between
>> distant parts of the FPGA.
>>
>> Say, for example, each group of 16 or 64 CLBs has internal 1-bit
>> routing, with a 4-bit interconnect to other groups of CLBs.
>>
>>
>>
>> Some of this is based on the thought that larger multi-bit signals and
>> operations tend to be a lot more common than 1-bit operations, that some
>> loss of efficiency for 1-bit operations could be acceptable.
>>
>> ...

Re: The Computer of the Future

<861qzaesvd.fsf@linuxsc.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=24109&group=comp.arch#24109

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: tr.17...@z991.linuxsc.com (Tim Rentsch)
Newsgroups: comp.arch
Subject: Re: The Computer of the Future
Date: Wed, 09 Mar 2022 13:08:38 -0800
Organization: A noiseless patient Spider
Lines: 64
Message-ID: <861qzaesvd.fsf@linuxsc.com>
References: <b94f72eb-d747-47a4-85cd-d4c351cfcc5fn@googlegroups.com> <858e7a72-fcc0-4bab-b087-28b9995c7094n@googlegroups.com> <2e266e3e-b633-4c2a-bd33-962cb675bb77n@googlegroups.com> <fb409a7e-e1a2-4eaf-8fbb-d697ac3f0febn@googlegroups.com> <1a8a324d-34b8-4c1e-876e-1a0cde795e3fn@googlegroups.com> <005ee5af-519a-4d45-93bd-87f4ab580c61n@googlegroups.com> <66d1cc8e-c8b9-4ecb-be59-fee1ab1da715n@googlegroups.com> <suljuo$it1$1@dont-email.me> <868rtnfb1y.fsf@linuxsc.com> <t04pa8$g2u$1@gioia.aioe.org> <86ee3ceh3r.fsf@linuxsc.com> <t0a324$1uat$1@gioia.aioe.org>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Injection-Info: reader02.eternal-september.org; posting-host="1412bf34eca16359aaf8eff3827b9264";
logging-data="29955"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19ipourR02JE8X3cabX0RRFYEWL54tu7FI="
User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.4 (gnu/linux)
Cancel-Lock: sha1:Ya+0cKYpGfEwFdDFlZfHcoNGP6U=
sha1:NodQ1nMK3uUSbLc7yZY08rCd/uc=
 by: Tim Rentsch - Wed, 9 Mar 2022 21:08 UTC

Terje Mathisen <terje.mathisen@tmsw.no> writes:

> Tim Rentsch wrote:
>
>> Terje Mathisen <terje.mathisen@tmsw.no> writes:
>>
>>> Tim Rentsch wrote:
>>>
>>>> Ivan Godard <ivan@millcomputing.com> writes:
>>>>
>>>> [...]
>>>>
>>>>> I think the problem is really a linguistic one: our programming
>>>>> languages have caused us to think about our programs in control
>>>>> flow terms, [...]
>>>>
>>>> Some of us. Not everyone, fortunately.
>>>
>>> I tend to think much more in data flow terms, as I've written before:
>>>
>>> An optimal program is like a creek finding its path down from the
>>> mountain, always searching for the path of least resistance.
>>
>> It's an interesting simile. Note by the way that creeks are
>> greedy algorithms, in the sense of being only locally optimal,
>> not necessarily globally optimal.
>>
>> To me the more interesting question is how does this perspective
>> affect how the code looks? If reading your programs, would I see
>> something that looks pretty much like other imperative code, or
>> would there be some distinguishing characteristics that would
>> indicate your different thought mode? Can you say anything about
>> what those characteristics might be? Or perhaps give an example
>> or two? (Short is better if that is feasible.)
>
> First example: Use (very) small lookup tables to get rid of branches,
> typically trying to turn code state machines into data state
> machines. This is driven by the fact that modern CPUs are much better
> at dependent loads than unpredictable branches.
>
> I typically try to write code that can run in SIMD mode, i.e. using
> tables/branchless/predicated ops to handle any single-lane alternate
> paths.
>
> Such code can also much more often scale across multiple cores/systems
> even if that means that I have to do some redundant work across the
> boundaries. I.e. when I process lidar data I can make the problem
> almost embarrasingly parallelizable by splitting the input into tiles
> with 35-50m overlap: This is sufficient to effectively eliminate all
> edge artifacts when I generate contours and vegetation
> classifications.

Interesting. Thank you for the examples.

> The most fun is when I find ways to remove all internal branching
> related to exceptional data, i.e. anything which can impede that
> nicely flowing stream of water going downhill.

In that sentence the word "which" should be "that". The reason is
"that" is restrictive, whereas "which" in non-restrictive. In
other words you mean the rest of the sentence after "which" to
constrain the word "anything", i.e., to restrict what is covered.
This distinction is important in technical writing; unfortunately
even native speakers sometimes get it wrong.

Re: The Computer of the Future

<7eb64d6c-3b91-4aea-8337-a63e8458fa85n@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=24111&group=comp.arch#24111

  copy link   Newsgroups: comp.arch
X-Received: by 2002:ac8:5a91:0:b0:2de:25c5:1d68 with SMTP id c17-20020ac85a91000000b002de25c51d68mr1436037qtc.94.1646860561018;
Wed, 09 Mar 2022 13:16:01 -0800 (PST)
X-Received: by 2002:a05:6870:96a9:b0:da:225e:a5f3 with SMTP id
o41-20020a05687096a900b000da225ea5f3mr870287oaq.27.1646860560758; Wed, 09 Mar
2022 13:16:00 -0800 (PST)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Wed, 9 Mar 2022 13:16:00 -0800 (PST)
In-Reply-To: <t0b4jv$5ej$1@dont-email.me>
Injection-Info: google-groups.googlegroups.com; posting-host=2600:1700:291:29f0:bcfe:c7b0:9f9e:9c9d;
posting-account=H_G_JQkAAADS6onOMb-dqvUozKse7mcM
NNTP-Posting-Host: 2600:1700:291:29f0:bcfe:c7b0:9f9e:9c9d
References: <b94f72eb-d747-47a4-85cd-d4c351cfcc5fn@googlegroups.com>
<005ee5af-519a-4d45-93bd-87f4ab580c61n@googlegroups.com> <66d1cc8e-c8b9-4ecb-be59-fee1ab1da715n@googlegroups.com>
<suljuo$it1$1@dont-email.me> <t02s9j$360$1@gal.iecc.com> <fcace6e8-30a2-40f4-bfae-4c59529c6c10n@googlegroups.com>
<t0a3gl$5tr$1@newsreader4.netcologne.de> <d3da98fa-63c9-4937-a425-5fdb22ddecd3n@googlegroups.com>
<t0b217$eus$1@dont-email.me> <79729c5d-b6e1-424a-82ef-28987122c16cn@googlegroups.com>
<t0b4jv$5ej$1@dont-email.me>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <7eb64d6c-3b91-4aea-8337-a63e8458fa85n@googlegroups.com>
Subject: Re: The Computer of the Future
From: MitchAl...@aol.com (MitchAlsup)
Injection-Date: Wed, 09 Mar 2022 21:16:01 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Lines: 176
 by: MitchAlsup - Wed, 9 Mar 2022 21:16 UTC

On Wednesday, March 9, 2022 at 3:01:55 PM UTC-6, BGB wrote:
> On 3/9/2022 2:36 PM, MitchAlsup wrote:
> > On Wednesday, March 9, 2022 at 2:17:47 PM UTC-6, BGB wrote:
> >> On 3/9/2022 8:47 AM, Quadibloc wrote:
> >>> On Wednesday, March 9, 2022 at 4:36:57 AM UTC-7, Thomas Koenig wrote:
> >>>
> >>>> If you want, you can have a softcore for your CPU and define special
> >>>> instructions for your special needs. I don't think it is easy
> >>>> to modify the FPGA programming on the fly.
> >>>
> >>> It depends what FPGA you use. Some use fusible links, others use
> >>> logic gates that are controlled by data stored in flip-flops. I'm thinking of
> >>> something a bit less flexible, but with wiring that is somewhat like that in
> >>> the latter type of FPGA. Thus, one doesn't have components to replace
> >>> arbitrary Boolean logic, one just makes connections between adders,
> >>> multipliers, and dividers.
> >>>
> >> Most are SRAM based, some are Flash based.
> >>
> >> Fusible links seems to be more a thing for one-time-programmable PAL and
> >> CPLD devices.
> >>> Over the course of a single program, the dataflow logic would likely
> >>> get set up differently several times, because a computer program
> >>> doesn't normally consist of just one inner loop.
> >>>
> >>> The idea is _not_ to have a computer designed for one "special need",
> >>> but to have a computer that does what computers do now, just faster,
> >>> due to the use of dataflow circuitry - designed to do _better_ than just
> >>> deducing data flows from regular code with a limited window, as done
> >>> in out-of-order designs.
> >>>
> >>> However, I have my doubts that this idea can be made to work. Regular
> >>> FPGAs, as you suggest, do have their uses. I don't quarrel with that,
> >>> but I am looking to satisfy a different use case.
> >>>
> >> I guess it could be possible to make an FPGA that, instead of being
> >> built around 1-bit interconnections, is mostly 4 and 8 bit
> >> interconnections (Say, 4-bit mostly for local connections, and 8-bit for
> >> longer-distance pathways).
> >>
> Granted, this does carry the unverified assumption that 4b or 8b paths
> would be cheaper than a bunch of independent 1-bit paths.
>
>
> The number of signal wires would be similar, as would the number of
> transistors needed for the crossbar itself. It would mostly effect to
> the cost of configuring the crossbar (eg: controlling 4 or 8 MOSFETs
> with a single input signal).
>
> It would mostly reduce the number of SRAM cells, and the number of
> signals being used in the crossbar for configuring said SRAM cells.
> >>
> >> This could potentially be used to make the routing cheaper, though would
> >> be much better suited for larger coarse-grain signals, rather than
> >> fine-grain signals.
> >>
> >>
> >> So, LUT elements are primarily 8->4 bit, ADD units are 8+8=>8 (With
> >> CarryIn/CarryOut).
> >>
> >> Adders could be in groups of 4, so that they can use 4b inputs/outputs
> >> for carry signaling, with "bit-transform" units placed in the "carry-in
> >> / carry-out" paths to allow readily feeding the carry signals back into
> >> to other adders within the same unit (this unit being usable as a
> >> 32+32->32 ADD, with 1-bit left for carry-in / carry-out).
> > <
> > Adders should be built in units of 9-bits. The "extra bit" can be used to
> > clip-carry (inputs = 0 and 0), propagate carry (1 0 or 0 1), or insert carry
> > (1 1). Thus, you can perform SIMD arithmetic in a std integer adder.
> Issue is 9b would not fit into a pathway build on 4-bit interconnects.
>
> But, ideally, one wants to minimize the number of 4-bit paths being used
> to carry 1 or 2 bit signals, hence the idea of a bit-transform.
<
A pair of 4-bit channels with a 1-bit separator makes one 9-bit channel.
A single 8-bit channel with a 1-bit separator makes 1 9-bit channel.
<
MIPS R3000 used this an you can see it in the die photo. The other parts
of the channel are used to Vdd/Gnd ties and on-die capacitors. We contemplated
using a channel such as this for signal repeaters (double inverters back to back)
for wires jumping over the "data path" at 35u.
> >>
> >> Ideally, the unit could also be configured for SUB/AND/OR/XOR as well.
> >>
> >>
> >>
> >> Would be less efficient in some ways, things like bit-shuffling, etc,
> >> would now require using LUTs, and emulating smaller LUTs would be
> >> inefficient.
> >>
> >> It is likely that, along with LUT and FF elements, one would also need
> >> bit-transform elements 2x4->2x4 with a configurable mapping between the
> >> input and output bits, likely glued onto the output side of each LUT
> >> (between the LUT and a 4b FF).
> > <
> > 4×4 or 8×8 bit-matrix-multiply
> Yeah, could probably be done this way.
>
> An 8x8 multiply could do it in one step, but would need 64 control bits.
> In effect it reduces to a bunch of AND and OR operations.
>
> The number of control bits would be higher with this than doing it SSE
> style, but this could also implement a few simple logic operations
> between groups of bits.
<
You started with configurable mappings. Many of these use constants
as one input of the BMM.
>
> ...
> >>
> >> The bit-transform elements could allow for more efficiently emulating
> >> smaller LUTs, like 4->1 or 4->2 (and would operate in a similar way to
> >> an SSE shuffle with two inputs and two outputs).
> >>
> >>
> >> Would likely need to widen DSPs to 20-bit inputs (A20*B20+C48), or
> >> narrow to 16 (A16*B16+C40).
> >>
> >> Or, maybe a DSP unit that could be configured as, say:
> >> Two 16 or 20 bit multiply MUL or MAC units;
> >> One 32-bit MUL;
> >> One 32-bit FMUL or FMAC.
> >>
> >>
> >> Though, another option would be to use a mixed approach, with mostly
> >> 1-bit local routing (would function more like in existing FPGAs), but
> >> then use coarser grain 4 and 8 bit signaling for moving signals between
> >> distant parts of the FPGA.
> >>
> >> Say, for example, each group of 16 or 64 CLBs has internal 1-bit
> >> routing, with a 4-bit interconnect to other groups of CLBs.
> >>
> >>
> >>
> >> Some of this is based on the thought that larger multi-bit signals and
> >> operations tend to be a lot more common than 1-bit operations, that some
> >> loss of efficiency for 1-bit operations could be acceptable.
> >>
> >> ...

Re: The Computer of the Future

<t0ct7p$muk$1@gioia.aioe.org>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=24125&group=comp.arch#24125

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!aioe.org!UXtAIYUgaw/fkqnS/V28xg.user.46.165.242.91.POSTED!not-for-mail
From: terje.ma...@tmsw.no (Terje Mathisen)
Newsgroups: comp.arch
Subject: Re: The Computer of the Future
Date: Thu, 10 Mar 2022 14:08:10 +0100
Organization: Aioe.org NNTP Server
Message-ID: <t0ct7p$muk$1@gioia.aioe.org>
References: <b94f72eb-d747-47a4-85cd-d4c351cfcc5fn@googlegroups.com>
<858e7a72-fcc0-4bab-b087-28b9995c7094n@googlegroups.com>
<2e266e3e-b633-4c2a-bd33-962cb675bb77n@googlegroups.com>
<fb409a7e-e1a2-4eaf-8fbb-d697ac3f0febn@googlegroups.com>
<1a8a324d-34b8-4c1e-876e-1a0cde795e3fn@googlegroups.com>
<005ee5af-519a-4d45-93bd-87f4ab580c61n@googlegroups.com>
<66d1cc8e-c8b9-4ecb-be59-fee1ab1da715n@googlegroups.com>
<suljuo$it1$1@dont-email.me> <868rtnfb1y.fsf@linuxsc.com>
<t04pa8$g2u$1@gioia.aioe.org> <86ee3ceh3r.fsf@linuxsc.com>
<t0a324$1uat$1@gioia.aioe.org> <861qzaesvd.fsf@linuxsc.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Info: gioia.aioe.org; logging-data="23508"; posting-host="UXtAIYUgaw/fkqnS/V28xg.user.gioia.aioe.org"; mail-complaints-to="abuse@aioe.org";
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101
Firefox/68.0 SeaMonkey/2.53.11
X-Notice: Filtered by postfilter v. 0.9.2
 by: Terje Mathisen - Thu, 10 Mar 2022 13:08 UTC

Tim Rentsch wrote:
> Terje Mathisen <terje.mathisen@tmsw.no> writes:
>
>> Tim Rentsch wrote:
>>
>>> Terje Mathisen <terje.mathisen@tmsw.no> writes:
>>>
>>>> Tim Rentsch wrote:
>>>>
>>>>> Ivan Godard <ivan@millcomputing.com> writes:
>>>>>
>>>>> [...]
>>>>>
>>>>>> I think the problem is really a linguistic one: our programming
>>>>>> languages have caused us to think about our programs in control
>>>>>> flow terms, [...]
>>>>>
>>>>> Some of us. Not everyone, fortunately.
>>>>
>>>> I tend to think much more in data flow terms, as I've written before:
>>>>
>>>> An optimal program is like a creek finding its path down from the
>>>> mountain, always searching for the path of least resistance.
>>>
>>> It's an interesting simile. Note by the way that creeks are
>>> greedy algorithms, in the sense of being only locally optimal,
>>> not necessarily globally optimal.
>>>
>>> To me the more interesting question is how does this perspective
>>> affect how the code looks? If reading your programs, would I see
>>> something that looks pretty much like other imperative code, or
>>> would there be some distinguishing characteristics that would
>>> indicate your different thought mode? Can you say anything about
>>> what those characteristics might be? Or perhaps give an example
>>> or two? (Short is better if that is feasible.)
>>
>> First example: Use (very) small lookup tables to get rid of branches,
>> typically trying to turn code state machines into data state
>> machines. This is driven by the fact that modern CPUs are much better
>> at dependent loads than unpredictable branches.
>>
>> I typically try to write code that can run in SIMD mode, i.e. using
>> tables/branchless/predicated ops to handle any single-lane alternate
>> paths.
>>
>> Such code can also much more often scale across multiple cores/systems
>> even if that means that I have to do some redundant work across the
>> boundaries. I.e. when I process lidar data I can make the problem
>> almost embarrasingly parallelizable by splitting the input into tiles
>> with 35-50m overlap: This is sufficient to effectively eliminate all
>> edge artifacts when I generate contours and vegetation
>> classifications.
>
> Interesting. Thank you for the examples.

The core idea there is that it can often make sense to do extra work as
long as that removes the cost of maintaining exact boundaries. A similar
idea was the building block for my julian day to Y-M-D conversion:

The math to do so is quite complicated, so instead I make a very quick
approximate guess and do the reverse (very fast!) calculation which ends
with a branchless adjustment if the guess was off-by-one.
>
>> The most fun is when I find ways to remove all internal branching
>> related to exceptional data, i.e. anything which can impede that
>> nicely flowing stream of water going downhill.
>
> In that sentence the word "which" should be "that". The reason is
> "that" is restrictive, whereas "which" in non-restrictive. In
> other words you mean the rest of the sentence after "which" to
> constrain the word "anything", i.e., to restrict what is covered.
> This distinction is important in technical writing; unfortunately
> even native speakers sometimes get it wrong.
>

OK, that is subtle but noted!

I'll hide behind my standard "I only started to learn English in 5th
grade" excuse. :-)

My own kids started in 1st or 2nd grade, but I'll claim that they became
fluent over a couple of years when I read Harry Potter to them every
evening.

Terje

--
- <Terje.Mathisen at tmsw.no>
"almost all programming can be viewed as an exercise in caching"

Re: The Computer of the Future

<867d91dbys.fsf@linuxsc.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=24129&group=comp.arch#24129

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: tr.17...@z991.linuxsc.com (Tim Rentsch)
Newsgroups: comp.arch
Subject: Re: The Computer of the Future
Date: Thu, 10 Mar 2022 08:11:23 -0800
Organization: A noiseless patient Spider
Lines: 93
Message-ID: <867d91dbys.fsf@linuxsc.com>
References: <b94f72eb-d747-47a4-85cd-d4c351cfcc5fn@googlegroups.com> <858e7a72-fcc0-4bab-b087-28b9995c7094n@googlegroups.com> <2e266e3e-b633-4c2a-bd33-962cb675bb77n@googlegroups.com> <fb409a7e-e1a2-4eaf-8fbb-d697ac3f0febn@googlegroups.com> <1a8a324d-34b8-4c1e-876e-1a0cde795e3fn@googlegroups.com> <005ee5af-519a-4d45-93bd-87f4ab580c61n@googlegroups.com> <66d1cc8e-c8b9-4ecb-be59-fee1ab1da715n@googlegroups.com> <suljuo$it1$1@dont-email.me> <868rtnfb1y.fsf@linuxsc.com> <t04pa8$g2u$1@gioia.aioe.org> <86ee3ceh3r.fsf@linuxsc.com> <t0a324$1uat$1@gioia.aioe.org> <861qzaesvd.fsf@linuxsc.com> <t0ct7p$muk$1@gioia.aioe.org>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Injection-Info: reader02.eternal-september.org; posting-host="999dd4059456035731e616df40c2b94e";
logging-data="11790"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19TkBmrglHCjI1G8RbjLuX/xkopxOahTSo="
User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.4 (gnu/linux)
Cancel-Lock: sha1:pCAciNkZRYgOZlJO9HUgtZCyRfQ=
sha1:JTrItvqEN6aouMPd7fu3hjEz7L8=
 by: Tim Rentsch - Thu, 10 Mar 2022 16:11 UTC

Terje Mathisen <terje.mathisen@tmsw.no> writes:

> Tim Rentsch wrote:
>
>> Terje Mathisen <terje.mathisen@tmsw.no> writes:
>>
>>> Tim Rentsch wrote:
>>>
>>>> Terje Mathisen <terje.mathisen@tmsw.no> writes:
>>>>
>>>>> Tim Rentsch wrote:
>>>>>
>>>>>> Ivan Godard <ivan@millcomputing.com> writes:
>>>>>>
>>>>>> [...]
>>>>>>
>>>>>>> I think the problem is really a linguistic one: our programming
>>>>>>> languages have caused us to think about our programs in control
>>>>>>> flow terms, [...]
>>>>>>
>>>>>> Some of us. Not everyone, fortunately.
>>>>>
>>>>> I tend to think much more in data flow terms, as I've written before:
>>>>>
>>>>> An optimal program is like a creek finding its path down from the
>>>>> mountain, always searching for the path of least resistance.
>>>>
>>>> It's an interesting simile. Note by the way that creeks are
>>>> greedy algorithms, in the sense of being only locally optimal,
>>>> not necessarily globally optimal.
>>>>
>>>> To me the more interesting question is how does this perspective
>>>> affect how the code looks? If reading your programs, would I see
>>>> something that looks pretty much like other imperative code, or
>>>> would there be some distinguishing characteristics that would
>>>> indicate your different thought mode? Can you say anything about
>>>> what those characteristics might be? Or perhaps give an example
>>>> or two? (Short is better if that is feasible.)
>>>
>>> First example: Use (very) small lookup tables to get rid of branches,
>>> typically trying to turn code state machines into data state
>>> machines. This is driven by the fact that modern CPUs are much better
>>> at dependent loads than unpredictable branches.
>>>
>>> I typically try to write code that can run in SIMD mode, i.e. using
>>> tables/branchless/predicated ops to handle any single-lane alternate
>>> paths.
>>>
>>> Such code can also much more often scale across multiple cores/systems
>>> even if that means that I have to do some redundant work across the
>>> boundaries. I.e. when I process lidar data I can make the problem
>>> almost embarrasingly parallelizable by splitting the input into tiles
>>> with 35-50m overlap: This is sufficient to effectively eliminate all
>>> edge artifacts when I generate contours and vegetation
>>> classifications.
>>
>> Interesting. Thank you for the examples.
>
> The core idea there is that it can often make sense to do extra work
> as long as that removes the cost of maintaining exact boundaries. A
> similar idea was the building block for my julian day to Y-M-D
> conversion:
>
> The math to do so is quite complicated, so instead I make a very quick
> approximate guess and do the reverse (very fast!) calculation which
> ends with a branchless adjustment if the guess was off-by-one.

I am intrigued. Would you mind sharing the code (either posting
or sending to me via email, whichever you think more appropriate)?

>>> The most fun is when I find ways to remove all internal branching
>>> related to exceptional data, i.e. anything which can impede that
>>> nicely flowing stream of water going downhill.
>>
>> In that sentence the word "which" should be "that". The reason is
>> "that" is restrictive, whereas "which" in non-restrictive. In
>> other words you mean the rest of the sentence after "which" to
>> constrain the word "anything", i.e., to restrict what is covered.
>> This distinction is important in technical writing; unfortunately
>> even native speakers sometimes get it wrong.
>
> OK, that is subtle but noted!
>
> I'll hide behind my standard "I only started to learn English in 5th
> grade" excuse. :-)

No excuse needed. I routinely give such comments to people whose
first language is other than English, not with the intention of
faulting a bad usage but with the idea of helping them better
learn the subtleties and bear traps of English. If anyone should
give an excuse, I should, because my own other-language skills are
so limited. I admire anyone who speaks more than one language, as
I have found it very very difficult to do so.

Re: The Computer of the Future

<0001HW.27DA64F0021EDBDE70000E96338F@news.individual.net>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=24132&group=comp.arch#24132

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!news.swapon.de!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail
From: findlayb...@blueyonder.co.uk (Bill Findlay)
Newsgroups: comp.arch
Subject: Re: The Computer of the Future
Date: Thu, 10 Mar 2022 16:55:12 +0000
Organization: none
Lines: 34
Message-ID: <0001HW.27DA64F0021EDBDE70000E96338F@news.individual.net>
References: <b94f72eb-d747-47a4-85cd-d4c351cfcc5fn@googlegroups.com> <858e7a72-fcc0-4bab-b087-28b9995c7094n@googlegroups.com> <2e266e3e-b633-4c2a-bd33-962cb675bb77n@googlegroups.com> <fb409a7e-e1a2-4eaf-8fbb-d697ac3f0febn@googlegroups.com> <1a8a324d-34b8-4c1e-876e-1a0cde795e3fn@googlegroups.com> <005ee5af-519a-4d45-93bd-87f4ab580c61n@googlegroups.com> <66d1cc8e-c8b9-4ecb-be59-fee1ab1da715n@googlegroups.com> <suljuo$it1$1@dont-email.me> <868rtnfb1y.fsf@linuxsc.com> <t04pa8$g2u$1@gioia.aioe.org> <86ee3ceh3r.fsf@linuxsc.com> <t0a324$1uat$1@gioia.aioe.org> <861qzaesvd.fsf@linuxsc.com> <t0ct7p$muk$1@gioia.aioe.org>
Reply-To: findlaybill@blueyonder.co.uk
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
X-Trace: individual.net veq9OHHpFreXGBjeh+TAFgZctbzEz4dV21/AKMxEEc32zudpbX
X-Orig-Path: not-for-mail
Cancel-Lock: sha1:kdxA/uBqz9uMuqiOMHA2RO46Hcw=
User-Agent: Hogwasher/5.24
 by: Bill Findlay - Thu, 10 Mar 2022 16:55 UTC

On 10 Mar 2022, Terje Mathisen wrote
(in article <t0ct7p$muk$1@gioia.aioe.org>):

> Tim Rentsch wrote:
> > Terje Mathisen<terje.mathisen@tmsw.no> writes:
> > > The most fun is when I find ways to remove all internal branching
> > > related to exceptional data, i.e. anything which can impede that
> > > nicely flowing stream of water going downhill.
> >
> > In that sentence the word "which" should be "that". The reason is
> > "that" is restrictive, whereas "which" in non-restrictive. In
> > other words you mean the rest of the sentence after "which" to
> > constrain the word "anything", i.e., to restrict what is covered.
> > This distinction is important in technical writing; unfortunately
> > even native speakers sometimes get it wrong.
>
> OK, that is subtle but noted!
>
> I'll hide behind my standard "I only started to learn English in 5th
> grade" excuse. :-)

You have no need of an excuse, because your original wording was correct,
and is exactly how most British English users would put it.

Rentsch is wrong to think that using 'that' means anything different.
His claim comes straight out of Strunk & White's usage guide,
which has been debunked by English grammar experts, such as Geoff Pullum.

I personally prefer 'that' to 'which' in restrictive clauses,
but that is a matter of aesthetics, not grammatical correctness.
--
Bill Findlay

Re: The Computer of the Future

<t0fbrm$17nu$1@gioia.aioe.org>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=24147&group=comp.arch#24147

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!aioe.org!UXtAIYUgaw/fkqnS/V28xg.user.46.165.242.91.POSTED!not-for-mail
From: terje.ma...@tmsw.no (Terje Mathisen)
Newsgroups: comp.arch
Subject: Re: The Computer of the Future
Date: Fri, 11 Mar 2022 12:29:58 +0100
Organization: Aioe.org NNTP Server
Message-ID: <t0fbrm$17nu$1@gioia.aioe.org>
References: <b94f72eb-d747-47a4-85cd-d4c351cfcc5fn@googlegroups.com>
<858e7a72-fcc0-4bab-b087-28b9995c7094n@googlegroups.com>
<2e266e3e-b633-4c2a-bd33-962cb675bb77n@googlegroups.com>
<fb409a7e-e1a2-4eaf-8fbb-d697ac3f0febn@googlegroups.com>
<1a8a324d-34b8-4c1e-876e-1a0cde795e3fn@googlegroups.com>
<005ee5af-519a-4d45-93bd-87f4ab580c61n@googlegroups.com>
<66d1cc8e-c8b9-4ecb-be59-fee1ab1da715n@googlegroups.com>
<suljuo$it1$1@dont-email.me> <868rtnfb1y.fsf@linuxsc.com>
<t04pa8$g2u$1@gioia.aioe.org> <86ee3ceh3r.fsf@linuxsc.com>
<t0a324$1uat$1@gioia.aioe.org> <861qzaesvd.fsf@linuxsc.com>
<t0ct7p$muk$1@gioia.aioe.org> <867d91dbys.fsf@linuxsc.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Info: gioia.aioe.org; logging-data="40702"; posting-host="UXtAIYUgaw/fkqnS/V28xg.user.gioia.aioe.org"; mail-complaints-to="abuse@aioe.org";
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101
Firefox/68.0 SeaMonkey/2.53.11
X-Notice: Filtered by postfilter v. 0.9.2
 by: Terje Mathisen - Fri, 11 Mar 2022 11:29 UTC

Tim Rentsch wrote:
> Terje Mathisen <terje.mathisen@tmsw.no> writes:
>
>> Tim Rentsch wrote:
>>
>>> Terje Mathisen <terje.mathisen@tmsw.no> writes:
>>>
>>>> Tim Rentsch wrote:
>>>>
>>>>> Terje Mathisen <terje.mathisen@tmsw.no> writes:
>>>>>
>>>>>> Tim Rentsch wrote:
>>>>>>
>>>>>>> Ivan Godard <ivan@millcomputing.com> writes:
>>>>>>>
>>>>>>> [...]
>>>>>>>
>>>>>>>> I think the problem is really a linguistic one: our programming
>>>>>>>> languages have caused us to think about our programs in control
>>>>>>>> flow terms, [...]
>>>>>>>
>>>>>>> Some of us. Not everyone, fortunately.
>>>>>>
>>>>>> I tend to think much more in data flow terms, as I've written before:
>>>>>>
>>>>>> An optimal program is like a creek finding its path down from the
>>>>>> mountain, always searching for the path of least resistance.
>>>>>
>>>>> It's an interesting simile. Note by the way that creeks are
>>>>> greedy algorithms, in the sense of being only locally optimal,
>>>>> not necessarily globally optimal.
>>>>>
>>>>> To me the more interesting question is how does this perspective
>>>>> affect how the code looks? If reading your programs, would I see
>>>>> something that looks pretty much like other imperative code, or
>>>>> would there be some distinguishing characteristics that would
>>>>> indicate your different thought mode? Can you say anything about
>>>>> what those characteristics might be? Or perhaps give an example
>>>>> or two? (Short is better if that is feasible.)
>>>>
>>>> First example: Use (very) small lookup tables to get rid of branches,
>>>> typically trying to turn code state machines into data state
>>>> machines. This is driven by the fact that modern CPUs are much better
>>>> at dependent loads than unpredictable branches.
>>>>
>>>> I typically try to write code that can run in SIMD mode, i.e. using
>>>> tables/branchless/predicated ops to handle any single-lane alternate
>>>> paths.
>>>>
>>>> Such code can also much more often scale across multiple cores/systems
>>>> even if that means that I have to do some redundant work across the
>>>> boundaries. I.e. when I process lidar data I can make the problem
>>>> almost embarrasingly parallelizable by splitting the input into tiles
>>>> with 35-50m overlap: This is sufficient to effectively eliminate all
>>>> edge artifacts when I generate contours and vegetation
>>>> classifications.
>>>
>>> Interesting. Thank you for the examples.
>>
>> The core idea there is that it can often make sense to do extra work
>> as long as that removes the cost of maintaining exact boundaries. A
>> similar idea was the building block for my julian day to Y-M-D
>> conversion:
>>
>> The math to do so is quite complicated, so instead I make a very quick
>> approximate guess and do the reverse (very fast!) calculation which
>> ends with a branchless adjustment if the guess was off-by-one.
>
> I am intrigued. Would you mind sharing the code (either posting
> or sending to me via email, whichever you think more appropriate)?
>
>>>> The most fun is when I find ways to remove all internal branching
>>>> related to exceptional data, i.e. anything which can impede that
>>>> nicely flowing stream of water going downhill.
>>>
>>> In that sentence the word "which" should be "that". The reason is
>>> "that" is restrictive, whereas "which" in non-restrictive. In
>>> other words you mean the rest of the sentence after "which" to
>>> constrain the word "anything", i.e., to restrict what is covered.
>>> This distinction is important in technical writing; unfortunately
>>> even native speakers sometimes get it wrong.
>>
>> OK, that is subtle but noted!
>>
>> I'll hide behind my standard "I only started to learn English in 5th
>> grade" excuse. :-)
>
> No excuse needed. I routinely give such comments to people whose
> first language is other than English, not with the intention of
> faulting a bad usage but with the idea of helping them better
> learn the subtleties and bear traps of English. If anyone should
> give an excuse, I should, because my own other-language skills are
> so limited. I admire anyone who speaks more than one language, as
> I have found it very very difficult to do so.

This is actually more interesting than I immediately thought:

First, is there a difference between US and UK English here?

Looking at it now, to me using "anything which can" vs "anything that
can" does have those two different meanings: The first one is in fact
more inclusive than the second, i.e. "which" also includes stuff that
only incidentally or as a side effect cause this, while "that" implies
that it is more of a primary result.

This was actually what I was trying to express.

Regards,
Terje

--
- <Terje.Mathisen at tmsw.no>
"almost all programming can be viewed as an exercise in caching"

Re: The Computer of the Future

<t0fcbd$1dhs$1@gioia.aioe.org>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=24148&group=comp.arch#24148

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!aioe.org!UXtAIYUgaw/fkqnS/V28xg.user.46.165.242.91.POSTED!not-for-mail
From: terje.ma...@tmsw.no (Terje Mathisen)
Newsgroups: comp.arch
Subject: Re: The Computer of the Future
Date: Fri, 11 Mar 2022 12:38:21 +0100
Organization: Aioe.org NNTP Server
Message-ID: <t0fcbd$1dhs$1@gioia.aioe.org>
References: <b94f72eb-d747-47a4-85cd-d4c351cfcc5fn@googlegroups.com>
<858e7a72-fcc0-4bab-b087-28b9995c7094n@googlegroups.com>
<2e266e3e-b633-4c2a-bd33-962cb675bb77n@googlegroups.com>
<fb409a7e-e1a2-4eaf-8fbb-d697ac3f0febn@googlegroups.com>
<1a8a324d-34b8-4c1e-876e-1a0cde795e3fn@googlegroups.com>
<005ee5af-519a-4d45-93bd-87f4ab580c61n@googlegroups.com>
<66d1cc8e-c8b9-4ecb-be59-fee1ab1da715n@googlegroups.com>
<suljuo$it1$1@dont-email.me> <868rtnfb1y.fsf@linuxsc.com>
<t04pa8$g2u$1@gioia.aioe.org> <86ee3ceh3r.fsf@linuxsc.com>
<t0a324$1uat$1@gioia.aioe.org> <861qzaesvd.fsf@linuxsc.com>
<t0ct7p$muk$1@gioia.aioe.org>
<0001HW.27DA64F0021EDBDE70000E96338F@news.individual.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Info: gioia.aioe.org; logging-data="46652"; posting-host="UXtAIYUgaw/fkqnS/V28xg.user.gioia.aioe.org"; mail-complaints-to="abuse@aioe.org";
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101
Firefox/68.0 SeaMonkey/2.53.11
X-Notice: Filtered by postfilter v. 0.9.2
 by: Terje Mathisen - Fri, 11 Mar 2022 11:38 UTC

Bill Findlay wrote:
> On 10 Mar 2022, Terje Mathisen wrote
> (in article <t0ct7p$muk$1@gioia.aioe.org>):
>
>> Tim Rentsch wrote:
>>> Terje Mathisen<terje.mathisen@tmsw.no> writes:
>>>> The most fun is when I find ways to remove all internal branching
>>>> related to exceptional data, i.e. anything which can impede that
>>>> nicely flowing stream of water going downhill.
>>>
>>> In that sentence the word "which" should be "that". The reason is
>>> "that" is restrictive, whereas "which" in non-restrictive. In
>>> other words you mean the rest of the sentence after "which" to
>>> constrain the word "anything", i.e., to restrict what is covered.
>>> This distinction is important in technical writing; unfortunately
>>> even native speakers sometimes get it wrong.
>>
>> OK, that is subtle but noted!
>>
>> I'll hide behind my standard "I only started to learn English in 5th
>> grade" excuse. :-)
>
> You have no need of an excuse, because your original wording was correct,
> and is exactly how most British English users would put it.
>
> Rentsch is wrong to think that using 'that' means anything different.
> His claim comes straight out of Strunk & White's usage guide,
> which has been debunked by English grammar experts, such as Geoff Pullum.
>
> I personally prefer 'that' to 'which' in restrictive clauses,
> but that is a matter of aesthetics, not grammatical correctness.
>
Thanks, see my previous response to Tim. :-)

Terje

--
- <Terje.Mathisen at tmsw.no>
"almost all programming can be viewed as an exercise in caching"

Re: The Computer of the Future

<852023ee-3c41-4e4f-83b6-e976ece8cb39n@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=24149&group=comp.arch#24149

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a05:6214:29cc:b0:42d:f63c:f3f4 with SMTP id gh12-20020a05621429cc00b0042df63cf3f4mr7489292qvb.87.1647001674863;
Fri, 11 Mar 2022 04:27:54 -0800 (PST)
X-Received: by 2002:a05:6870:d151:b0:da:4cd6:552e with SMTP id
f17-20020a056870d15100b000da4cd6552emr10708545oac.136.1647001674609; Fri, 11
Mar 2022 04:27:54 -0800 (PST)
Path: i2pn2.org!i2pn.org!news.swapon.de!newsreader4.netcologne.de!news.netcologne.de!peer01.ams1!peer.ams1.xlned.com!news.xlned.com!peer02.iad!feed-me.highwinds-media.com!news.highwinds-media.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Fri, 11 Mar 2022 04:27:54 -0800 (PST)
In-Reply-To: <0001HW.27DA64F0021EDBDE70000E96338F@news.individual.net>
Injection-Info: google-groups.googlegroups.com; posting-host=2a0d:6fc2:55b0:ca00:65dd:bb7:48b5:b678;
posting-account=ow8VOgoAAAAfiGNvoH__Y4ADRwQF1hZW
NNTP-Posting-Host: 2a0d:6fc2:55b0:ca00:65dd:bb7:48b5:b678
References: <b94f72eb-d747-47a4-85cd-d4c351cfcc5fn@googlegroups.com>
<858e7a72-fcc0-4bab-b087-28b9995c7094n@googlegroups.com> <2e266e3e-b633-4c2a-bd33-962cb675bb77n@googlegroups.com>
<fb409a7e-e1a2-4eaf-8fbb-d697ac3f0febn@googlegroups.com> <1a8a324d-34b8-4c1e-876e-1a0cde795e3fn@googlegroups.com>
<005ee5af-519a-4d45-93bd-87f4ab580c61n@googlegroups.com> <66d1cc8e-c8b9-4ecb-be59-fee1ab1da715n@googlegroups.com>
<suljuo$it1$1@dont-email.me> <868rtnfb1y.fsf@linuxsc.com> <t04pa8$g2u$1@gioia.aioe.org>
<86ee3ceh3r.fsf@linuxsc.com> <t0a324$1uat$1@gioia.aioe.org>
<861qzaesvd.fsf@linuxsc.com> <t0ct7p$muk$1@gioia.aioe.org> <0001HW.27DA64F0021EDBDE70000E96338F@news.individual.net>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <852023ee-3c41-4e4f-83b6-e976ece8cb39n@googlegroups.com>
Subject: Re: The Computer of the Future
From: already5...@yahoo.com (Michael S)
Injection-Date: Fri, 11 Mar 2022 12:27:54 +0000
Content-Type: text/plain; charset="UTF-8"
X-Received-Bytes: 4000
 by: Michael S - Fri, 11 Mar 2022 12:27 UTC

On Thursday, March 10, 2022 at 6:55:16 PM UTC+2, Bill Findlay wrote:
> On 10 Mar 2022, Terje Mathisen wrote
> (in article <t0ct7p$muk$1...@gioia.aioe.org>):
> > Tim Rentsch wrote:
> > > Terje Mathisen<terje.m...@tmsw.no> writes:
> > > > The most fun is when I find ways to remove all internal branching
> > > > related to exceptional data, i.e. anything which can impede that
> > > > nicely flowing stream of water going downhill.
> > >
> > > In that sentence the word "which" should be "that". The reason is
> > > "that" is restrictive, whereas "which" in non-restrictive. In
> > > other words you mean the rest of the sentence after "which" to
> > > constrain the word "anything", i.e., to restrict what is covered.
> > > This distinction is important in technical writing; unfortunately
> > > even native speakers sometimes get it wrong.
> >
> > OK, that is subtle but noted!
> >
> > I'll hide behind my standard "I only started to learn English in 5th
> > grade" excuse. :-)
> You have no need of an excuse, because your original wording was correct,
> and is exactly how most British English users would put it.
>
> Rentsch is wrong to think that using 'that' means anything different.
> His claim comes straight out of Strunk & White's usage guide,
> which has been debunked by English grammar experts, such as Geoff Pullum.
>
> I personally prefer 'that' to 'which' in restrictive clauses,
> but that is a matter of aesthetics, not grammatical correctness.
> --
> Bill Findlay

Not being an expert of English English or of American English or of any other English variation...
In this particular case I'd use 'which' rather than 'that'. Because I don't like a look of the same word 'that' appearing twice just two words apart. In different meanings, which probably makes things worse.

There is another reason for me to often prefer 'which' over 'that' : it's o.k. to put comma before 'which', but comma before 'that' is considered bad grammar.
I like commas, but sometimes (it depends on context) dislike annoying readers with bad grammar.

Re: The Computer of the Future

<54137af7-b61a-4f7c-9dee-1b3fd19821d3n@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=24150&group=comp.arch#24150

  copy link   Newsgroups: comp.arch
X-Received: by 2002:ac8:58c2:0:b0:2de:326e:9dcb with SMTP id u2-20020ac858c2000000b002de326e9dcbmr8105497qta.689.1647002329816;
Fri, 11 Mar 2022 04:38:49 -0800 (PST)
X-Received: by 2002:a9d:72c6:0:b0:5af:42ef:bb7c with SMTP id
d6-20020a9d72c6000000b005af42efbb7cmr4834396otk.96.1647002329585; Fri, 11 Mar
2022 04:38:49 -0800 (PST)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!1.us.feeder.erje.net!feeder.erje.net!border1.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Fri, 11 Mar 2022 04:38:49 -0800 (PST)
In-Reply-To: <852023ee-3c41-4e4f-83b6-e976ece8cb39n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=2a0d:6fc2:55b0:ca00:65dd:bb7:48b5:b678;
posting-account=ow8VOgoAAAAfiGNvoH__Y4ADRwQF1hZW
NNTP-Posting-Host: 2a0d:6fc2:55b0:ca00:65dd:bb7:48b5:b678
References: <b94f72eb-d747-47a4-85cd-d4c351cfcc5fn@googlegroups.com>
<858e7a72-fcc0-4bab-b087-28b9995c7094n@googlegroups.com> <2e266e3e-b633-4c2a-bd33-962cb675bb77n@googlegroups.com>
<fb409a7e-e1a2-4eaf-8fbb-d697ac3f0febn@googlegroups.com> <1a8a324d-34b8-4c1e-876e-1a0cde795e3fn@googlegroups.com>
<005ee5af-519a-4d45-93bd-87f4ab580c61n@googlegroups.com> <66d1cc8e-c8b9-4ecb-be59-fee1ab1da715n@googlegroups.com>
<suljuo$it1$1@dont-email.me> <868rtnfb1y.fsf@linuxsc.com> <t04pa8$g2u$1@gioia.aioe.org>
<86ee3ceh3r.fsf@linuxsc.com> <t0a324$1uat$1@gioia.aioe.org>
<861qzaesvd.fsf@linuxsc.com> <t0ct7p$muk$1@gioia.aioe.org>
<0001HW.27DA64F0021EDBDE70000E96338F@news.individual.net> <852023ee-3c41-4e4f-83b6-e976ece8cb39n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <54137af7-b61a-4f7c-9dee-1b3fd19821d3n@googlegroups.com>
Subject: Re: The Computer of the Future
From: already5...@yahoo.com (Michael S)
Injection-Date: Fri, 11 Mar 2022 12:38:49 +0000
Content-Type: text/plain; charset="UTF-8"
Lines: 53
 by: Michael S - Fri, 11 Mar 2022 12:38 UTC

On Friday, March 11, 2022 at 2:27:57 PM UTC+2, Michael S wrote:
> On Thursday, March 10, 2022 at 6:55:16 PM UTC+2, Bill Findlay wrote:
> > On 10 Mar 2022, Terje Mathisen wrote
> > (in article <t0ct7p$muk$1...@gioia.aioe.org>):
> > > Tim Rentsch wrote:
> > > > Terje Mathisen<terje.m...@tmsw.no> writes:
> > > > > The most fun is when I find ways to remove all internal branching
> > > > > related to exceptional data, i.e. anything which can impede that
> > > > > nicely flowing stream of water going downhill.
> > > >
> > > > In that sentence the word "which" should be "that". The reason is
> > > > "that" is restrictive, whereas "which" in non-restrictive. In
> > > > other words you mean the rest of the sentence after "which" to
> > > > constrain the word "anything", i.e., to restrict what is covered.
> > > > This distinction is important in technical writing; unfortunately
> > > > even native speakers sometimes get it wrong.
> > >
> > > OK, that is subtle but noted!
> > >
> > > I'll hide behind my standard "I only started to learn English in 5th
> > > grade" excuse. :-)
> > You have no need of an excuse, because your original wording was correct,
> > and is exactly how most British English users would put it.
> >
> > Rentsch is wrong to think that using 'that' means anything different.
> > His claim comes straight out of Strunk & White's usage guide,
> > which has been debunked by English grammar experts, such as Geoff Pullum.
> >
> > I personally prefer 'that' to 'which' in restrictive clauses,
> > but that is a matter of aesthetics, not grammatical correctness.
> > --
> > Bill Findlay
> Not being an expert of English English or of American English or of any other English variation...
> In this particular case I'd use 'which' rather than 'that'. Because I don't like a look of the same word 'that' appearing twice just two words apart. In different meanings, which probably makes things worse.

Thinking about it, not "probably". different meanings certainly make things worse.
Repeated (recurring?) 'that' in the same meaning, like that, is o.k with me:

This is the farmer sowing his corn,
That kept the cock that crow'd in the morn,
That waked the priest all shaven and shorn,
That married the man all tatter'd and torn,
That kissed the maiden all forlorn,
That milk'd the cow with the crumpled horn,
That tossed the dog,
That worried the cat,
That killed the rat,
That ate the malt
That lay in the house that Jack built.

>
> There is another reason for me to often prefer 'which' over 'that' : it's o.k. to put comma before 'which', but comma before 'that' is considered bad grammar.
> I like commas, but sometimes (it depends on context) dislike annoying readers with bad grammar.

Re: The Computer of the Future

<t0fgod$86t$1@dont-email.me>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=24151&group=comp.arch#24151

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: david.br...@hesbynett.no (David Brown)
Newsgroups: comp.arch
Subject: Re: The Computer of the Future
Date: Fri, 11 Mar 2022 13:53:32 +0100
Organization: A noiseless patient Spider
Lines: 146
Message-ID: <t0fgod$86t$1@dont-email.me>
References: <b94f72eb-d747-47a4-85cd-d4c351cfcc5fn@googlegroups.com>
<858e7a72-fcc0-4bab-b087-28b9995c7094n@googlegroups.com>
<2e266e3e-b633-4c2a-bd33-962cb675bb77n@googlegroups.com>
<fb409a7e-e1a2-4eaf-8fbb-d697ac3f0febn@googlegroups.com>
<1a8a324d-34b8-4c1e-876e-1a0cde795e3fn@googlegroups.com>
<005ee5af-519a-4d45-93bd-87f4ab580c61n@googlegroups.com>
<66d1cc8e-c8b9-4ecb-be59-fee1ab1da715n@googlegroups.com>
<suljuo$it1$1@dont-email.me> <868rtnfb1y.fsf@linuxsc.com>
<t04pa8$g2u$1@gioia.aioe.org> <86ee3ceh3r.fsf@linuxsc.com>
<t0a324$1uat$1@gioia.aioe.org> <861qzaesvd.fsf@linuxsc.com>
<t0ct7p$muk$1@gioia.aioe.org> <867d91dbys.fsf@linuxsc.com>
<t0fbrm$17nu$1@gioia.aioe.org>
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
Injection-Date: Fri, 11 Mar 2022 12:53:33 -0000 (UTC)
Injection-Info: reader02.eternal-september.org; posting-host="e2360f8970ab9f2702d354248f601f1d";
logging-data="8413"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18P+AqjxcilqCG6Zcq8R1v2rBlIxT8sH/s="
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101
Thunderbird/78.11.0
Cancel-Lock: sha1:qZHq9nUeU9ntd8xD4vdCNKOjQYw=
In-Reply-To: <t0fbrm$17nu$1@gioia.aioe.org>
Content-Language: en-GB
 by: David Brown - Fri, 11 Mar 2022 12:53 UTC

On 11/03/2022 12:29, Terje Mathisen wrote:
> Tim Rentsch wrote:
>> Terje Mathisen <terje.mathisen@tmsw.no> writes:
>>
>>> Tim Rentsch wrote:
>>>
>>>> Terje Mathisen <terje.mathisen@tmsw.no> writes:
>>>>
>>>>> Tim Rentsch wrote:
>>>>>
>>>>>> Terje Mathisen <terje.mathisen@tmsw.no> writes:
>>>>>>
>>>>>>> Tim Rentsch wrote:
>>>>>>>
>>>>>>>> Ivan Godard <ivan@millcomputing.com> writes:
>>>>>>>>
>>>>>>>> [...]
>>>>>>>>
>>>>>>>>> I think the problem is really a linguistic one:  our programming
>>>>>>>>> languages have caused us to think about our programs in control
>>>>>>>>> flow terms, [...]
>>>>>>>>
>>>>>>>> Some of us.  Not everyone, fortunately.
>>>>>>>
>>>>>>> I tend to think much more in data flow terms, as I've written
>>>>>>> before:
>>>>>>>
>>>>>>> An optimal program is like a creek finding its path down from the
>>>>>>> mountain, always searching for the path of least resistance.
>>>>>>
>>>>>> It's an interesting simile.  Note by the way that creeks are
>>>>>> greedy algorithms, in the sense of being only locally optimal,
>>>>>> not necessarily globally optimal.
>>>>>>
>>>>>> To me the more interesting question is how does this perspective
>>>>>> affect how the code looks?  If reading your programs, would I see
>>>>>> something that looks pretty much like other imperative code, or
>>>>>> would there be some distinguishing characteristics that would
>>>>>> indicate your different thought mode?  Can you say anything about
>>>>>> what those characteristics might be?  Or perhaps give an example
>>>>>> or two?  (Short is better if that is feasible.)
>>>>>
>>>>> First example:  Use (very) small lookup tables to get rid of branches,
>>>>> typically trying to turn code state machines into data state
>>>>> machines.  This is driven by the fact that modern CPUs are much better
>>>>> at dependent loads than unpredictable branches.
>>>>>
>>>>> I typically try to write code that can run in SIMD mode, i.e. using
>>>>> tables/branchless/predicated ops to handle any single-lane alternate
>>>>> paths.
>>>>>
>>>>> Such code can also much more often scale across multiple cores/systems
>>>>> even if that means that I have to do some redundant work across the
>>>>> boundaries.  I.e. when I process lidar data I can make the problem
>>>>> almost embarrasingly parallelizable by splitting the input into tiles
>>>>> with 35-50m overlap:  This is sufficient to effectively eliminate all
>>>>> edge artifacts when I generate contours and vegetation
>>>>> classifications.
>>>>
>>>> Interesting.  Thank you for the examples.
>>>
>>> The core idea there is that it can often make sense to do extra work
>>> as long as that removes the cost of maintaining exact boundaries.  A
>>> similar idea was the building block for my julian day to Y-M-D
>>> conversion:
>>>
>>> The math to do so is quite complicated, so instead I make a very quick
>>> approximate guess and do the reverse (very fast!) calculation which
>>> ends with a branchless adjustment if the guess was off-by-one.
>>
>> I am intrigued.  Would you mind sharing the code (either posting
>> or sending to me via email, whichever you think more appropriate)?
>>
>>>>> The most fun is when I find ways to remove all internal branching
>>>>> related to exceptional data, i.e. anything which can impede that
>>>>> nicely flowing stream of water going downhill.
>>>>
>>>> In that sentence the word "which" should be "that".  The reason is
>>>> "that" is restrictive, whereas "which" in non-restrictive.  In
>>>> other words you mean the rest of the sentence after "which" to
>>>> constrain the word "anything", i.e., to restrict what is covered.
>>>> This distinction is important in technical writing;  unfortunately
>>>> even native speakers sometimes get it wrong.
>>>
>>> OK, that is subtle but noted!
>>>
>>> I'll hide behind my standard "I only started to learn English in 5th
>>> grade" excuse. :-)
>>
>> No excuse needed.  I routinely give such comments to people whose
>> first language is other than English, not with the intention of
>> faulting a bad usage but with the idea of helping them better
>> learn the subtleties and bear traps of English.  If anyone should
>> give an excuse, I should, because my own other-language skills are
>> so limited.  I admire anyone who speaks more than one language, as
>> I have found it very very difficult to do so.
>
> This is actually more interesting than I immediately thought:
>
> First, is there a difference between US and UK English here?
>
> Looking at it now, to me using "anything which can" vs "anything that
> can" does have those two different meanings: The first one is in fact
> more inclusive than the second, i.e. "which" also includes stuff that
> only incidentally or as a side effect cause this, while "that" implies
> that it is more of a primary result.
>
> This was actually what I was trying to express.
>
> Regards,
> Terje
>

The point of language is to communicate. Unless you can be absolutely
sure that the reader will distinguish between "which" and "that",
interpreting the difference exactly as you intended, then you cannot
communicate any semantic information by making the distinction. So if
you need to communicate this information to a wider audience, you have
to do it in a different way - expressing yourself in a different manner
or adding more text.

I am a native English speaker, well versed in technical writing, and
with an above-average interest in and knowledge of grammar. (AFAIK Tim
has far more experience in technical writing than me, however.) I would
not infer anything from the use of "which" or "that" in this context, I
would not assume any writer intended any implication, and I would not
assume any reader would infer anything from it.

Language changes over time, it varies from place to place (though I
don't think this particular case is an American versus British issue),
and it varies from context. Little-used and subtle implications do not
last.

Of course it is best to pick the most appropriate word at the time. But
that does not necessarily mean picking the word that has, in some
circles, particular under-tones. "Which" can well be considered a
better choice to avoid the duplication of the word "that" (as Michael
mentioned). Personally, I'd probably write "anything that can impede
the nicely flowing stream".

Oh, and I'd have a comma after "i.e." :-)

(Despite knowing full well that typesetting rules, like grammar, changes
over time, and that small details rarely matter, I still find myself
mentally nit-picking typographical errors. Perhaps it is because I read
"The TeXbook" many years ago.)

Re: The Computer of the Future

<0b70feb3-335e-4210-afb4-823c347fce49n@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=24152&group=comp.arch#24152

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a37:4649:0:b0:47e:cf47:48af with SMTP id t70-20020a374649000000b0047ecf4748afmr6459507qka.605.1647004475655;
Fri, 11 Mar 2022 05:14:35 -0800 (PST)
X-Received: by 2002:a05:6870:f2a5:b0:da:b3f:2b50 with SMTP id
u37-20020a056870f2a500b000da0b3f2b50mr10997975oap.239.1647004475354; Fri, 11
Mar 2022 05:14:35 -0800 (PST)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!1.us.feeder.erje.net!feeder.erje.net!border1.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Fri, 11 Mar 2022 05:14:35 -0800 (PST)
In-Reply-To: <t0fgod$86t$1@dont-email.me>
Injection-Info: google-groups.googlegroups.com; posting-host=2a0d:6fc2:55b0:ca00:65dd:bb7:48b5:b678;
posting-account=ow8VOgoAAAAfiGNvoH__Y4ADRwQF1hZW
NNTP-Posting-Host: 2a0d:6fc2:55b0:ca00:65dd:bb7:48b5:b678
References: <b94f72eb-d747-47a4-85cd-d4c351cfcc5fn@googlegroups.com>
<858e7a72-fcc0-4bab-b087-28b9995c7094n@googlegroups.com> <2e266e3e-b633-4c2a-bd33-962cb675bb77n@googlegroups.com>
<fb409a7e-e1a2-4eaf-8fbb-d697ac3f0febn@googlegroups.com> <1a8a324d-34b8-4c1e-876e-1a0cde795e3fn@googlegroups.com>
<005ee5af-519a-4d45-93bd-87f4ab580c61n@googlegroups.com> <66d1cc8e-c8b9-4ecb-be59-fee1ab1da715n@googlegroups.com>
<suljuo$it1$1@dont-email.me> <868rtnfb1y.fsf@linuxsc.com> <t04pa8$g2u$1@gioia.aioe.org>
<86ee3ceh3r.fsf@linuxsc.com> <t0a324$1uat$1@gioia.aioe.org>
<861qzaesvd.fsf@linuxsc.com> <t0ct7p$muk$1@gioia.aioe.org>
<867d91dbys.fsf@linuxsc.com> <t0fbrm$17nu$1@gioia.aioe.org> <t0fgod$86t$1@dont-email.me>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <0b70feb3-335e-4210-afb4-823c347fce49n@googlegroups.com>
Subject: Re: The Computer of the Future
From: already5...@yahoo.com (Michael S)
Injection-Date: Fri, 11 Mar 2022 13:14:35 +0000
Content-Type: text/plain; charset="UTF-8"
Lines: 120
 by: Michael S - Fri, 11 Mar 2022 13:14 UTC

On Friday, March 11, 2022 at 2:53:36 PM UTC+2, David Brown wrote:
> On 11/03/2022 12:29, Terje Mathisen wrote:
> > Tim Rentsch wrote:
> >> Terje Mathisen <terje.m...@tmsw.no> writes:
> >>
> >>> Tim Rentsch wrote:
> >>>
> >>>> Terje Mathisen <terje.m...@tmsw.no> writes:
> >>>>
> >>>>> Tim Rentsch wrote:
> >>>>>
> >>>>>> Terje Mathisen <terje.m...@tmsw.no> writes:
> >>>>>>
> >>>>>>> Tim Rentsch wrote:
> >>>>>>>
> >>>>>>>> Ivan Godard <iv...@millcomputing.com> writes:
> >>>>>>>>
> >>>>>>>> [...]
> >>>>>>>>
> >>>>>>>>> I think the problem is really a linguistic one: our programming
> >>>>>>>>> languages have caused us to think about our programs in control
> >>>>>>>>> flow terms, [...]
> >>>>>>>>
> >>>>>>>> Some of us. Not everyone, fortunately.
> >>>>>>>
> >>>>>>> I tend to think much more in data flow terms, as I've written
> >>>>>>> before:
> >>>>>>>
> >>>>>>> An optimal program is like a creek finding its path down from the
> >>>>>>> mountain, always searching for the path of least resistance.
> >>>>>>
> >>>>>> It's an interesting simile. Note by the way that creeks are
> >>>>>> greedy algorithms, in the sense of being only locally optimal,
> >>>>>> not necessarily globally optimal.
> >>>>>>
> >>>>>> To me the more interesting question is how does this perspective
> >>>>>> affect how the code looks? If reading your programs, would I see
> >>>>>> something that looks pretty much like other imperative code, or
> >>>>>> would there be some distinguishing characteristics that would
> >>>>>> indicate your different thought mode? Can you say anything about
> >>>>>> what those characteristics might be? Or perhaps give an example
> >>>>>> or two? (Short is better if that is feasible.)
> >>>>>
> >>>>> First example: Use (very) small lookup tables to get rid of branches,
> >>>>> typically trying to turn code state machines into data state
> >>>>> machines. This is driven by the fact that modern CPUs are much better
> >>>>> at dependent loads than unpredictable branches.
> >>>>>
> >>>>> I typically try to write code that can run in SIMD mode, i.e. using
> >>>>> tables/branchless/predicated ops to handle any single-lane alternate
> >>>>> paths.
> >>>>>
> >>>>> Such code can also much more often scale across multiple cores/systems
> >>>>> even if that means that I have to do some redundant work across the
> >>>>> boundaries. I.e. when I process lidar data I can make the problem
> >>>>> almost embarrasingly parallelizable by splitting the input into tiles
> >>>>> with 35-50m overlap: This is sufficient to effectively eliminate all
> >>>>> edge artifacts when I generate contours and vegetation
> >>>>> classifications.
> >>>>
> >>>> Interesting. Thank you for the examples.
> >>>
> >>> The core idea there is that it can often make sense to do extra work
> >>> as long as that removes the cost of maintaining exact boundaries. A
> >>> similar idea was the building block for my julian day to Y-M-D
> >>> conversion:
> >>>
> >>> The math to do so is quite complicated, so instead I make a very quick
> >>> approximate guess and do the reverse (very fast!) calculation which
> >>> ends with a branchless adjustment if the guess was off-by-one.
> >>
> >> I am intrigued. Would you mind sharing the code (either posting
> >> or sending to me via email, whichever you think more appropriate)?
> >>
> >>>>> The most fun is when I find ways to remove all internal branching
> >>>>> related to exceptional data, i.e. anything which can impede that
> >>>>> nicely flowing stream of water going downhill.
> >>>>
> >>>> In that sentence the word "which" should be "that". The reason is
> >>>> "that" is restrictive, whereas "which" in non-restrictive. In
> >>>> other words you mean the rest of the sentence after "which" to
> >>>> constrain the word "anything", i.e., to restrict what is covered.
> >>>> This distinction is important in technical writing; unfortunately
> >>>> even native speakers sometimes get it wrong.
> >>>
> >>> OK, that is subtle but noted!
> >>>
> >>> I'll hide behind my standard "I only started to learn English in 5th
> >>> grade" excuse. :-)
> >>
> >> No excuse needed. I routinely give such comments to people whose
> >> first language is other than English, not with the intention of
> >> faulting a bad usage but with the idea of helping them better
> >> learn the subtleties and bear traps of English. If anyone should
> >> give an excuse, I should, because my own other-language skills are
> >> so limited. I admire anyone who speaks more than one language, as
> >> I have found it very very difficult to do so.
> >
> > This is actually more interesting than I immediately thought:
> >
> > First, is there a difference between US and UK English here?
> >
> > Looking at it now, to me using "anything which can" vs "anything that
> > can" does have those two different meanings: The first one is in fact
> > more inclusive than the second, i.e. "which" also includes stuff that
> > only incidentally or as a side effect cause this, while "that" implies
> > that it is more of a primary result.
> >
> > This was actually what I was trying to express.
> >
> > Regards,
> > Terje
> >
> The point of language is to communicate.

It depends.
For many, if not for most, posters on comp.arch, the main point is to express themselves.
Communication is secondary.

Re: The Computer of the Future

<t0g4t2$pes$1@dont-email.me>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=24157&group=comp.arch#24157

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!aioe.org!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: iva...@millcomputing.com (Ivan Godard)
Newsgroups: comp.arch
Subject: Re: The Computer of the Future
Date: Fri, 11 Mar 2022 10:37:21 -0800
Organization: A noiseless patient Spider
Lines: 143
Message-ID: <t0g4t2$pes$1@dont-email.me>
References: <b94f72eb-d747-47a4-85cd-d4c351cfcc5fn@googlegroups.com>
<858e7a72-fcc0-4bab-b087-28b9995c7094n@googlegroups.com>
<2e266e3e-b633-4c2a-bd33-962cb675bb77n@googlegroups.com>
<fb409a7e-e1a2-4eaf-8fbb-d697ac3f0febn@googlegroups.com>
<1a8a324d-34b8-4c1e-876e-1a0cde795e3fn@googlegroups.com>
<005ee5af-519a-4d45-93bd-87f4ab580c61n@googlegroups.com>
<66d1cc8e-c8b9-4ecb-be59-fee1ab1da715n@googlegroups.com>
<suljuo$it1$1@dont-email.me> <868rtnfb1y.fsf@linuxsc.com>
<t04pa8$g2u$1@gioia.aioe.org> <86ee3ceh3r.fsf@linuxsc.com>
<t0a324$1uat$1@gioia.aioe.org> <861qzaesvd.fsf@linuxsc.com>
<t0ct7p$muk$1@gioia.aioe.org> <867d91dbys.fsf@linuxsc.com>
<t0fbrm$17nu$1@gioia.aioe.org> <t0fgod$86t$1@dont-email.me>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Fri, 11 Mar 2022 18:37:22 -0000 (UTC)
Injection-Info: reader02.eternal-september.org; posting-host="f8e4cf46eafba2b79fc14fb15ce11bfd";
logging-data="26076"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/K9A3XqaWl6Mv9orPbYKJ3"
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101
Thunderbird/91.6.2
Cancel-Lock: sha1:PLo1IlXrNnjGLlGCnJ2F9o7S6S8=
In-Reply-To: <t0fgod$86t$1@dont-email.me>
Content-Language: en-US
 by: Ivan Godard - Fri, 11 Mar 2022 18:37 UTC

On 3/11/2022 4:53 AM, David Brown wrote:
> On 11/03/2022 12:29, Terje Mathisen wrote:
>> Tim Rentsch wrote:
>>> Terje Mathisen <terje.mathisen@tmsw.no> writes:
>>>
>>>> Tim Rentsch wrote:
>>>>
>>>>> Terje Mathisen <terje.mathisen@tmsw.no> writes:
>>>>>
>>>>>> Tim Rentsch wrote:
>>>>>>
>>>>>>> Terje Mathisen <terje.mathisen@tmsw.no> writes:
>>>>>>>
>>>>>>>> Tim Rentsch wrote:
>>>>>>>>
>>>>>>>>> Ivan Godard <ivan@millcomputing.com> writes:
>>>>>>>>>
>>>>>>>>> [...]
>>>>>>>>>
>>>>>>>>>> I think the problem is really a linguistic one:  our programming
>>>>>>>>>> languages have caused us to think about our programs in control
>>>>>>>>>> flow terms, [...]
>>>>>>>>>
>>>>>>>>> Some of us.  Not everyone, fortunately.
>>>>>>>>
>>>>>>>> I tend to think much more in data flow terms, as I've written
>>>>>>>> before:
>>>>>>>>
>>>>>>>> An optimal program is like a creek finding its path down from the
>>>>>>>> mountain, always searching for the path of least resistance.
>>>>>>>
>>>>>>> It's an interesting simile.  Note by the way that creeks are
>>>>>>> greedy algorithms, in the sense of being only locally optimal,
>>>>>>> not necessarily globally optimal.
>>>>>>>
>>>>>>> To me the more interesting question is how does this perspective
>>>>>>> affect how the code looks?  If reading your programs, would I see
>>>>>>> something that looks pretty much like other imperative code, or
>>>>>>> would there be some distinguishing characteristics that would
>>>>>>> indicate your different thought mode?  Can you say anything about
>>>>>>> what those characteristics might be?  Or perhaps give an example
>>>>>>> or two?  (Short is better if that is feasible.)
>>>>>>
>>>>>> First example:  Use (very) small lookup tables to get rid of branches,
>>>>>> typically trying to turn code state machines into data state
>>>>>> machines.  This is driven by the fact that modern CPUs are much better
>>>>>> at dependent loads than unpredictable branches.
>>>>>>
>>>>>> I typically try to write code that can run in SIMD mode, i.e. using
>>>>>> tables/branchless/predicated ops to handle any single-lane alternate
>>>>>> paths.
>>>>>>
>>>>>> Such code can also much more often scale across multiple cores/systems
>>>>>> even if that means that I have to do some redundant work across the
>>>>>> boundaries.  I.e. when I process lidar data I can make the problem
>>>>>> almost embarrasingly parallelizable by splitting the input into tiles
>>>>>> with 35-50m overlap:  This is sufficient to effectively eliminate all
>>>>>> edge artifacts when I generate contours and vegetation
>>>>>> classifications.
>>>>>
>>>>> Interesting.  Thank you for the examples.
>>>>
>>>> The core idea there is that it can often make sense to do extra work
>>>> as long as that removes the cost of maintaining exact boundaries.  A
>>>> similar idea was the building block for my julian day to Y-M-D
>>>> conversion:
>>>>
>>>> The math to do so is quite complicated, so instead I make a very quick
>>>> approximate guess and do the reverse (very fast!) calculation which
>>>> ends with a branchless adjustment if the guess was off-by-one.
>>>
>>> I am intrigued.  Would you mind sharing the code (either posting
>>> or sending to me via email, whichever you think more appropriate)?
>>>
>>>>>> The most fun is when I find ways to remove all internal branching
>>>>>> related to exceptional data, i.e. anything which can impede that
>>>>>> nicely flowing stream of water going downhill.
>>>>>
>>>>> In that sentence the word "which" should be "that".  The reason is
>>>>> "that" is restrictive, whereas "which" in non-restrictive.  In
>>>>> other words you mean the rest of the sentence after "which" to
>>>>> constrain the word "anything", i.e., to restrict what is covered.
>>>>> This distinction is important in technical writing;  unfortunately
>>>>> even native speakers sometimes get it wrong.
>>>>
>>>> OK, that is subtle but noted!
>>>>
>>>> I'll hide behind my standard "I only started to learn English in 5th
>>>> grade" excuse. :-)
>>>
>>> No excuse needed.  I routinely give such comments to people whose
>>> first language is other than English, not with the intention of
>>> faulting a bad usage but with the idea of helping them better
>>> learn the subtleties and bear traps of English.  If anyone should
>>> give an excuse, I should, because my own other-language skills are
>>> so limited.  I admire anyone who speaks more than one language, as
>>> I have found it very very difficult to do so.
>>
>> This is actually more interesting than I immediately thought:
>>
>> First, is there a difference between US and UK English here?
>>
>> Looking at it now, to me using "anything which can" vs "anything that
>> can" does have those two different meanings: The first one is in fact
>> more inclusive than the second, i.e. "which" also includes stuff that
>> only incidentally or as a side effect cause this, while "that" implies
>> that it is more of a primary result.
>>
>> This was actually what I was trying to express.
>>
>> Regards,
>> Terje
>>
>
> The point of language is to communicate. Unless you can be absolutely
> sure that the reader will distinguish between "which" and "that",
> interpreting the difference exactly as you intended, then you cannot
> communicate any semantic information by making the distinction. So if
> you need to communicate this information to a wider audience, you have
> to do it in a different way - expressing yourself in a different manner
> or adding more text.
>
> I am a native English speaker, well versed in technical writing, and
> with an above-average interest in and knowledge of grammar. (AFAIK Tim
> has far more experience in technical writing than me, however.) I would
> not infer anything from the use of "which" or "that" in this context, I
> would not assume any writer intended any implication, and I would not
> assume any reader would infer anything from it.
>
> Language changes over time, it varies from place to place (though I
> don't think this particular case is an American versus British issue),
> and it varies from context. Little-used and subtle implications do not
> last.

Even long-standing language notion can die. I use both the conditional -
"if I were a rich man..." instead of "if I was a rich man...", and
distinguish "shall" from "will" - simple future instead of intentional.
Both the conditional and and use of shall have largely disappeared in my
lifetime.

But then, I've sometimes been told I have a somewhat antiquated style :-)

Re: The Computer of the Future

<86h784b9ki.fsf@linuxsc.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=24158&group=comp.arch#24158

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!paganini.bofh.team!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: tr.17...@z991.linuxsc.com (Tim Rentsch)
Newsgroups: comp.arch
Subject: Re: The Computer of the Future
Date: Fri, 11 Mar 2022 10:58:21 -0800
Organization: A noiseless patient Spider
Lines: 99
Message-ID: <86h784b9ki.fsf@linuxsc.com>
References: <b94f72eb-d747-47a4-85cd-d4c351cfcc5fn@googlegroups.com> <858e7a72-fcc0-4bab-b087-28b9995c7094n@googlegroups.com> <2e266e3e-b633-4c2a-bd33-962cb675bb77n@googlegroups.com> <fb409a7e-e1a2-4eaf-8fbb-d697ac3f0febn@googlegroups.com> <1a8a324d-34b8-4c1e-876e-1a0cde795e3fn@googlegroups.com> <005ee5af-519a-4d45-93bd-87f4ab580c61n@googlegroups.com> <66d1cc8e-c8b9-4ecb-be59-fee1ab1da715n@googlegroups.com> <suljuo$it1$1@dont-email.me> <868rtnfb1y.fsf@linuxsc.com> <t04pa8$g2u$1@gioia.aioe.org> <86ee3ceh3r.fsf@linuxsc.com> <t0a324$1uat$1@gioia.aioe.org> <861qzaesvd.fsf@linuxsc.com> <t0ct7p$muk$1@gioia.aioe.org> <0001HW.27DA64F0021EDBDE70000E96338F@news.individual.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Injection-Info: reader02.eternal-september.org; posting-host="26e3708e0c2c60b1c3336f74d37992c3";
logging-data="4001"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+38DcbKm/T3RbOrCUe8wiTTyl4i3bN2Tc="
User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.4 (gnu/linux)
Cancel-Lock: sha1:tXHyF9HoLrDZ8Hvk1WDuI3oNb6s=
sha1:mXOzy06/EgIWcjmL8nwMmI12mNo=
 by: Tim Rentsch - Fri, 11 Mar 2022 18:58 UTC

Bill Findlay <findlaybill@blueyonder.co.uk> writes:

> On 10 Mar 2022, Terje Mathisen wrote
> (in article <t0ct7p$muk$1@gioia.aioe.org>):
>
>> Tim Rentsch wrote:
>>
>>> Terje Mathisen<terje.mathisen@tmsw.no> writes:
>>>
>>>> The most fun is when I find ways to remove all internal branching
>>>> related to exceptional data, i.e. anything which can impede that
>>>> nicely flowing stream of water going downhill.
>>>
>>> In that sentence the word "which" should be "that". The reason is
>>> "that" is restrictive, whereas "which" in non-restrictive. In
>>> other words you mean the rest of the sentence after "which" to
>>> constrain the word "anything", i.e., to restrict what is covered.
>>> This distinction is important in technical writing; unfortunately
>>> even native speakers sometimes get it wrong.
>>
>> OK, that is subtle but noted!
>>
>> I'll hide behind my standard "I only started to learn English in 5th
>> grade" excuse. :-)
>
> You have no need of an excuse, because your original wording was
> correct, and is exactly how most British English users would put it.
>
> Rentsch is wrong to think that using 'that' means anything different.
> His claim comes straight out of Strunk & White's usage guide, which
> has been debunked by English grammar experts, such as Geoff Pullum.
>
> I personally prefer 'that' to 'which' in restrictive clauses,
> but that is a matter of aesthetics, not grammatical correctness.

Apparently Mr Findlay is offering himself as an authority on English
grammar.

I am not offering myself as an authority. I mean only to report
what I have heard and read elsewhere. If I remember correctly, I
first heard this rule from a tech writer where I was working many
years ago. Some years later I did read The Elements of Style,
although I don't have any specific memory of it mentioning this
distinction (but of course it almost certainly did). Other tech
writers I have talked to over the years have concurred on the
that/which distinction.

Consulting a handful of online dictionaries for "that", all agreed
on "that" clauses being restrictive or defining.

Consulting a handful of online dictionaries for "which", the results
were divided. Some clearly said that "which" is non-restrictive,
some didn't say, and at least one said "which" can be used in place
of "that".

It's possible that there is some correlation between the different
views and the question of American English and British English. I
did not investigate that question. (I speak and write American
English, although at times I may inadvertently employ some British
English phrasing without realizing it.)

A web search for "that vs which" (without the quotes) turned up a
lot of hits (I don't know how many). Looking at the first page of
results (I use duckduckgo as my search engine), all agreed on the
principle of using "that" for restrictive or defining clauses and
using "which" for non-restrictive clauses. I think the mildest
support was in a page on grammarbook.com; it said this:

NOTE: We feel that maintaining the distinction between that
and which in essential and nonessential phrases and clauses
is useful, even though the principle is sometimes disregarded
by experienced writers.

After seeing all this, I offer the following advice.

If you mean to introduce a restrictive or defining clause, always
use "that", because it's never wrong, and will never confuse a
reader about what is meant.

If you mean to introduce a non-restrictive clause, which gives
only additional information and does not otherwise affect the
noun or phrase being referenced, use "which". To emphasize the
non-restrictiveness, commas can be used before and after the
"which" clause. Using both "which" and delimiting commas is
also, AFAICT, never wrong, and the commas in particular should
remove any confusion about the intended meaning not being
restrictive.

If you want to allow some ambiguity or the possiblity of confusion
or misunderstanding, feel free to use "which" in place of "that"
in introducing a restrictive clause. In my own writing I usually
try to remove as much ambiguity, and also potential confusion or
misunderstanding, as I can. But different writers have different
preferences.

Final thought: I encourage anyone who is interested to consult
any dictionaries, style guides, essays on that vs which, and so
forth, that they can easily find, to get a broader sense of the
question.

Re: The Computer of the Future

<86czisb9e5.fsf@linuxsc.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=24159&group=comp.arch#24159

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!aioe.org!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: tr.17...@z991.linuxsc.com (Tim Rentsch)
Newsgroups: comp.arch
Subject: Re: The Computer of the Future
Date: Fri, 11 Mar 2022 11:02:10 -0800
Organization: A noiseless patient Spider
Lines: 8
Message-ID: <86czisb9e5.fsf@linuxsc.com>
References: <b94f72eb-d747-47a4-85cd-d4c351cfcc5fn@googlegroups.com> <858e7a72-fcc0-4bab-b087-28b9995c7094n@googlegroups.com> <2e266e3e-b633-4c2a-bd33-962cb675bb77n@googlegroups.com> <fb409a7e-e1a2-4eaf-8fbb-d697ac3f0febn@googlegroups.com> <1a8a324d-34b8-4c1e-876e-1a0cde795e3fn@googlegroups.com> <005ee5af-519a-4d45-93bd-87f4ab580c61n@googlegroups.com> <66d1cc8e-c8b9-4ecb-be59-fee1ab1da715n@googlegroups.com> <suljuo$it1$1@dont-email.me> <868rtnfb1y.fsf@linuxsc.com> <t04pa8$g2u$1@gioia.aioe.org> <86ee3ceh3r.fsf@linuxsc.com> <t0a324$1uat$1@gioia.aioe.org> <861qzaesvd.fsf@linuxsc.com> <t0ct7p$muk$1@gioia.aioe.org> <867d91dbys.fsf@linuxsc.com> <t0fbrm$17nu$1@gioia.aioe.org> <t0fgod$86t$1@dont-email.me> <0b70feb3-335e-4210-afb4-823c347fce49n@googlegroups.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Injection-Info: reader02.eternal-september.org; posting-host="26e3708e0c2c60b1c3336f74d37992c3";
logging-data="4001"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18OQDgSc45P0YfKMwU65CdqnhSFf88BZOs="
User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.4 (gnu/linux)
Cancel-Lock: sha1:YsoCotYdNa2hRiCyfmyZBVCi0GE=
sha1:gv+nSHCLTJ+VBpvwosYASuBsoMQ=
 by: Tim Rentsch - Fri, 11 Mar 2022 19:02 UTC

Michael S <already5chosen@yahoo.com> writes:

> For many, if not for most, posters on comp.arch, the main point is
> to express themselves. Communication is secondary.

They want to express themselves but don't care if they are
communicating? A profound idea. Maybe that explains my
reactions to many postings.

Re: The Computer of the Future

<868rtgb8qh.fsf@linuxsc.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=24160&group=comp.arch#24160

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!aioe.org!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail
From: tr.17...@z991.linuxsc.com (Tim Rentsch)
Newsgroups: comp.arch
Subject: Re: The Computer of the Future
Date: Fri, 11 Mar 2022 11:16:22 -0800
Organization: A noiseless patient Spider
Lines: 59
Message-ID: <868rtgb8qh.fsf@linuxsc.com>
References: <b94f72eb-d747-47a4-85cd-d4c351cfcc5fn@googlegroups.com> <858e7a72-fcc0-4bab-b087-28b9995c7094n@googlegroups.com> <2e266e3e-b633-4c2a-bd33-962cb675bb77n@googlegroups.com> <fb409a7e-e1a2-4eaf-8fbb-d697ac3f0febn@googlegroups.com> <1a8a324d-34b8-4c1e-876e-1a0cde795e3fn@googlegroups.com> <005ee5af-519a-4d45-93bd-87f4ab580c61n@googlegroups.com> <66d1cc8e-c8b9-4ecb-be59-fee1ab1da715n@googlegroups.com> <suljuo$it1$1@dont-email.me> <868rtnfb1y.fsf@linuxsc.com> <t04pa8$g2u$1@gioia.aioe.org> <86ee3ceh3r.fsf@linuxsc.com> <t0a324$1uat$1@gioia.aioe.org> <861qzaesvd.fsf@linuxsc.com> <t0ct7p$muk$1@gioia.aioe.org> <867d91dbys.fsf@linuxsc.com> <t0fbrm$17nu$1@gioia.aioe.org>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Injection-Info: reader02.eternal-september.org; posting-host="26e3708e0c2c60b1c3336f74d37992c3";
logging-data="4001"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+SvYJxICytsxcKwh85ACShahAYDZ2Jcfg="
User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.4 (gnu/linux)
Cancel-Lock: sha1:t3uRGpw5t+1ARF7Y7ayis6qGmLc=
sha1:ORRfwJ48Eg5RHlc3Dd05HfhgC8c=
 by: Tim Rentsch - Fri, 11 Mar 2022 19:16 UTC

Terje Mathisen <terje.mathisen@tmsw.no> writes:

> Tim Rentsch wrote:
>
>> Terje Mathisen <terje.mathisen@tmsw.no> writes:
>>
>>> Tim Rentsch wrote:
>>>
>>>> Terje Mathisen <terje.mathisen@tmsw.no> writes:
>>>>
>>>>> The most fun is when I find ways to remove all internal
>>>>> branching related to exceptional data, i.e. anything which can
>>>>> impede that nicely flowing stream of water going downhill.
>>>>
>>>> In that sentence the word "which" should be "that". The reason
>>>> is "that" is restrictive, whereas "which" in non-restrictive.
>>>> In other words you mean the rest of the sentence after "which"
>>>> to constrain the word "anything", i.e., to restrict what is
>>>> covered. This distinction is important in technical writing;
>>>> unfortunately even native speakers sometimes get it wrong.
>>>
>>> OK, that is subtle but noted!
>>>
>>> I'll hide behind my standard "I only started to learn English in
>>> 5th grade" excuse. :-)
>>
>> No excuse needed. I routinely give such comments to people whose
>> first language is other than English, not with the intention of
>> faulting a bad usage but with the idea of helping them better
>> learn the subtleties and bear traps of English. If anyone should
>> give an excuse, I should, because my own other-language skills
>> are so limited. I admire anyone who speaks more than one
>> language, as I have found it very very difficult to do so.
>
> This is actually more interesting than I immediately thought:
>
> First, is there a difference between US and UK English here?

I suspect there is, but I don't have any direct evidence for that
conclusion.

More generally, I have just responded to Mr Findlay's comments,
and you may find my comments there to be of interest.

> Looking at it now, to me using "anything which can" vs "anything that
> can" does have those two different meanings: The first one is in fact
> more inclusive than the second, i.e. "which" also includes stuff that
> only incidentally or as a side effect cause this, while "that" implies
> that it is more of a primary result.

To me the key word is "anything". You don't mean literally anything,
but "anything subject to the limitations of the following clause" (at
least, that's what I think you mean). So I'm not sure what difference
you are trying to explain here.

> This was actually what I was trying to express.

Which one, the first or the second? (And I'm still not sure what you
think the difference is between them.)

Re: The Computer of the Future

<0001HW.27DBFD58023D3C3470000108F38F@news.individual.net>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=24162&group=comp.arch#24162

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!news.swapon.de!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail
From: findlayb...@blueyonder.co.uk (Bill Findlay)
Newsgroups: comp.arch
Subject: Re: The Computer of the Future
Date: Fri, 11 Mar 2022 21:57:44 +0000
Organization: none
Lines: 53
Message-ID: <0001HW.27DBFD58023D3C3470000108F38F@news.individual.net>
References: <b94f72eb-d747-47a4-85cd-d4c351cfcc5fn@googlegroups.com> <858e7a72-fcc0-4bab-b087-28b9995c7094n@googlegroups.com> <2e266e3e-b633-4c2a-bd33-962cb675bb77n@googlegroups.com> <fb409a7e-e1a2-4eaf-8fbb-d697ac3f0febn@googlegroups.com> <1a8a324d-34b8-4c1e-876e-1a0cde795e3fn@googlegroups.com> <005ee5af-519a-4d45-93bd-87f4ab580c61n@googlegroups.com> <66d1cc8e-c8b9-4ecb-be59-fee1ab1da715n@googlegroups.com> <suljuo$it1$1@dont-email.me> <868rtnfb1y.fsf@linuxsc.com> <t04pa8$g2u$1@gioia.aioe.org> <86ee3ceh3r.fsf@linuxsc.com> <t0a324$1uat$1@gioia.aioe.org> <861qzaesvd.fsf@linuxsc.com> <t0ct7p$muk$1@gioia.aioe.org> <0001HW.27DA64F0021EDBDE70000E96338F@news.individual.net> <86h784b9ki.fsf@linuxsc.com>
Reply-To: findlaybill@blueyonder.co.uk
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
X-Trace: individual.net tsMcSoeObHBC0O7pVRjbvAKv8lDbfaue9VAnEjpqr1B0vZUAoz
X-Orig-Path: not-for-mail
Cancel-Lock: sha1:NtjWsD0FisQtbb0lfM88hgg65io=
User-Agent: Hogwasher/5.24
 by: Bill Findlay - Fri, 11 Mar 2022 21:57 UTC

On 11 Mar 2022, Tim Rentsch wrote
(in article <86h784b9ki.fsf@linuxsc.com>):

> Bill Findlay<findlaybill@blueyonder.co.uk> writes:
>
> > On 10 Mar 2022, Terje Mathisen wrote
> > (in article <t0ct7p$muk$1@gioia.aioe.org>):
> >
> > > Tim Rentsch wrote:
> > >
> > > > Terje Mathisen<terje.mathisen@tmsw.no> writes:
> > > >
> > > > > The most fun is when I find ways to remove all internal branching
> > > > > related to exceptional data, i.e. anything which can impede that
> > > > > nicely flowing stream of water going downhill.
> > > >
> > > > In that sentence the word "which" should be "that". The reason is
> > > > "that" is restrictive, whereas "which" in non-restrictive. In
> > > > other words you mean the rest of the sentence after "which" to
> > > > constrain the word "anything", i.e., to restrict what is covered.
> > > > This distinction is important in technical writing; unfortunately
> > > > even native speakers sometimes get it wrong.
> > >
> > > OK, that is subtle but noted!
> > >
> > > I'll hide behind my standard "I only started to learn English in 5th
> > > grade" excuse. :-)
> >
> > You have no need of an excuse, because your original wording was
> > correct, and is exactly how most British English users would put it.
> >
> > Rentsch is wrong to think that using 'that' means anything different.
> > His claim comes straight out of Strunk & White's usage guide, which
> > has been debunked by English grammar experts, such as Geoff Pullum.
> >
> > I personally prefer 'that' to 'which' in restrictive clauses,
> > but that is a matter of aesthetics, not grammatical correctness.
>
> Apparently Mr Findlay is offering himself as an authority on English
> grammar.

To the contrary, I defer to the expertise of Professor Geoff Pullum,
one of the authors of the "The Cambridge Grammar of the English Language".
See, for example:<https://languagelog.ldc.upenn.edu/nll/?p=4357>

> I am not offering myself as an authority.

!

--
Bill Findlay

Re: The Computer of the Future

<t0i242$sto$1@gioia.aioe.org>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=24164&group=comp.arch#24164

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!aioe.org!10O9MudpjwoXIahOJRbDvA.user.46.165.242.91.POSTED!not-for-mail
From: terje.ma...@tmsw.no (Terje Mathisen)
Newsgroups: comp.arch
Subject: Re: The Computer of the Future
Date: Sat, 12 Mar 2022 13:02:10 +0100
Organization: Aioe.org NNTP Server
Message-ID: <t0i242$sto$1@gioia.aioe.org>
References: <b94f72eb-d747-47a4-85cd-d4c351cfcc5fn@googlegroups.com>
<858e7a72-fcc0-4bab-b087-28b9995c7094n@googlegroups.com>
<2e266e3e-b633-4c2a-bd33-962cb675bb77n@googlegroups.com>
<fb409a7e-e1a2-4eaf-8fbb-d697ac3f0febn@googlegroups.com>
<1a8a324d-34b8-4c1e-876e-1a0cde795e3fn@googlegroups.com>
<005ee5af-519a-4d45-93bd-87f4ab580c61n@googlegroups.com>
<66d1cc8e-c8b9-4ecb-be59-fee1ab1da715n@googlegroups.com>
<suljuo$it1$1@dont-email.me> <868rtnfb1y.fsf@linuxsc.com>
<t04pa8$g2u$1@gioia.aioe.org> <86ee3ceh3r.fsf@linuxsc.com>
<t0a324$1uat$1@gioia.aioe.org> <861qzaesvd.fsf@linuxsc.com>
<t0ct7p$muk$1@gioia.aioe.org> <867d91dbys.fsf@linuxsc.com>
<t0fbrm$17nu$1@gioia.aioe.org> <868rtgb8qh.fsf@linuxsc.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Info: gioia.aioe.org; logging-data="29624"; posting-host="10O9MudpjwoXIahOJRbDvA.user.gioia.aioe.org"; mail-complaints-to="abuse@aioe.org";
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101
Firefox/68.0 SeaMonkey/2.53.11
X-Notice: Filtered by postfilter v. 0.9.2
 by: Terje Mathisen - Sat, 12 Mar 2022 12:02 UTC

To Tim and everyone else who contributed to this exchange on language,
Thank you!

I did learn something, what I'm most happy about is that I seem to be
getting sufficiently fluid that I subconsciously choose exactly how to
express myself, without thinking about all the details. :-)

Terje
PS. Just getting rid of Covid here, something like 20% of the Norwegian
population seems to be going through it more or less at the same time,
thankfully with very little serious consequences. It seems like we are
getting out of these two years (I sent everyone home from the office in
Oslo exactly two years ago today) with something like 25-30% reduction
in death rate because all the covid restrictions have removed two full
flu seasons.

Tim Rentsch wrote:
> Terje Mathisen <terje.mathisen@tmsw.no> writes:
>
>> Tim Rentsch wrote:
>>
>>> Terje Mathisen <terje.mathisen@tmsw.no> writes:
>>>
>>>> Tim Rentsch wrote:
>>>>
>>>>> Terje Mathisen <terje.mathisen@tmsw.no> writes:
>>>>>
>>>>>> The most fun is when I find ways to remove all internal
>>>>>> branching related to exceptional data, i.e. anything which can
>>>>>> impede that nicely flowing stream of water going downhill.
>>>>>
>>>>> In that sentence the word "which" should be "that". The reason
>>>>> is "that" is restrictive, whereas "which" in non-restrictive.
>>>>> In other words you mean the rest of the sentence after "which"
>>>>> to constrain the word "anything", i.e., to restrict what is
>>>>> covered. This distinction is important in technical writing;
>>>>> unfortunately even native speakers sometimes get it wrong.
>>>>
>>>> OK, that is subtle but noted!
>>>>
>>>> I'll hide behind my standard "I only started to learn English in
>>>> 5th grade" excuse. :-)
>>>
>>> No excuse needed. I routinely give such comments to people whose
>>> first language is other than English, not with the intention of
>>> faulting a bad usage but with the idea of helping them better
>>> learn the subtleties and bear traps of English. If anyone should
>>> give an excuse, I should, because my own other-language skills
>>> are so limited. I admire anyone who speaks more than one
>>> language, as I have found it very very difficult to do so.
>>
>> This is actually more interesting than I immediately thought:
>>
>> First, is there a difference between US and UK English here?
>
> I suspect there is, but I don't have any direct evidence for that
> conclusion.
>
> More generally, I have just responded to Mr Findlay's comments,
> and you may find my comments there to be of interest.
>
>> Looking at it now, to me using "anything which can" vs "anything that
>> can" does have those two different meanings: The first one is in fact
>> more inclusive than the second, i.e. "which" also includes stuff that
>> only incidentally or as a side effect cause this, while "that" implies
>> that it is more of a primary result.
>
> To me the key word is "anything". You don't mean literally anything,
> but "anything subject to the limitations of the following clause" (at
> least, that's what I think you mean). So I'm not sure what difference
> you are trying to explain here.
>
>> This was actually what I was trying to express.
>
> Which one, the first or the second? (And I'm still not sure what you
> think the difference is between them.)
>

--
- <Terje.Mathisen at tmsw.no>
"almost all programming can be viewed as an exercise in caching"

Re: The Computer of the Future

<t0i2im$12qg$1@gioia.aioe.org>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=24165&group=comp.arch#24165

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!aioe.org!10O9MudpjwoXIahOJRbDvA.user.46.165.242.91.POSTED!not-for-mail
From: terje.ma...@tmsw.no (Terje Mathisen)
Newsgroups: comp.arch
Subject: Re: The Computer of the Future
Date: Sat, 12 Mar 2022 13:09:58 +0100
Organization: Aioe.org NNTP Server
Message-ID: <t0i2im$12qg$1@gioia.aioe.org>
References: <b94f72eb-d747-47a4-85cd-d4c351cfcc5fn@googlegroups.com>
<005ee5af-519a-4d45-93bd-87f4ab580c61n@googlegroups.com>
<66d1cc8e-c8b9-4ecb-be59-fee1ab1da715n@googlegroups.com>
<suljuo$it1$1@dont-email.me> <t02s9j$360$1@gal.iecc.com>
<fcace6e8-30a2-40f4-bfae-4c59529c6c10n@googlegroups.com>
<t0a3gl$5tr$1@newsreader4.netcologne.de>
<2irn2h12t1s9qfv0kppopc6prtqvi8rn04@4ax.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Info: gioia.aioe.org; logging-data="35664"; posting-host="10O9MudpjwoXIahOJRbDvA.user.gioia.aioe.org"; mail-complaints-to="abuse@aioe.org";
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101
Firefox/68.0 SeaMonkey/2.53.11
X-Notice: Filtered by postfilter v. 0.9.2
 by: Terje Mathisen - Sat, 12 Mar 2022 12:09 UTC

George Neuner wrote:
> On Wed, 9 Mar 2022 11:36:53 -0000 (UTC), Thomas Koenig
> <tkoenig@netcologne.de> wrote:
>
>> If you want, you can have a softcore for your CPU and define special
>> instructions for your special needs. I don't think it is easy
>> to modify the FPGA programming on the fly.
>
> With the right architecture, it can be relatively easy.
>
> First, small to medium sized FPGA can be reconfigured very rapidly:
> for many parts that are likely to used as 'accelerator' co-processors
> it takes less than a millisecond for a full reconfiguration.
>
> Second, most FPGAs large enough to support soft cores now support
> partial reconfiguration while running. Essentially you can load a
> single 'full' binary or some (model dependent) number of 'slice'
> binaries which allow you to reprogram one area of the chip while other
> areas continue to execute. The details obviously are model specific,
> and, of course, the external hardware must be able to drive the chip
> for slice programming if that is desired.
>
>
>
> In the late 90s I worked on software support for a prototype FPGA
> based array processor. It was conceived originally as an image
> processing accelerator, but the implementation ended up general enough
> to be used as a 'compute server' suitable for more general array
> processing.
>
> The board had 133MHz PCI bus interface, from 1 to 4 'compute element'
> FPGAs, a programmable interconnect that enabled using the FPGAs
> individually or in any combination, a high-speed banked DRAM having
> 2-dimensional (rectangular block) addressing ability that was able to
> support 32-bit 2R/1W access simultaneously from all FPGAs at full
> speed, and a DSP that provided board control, execution of user
> scripts (described below), and general FP support.
> [Larger FPGAs of that era could implement simple FP functions and even
> some compositions of simple functions, but complex FP pretty much was
> out of the question - so the DSP was necessary. The board was
> designed with the FPGAs as plug-in modules to accomodate expansion and
> (to a point) switching to larger FPGAs as they became affordable.]
>
> Rather than allow arbitrary user FPGA programs, we implemented a
> library of FPGA based array processing functions and a scripting
> language to use them. The compiler/runtime directed allocations in
> various memories: DRAM, FPGA parameter and scratch SRAMS, etc., and
> handled the complicated work of setting up function parameter blocks,
> kicking the FPGAs to configure and execute, extracting results, and
> cleaning up afterward. The compiler supported chaining execution of
> multiple FPGA functions - as opposed to returning control to the
> script after every function - and automatically forwarded result to
> satisfy data dependencies between parameter blocks within the chain.
>
> Each parameter block included two identifiers that indicated which
> configuration binary to use and which function in that binary to
> execute. Kicking the FPGA to execute caused a hardware monitor
> (itself a tiny FPGA) to look at those identifiers and reconfigure the
> compute FPGA if the binary identifier didn't match. Each FPGA had a
> configuration cache holding (model dependent) 10 or more binaries. A
> typical binary implemented ~10..15 functions and could be loaded from
> the cache in less than 2ms.
> [At that time there was no partial reconfiguration, and for a part
> having 600..800 CLBs, full reconfiguration in under 2ms was quite
> fast.]
>
> A service on the host cooperated with the board runtime to partition
> the available FPGA resources (if desired), download user scripts and
> configuration binaries, and implemented a bi-directional messaging
> service to allow host programs to interact with running scripts. With
> multiple FPGAs installed on the board, multiple scripts could be run
> simultaneously [hence the 'compute server' aspect].
>
>
> The company had a number of industrial QA/QC products and was looking
> to improve on performance versus affordable SIMD processors. As a
> proof of concept we implemented an expensive image inspection normally
> performed using optimized SSE2 on a 1GHZ Pentium-4. Excluding image
> capture, the image processing on the Pentium took ~600ms. Our
> prototype board - using a single Xilinx Virtex-100 - performed the
> same processing in just ~20ms including 2 reconfigurations.
>
> Unfortunately, it never turned into a commercial product ... CPU
> speeds were rapidly improving and it was thought that the proprietary
> accelerator - even if it could be sold as a separate product - would
> not remain cost effective for long. But for a couple of years it was
> fun to work on (and with).

We discussed several of these approaches at the time, here on c.arch,
every single time the main problem was effectively Moore's Law: Each
time somebody had developed another FPGA accelerator board for function
X, I (or anyone else like me) could take the same algorithm, more or
less, turn it into hand-optimized x86 asm, and either immediately or
within two years, that SW would be just as fast as the FPGA and far cheaper.

Programming-wise it sounds sort of similar to the Cell Broadband Engine
of the Playstation: Could deliver excellent results but required
hardcore programming support from a quite small pool of
available/competent programmers.

Terje

--
- <Terje.Mathisen at tmsw.no>
"almost all programming can be viewed as an exercise in caching"

Pages:123456
server_pubkey.txt

rocksolid light 0.9.8
clearnet tor