Live data from Hacker News

Nvidia releases open-source GPU kernel modules

developer.nvidia.com

211–220 of 415 posts

Re: Nvidia releases open-source GPU kernel modules

#211

Earlier quoted context omitted.

> the open source ATI drivers were always a bit buggy and it wasn't that easy getting them installed either. No. Once mainlined, you had to do absolutely nothing to get the hardware working.

The part about them being buggy is definitely true. Up until somewhere around 2016-2017 the ATI/AMD drivers were really bad. I had an "HD 7850" GPU on Linux around that time and it was barely usable. The performance was less than half of what you got on Windows, and the drivers would crash very often, sometimes several times a day if I was trying to play games like Team Fortress 2. It was so bad that I decided to rep…

I also had a HD 7850, and though I had pushed it less than you I never noticed any huge issues.

It was in a uniquely terrible position of being one of the last cards released supported by radeon when all the development had moved to amdgpu, which it supposedly could run if you jumped through the right hurdles. I remember the xorg feature table having several things working for older and newer models but not the 7850.

Still, my experience with it led to another AMD card that I've also been quite happy with.

Re: Nvidia releases open-source GPU kernel modules

#212
post #172
post #144

Earlier quoted context omitted.

Are they? I thought the “OS-agnostic” part was historically only available as a binary. Maybe that changed since last time I looked. On quick inspection, this is a complete, MIT-licensed kernel driver.

>Note that the kernel modules built here must be used with gsp.bin firmware and user-space NVIDIA GPU driver components from a corresponding 515.43.04 driver release. This can be achieved by installing the NVIDIA GPU driver from the .run file using the --no-kernel-modules option.

That's orthogonal to the parent's question.

My understanding as well was that the bulk of the kernel space driver was previously only available as a binary blob, with only a small shim layer open sourced that loaded the rest of the kernel module and translated all of the internal kernel calls. I heard a rumor this was actually core to their internal legal theory about why they could have a binary blob kernel driver.

Required firmware blobs and the user space libraries are ultimately different components in the stack.

Re: Nvidia releases open-source GPU kernel modules

#213

Note that this is just the kernel modules, not the actual graphics driver. IIRC these sources were already released under a permissive license along with their driver distribution. This just seems to be them putting those sources on GitHub and being more open to contributions.

This isn't the same as the source previously provided with the drivers. This is a completely new kernel module.

Re: Nvidia releases open-source GPU kernel modules

#214
post #53

1) This is unambiguously Good News 2) This is not upstreamable in its current form (nvidia admit this in their press release) 3) In an ideal world, nouveau (the open source driver for nvidia hardware) would be able to target this kernel code. Right now though there's no commitment for any sort of stable userland ABI, and that makes that difficult (moving to a new driver version may break interfaces that nouveau uses)…

> This is not upstreamable in its current form What does "upstreamable" mean in this context? Is this good or bad? As a follow-up, what would need to be different so that it is upstreamable and would that be good or bad?

> What does "upstreamable" mean in this context? Is this good or bad?

"Upstream" is the kernel source tree maintained by Linus (and friends). As Linux is open source, anyone can fork it for any reason, and a lot of people do. However, Linus still maintains the common base that people use to build on top of. "Upstreaming" is the process of getting your code included in these official releases. It's significant because there are no stable interfaces inside the kernel. That is, in any release the Linux developers can change any internal system of the kernel in any way they please, with the only caveat that to get that change included they have to fix up any breakage it causes, but only inside upstream. Or, if you are building your own kernels with your own patch sets, any release of the kernel can completely break your build.

Because of this, if you want your code to be actually used by real people, upstreaming it is considered extremely good, to the point of being almost a necessity. However, it can be a significant hurdle to overcome. Partly because there are fairly strict code quality/style requirements (as any kernel dev is supposed to be able to jump into your code to fix issues they caused by modifications elsewhere), but mostly because unlike inside the kernel itself, all interfaces between kernel and userspace are stable. That is, if you start supporting some operation from userspace, you need to be able to support it in perpetuity. Also, the kernel devs are extremely reluctant to add any kind of interface to the kernel where the only thing that uses it is some specific non-free binary blob on the userspace side.

Currently the main reason the code is not upstreamable as is is that it needs a very substantial userspace program to function, which currently only exists as nonfree, and nVidia doesn't think that the interface used to connect to it is well-enough decided they want to freeze it.

So the main hurdle for upstreaming is developing that interface until they are happy with it, and then develop some free version of the userspace portion of their graphics stack that can plug into that same interface.

Re: Nvidia releases open-source GPU kernel modules

#215
post #209

Earlier quoted context omitted.

APUs are eating the market of novideo, see e.g. the performance of the M1 iGPU

Are APUs different from what we used to call integrated graphics cards?

