1

I am owner of a Raspberry Pi 3 and I would like to run some 64 bit software on it. I have read the posts about 64 bit ubuntu, but I don't understand what exactly 64-bit x86 image and a 32-bit ARM allows me to do. Also what exact role the kernal playes. Also most of the posts regarding the matter seem quite old.

I have some software that usually requires Ubuntu 64-bit 15.10 or newer, is it possible to run it on my raspberry pi?

The software I would like to run, in particular, would be NGSolve.

Thank you in advance!

the.polo
  • 111
  • 1
  • 6

2 Answers2

4

NGsolve doesn't seem to require 64-bit support, however, there's no binary package available for it that could run on a Raspberry Pi. You could try installing it from sources as described here. I didn't spot anything that could prevent it from working on Raspbian, but I haven't tried to install it either.

Dmitry Grigoryev
  • 28,277
  • 6
  • 54
  • 147
2

x86_64 (aka amd64) is a 64 bit version of the infamous intel architecture, arm32 or arm64 are 32 and 64 bit versions of the arm architecture, but there are many sub-versions. The chip that runs on raspberry pi 3 B supports the arm64 (aka armv8) architecture, but it is used in 32 bit mode (aka armv7) in the standard raspbian release. In any case you would need to compile the software in the architecture of the raspberry pi, there is no way to run ubuntu for x86_64 on the raspberry pi


The most outwardly visible difference when running 64 bit software is that each individual process has access to a 64 bit virtual memory space.

To backtrack a bit, Each process, except the kernel, lives in a little sandbox that appears to the code as a completely empty memory with 64 bit addresses this looks like ~16EB (exabyte). This space must contain all the code, supporting code, and data for the application.

This virtual memory is shotgunned into the physical memory by the kernel and the processor. So while each individual process potentially has 16EB of virtual memory, you still only have 1GB on the RPI to use for all your applications.

Now to the question - Why would one want to use a 64 bit OS on a system with so little physical memory? There are a few possibilities.

  • You want to use a piece of software only available for arm64
  • You want to test/develop software for arm64
  • You want to memory map large IO into a process

One of the advantages of a 64 bit memory space is that you can, in certain cases map an entire memory device like flash into memory. In which case 32 bit addressing is not sufficient to memory map, say a 32GB serial flash device.

  • You have a computational need for larger hardware registers

If you deal with large numbers or use software algorithms that pack multiple values into a single variable, the larger registers may provide an advantage.

  • You have a need for some other enhancement or fix in the command set

The new arm architecture that supports 64 bits may have other improvements or enhancements that you would like to use.

crasic
  • 3,033
  • 1
  • 11
  • 20