Ubuntu + Nvidia sync trouble

That’s because of kernel version numbers. If you install a fresh Ubuntu LTS of version number x.04.y with y == 0 or 1, e.g., Ubuntu 18.04.0 LTS or Ubuntu 18.04.1 LTS, or if you upgrade to Ubuntu x.04.y from an earlier version, e.g., from Ubuntu 17.10 to 18.04.something, then the standard hardware stack from Ubuntu x.04.0, e.g., Ubuntu 18.04.0 LTS will be used, as that is the conservative choice. If you install Ubuntu x.04.y with y >= 2 from a fresh download from ubuntu.com, ie. Ubuntu 18.04.2 or 18.04.3 or 18.04.4 …, you will get the so called HWE (Hardware Enablement) stack. The HWE brings a more modern version of the Linux kernel, X display server and OpenGL graphics libraries, with new improvements and up to date device drivers for the latest hardware.

This HWE will get updated every six months to newer versions taken from intermediate Ubuntu versions (18.04.2 LTS got the kernel etc. from Ubuntu 18.10, 18.04.3 got the stuff from Ubuntu 19.04, 18.04.4 has the stuff from Ubuntu 19.10, 18.04.5 will get the stuff from Ubuntu 20.04.0 LTS), so you stay up to date with the latest low-level tech and drivers. The non-LTS Ubuntu variants basically serve as beta test versions for the next small HWE upgrade of the LTS versions. In that sense, the HWE is a less conservative choice, as in more modern, but faster moving. You can also trigger installation of the HWE yourself by installing the software packages with *-hwe-18.04 in their name. This leaves people with the choice if they want somewhat old but proven over time stuff in the “engine room” of their computer, or if they want the new and fancy, but less long-term tested.

So what happened is when you installed linux-lowlatency, it installed the low-latency variant of the Linux kernel originally shipping with Ubuntu 18.04.0 LTS – the conservative choice. That would be Linux 4.15-lowlatency. But as your original Ubuntu installation was probably something like 18.04.3 LTS or 18.04.4 LTS, it already came with the HWE stack, and so the standard kernel shipping with that would be the more modern Linux 5.3-generic. The bootloader picks the Linux kernel with the highest version number by default when booting the machine, and as 5.3-generic is a higher version number than 4.15-lowlatency, it started with the 5.3 generic kernel. So the lowlatency kernel was on there, but not picked by default at boot. Installing linux-lowlatency-hwe-18.04 otoh. will install the low latency variant of Linux 5.3, so now that one is picked as default kernel.

So the instructions on our website are a bit inaccurate, not explaining the whole hwe thing, but then if one explains too much, people don’t pay attention and drown in walls of text (like this one). Maybe i need to think of a way to automate this setup more if i find time to think about it…

At the moment i’d probably recommend AMD Polaris or Vega family cards. Polaris (Radeon 500 series - Wikipedia) is the conservative choice - as this is currently the most well tested gpu with Psychtoolbox - i have two of these.

Vega (Radeon RX Vega series - Wikipedia) should work equally well with Psychtoolbox, and is faster and technically a bit more advanced, especially if one wants to use PTB’s variable refresh rate support with suitable FreeSync / DisplayPort adaptive sync displays for very fine-grained visual stimulus timing (Psychtoolbox-3 - VRRSupport). However, i never had the chance to actually test PTB with a Vega gpu.

Use of the latest generation Navi gpu’s (Radeon RX 5000 series - Wikipedia) is probably not the recommended safe choice yet, as new gpu’s tend to be less mature, with a higher potential for display driver bugs etc., and PTB’s low-level tricks do not currently work with those gpu’s, and i don’t know if or when i will implement support for these.

-mario

1 Like