On Thu, Aug 13, 2015 at 9:59 PM, J. Andrew Rogers <[email protected]> wrote:

>
> On Aug 13, 2015, at 6:39 PM, Logan Streondj <[email protected]> wrote:
>
> so the main part of an FPGA or parallel programing language is to have
> good support for parallel design patterns.
>  "Structured parallel programming : patterns for efficient computation"
> covers a good set of them,  the most important of which seem to be
> map/reduce/expand  map/reduce are in many langauges including Haskell,
> though most seem to lack a good expand implementation (like map but where
> number of outputs can exceed or be less than number of inputs).
>
>
>
> No, map/reduce is not a good model for massive parallelism, it is mostly
> only useful for distribution. These are different things.
>
There is a reason Hadoop is terrible for supercomputing applications. And
> hash tables *generally* are poor for massively parallel computing.
>

I agree that Hadoop is not useful for supercomputing applications. I'm not
sure if you are implying that this is the basis of your statement,
otherwise feel free to elaborate.


Map/reduce/expand  works well on GPU's in practice, since there are many
relatively slow processors which are independent of each other.
This is of course similar to the brain, where each neuron is relatively
independent, making it's decision to fire based on dendrites and possibly
micro-tubules.


>
> While I am skeptical of the utility of FPGAs in practice, they actually
> require true parallelism to work well.
>


OpenCl is primarily a GPU programming language, but has been implemented by
Altera for use as a FPGA front-end. While of course there are differences,
there are also many similarities between FPGA and GPU architectures,
certainly more than is the case with CPU's.

Much like in the brain, I believe a hybrid architecture makes most sense.
While our experience of reality is serial,  we process input and output in
parallel. The ability of our brain to adapt and adjust it's hardware to
optimize performance is similar to an FPGA's ability to do the same.   Also
similarly to an FPGA we typically  have to go "offline"(sleep) to do
updates,

Even more normal computers there can be advantages to having some FPGA
circuitry, including managing encryption and encoding and decoding of media
formats.
Though in future I believe even CPU's should be based on reversible
computing, for aforementioned benefits in saving both energy and space.

Of course serial programming can also be done with map/fold/expand.
In fact JSLint discourages use of for-loops in preference for array
operations, such as forEach/map/reduce/expand.



>
> Cheers,
> Andrew
>


> *AGI* | Archives <https://www.listbox.com/member/archive/303/=now>
> <https://www.listbox.com/member/archive/rss/303/5037279-a88c7a6d> | Modify
> <https://www.listbox.com/member/?&;>
> Your Subscription <http://www.listbox.com>
>



-------------------------------------------
AGI
Archives: https://www.listbox.com/member/archive/303/=now
RSS Feed: https://www.listbox.com/member/archive/rss/303/21088071-f452e424
Modify Your Subscription: 
https://www.listbox.com/member/?member_id=21088071&id_secret=21088071-58d57657
Powered by Listbox: http://www.listbox.com

Reply via email to