common.go 655 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. package runners
  2. import (
  3. "golang.org/x/sys/cpu"
  4. )
  5. type CPUCapability uint32
  6. // Override at build time when building base GPU runners
  7. // var GPURunnerCPUCapability = CPUCapabilityAVX
  8. const (
  9. CPUCapabilityNone CPUCapability = iota
  10. CPUCapabilityAVX
  11. CPUCapabilityAVX2
  12. // TODO AVX512
  13. )
  14. func (c CPUCapability) String() string {
  15. switch c {
  16. case CPUCapabilityAVX:
  17. return "avx"
  18. case CPUCapabilityAVX2:
  19. return "avx2"
  20. default:
  21. return "no vector extensions"
  22. }
  23. }
  24. func GetCPUCapability() CPUCapability {
  25. if cpu.X86.HasAVX2 {
  26. return CPUCapabilityAVX2
  27. }
  28. if cpu.X86.HasAVX {
  29. return CPUCapabilityAVX
  30. }
  31. // else LCD
  32. return CPUCapabilityNone
  33. }