The difference is getting blurry. Apus have generally better communication/latency/shared resources with the CPU. The ultimate ideal of an APU is to have a unified memory with the CPU, which is the case in e.g the PS3/PS4 Despite progress in heterogenous computing (the neglected HSA), in SOCs, 3D ingerposers, high bandwidth buses interconnects and 3D memory such as HBM, the PC platform has yet to see a proper APU. In fact the M1 is probably the closest thing to an ideal APU on the market. But yes the more time pass, the more the term IGPU denote APU. AMD bought ATI because of the fusion vision, the idea that sharing silicon, resources and memory between the CPU and the GPU would be the future of computing.

An unrelated but very underrated is the egpu. Egpus are external to the pc unlike a dgpu. So you can buy a thin laptop, connect it via Thunderbolt to a rtx 3080 and enjoy faster gpu performance than allowed on any laptop on the market, and enjoy a thin lightweight, silent laptop the rest of the time. Disclaimer Thunderbolt is still a moderate limiting factor in reaching peak performance.

Re: Nvidia releases open-source GPU kernel modules

#216

Earlier quoted context omitted.

If I remember correctly, the open source ATI drivers were always a bit buggy and it wasn't that easy getting them installed either. The tradeoff was always Nvidia: proprietary but works well, ATI: open but buggy.

> the open source ATI drivers were always a bit buggy and it wasn't that easy getting them installed either. No. Once mainlined, you had to do absolutely nothing to get the hardware working.

I belive this is talking about radeonhd/radeon/ati circa 2015 or earlier.

Around then, you still had to install the corresponding X11 portion of the drivers, though the nvidia eqiuvalent had the same limitation.

radeon/radeonhd, or fglrx (which was the propriertary AMD graphics) absolutely worked worse than nouveau or the proprietary nvidia drivers at that time. It was only a couple of years into amdgpu where the tables turned.

At this point it would be nice if they'd backport their Linux drivers to Windows, as I'm now on my third AMD GPU in 12-13 years (HD 5770, r9 290x, 6900XT) to have issues where the driver will randomly crash when playing hardware accelerated video on one monitor while playing a directx game on another monitor under Windows.

Re: Nvidia releases open-source GPU kernel modules

#217

Earlier quoted context omitted.

Likely very related, wasn't this one of their exact demands? Looks like Nvidia caved haha.

This is well after the deadline iirc, and not the sort of thing that gets rushed. I doubt this is directly because of that.

maybe for the user space then.

Re: Nvidia releases open-source GPU kernel modules

#218
post #85

Earlier quoted context omitted.

That might not even be overstatement. The last few big desktop linux crash-and-burns I've run into all had display drivers as a common component. I like back-foot, underdog NVIDIA. Ascendent AMD hasn't drawn my ire yet, let's hope power corrupts slowly.

> I like back-foot, underdog NVIDIA. Ascendent AMD hasn't drawn my ire yet, let's hope power corrupts slowly. That "back-foot" "underdog" nVidia has the edge in the video market still... and 3x the market cap of AMD.

It's fair to extrapolate because their strategic decisions will be based on extrapolations.

NVIDIA had to overclock and hustle the current generation of cards and it's looking even worse for the next generation. Software was a moat when AMD was heavily resource constrained, but now they can afford the headcount to give chase. Between the chip shortage and crypto, there was plenty of noise on top of fundamentals, but one doesn't make strategic plans based on noise.

This is all speculative, of course. I'm sure if asked they would say it was a total coincidence. Just like AMD and Intel switching places on their stance towards overclocking. Complete coincidence that it matches the optimal strategy for their market position -- "milk it" vs "give chase." Somehow it always seems to match, though, and speculation is fun :)

Re: Nvidia releases open-source GPU kernel modules

#219
post #209

Earlier quoted context omitted.

Are APUs different from what we used to call integrated graphics cards?

The difference is getting blurry. Apus have generally better communication/latency/shared resources with the CPU. The ultimate ideal of an APU is to have a unified memory with the CPU, which is the case in e.g the PS3/PS4 Despite progress in heterogenous computing (the neglected HSA), in SOCs, 3D ingerposers, high bandwidth buses interconnects and 3D memory such as HBM, the PC platform has yet to see a proper APU. In…

> the PC platform has yet to see a proper APU

Wat. AMD literally invented the term 'APU' and has been shipping them since 2011. Fully unified CPU+GPU memory since 2014's Kavari. That's full cache coherent CPU & GPU along with the GPU using the same shared virtual pageable memory as the CPU.

The M1 didn't add anything new to the mix.

Re: Nvidia releases open-source GPU kernel modules

#220
post #209

Earlier quoted context omitted.

APUs are eating the market of novideo, see e.g. the performance of the M1 iGPU

Are APUs different from what we used to call integrated graphics cards?

APUs are AMD-speak for CPU and GPU on the same die (Intel has similar but doesn't call them that). Integrated graphics cards (a misnomer since there is no card -- IGP or iGPU is probably more accurate) may or may not be on the same die (instead could be on the motherboard, particularly in the chipset). That design is pretty rare/antiquated at this point though. Being on the same die means higher bandwidth, lower latency, etc.
Post reply on HN