What is the `casting` meant to indicate?  That we're casting from a NumPy array to a DistArray?  We should discuss, but I don't think this is an important enough usecase to warrant it.  My current thoughts are that the user should have to do an explicit `fromndarray()` call on a NumPy array first to get a distributed array from it, and *then* use the distributed ufuncs as usual.  Automatic casting like this would be hiding potentially a lot of data communication, which should be more explicit.