[petsc-users] Does an optimized compilation with -march=native on multi-CPU HPC cluster make sense?
Jed Brown
jed at jedbrown.org
Tue Aug 11 13:00:09 CDT 2020
-march=native is whatever architecture it was built on. That might be a login node.
You might note that without -mprefer-vector-width=512 (gcc/clang) or -qopt-zmm-usage=high (icc), the compiler will rarely if ever actually use AVX-512 (because it causes huge stalls while the frequency is dropped). It likely doesn't pay off for most sparse matrix work. In that case, you can just build for AVX2/FMA (Haswell/Broadwell, Rome) and it'll presumably work across all machines, with comparable performance on your skylake-avx512 systems. I'd encourage you to double-check this with benchmarking of your entire app. You can check if any AVX-512 instructions have been generated using
objdump -d --prefix-addresses -M intel libpetsc.so | grep zmm0
Bastian Löhrer <bastian.loehrer at tu-dresden.de> writes:
> Dear PETSc users,
>
> we use PETSc in our code.
> Therefore, we have multiple PETSc compilations lying around, each
> compiled differently,
> e.g debug build using an Intel-compiler, optimized build for Intel-CPUs
> using an Intel-compiler, optimized build for AMD-Rome-CPUs using an
> Intel-compiler, several builds using GNU-compilers ...
>
> Prior to compiling our code, we essentially set $PETSC_DIR and
> $PETSC_ARCH to point to a suitable PETSc build.
>
> When I compile such an optimized PETSc build aimed at Intel-CPUs and
> using an Intel-compiler I do so with
>
> COPTFLAGS="-axCOMMON-AVX512,CORE-AVX2,AVX ..."
>
> to address all Intel processors available on our cluster.
>
> However, I recently noticed that the PETSc compilation provided by our
> HPC-administrators was compiled with -march=native.
> Does that make sense? If so this implies that my optimization flags are
> unnecessary, does it not?
>
> I imagine that when using a PETSc previously compiled with march=native
> and I compile that into my code on a CPU different from the one that has
> been used when compiling PETSc, I end up without optimizations of PETSc.
> Is that correct?
>
> Best,
> Bastian
More information about the petsc-users
mailing list