Install Opencl(Amd Sdk Kit) on Linux Without Root Privilege

What is the minimal nesesary file subset, required to AMD OpenCL work on Linux?

It took me several steps further, to get all up and running:

  • There are several important symbolic links for libraries, like *.1, *.1.0.0, so on. They must be copied as well. That got opencl working, but miner still wrongs on the number of availble memory and compute units was displayed incorrectly and i had segfaults.

  • /opt/amdgpu/share/libdrm/amdgpu.ids is required for gpu models' names and their video memory sizes being detected and displayed correctly.

  • /etc/amd/amdapfxx.blb is important file, serving for some top secret, unknown reasons.

  • As I was upgrading amdgpu-pro driver it was important not to mess library files from different versions. It was easy to do such mistake, as buildroot caches overlay to output/target structure, if you delete something from overlay you have to delete it from target as well. And such a library mess could lead to segfaults

  • To further minify subset, libEGL and libGLESv2, libgbm can be deleted. They are not nesesary for OpenCL operation and this saves 1-1.5 megs extra space.

  • LLVM seems to be unrelated to OpenCL totally, saving huge amount of space. I am not sure, maybe it is required by GL or Vulkan.

And here is complete list of nesesary files and symlinks, with exact locations, in order to get OpenCL properly working:

/usr/lib/libamdocl64.so
/usr/lib/libamdocl12cl64.so
/usr/lib/libdrm.so -> libdrm.so.2.4.0
/usr/lib/libdrm.so.2 -> libdrm.so.2.4.0
/usr/lib/libdrm.so.2.4.0
/usr/lib/libdrm_amdgpu.so -> libdrm_amdgpu.so.1.0.0
/usr/lib/libdrm_amdgpu.so.1 -> libdrm_amdgpu.so.1.0.0
/usr/lib/libdrm_amdgpu.so.1.0.0
/usr/lib/libdrm_radeon.so -> libdrm_radeon.so.1.0.1
/usr/lib/libdrm_radeon.so.1 -> libdrm_radeon.so.1.0.1
/usr/lib/libdrm_radeon.so.1.0.1
/usr/lib/libkms.so -> libkms.so.1.0.0
/usr/lib/libkms.so.1 -> libkms.so.1.0.0
/usr/lib/libkms.so.1.0.0
/usr/lib/libOpenCL.so -> libOpenCL.so.1
/usr/lib/libOpenCL.so.1
/usr/bin/clinfo
/etc/amd/amdapfxx.blb
/etc/OpenCL/vendors/amdocl64.icd
/opt/amdgpu/share/libdrm/amdgpu.ids

Installed beignet to use OpenCL on Intel, but OpenCL programs only work when run as root

I know this is kinda resurrecting an old thread, but I recently solved this problem and haven't found any solutions posted online, so here goes...

With the latest kernels rnodes is enabled by default, but this still doesn't work... Next step is to check the ownership of the /dev/dri files...
e.g. on my system, I get:

$ ls -l /dev/dri
total 0
crw-rw---- 1 root video 226, 0 May 16 21:30 card0
crw-rw---- 1 root video 226, 64 May 16 21:30 controlD64
crw-rw---- 1 root video 226, 128 May 16 21:30 renderD128

Hinting I either need to be root user or a member of the "video" group to access the device...

Add the relevant user (i.e. the one you want to run the opencl program as) to the group:

usermod -a -G video <user>

Then relog and bingo no need to run as root anymore!

Is it possible to install chef-solo without root privilege

Sure - you can install Chef as a gem as non-root if you're running rvm or a similar userspace gem manager.

$ gem install chef
Fetching: chef-11.6.0.gem (100%)
Successfully installed chef-11.6.0
1 gem installed

$ which chef-solo
/Users/tpot/.rvm/gems/ruby-1.9.3-p327/bin/chef-solo

I need to add an old drive to a new Linux install

If you mounted your disk to a directory which already contains data this data will be hidden until removing the mount.

So to keep your data safe you can create a new directory and mount the disk to it.



Related Topics



Leave a reply



Submit