On Tue, Nov 8, 2011 at 4:22 PM, David Barbour <dmbarb...@gmail.com> wrote:
> Can you elucidate the distinctions between Nile and Gezira?

Nile is the programming language. Its syntax is a bit like Haskell.
The high-level model of computation is a variation of Kahn process
networks. The low-level part is a single-assignment,
mathematics-oriented language for specifying the internal behavior of
a process.

> Based on the
> (undocumented) code, I guess that Nile is more of a process model (queues,
> heaps, threads)

You're looking at the implementation details of one of the Nile
execution environments (i.e., runtimes), the multithreaded C-based
one. The queues, threads, etc. are used for implementing the process
network part of Nile on multithreaded CPUs.

> and Gezira is more of the rendering.

Gezira is a 2D vector graphics renderer written in Nile.

> In that case, it may be
> Gezira I was thinking would compile well to shaders on a GPU.

Certain parts of Gezira belong to the subset of Nile that could be
efficiently executed on a GPU.

> OpenCL is certainly one approach to leveraging a GPGPU to a reasonable
> degree. Might be worth pursuing that route. But I've been surprised what can
> be done with just the rendering pipelines. Pure functional graphics convert
> to shaders + uniforms quite well.

Certain stages of Gezira's rendering pipeline would not convert to
shaders very well. Gezira covers different territory than, say, Pan,
Vertigo, etc. None of Conal Elliot's "pure functional graphics"
projects ever tried to perform, say, anti-aliased rasterization
(AFAIK). They always relied on non-"pure functional" systems
underneath to do the heavy lifting.

Gezira, on the other hand, strives to do it all. And in a mostly
functional way. The processes of Nile are side-effect free, with the
exception of the final WriteToImage stage.

Regards,

Dan

_______________________________________________
fonc mailing list
fonc@vpri.org
http://vpri.org/mailman/listinfo/fonc

Reply via email to