JetsonNXにtensorflow2.4をインストール jetpack4.5

jetpack4.5(python3.6.9)の仮想環境にtensorflow2をインストールする。

本家参考ページ
https://docs.nvidia.com/deeplearning/frameworks/install-tf-jetson-platform/index.html
これに従って、仮想環境を使おうとしたら、知識が足りなくて少々はまってしまった。
##本家の前提を実施
記載の前提条件（2. Prerequisites and Dependencies）のpipコマンド以外を実行。

```
$ sudo apt-get update
$ sudo apt-get install libhdf5-serial-dev hdf5-tools libhdf5-dev zlib1g-dev zip libjpeg8-dev liblapack-dev libblas-dev gfortran
$ sudo apt-get install python3-pip
```

##仮想環境の構築
venvで仮想環境に入りpythonのバージョン確認（念のため）とpipの更新を行う。

```
$ python3 -m venv tf_temp
$ source tf_temp/bin/activate
(tf_temp) $ python -V
Python 3.6.9
(tf_temp) $ python -m pip install --upgrade pip
```

その後、ライブラリ一覧を用いてインストール。

```
(tf_temp) $ pip install -r requirements_all.txt
```

この後、jupyter notebook でjupyterを起動してブラウザから以下のコマンドで確認。

```
import tensorflow as tf
print("Tensorflow version " + tf.__version__)

from tensorflow.python.client import device_lib
device_lib.list_local_devices()
```


このライブラリ一覧はpython3.6.9 jetpack4.5でうまくいっているモノです。以下の2行がミソ。
--pre --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v45
tensorflow==2.4.0+nv21.4

pyenvで作ったpython3.8.10の仮想環境では失敗。

```sh:requirements_all.txt
absl-py==0.12.0
argon2-cffi==20.1.0
astunparse==1.6.3
async-generator==1.10
attrs==20.3.0
backcall==0.2.0
bleach==3.3.0
cachetools==4.2.2
certifi==2020.12.5
cffi==1.14.5
chardet==4.0.0
dataclasses==0.8
decorator==5.0.7
defusedxml==0.7.1
entrypoints==0.3
flatbuffers==1.12
future==0.18.2
futures==3.1.1
gast==0.3.3
google-auth==1.30.0
google-auth-oauthlib==0.4.4
google-pasta==0.2.0
grpcio==1.32.0
h5py==2.10.0
idna==2.10
importlib-metadata==4.0.1
ipykernel==5.5.4
ipython==7.16.1
ipython-genutils==0.2.0
ipywidgets==7.6.3
jedi==0.18.0
Jinja2==2.11.3
jsonschema==3.2.0
jupyter==1.0.0
jupyter-client==6.1.12
jupyter-console==6.4.0
jupyter-core==4.7.1
jupyterlab-pygments==0.1.2
jupyterlab-widgets==1.0.0
Keras-Applications==1.0.8
Keras-Preprocessing==1.1.2
Markdown==3.3.4
MarkupSafe==1.1.1
mistune==0.8.4
mock==3.0.5
nbclient==0.5.3
nbconvert==6.0.7
nbformat==5.1.3
nest-asyncio==1.5.1
notebook==6.3.0
numpy==1.19.4
oauthlib==3.1.0
opt-einsum==3.3.0
packaging==20.9
pandocfilters==1.4.3
parso==0.8.2
pbr==5.6.0
pexpect==4.8.0
pickleshare==0.7.5
pip==21.1.1
pkg-resources==0.0.0
prometheus-client==0.10.1
prompt-toolkit==3.0.18
protobuf==3.15.8
ptyprocess==0.7.0
pyasn1==0.4.8
pyasn1-modules==0.2.8
pybind11==2.6.2
pycparser==2.20
Pygments==2.9.0
pyparsing==2.4.7
pyrsistent==0.17.3
python-dateutil==2.8.1
pyzmq==22.0.3
qtconsole==5.1.0
QtPy==1.9.0
requests==2.25.1
requests-oauthlib==1.3.0
rsa==4.7.2
Send2Trash==1.5.0
setuptools==49.6.0
six==1.15.0
tensorboard==2.5.0
tensorboard-data-server==0.6.1
tensorboard-plugin-wit==1.8.0
--pre --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v45
tensorflow==2.4.0+nv21.4
tensorflow-estimator==2.4.0
termcolor==1.1.0
terminado==0.9.4
testpath==0.4.4
testresources==2.0.1
tornado==6.1
traitlets==4.3.3
typing-extensions==3.7.4.3
urllib3==1.26.4
wcwidth==0.2.5
webencodings==0.5.1
Werkzeug==2.0.0rc5
wheel==0.36.2
widgetsnbextension==3.5.1
wrapt==1.12.1
zipp==3.4.1
```
##sklearn (scikit-learn)の追加
pip install sklearnだけでいいはずだが、はまった。
python プログラムから呼び出してimportする際に、コンパイルされていないとエラーメッセージが出た。
sklearnのバージョンを少し落としてみると import error....libgomp.so.1 cannot allocate memory in static TLS Block等々

対処法としては、以下の１行を.bashrcに追記すれば良い。
export LD_PRELOAD=/usr/lib/aarch64-linux-gnu/libgomp.so.1
exportは環境変数を指定するコマンド
LD_PRELOADは最優先で見に行くライブラリ＝＞全体に影響を与えると怖い。