PathScale ENZO - 2011-04-15 by vincent - StreamComputing - http://www.streamcomputing.eu

PathScale ENZO by vincent – Friday, 15 April 2011 http://www.streamcomputing.eu/blog/2011-04-15/pathscale-enzo/

My todo-list gets too large, because there seem so many things going on in GPGPU-world. Therefore the following article is not really complete, but I hope it gives you an idea of the product.

ENZO was presented as the alternative to CUDA and OpenCL. In that light I compared them to Array Building Blocks a few weeks ago, not that their technique is comparable in a technical way. PathScale’s CTO mailed me and tried to explain what ENZO really is. This article consists mainly of what he (Mr. . Bergström) told me. Any questions you have, I will make sure he receives them.

ENZO

ENZO is a complete GPGPU solution and ecosystem of tools that provide full support for NVIDIA Tesla (kernel driver, runtime, assembler, code generation, front-end programming model and various other things to make a developer’s life easier).

Right now it supports the HMPP C/ programming model. HMPP is an open standard jointly developed by CAPS and PathScale. I’ve mentioned HMPP before, as it can translate Fortran and C-code to OpenCL, CUDA and other languages. ENZO’s implementation differs from HMPP by using native front-ends and does hardware optimised code generation.

You can learn ENZO in 5 minutes if you’ve done any OpenMP-like programming in the past. For example the Fortran-code (sorry for the missing indenting):

!$hmpp simple codelet, target=TESLA1

page 1 / 3 PathScale ENZO - 2011-04-15 by vincent - StreamComputing - http://www.streamcomputing.eu

subroutine add(n, a, b, c) implicit none integer, intent(in) :: n real, intent(in) :: a(n), b(n) real, intent(out) :: c(n) integer :: i

do i=1, n if (a(i) > 5) then c(i) = 1 else c(i) = 2 endif enddo

end subroutine add

subroutine test integer, parameter :: n=10 real :: a(n), b(n), c(n) integer :: i

do i=1, n a(i) = i b(i) = i enddo

!$hmpp simple callsite call add(n, a, b, c) end subroutine test

This is somewhat different we know from OpenCL, mostly because we don’t need a specific kernel. This is because with just a few hints, the does a lot for you. Like in OpenMP you tell the compiler with directives/pragmas which parts you want to be parallelised. More explanation can be found in the user manual [PDF]. You can try it out yourself for free if you have a Tesla-card; future versions of ENZO will support more architectures.

Related content:

1. DirectCompute’s unpopularity 2. The rise of the GPGPU- 3. Basic Concepts: OpenCL Convenience Methods for Vector Elements and Type Conversions

page 2 / 3 PathScale ENZO - 2011-04-15 by vincent - StreamComputing - http://www.streamcomputing.eu

______

Related content:

1. DirectCompute’s unpopularity 2. The rise of the GPGPU-compilers 3. Basic Concepts: OpenCL Convenience Methods for Vector Elements and Type Conversions

page 3 / 3

Powered by TCPDF (www.tcpdf.org)