Skip to content

Conversation

@nabijaczleweli
Copy link

Before:

$ mix ecto.setup
==> explorer
Compiling 29 files (.ex)

20:07:38.808 [debug] Copying NIF from cache and extracting to /home/nabijaczleweli/work/beambox-logbook/_build/dev/lib/explorer/priv/native/libexplorer-v0.10.1-nif-2.15-x86_64-unknown-linux-gnu.so.tar.gz
Illegal instruction

and indeed I'm missing some features:

$ for f in fxsr sse sse2 ssse3 sse4_1 sse4_2 popcnt avx fma; do grep -m1 flags /proc/cpuinfo  | grep -wq $f || echo no $f; done
no avx
no fma

Some IO.inspects reveal use_legacy is always a bool, since Application.compile_env/3's default argument of System.get_env("EXPLORER_USE_LEGACY_ARTIFACTS") in ["true", "1"] is always a bool:

$ mix deps.get
use_legacy: false
is_nil(use_legacy): false
needed_caps: ["fxsr", "sse", "sse2", "ssse3", "sse4_1", "sse4_2", "popcnt", "avx", "fma"]
Explorer.ComptimeUtils.cpu_with_all_caps?(needed_caps): false
use_legacy or (is_nil(use_legacy) and not Explorer.ComptimeUtils.cpu_with_all_caps?(needed_caps)): false

After:

$ mix ecto.setup
==> explorer
Compiling 29 files (.ex)
use_legacy: nil
is_nil(use_legacy): true
needed_caps: ["fxsr", "sse", "sse2", "ssse3", "sse4_1", "sse4_2", "popcnt", "avx", "fma"]
Explorer.ComptimeUtils.cpu_with_all_caps?(needed_caps): false
if is_nil(use_legacy), do: not Explorer.ComptimeUtils.cpu_with_all_caps?(needed_caps), else: use_legacy: true


20:32:03.923 [debug] Copying NIF from cache and extracting to /home/nabijaczleweli/work/beambox-logbook/_build/dev/lib/explorer/priv/native/libexplorer-v0.10.1-nif-2.15-x86_64-unknown-linux-gnu--legacy_cpu.so.tar.gz

Before:
	$ mix ecto.setup
	==> explorer
	Compiling 29 files (.ex)

	20:07:38.808 [debug] Copying NIF from cache and extracting to /home/nabijaczleweli/work/beambox-logbook/_build/dev/lib/explorer/priv/native/libexplorer-v0.10.1-nif-2.15-x86_64-unknown-linux-gnu.so.tar.gz
	Illegal instruction

	$ for f in fxsr sse sse2 ssse3 sse4_1 sse4_2 popcnt avx fma; do grep -m1 flags /proc/cpuinfo  | grep -wq $f || echo no $f; done
	no avx
	no fma

	$ mix deps.get
	use_legacy: false
	is_nil(use_legacy): false
	needed_caps: ["fxsr", "sse", "sse2", "ssse3", "sse4_1", "sse4_2", "popcnt", "avx", "fma"]
	Explorer.ComptimeUtils.cpu_with_all_caps?(needed_caps): false
	use_legacy or (is_nil(use_legacy) and not Explorer.ComptimeUtils.cpu_with_all_caps?(needed_caps)): false

After:
	$ mix ecto.setup
	==> explorer
	Compiling 29 files (.ex)
	use_legacy: nil
	is_nil(use_legacy): true
	needed_caps: ["fxsr", "sse", "sse2", "ssse3", "sse4_1", "sse4_2", "popcnt", "avx", "fma"]
	Explorer.ComptimeUtils.cpu_with_all_caps?(needed_caps): false
	if is_nil(use_legacy), do: not Explorer.ComptimeUtils.cpu_with_all_caps?(needed_caps), else: use_legacy: true

	20:32:03.923 [debug] Copying NIF from cache and extracting to /home/nabijaczleweli/work/beambox-logbook/_build/dev/lib/explorer/priv/native/libexplorer-v0.10.1-nif-2.15-x86_64-unknown-linux-gnu--legacy_cpu.so.tar.gz

Sponsored-by: https://beaverlabs.net
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant