1

This question already has an answer here:

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!

marked as duplicate by Gene, Jacobm001 Aug 7 '17 at 3:55

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

  • Are you sure you need a 64 bit OS to run your software? The Pi doesn't have so much memory to require / use 64 bits. If there's a 32 bit option for whatever you want to do, it's probably equally good. Details might matter though. See also: raspberrypi.stackexchange.com/questions/61785/… – Brick Aug 1 '17 at 15:12
  • I wonder what software requires arm64 Ubuntu to run, and what is their target hardware. – Dmitry Grigoryev Aug 1 '17 at 15:42
  • Hi, thank you for your answers. I am not sure about the dublicate, since I am not sure if I actually need 64 bit Ubuntu, or a workaround for the situation. Let me clarify: the software I would like to use is ngsolve, you can find a link in the initial quesion now :) – the.polo Aug 1 '17 at 17:46
  • 1
    I agree it's not duplicate since this question is more specific. The website at the link seems to be down now. I had it for a second and then it seems to have crashed. From what I saw before it went down, I'm somewhat doubtful about running this on Raspberry Pi regardless of the 64-bit question. I think this going to be too computationally intensive, isn't it? – Brick Aug 1 '17 at 17:56
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.

  • 1
    Agreed. I don't see anything that implies it couldn't be compiled for an RPi. I don't think that there's much benefit to this running on the RPi, but that's a different issue entirely. – Jacobm001 Aug 1 '17 at 20:47
  • Hi! thank you for your answer! I tried installing from source before, however it failed with some error. I thought: must be a 64 bit problem, but maybe it was something else! is it possible that I NEED ubuntu instead of raspbian? I will try again in the evening and post the results! – the.polo Aug 3 '17 at 5:57
  • 1
    @the.polo Ask a new question about building ngsolve from source. Describe your steps and post the error messages you can't sovle yourself. Post a link to that question here in comments so I get a notification. I'll be glad to help. It's rare that you actually need Ubuntu, but it's possible that you're missing modules or libs which are installed on Ubuntu by default. – Dmitry Grigoryev Aug 3 '17 at 6:55
  • @DmitryGrigoryev here is my followup question raspberrypi.stackexchange.com/questions/71006/… sorry for the long wait. I tried compiling it now, but it did not work :/ – the.polo Aug 10 '17 at 14:55
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.

  • -1 While a half decent blog post, this really doesn't answer the question at hand. Secondly, If the application deals with large numbers, a 64 bit processor could still be beneficial. – Jacobm001 Aug 1 '17 at 20:45
  • @Jacobm001 I disagree with your assessment but will take the -1, the question was specifically 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 and the comment discussion specifically indicates the intent is "why" not "how" – crasic Aug 1 '17 at 20:48
  • @Jacobm001 You can have a system with 64bit and even 128bit register types with hardware math without 64 bit addressing, e.g intel MMX extensions did this for the original pentium and the FP extensions did to armv7, the math advantage is not tied to bittness, although default integer types would be larger and you can do more with standard register packing so certain, generic, implementations will be faster. – crasic Aug 1 '17 at 20:50

Not the answer you're looking for? Browse other questions tagged or ask your own question.