0

I recently bought a dell XPS 15 with a i9 12900 HK, and downloaded Ubuntu 22.04 LTS as an OS.

I coded a simple OpenMP program, that should have a linear speedup in the number of threads (the code is correct because it behaves as expected when I run it on a cluster), but on my laptop, it stops the speedup at 6 threads, even if my processor has 20 threads. I made some research, and read that kernel 5.15 is not optimised for last Intel processors because it makes a bad use of P and E cores.

But I also read that it may be dangerous to update the kernel to a newer version like 5.17 or 5.18 because my GTX 3050 Ti drivers may not be compatible with this kernel.

Can I update the kernel safely ? Will it resolves my parallelism problem? What method should I use to update my kernel?

I tried to look to forums and docs, but lots of available documentation are from third parties and I don't know if I can trust them.

Peter Cordes
  • 328,167
  • 45
  • 605
  • 847
  • Can you show us your simple code? – Laci Nov 07 '22 at 20:32
  • If it's a code problem you should show us some code. If it's a kernel update problem then it's off-topic on Stack Overflow. Please update your question accordingly. – PierU Nov 07 '22 at 20:56
  • Note that if your OpenMP code behaves as expected on a cluster it does not prove that it is correct. Moreover, if it behaves differently than expected, it also does not prove that it is incorrect. – Laci Nov 07 '22 at 21:18
  • Your CPU has 6 P-cores. You should not expect linear speedups beyond that; it has E cores but they have somewhat lower per-thread throughput. Or do you mean your kernel is scheduling threads to the other logical core of a P core while there are unused E cores? With a laptop, I'd also expect that turbo and thermal limits are a factor, that with one core active it can turbo the clock speed higher than with all 6 P-cores active. Much less extreme in an i9 HK than [Why can't my ultraportable laptop CPU maintain peak performance in HPC](https://stackoverflow.com/q/36363613) but same idea – Peter Cordes Nov 07 '22 at 23:55
  • You can always install a newer kernel package and boot + test your code, from a text console if it turns out your NVidia drivers don't work. You can then change your bootloader config to boot the known-good kernel to get graphics working again, if you don't have any luck updating your NV drivers to match a newer kernel. – Peter Cordes Nov 07 '22 at 23:55
  • I can’t show the code, because it is part of a uni homework, but the code itself, is free from, false / true sharing, syncronisations primitives, has close to 0 cache miss,And even when I run known to be correct code, same things happen. Thank you Peter Cordes for answer, but now what is the utility of E cores if we can’t use Them to paralllelise ? I mean I already considered this but even with slower processor, we should have some speed up. Or maybe E cores have bad performance with cache. – Jean-Franois Alain Ren Isidore Nov 08 '22 at 21:24

0 Answers0