Thursday, December 1, 2016

Well that didn't last long

Unfortunately, using Ubuntu Desktop as my primary OS has come to an end just after six months of "giving it the ol' college try". Why, you might ask? Two words: graphics drivers.

For over sixteen years, I have contributed spare computing power to SETI@Home, and the fastest way to earn credits is to set up GPU computing on BOINC. But in order for GPU computing to work properly on BOINC, it needs to work with an OpenCL library.

  • Open Source Drivers (radeon, nouveau, intel): While the open source drivers for AMD, Nvidia, and Intel all have varying degrees of support for hardware acceleration OOTB, one thing they do not support is OpenCL. While Mesa or Beignet has open source OpenCL support, these libraries do not work with BOINC.
  • AMD Proprietary Drivers: Before Ubuntu 16.04, AMD actually provided the proprietary FGLRX drivers for Linux which actually worked with BOINC after doing some shoehorning to get the drivers and BOINC to play nice together. Since 16.04, however, they have dropped Linux support of all but their most recent graphics chipsets so trying to run GPU computing on BOINC with AMD is nearly impossible unless you have one of their latest cards.
  • Nvidia Proprietary Drivers: After upgrading to Ubuntu 16.04, I went ahead and switched out my AMD R7 250x for an Nvidia GTX 750 Ti since on the surface it appears Nvidia supports Linux better than AMD does. However, trying to find the right driver for the GTX 750 Ti was a nightmare as I posted in Enabling Nvidia Hardware Acceleration in Google Chrome on Ubuntu 16.04. And then once I finally did find the right driver version for my Nvidia card, the very next graphics driver update broke the entire setup completely and my Ubuntu Desktop reverted back to the open source nouveau drivers.
  • Intel Graphics Drivers for Linux: While I had varying degrees of success with getting AMD and Nvidia to churn out GPU credits for BOINC under Ubuntu, for the life of me I could not get my integrated Intel graphics GPU to work with BOINC at all. I tried the open source Linux drivers, I tried Beignet, I tried whatever closed-source libarary they provide for OpenCL. While I could get BOINC to recognize the fact that I at least had an Intel GPU, every time it tried to download work units for the Intel GPU it failed with a computation error.
Unless you have eccentric requirements for GPU usage under Ubuntu like myself, Ubuntu is still a great OS for doing everything else you could possibly want. While Ubuntu Desktop is no longer my primary OS (yes, unfortunately Windows 10 is back), one of the first things I did was to set up a VMWare virtual machine running Ubuntu Desktop 16.04 for my development activities. Even though Microsoft is actively working on the Ubuntu Bash Shell on Windows, it still doesn't compare to running Ubuntu in a VM and doing all of my development efforts therein.

Therefore I am still a committed user of Ubuntu, even though it is now running as a Guest OS in a VM instead of the primary OS on my PC. And I am still a huge fan of Ubuntu Server for running all of my workloads in the cloud. So stay tuned, the Ubuntu Blog lives on.