Question

As far as I know, the answer is no. OpenCL is designed for multi-cores system.

But, is there any way to use OpenCL on multi-computers ( each computer is a multi-cores system ) ? If not, are any additional tools, frameworks... required?

I read some articles about Distributed computing, Cluster computing, Grid computing... but I can't find a satisfied answer

Any ideas will be appreciated

Thank you :)

Was it helpful?

Solution

There are two frameworks for this purpose: VirtualCL and CLara. Both packages let you work transparently with remote machines as local devices. Unfortunately, VirtualCL is only available as pre-compiled binaries without sources and CLara is not actively developed anymore.

OTHER TIPS

SnuCL uses MPI and OpenCL to transparently use the cluster through the OpenCL API. It also adds a few OpenCL extensions to effectively deal with the memory objects.

It is open source. See http://aces.snu.ac.kr/Center_for_Manycore_Programming/SnuCL.html and http://tbex.twbbs.org/~tbex/pad/SunCL.pdf

There is one more solution not mentioned above: dOpenCL.

"dOpenCL (distributed OpenCL) is a novel, uniform approach to programming distributed heterogeneous systems with accelerators. It transparently integrates the nodes of a distributed system into a single OpenCL platform. Thus, dOpenCL allows the user to run unmodified existing OpenCL applications in a heterogeneous distributed environment. Besides, it extends the OpenCL programming model to deal with individual nodes of the distributed system."

I have used VirtualCL to form a GPU cluster with 3 AMD GPU as compute node and my ubuntu intel desktop running as broker node. I was able to start both the broker and compute nodes.

In addition to the various options already mentioned by other posters, here are two more open source projects that you may be interested in:

  • ocland (in beta stage): offers a server application and an ICD implementation that the clients can use to take advantage of local and remote devices that support OpenCL in a transparent fashion. The license is GPLv3.

  • COPRTHR SDK by Brown Deer Technnology (currently version 1.6): this SDK which offers an open source (GPLv3) OpenCL implementation for x86_64, ARM, Epiphany and Intel MIC includes a "Compute Layer Remote Procedure Call" implementation. This consists of a client-side OpenCL implementation that supports rpc (libclrpc) and a server application (clrpcd). The website doesn't mention much about it but the documentation contains a section about this CLRPC implementation.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top