OpenCL* for CPU
Ask questions and share information on Intel® SDK for OpenCL™ Applications and OpenCL™ implementations for Intel® CPU.
Announcements
This forum covers OpenCL* for CPU only. OpenCL* for GPU questions can be asked in the GPU Compute Software forum. Intel® FPGA SDK for OpenCL™ questions can be ask in the FPGA Intel® High Level Design forum.

Installing OpenCL in a Linux cluster

Dodge__Calvin
Beginner
1,218 Views

Hello,

We have OpenCL working on a single system in a cluster, after installing the intel-openclrt-18.1.0.013-18.1.0-013.x86_64 rpm.

But the standard practice for clusters is to install such packages on a network share, so they're accessible to all cluster systems without resorting to installing packages on each system.

Is there a guide available on installing OpenCL in such a network share?  We've determined that simply making the library files available and referring to their directory in LD_LIBRARY_PATH is not sufficient.

0 Kudos
3 Replies
Dodge__Calvin
Beginner
1,218 Views

Never mind - we determined the necessary step after examining ocl-icd library file /lib64/libOpenCL.so

 

In short, set the environment variable OPENCL_VENDOR_PATH to point to the directory containing vendor files.  Edit the files in the directory to point to the new library location.  In this case, that's intel64.icd, which now contains "/software/opencl/intel/18.1/compiler/lib/intel64_lin/libintelocl.so"

0 Kudos
Michael_C_Intel1
Moderator
1,218 Views

Hi CalvinD,

 

Thanks for the interest and the consideration.

ocl-icd as it's named in some package managers is one implementation of the OpenCL™ ICD Loader library... the current implementation has some more flexibility about where implementation references can live.

The current khronos reference OpenCL™ ICD Loader Library doesn't have the same environment variable features.

This is main feature difference I'm aware of... I hope others share any relevant feature differences in this thread. Both projects are currently posted on GitHub.

Thanks for sharing your use case. Current licensing and design for deployment of some OpenCL™ components from Intel (i.e. the CPU RT) isn't targeted for multiuser environment deployments. When customers experience gaps it's useful to hear about it on the forums and it is taken into consideration for the product.

References:

CPU RT

Release notes

SDK

Release Notes

GFX RT

System Admins who are really stuck with deployment may benefit from seeing a build and runtime deployment in video context. techdecoded.intel.io shows building/installing Intel® Graphics Compute Runtime for OpenCL™ Driver for CentOS*. Keep in mind lots of work/changes are constantly going into this implementation... The basics should be more or less the same. This deployment leverages ocl-icd.

https://techdecoded.intel.io/ .... See OpenCL™ Runtime Deployment on Linux* OS.

Altering the .icd file content as indicated could be useful for certain system administrators... Note that references in Windows* OS are in the registry.

 

-MichaelC

0 Kudos
Sulzickis__Edvinas
1,218 Views

Hi, I think my issue is somehow related to this topic so I didn't want to create a new one. I am using slurm 17.11.3-2 version on a small ROCKS 7 cluster. I have two gpu nodes with nvidia driver 384.111 and opencl framework installed. Moreover in /etc/OpenCL/vendors directory there are two files (nvidia.icd and intel.icd). However when I remove nvidia.icd file to another location and leave only intel.icd file in /etc/OpenCL/vendors directory everything works fine. Also, what is interesting that my code with OpenCL framework works also fine when I am running code directly from gpu node and every time I am not even using gpu memory. Can someone explain how OpenCL interacts with .icd files and why code can not be completed (it stops at ~10 GB of RAM allocated instead of ~16-20 GB) when nvidia.icd persist?

0 Kudos
Reply