|
Message-ID: <59e6e1fff191a9db437ac772dff8f8a7@smtp.hushmail.com> Date: Sat, 14 Nov 2015 01:08:54 +0100 From: magnum <john.magnum@...hmail.com> To: john-users@...ts.openwall.com Subject: Building Jumbo with autoconf and CPU/OpenMP fallback (without SYSTEMWIDE) Here's how to build for OpenMP or CPU fallback, with Jumbo & autoconf. In Jumbo this now also works without JOHN_SYSTEMWIDE (since 9e5f65a today, so you need to use a snapshot from GitHub). _OpenMP fallback_ Here's how to do just native build but OpenMP fallback: ./configure --disable-openmp && make -s clean && make -sj8 && mv ../run/john ../run/john-non-omp && ./configure CPPFLAGS='-DOMP_FALLBACK -DOMP_FALLBACK_BINARY="\"john-non-omp\""' && make -s clean && make -sj8 && echo All Done Then, you always run "john" but it will silently switch to "john-non-omp" when applicable, for better performance. _CPU fallback_ Here's how to build a CPU-fallback chain (with OpenMP fallback too) without JOHN_SYSTEMWIDE. For eg. heterogenous MPI clusters, fallback is required so you can just run "john" on all nodes regardless of what SIMD feature set it's got: ./configure --disable-native-tests --disable-openmp && make -s clean && make -sj8 && mv ../run/john ../run/john-sse2-non-omp && ./configure --disable-native-tests CPPFLAGS='-DOMP_FALLBACK -DOMP_FALLBACK_BINARY="\"john-sse2-non-omp\""' && make -s clean && make -sj8 && mv ../run/john ../run/john-sse2 && ./configure --disable-native-tests CPPFLAGS=-mavx --disable-openmp && make -s clean && make -sj8 && mv ../run/john ../run/john-avx-non-omp && ./configure --disable-native-tests CPPFLAGS='-mavx -DOMP_FALLBACK -DOMP_FALLBACK_BINARY="\"john-avx-non-omp\"" -DCPU_FALLBACK -DCPU_FALLBACK_BINARY="\"john-sse2\""' && make -s clean && make -sj8 && mv ../run/john ../run/john-avx && ./configure --disable-native-tests CPPFLAGS=-mxop --disable-openmp && make -s clean && make -sj8 && mv ../run/john ../run/john-xop-non-omp && ./configure --disable-native-tests CPPFLAGS='-mxop -DOMP_FALLBACK -DOMP_FALLBACK_BINARY="\"john-xop-non-omp\"" -DCPU_FALLBACK -DCPU_FALLBACK_BINARY="\"john-avx\""' && make -s clean && make -sj8 && mv ../run/john ../run/john-xop && ./configure --disable-native-tests CPPFLAGS=-mavx2 --disable-openmp && make -s clean && make -sj8 && mv ../run/john ../run/john-non-omp && ./configure --disable-native-tests CPPFLAGS='-mavx2 -DOMP_FALLBACK -DOMP_FALLBACK_BINARY="\"john-non-omp\"" -DCPU_FALLBACK -DCPU_FALLBACK_BINARY="\"john-xop\""' && make -s clean && make -sj8 && echo All Done Then, you always run "john" but it will fallback to john-xop -> john-avx -> john-sse2 or to any of them with -non-omp, as appropriate. _CPU fallback, without XOP_ Here's the same as above but without XOP, because eg. Homebrew's gcc can't build XOP (as all current Macs has Intel CPU's, I guess). ./configure --disable-native-tests --disable-openmp && make -s clean && make -sj8 && mv ../run/john ../run/john-sse2-non-omp && ./configure --disable-native-tests CPPFLAGS='-DOMP_FALLBACK -DOMP_FALLBACK_BINARY="\"john-sse2-non-omp\""' && make -s clean && make -sj8 && mv ../run/john ../run/john-sse2 && ./configure --disable-native-tests CPPFLAGS=-mavx --disable-openmp && make -s clean && make -sj8 && mv ../run/john ../run/john-avx-non-omp && ./configure --disable-native-tests CPPFLAGS='-mavx -DOMP_FALLBACK -DOMP_FALLBACK_BINARY="\"john-avx-non-omp\"" -DCPU_FALLBACK -DCPU_FALLBACK_BINARY="\"john-sse2\""' && make -s clean && make -sj8 && mv ../run/john ../run/john-avx && ./configure --disable-native-tests CPPFLAGS=-mavx2 --disable-openmp && make -s clean && make -sj8 && mv ../run/john ../run/john-non-omp && ./configure --disable-native-tests CPPFLAGS='-mavx2 -DOMP_FALLBACK -DOMP_FALLBACK_BINARY="\"john-non-omp\"" -DCPU_FALLBACK -DCPU_FALLBACK_BINARY="\"john-avx\""' && make -s clean && make -sj8 && echo All Done magnum
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.