IMO it&#x27;s all due to the developer ecosystem.  NVIDIA had a big head start with CUDA.  AMD effectively embraced CUDA and transformed the best of CUDA into OpenCL (jointly with NVIDIA, Apple, via Khronos).  NVIDIA&#x27;s OpenCL support lags the standard, while they keep improving CUDA.  NVIDIA probably feels commitment to their early adopters and doesn&#x27;t want to divide up their engineering capability.<p>Meanwhile NVIDIA also seems to have really good marketing behind their GPU software stack.  Lots of people who use CUDA have no idea that OpenCL exists and no idea that porting between CUDA and OCL is not super difficult.  (It&#x27;s been years since I&#x27;ve looked at CUDA it might have diverged more significantly since).<p>AMD&#x27;s stability (on linux at least) is pretty poor.  I don&#x27;t know if it hurts adoption much, but it can&#x27;t help.<p>Also, AMD absolutely dominates on integer workloads which is why it had been used so much for cryptocoin hashing machines prior to the widespread availability of ASICs for most algorithms.  On floating point workloads, NVIDIA might do better than AMD, and those seem much more common in science than integer math.