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

Reply via email to