I am seeking advice on the installation for FEnICSx using conda and linking the environment to jupyter lab. Before this process I updated conda to the latest version. The steps I took for the installation and link for the kernel are as follows:
I have tried to link jupyter lab and the fenics conda environment many times now using multiple methods and am unsure where to go from here to successfully use jupyter lab. Any advice or help is much appreciated!
The jupyter lab link works successfully now, but the dolfinx package does not import. When I try to import dolfinx the kernel restarts. The other packages (basix, ffxc, ufl) are importing alright.
I’ll have a look tomorrow, but sharing the output of conda env export helps debug.
I’m pretty sure you can’t run osx-64 dolfinx on arm macs because rosetta doesn’t emulate avx, so you’ll get illegal instruction errors. You need to use the native osx-arm64 builds on an arm mac.
Thank you for the reply and I’ve placed the output of conda env export below:
name: base
channels:
anaconda
conda-forge
defaults
dependencies:
_ipyw_jlab_nb_ext_conf=0.1.0=py38_0
alabaster=0.7.12=py_0
anaconda=2020.11=py38_0
anaconda-client=1.7.2=py38_0
anaconda-navigator=1.10.0=py38_0
anaconda-project=0.8.4=py_0
applaunchservices=0.2.1=py_0
appnope=0.1.0=py38_1001
appscript=1.1.1=py38haf1e3a3_0
argh=0.26.2=py38_0
argon2-cffi=20.1.0=py38haf1e3a3_1
asn1crypto=1.4.0=py_0
astroid=2.4.2=py38_0
astropy=4.0.2=py38haf1e3a3_0
async_generator=1.10=py_0
atomicwrites=1.4.0=py_0
attrs=20.3.0=pyhd3eb1b0_0
autopep8=1.5.4=py_0
babel=2.8.1=pyhd3eb1b0_0
backcall=0.2.0=py_0
backports=1.0=py_2
backports.functools_lru_cache=2.0.0=pyhd8ed1ab_0
backports.shutil_get_terminal_size=1.0.0=py38_2
backports.tempfile=1.0=py_0
backports.weakref=1.0.post1=pyhd8ed1ab_1003
beautifulsoup4=4.9.3=pyhb0f4dca_0
bitarray=1.6.1=py38h9ed2024_0
bkcharts=0.2=py38_0
blas=1.0=mkl
bleach=3.2.1=py_0
blosc=1.20.1=hab81aa3_0
bokeh=2.2.3=py38_0
boto=2.49.0=py38_0
bottleneck=1.3.2=py38hf1fa96c_1
brotlipy=0.7.0=py38haf1e3a3_1000
bzip2=1.0.8=h1de35cc_0
ca-certificates=2020.10.14=0
certifi=2020.6.20=pyhd3eb1b0_3
cffi=1.14.3=py38hed5b41f_0
chardet=3.0.4=py38_1003
click=7.1.2=py_0
cloudpickle=1.6.0=py_0
clyent=1.2.2=py38_1
colorama=0.4.4=py_0
conda=4.14.0=py38h50d1736_0
conda-build=3.20.5=py38_1
conda-env=2.6.0=1
conda-package-handling=1.9.0=py38hef030d1_1
conda-verify=3.4.2=py_1
contextlib2=0.6.0.post1=py_0
cryptography=3.1.1=py38hddc9c9b_0
curl=7.71.1=hb0a8c7a_1
cycler=0.10.0=py38_0
cython=0.29.21=py38hb1e8313_0
cytoolz=0.11.0=py38haf1e3a3_0
dask=2.30.0=py_0
dask-core=2.30.0=py_0
dbus=1.13.18=h18a8e69_0
decorator=4.4.2=py_0
defusedxml=0.6.0=py_0
diff-match-patch=20200713=py_0
distributed=2.30.1=py38hecd8cb5_0
docutils=0.16=py38_1
entrypoints=0.3=py38_0
et_xmlfile=1.0.1=py_1001
expat=2.2.10=hb1e8313_2
fastcache=1.1.0=py38h1de35cc_0
filelock=3.0.12=py_0
flake8=3.8.4=py_0
flask=1.1.2=py_0
freetype=2.10.4=ha233b18_0
fsspec=0.8.3=py_0
future=0.18.2=py38_1
get_terminal_size=1.0.0=h7520d66_0
gettext=0.19.8.1=hb0f4f8b_2
gevent=20.9.0=py38haf1e3a3_0
glib=2.66.1=h9bbe63b_0
glob2=0.7=py_0
gmp=6.1.2=hb37e062_1
gmpy2=2.0.8=py38h6ef4df4_3
greenlet=0.4.17=py38haf1e3a3_0
h5py=2.10.0=py38h3134771_0
hdf5=1.10.4=hfa1e0ec_0
heapdict=1.0.1=py_0
html5lib=1.1=py_0
icu=58.2=h0a44026_3
idna=2.10=py_0
imageio=2.9.0=py_0
imagesize=1.2.0=py_0
importlib-metadata=2.0.0=py_1
importlib_metadata=2.0.0=1
iniconfig=1.1.1=py_0
intel-openmp=2019.4=233
intervaltree=3.1.0=py_0
ipykernel=5.3.4=py38h5ca1d4c_0
ipython=7.19.0=py38h01d92e1_0
ipython_genutils=0.2.0=py38_0
ipywidgets=7.5.1=py_1
isort=5.6.4=py_0
itsdangerous=1.1.0=py_0
jbig=2.1=h4d881f8_0
jdcal=1.4.1=py_0
jedi=0.17.1=py38_0
jinja2=2.11.2=py_0
joblib=0.17.0=py_0
jpeg=9b=he5867d9_2
json5=0.9.5=py_0
jsonschema=3.2.0=py_2
jupyter=1.0.0=py38_7
jupyter_client=6.1.7=py_0
jupyter_console=6.2.0=py_0
jupyter_core=4.6.3=py38_0
jupyterlab=2.2.6=py_0
jupyterlab_pygments=0.1.2=py_0
jupyterlab_server=1.2.0=py_0
keyring=21.4.0=py38_1
kiwisolver=1.3.0=py38h23ab428_0
krb5=1.18.2=h75d18d8_0
lazy-object-proxy=1.4.3=py38h1de35cc_0
lcms2=2.11=h92f6f08_0
libarchive=3.4.2=haa3ed63_0
libcurl=7.71.1=h8a08a2b_1
libcxx=10.0.0=1
libedit=3.1.20191231=h1de35cc_1
libffi=3.3=hb1e8313_2
libgfortran=3.0.1=h93005f0_2
libiconv=1.16=h1de35cc_0
liblief=0.10.1=h0a44026_0
libllvm10=10.0.1=h76017ad_5
libpng=1.6.37=ha441bb4_0
libsodium=1.0.18=h1de35cc_0
libspatialindex=1.9.3=h0a44026_0
libssh2=1.9.0=ha12b0ac_1
libtiff=4.1.0=hcb84e12_1
libxml2=2.9.10=h7cdb67c_3
libxslt=1.1.34=h83b36ba_0
llvm-openmp=10.0.0=h28b9765_0
llvmlite=0.34.0=py38h739e7dc_4
locket=0.2.0=py38_1
lxml=4.6.1=py38h63b7cb6_0
lz4-c=1.9.2=h79c402e_3
lzo=2.10=haf1e3a3_2
markupsafe=1.1.1=py38h1de35cc_1
matplotlib=3.3.2=0
matplotlib-base=3.3.2=py38h181983e_0
mccabe=0.6.1=py38_1
mistune=0.8.4=py38h1de35cc_1001
mkl=2019.4=233
mkl-service=2.3.0=py38hfbe908c_0
mkl_fft=1.2.0=py38hc64f4ea_0
mkl_random=1.1.1=py38h959d312_0
mock=4.0.2=py_0
more-itertools=8.6.0=pyhd3eb1b0_0
mpc=1.1.0=h6ef4df4_1
mpfr=4.0.2=h9066e36_1
mpmath=1.1.0=py38_0
msgpack-python=1.0.0=py38h04f5b5a_1
multipledispatch=0.6.0=py38_0
navigator-updater=0.2.1=py38_0
nbclient=0.5.1=py_0
nbconvert=6.0.7=py38_0
nbformat=5.0.8=py_0
ncurses=6.2=h0a44026_1
nest-asyncio=1.4.2=pyhd3eb1b0_0
networkx=2.5=py_0
nltk=3.5=py_0
nose=1.3.7=py38_1004
notebook=6.1.4=py38_0
numba=0.51.2=py38h6440ff4_1
numexpr=2.7.1=py38hce01a72_0
numpy=1.19.2=py38h456fd55_0
numpy-base=1.19.2=py38hcfb5961_0
numpydoc=1.1.0=pyhd3eb1b0_1
olefile=0.46=py_0
openpyxl=3.0.5=py_0
openssl=1.1.1h=haf1e3a3_0
packaging=20.4=py_0
pandas=1.1.3=py38hb1e8313_0
pandoc=2.11=h0dc7051_0
pandocfilters=1.4.3=py38hecd8cb5_1
parso=0.7.0=py_0
partd=1.1.0=py_0
path=15.0.0=py38_0
path.py=12.5.0=0
pathlib2=2.3.5=py38_1
pathtools=0.1.2=py_1
patsy=0.5.1=py38_0
pcre=8.44=hb1e8313_0
pep8=1.7.1=py38_0
pexpect=4.8.0=py38_1
pickleshare=0.7.5=py38_1001
pillow=8.0.1=py38h5270095_0
pip=20.2.4=py38hecd8cb5_0
pkginfo=1.6.1=py38hecd8cb5_0
pluggy=0.13.1=py38_0
ply=3.11=py38_0
prometheus_client=0.8.0=py_0
prompt-toolkit=3.0.8=py_0
prompt_toolkit=3.0.8=0
psutil=5.7.2=py38haf1e3a3_0
ptyprocess=0.6.0=py38_0
py=1.9.0=py_0
py-lief=0.10.1=py38haf313ee_0
pycodestyle=2.6.0=py_0
pycosat=0.6.3=py38h1de35cc_1
pycparser=2.20=py_2
pycurl=7.43.0.6=py38hddc9c9b_0
pydocstyle=5.1.1=py_0
pyflakes=2.2.0=py_0
pygments=2.7.2=pyhd3eb1b0_0
pylint=2.6.0=py38_0
pyodbc=4.0.30=py38h0a44026_0
pyopenssl=19.1.0=py_1
pyparsing=2.4.7=py_0
pyqt=5.9.2=py38h655552a_2
pyrsistent=0.17.3=py38haf1e3a3_0
pysocks=1.7.1=py38_1
pytables=3.6.1=py38h4727e94_0
pytest=6.1.1=py38_0
python=3.8.5=h26836e1_1
python-dateutil=2.8.1=py_0
python-jsonrpc-server=0.4.0=py_0
python-language-server=0.35.1=py_0
python-libarchive-c=2.9=py_0
python.app=2=py38_10
python_abi=3.8=2_cp38
pytz=2020.1=py_0
pywavelets=1.1.1=py38haf1e3a3_2
pyyaml=5.3.1=py38haf1e3a3_1
pyzmq=19.0.2=py38hb1e8313_1
qdarkstyle=2.8.1=py_0
qt=5.9.7=h468cd18_1
qtawesome=1.0.1=py_0
qtconsole=4.7.7=py_0
qtpy=1.9.0=py_0
readline=8.0=h1de35cc_0
regex=2020.10.15=py38haf1e3a3_0
requests=2.24.0=py_0
ripgrep=12.1.1=0
rope=0.18.0=py_0
rtree=0.9.4=py38_1
ruamel_yaml=0.15.87=py38haf1e3a3_1
scikit-image=0.17.2=py38h81aa140_0
scikit-learn=0.23.2=py38h959d312_0
scipy=1.5.2=py38h2515648_0
seaborn=0.11.0=py_0
send2trash=1.5.0=py38_0
setuptools=50.3.1=py38hecd8cb5_1
simplegeneric=0.8.1=py38_2
singledispatch=3.4.0.3=py_1001
sip=4.19.8=py38h0a44026_0
six=1.15.0=py38hecd8cb5_0
snowballstemmer=2.0.0=py_0
sortedcollections=1.2.1=py_0
sortedcontainers=2.2.2=py_0
soupsieve=2.0.1=py_0
sphinx=3.2.1=py_0
sphinxcontrib=1.0=py38_1
sphinxcontrib-applehelp=1.0.2=py_0
sphinxcontrib-devhelp=1.0.2=py_0
sphinxcontrib-htmlhelp=1.0.3=py_0
sphinxcontrib-jsmath=1.0.1=py_0
sphinxcontrib-qthelp=1.0.3=py_0
sphinxcontrib-serializinghtml=1.1.4=py_0
sphinxcontrib-websupport=1.2.4=py_0
spyder=4.1.5=py38_0
spyder-kernels=1.9.4=py38_0
sqlalchemy=1.3.20=py38h9ed2024_0
sqlite=3.33.0=hffcf06c_0
statsmodels=0.12.0=py38haf1e3a3_0
sympy=1.6.2=py38hecd8cb5_1
tblib=1.7.0=py_0
terminado=0.9.1=py38_0
testpath=0.4.4=py_0
threadpoolctl=2.1.0=pyh5ca1d4c_0
tifffile=2020.10.1=py38h0cf3a3e_2
tk=8.6.10=hb0a8c7a_0
toml=0.10.1=py_0
toolz=0.11.1=py_0
tornado=6.0.4=py38h1de35cc_1
tqdm=4.50.2=py_0
traitlets=5.0.5=py_0
typing_extensions=3.7.4.3=py_0
ujson=4.0.1=py38hb1e8313_0
unicodecsv=0.14.1=py38_0
unixodbc=2.3.9=haf1e3a3_0
urllib3=1.25.11=py_0
watchdog=0.10.3=py38haf1e3a3_0
wcwidth=0.2.5=py_0
webencodings=0.5.1=py38_1
werkzeug=1.0.1=py_0
wheel=0.35.1=py_0
widgetsnbextension=3.5.1=py38_0
wrapt=1.11.2=py38h1de35cc_0
wurlitzer=2.0.1=py38_0
xlrd=1.2.0=py_0
xlsxwriter=1.3.7=py_0
xlwings=0.20.8=py38_0
xlwt=1.3.0=py38_0
xmltodict=0.13.0=pyhd8ed1ab_0
xz=5.2.5=h1de35cc_0
yaml=0.2.5=haf1e3a3_0
yapf=0.30.0=py_0
zeromq=4.3.3=hb1e8313_3
zict=2.0.0=py_0
zipp=3.4.0=pyhd3eb1b0_0
zlib=1.2.11=h1de35cc_3
zope=1.0=py38_1
zope.event=4.5.0=py38_0
zope.interface=5.1.2=py38haf1e3a3_0
zstd=1.4.5=h41d2c2f_0
pip:
h5json==1.1.3
lib6003==0.0.4
pyaudio==0.2.11
pyfehm==1.0.4
prefix: /Users//anaconda3
I am not familiar with the difference between installing conda modules using a native osx-arm64 build and the rosetta. Perhaps you may elaborate on this so I can learn for current and future fenics builds.
Thank you and I appreciate you taking a look at the issue tomorrow!
will tell you about your conda installation. In particular, the platform field is relevant here, which tells you the os and architecture your packages are compiled for. If you are on an ARM mac, the platform should probably be osx-arm64, but I’m pretty sure yours is osx-64, which means your packages are compiled for an Intel mac. If that’s the case, you should probably get the macOS arm64 installer here and start fresh.
ARM macs can (mostly) emulate x86_64. That’s why your osx-64 installation mostly works. However, they don’t emulate the full extended instruction set, and one or more fenics dependencies use AVX on Intel chips, which fails under emulation on ARM (aside: I think this changed somewhat recently, I haven’t had a chance to track it down and determine if it should be the case).
You can pick the different channels on a per-environment basis, but that’s tricky and prone to error if you install packages more than once. To create an osx-arm64 dolfinx env on an osx-64 conda installation:
This is almost the install command you had, but trading osx-64 for osx-arm64. If you install the arm64 miniforge, these will be the default channels, and you won’t need to specify any channels to get these in the future.