PyTorch-Raspberry-Pi-64-OS
PyTorch-Raspberry-Pi-64-OS copied to clipboard
Wheel does not work on Raspbian Bullseye
How can I fix this?
@mightyroy,
Do you have a 32 or 64 bit Bullseye? $ uname -a
I've made the wheel for the 64 bit version.
How can I fix?
Try: $ sudo apt-get install libopenmpi3
Yeah I'm having the same issue. I did the sudo apt-get install libopenmpi3 as well.

Would be cool to figure this out. This is on a RPi4b.
@windowshopr,
Did you follow the instructions at https://qengineering.eu/install-pytorch-on-raspberry-pi-4.html before using the wheel? In other words
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install python3-pip libjpeg-dev libopenblas-dev libopenmpi-dev libomp-dev
$ sudo -H pip3 install setuptools==58.3.0
$ sudo -H pip3 install Cython
Can confirm. I followed those steps, but still get that error :( I also used pip install Cython setuptools==58.3.0 in addition to sudo -H pip3 install setuptools==58.3.0 and sudo -H pip3 install Cython as one of the output'd messages gave a warning about running pip as root and can result in broken permissions, so I just wanted to be sure. They were ran successfully twice, which makes me think things get installed in 2 different places on the machine depending on which command you use. I just default to using pip. But anyway, still no go.
One thing to point out, and maybe this is my issue now that I'm seeing it, is that I'm running Python 3.10.5, but trying to use the wheel for 3.9 as it was the most recent one. Could that be it? Would be cool to see a wheel for 3.10 if so.
@windowshopr,
I think the best (and shortest) solution is to build PyTorch on your machine from scratch. This way you ensure that the installation matches your operating system. It takes a few hours. See https://qengineering.eu/install-pytorch-on-raspberry-pi-4.html for instructions.
@Qengineering Good suggestion, I'll do that and report my findings back.
EDIT
Though I see those instructions are only for arch64, not arm71 like my pi is. I found an article here, and repo here for installing torch on arm devices that I'll follow.
Here's my latest update. The previous articles/repos were only for Fedora, which doesn't help in my Raspbian case.
I instead found this repo and ran these commands in order. Not sure if the first command is needed, I had already run it from the previous article, but it was done anyway.
These were done after researching different steps at different times, from different sources, which I won't source here to keep things simple, but if things seem out of place or "why did he do that?", don't mind, just documenting the steps as I go.
sudo apt install qemu-system-arm qemu-user-static virt-manager
sudo apt update && sudo apt upgrade
git clone https://github.com/ljk53/pytorch-rpi.git
cd pytorch-rpi
MAX_JOBS=2 LIBTORCH_VARIANT=aarch64-cxx11-abi-shared-without-deps ./build_libtorch.sh
Ran into the error:
/tmp/cc0imd8P.s:186: Error: selected processor does not support `vsdot.s8 q10,q12,d7[1]' in ARM mode
ninja: build stopped: subcommand failed.
Which is likely because I was trying to use the aarch64 file on an arm device (D'OH!). So I re-ran a new command:
MAX_JOBS=2 LIBTORCH_VARIANT=armv7l-cxx11-abi-shared-without-deps ./build_libtorch.sh
Same error as above.
Found a potential solution here, so downloaded that tar file from there, transferred it to the Pi, and continued with:
tar -xvzf cross-gcc-10.3.0-pi_64.tar.gz
sudo apt update && sudo apt dist-upgrade
sudo apt-get install build-essential gawk gcc g++ gfortran git texinfo bison libncurses-dev -y
PATH=/cross-pi-gcc-10.3.0-64/bin:$PATH
LD_LIBRARY_PATH=/cross-pi-gcc-10.3.0-64/lib:$LD_LIBRARY_PATH
wget https://raw.githubusercontent.com/abhiTronix/raspberry-pi-cross-compilers/master/utils/SSymlinker
sudo chmod +x SSymlinker
./SSymlinker -s /usr/include/arm-linux-gnueabihf/asm -d /usr/include
./SSymlinker -s /usr/include/arm-linux-gnueabihf/gnu -d /usr/include
./SSymlinker -s /usr/include/arm-linux-gnueabihf/bits -d /usr/include
./SSymlinker -s /usr/include/arm-linux-gnueabihf/sys -d /usr/include
./SSymlinker -s /usr/include/arm-linux-gnueabihf/openssl -d /usr/include
./SSymlinker -s /usr/lib/arm-linux-gnueabihf/crtn.o -d /usr/lib/crtn.o
./SSymlinker -s /usr/lib/arm-linux-gnueabihf/crt1.o -d /usr/lib/crt1.o
./SSymlinker -s /usr/lib/arm-linux-gnueabihf/crti.o -d /usr/lib/crti.o
Then tried to re-run the aarch64 command just to see...
MAX_JOBS=2 LIBTORCH_VARIANT=aarch64-cxx11-abi-shared-without-deps ./build_libtorch.sh
I also tried re-running the arm command:
MAX_JOBS=2 LIBTORCH_VARIANT=armv7l-cxx11-abi-shared-without-deps ./build_libtorch.sh
Same error. So something is up with the compiler. And I have run out of patience lol so if anyone figures out how to get Torch installed on an RPi4 Bullseye 11 Arm64, post the instructions!
I'm not sure if it helps, but the `vsdot.s8 q10,q12,d7[1]' error seems to be a GCC compiler issue. I always use the Clang compiler for PyTorch. Never GCC as it gives many unpredictable errors.
Hmm. I’ll give that a shot next time I’m at it and see what I can do. Thanks!