Devon McCormick wrote: > Simply put, multi-core processors are too coarse-grained for an array > language to take advantage simply at an array level.
I agree entirely with Devon on this. I would add that a thread-level symmetric processing model with few processor is too heavyweight for array operations: an asymmetric model with more subsidiary processors, as seen in video cards, is more appropriate. While we are proposing big architectural changes, I would like to point to an example from scientific computing. If you are interested in performance, you have to take into account the specific hardware you are using. LAPACK and other pieces of numerical software are written in an architecture independent way, but call the BLAS (basic linear algebra subprograms) for the heavy lifting. The latter does things like matrix multiplication, and can be tuned to actual hardware, based on cache sizes and timing data. There is an active commercial market in producing versions of the BLAS, and this type of division of labor has been quite fruitful over a couple of decades. In particular, the bulk of the application can be written generically, and exploitation of new hardware features done in a relatively small part of the code. If peak performance is not key, a reference (lowest common denominator) implementation of the BLAS can be used. This is what is done with the LAPACK add-on for J: you can do much better with a BLAS for your specific CPU, and even better if you dynamically tune it. I am not suggesting that J adopt this wholesale. I do think that some division of the interpreter into generic code and hardware-dependent code is something that can improve performance over all architectures, and which could take advantage of appropriate parallelism down the line. While not as glamorous as immediately embracing multi-core processors on the desktop, I believe this approach could ensure J gives good performance on both current and future hardware. Best wishes, John ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
