Openwall GNU/*/Linux - a small security-enhanced Linux distro for servers
[<prev] [next>] [day] [month] [year] [list]
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

Your e-mail address:

Powered by Openwall GNU/*/Linux - Powered by OpenVZ