nou

Guide to run OpenCL headless, without X server and as normal user

Discussion created by nou on Feb 6, 2014
Latest reply on Mar 23, 2016 by jstefanop

EDIT: this guide is no more relevant as from catalyst 14.12 omega it is supported to run OpenCL applications without Xserver. read discussion below.

 

You may know that you can run OpenCL program as root without Xserver. I found patch which enable running the OpenCL programs even without

 

Download catalyst driver. Then run

chmod +x amd-driver-installer-*-x86.x86_64.run
./amd-driver-installer-*-x86.x86_64.run --extract ./fglrx
cd fglrx


 

Open file common/lib/modules/fglrx/build_mod/firegl_public.c and find KCL_PosixSecurityCapCheck function.

modify this function to this

int ATI_API_CALL KCL_PosixSecurityCapCheck(KCL_ENUM_PosixSecurityCap cap)
{
    if(cap == KCL_SECURITY_CAP_GENERAL_SYS_ADMIN) {
        return 1;
    }

    if (cap >= KCL_SECURITY_CAP_NUM)
    {
        return 0;
    }

    return capable(KCL_MAP_PosixSecurityCap[cap]);
}


 

then run. change according to distro you use.

./ati-installer.sh 13.35.1005 --buildpkg Ubuntu/saucy
cd ..
sudo dpkg -i fglrx*.deb


 

reboot. now if you run clinfo it will still find only CPU. that is because there is no devices in /dev/ati/. If you run "sudo clinfo" once it will create them. after that you must change permission on them with "sudo chmod 666 /dev/ati/*" after this you can run any OpenCL program without Xserver running and as a normal user. To setup /dev/ati permission you can add upstart job. Place this script to /etc/init/opencl.conf

description "Set up /dev/ati/"

start on filesystem

script
    clinfo > /dev/null
    chmod 666 /dev/ati/*
end script


 

This can enable privilege escalation. Use on your own risk.

 

Thanks to lgeek/catalyst-test-compat-headless-opencl · GitHub

Outcomes