Pathscale ENZO - 2011-04-15 by Vincent - Streamcomputing

Pathscale ENZO - 2011-04-15 by Vincent - Streamcomputing

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 Intel 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. C. 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/Fortran 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 compiler 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-compilers 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).

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    3 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us