Doug writes:

    /OpenCL provides parallel computing using task-based and
    data-based parallelism. /

I doubt that message passing distributed computing will be easy in our lifetime(s).
OpenCL provides a partial ordering of event dependencies, or in the simplest case, an in-order queue of tasks or data parallel operations. These operations can be kernel invocations (function calls) or asynchronous memory transfers between address spaces. A device is free to implement the latter using remote directory memory access (RDMA) transfers, such as modern MPI implementations would do. A PCIe connected GPU is in some ways a standalone system, and I don't see a reason why a moderate sized cluster couldn't be completely handled by OpenCL. There have been some projects in that direction like clumpi (OpenCL under MPI).

Since GPUs have such ridiculously fast floating point performance, learning how to program them is a relevant skill in HPC. OpenCL is not an integrated single source solution, but at least it is an affordable place to start (the software is free), and doesn't lock you in to one vendor. I could imagine higher-level languages targeting OpenCL as a sort of assembly language. But, if you want to understand how to make performant code, one needs to have an idea how this stuff works..

Marcus

============================================================
FRIAM Applied Complexity Group listserv
Meets Fridays 9a-11:30 at cafe at St. John's College
lectures, archives, unsubscribe, maps at http://www.friam.org

Reply via email to