Running NuPIC on ARM platforms – non Raspberry solution!


#1

I wanted to run NuPIC on an ARM platform. The first choice was Raspberry Pi. But it does not run any 64 bit OS. So until either the 32 bit version of NuPIC is supported or a 64bit-OS runs on Raspberry Pi, I cannot do so. So I did some research to find a solution for my needs.

Enter [Dragon Board 410c]. It is compatible to Raspberry Pi in terms of processors (ARM Cortex-A53 Quad-core up to 1.2 GHz per core) and memory (1GB LPDDR3 SDRAM @ 533MHz).

I run [64 bit Debian (aarch64)] on it.

I made a few changes to CMakeLists.txt (such as adding –Wno-error=terminate) and source code (such as replacing armv7l with aarch64).

Because there were no errors in builds for Core and NuPIC, I tested it by pytest /tests/unit. I did not see any obvious failures. The last line is

=== 709 passed, 17 skipped, 8 xfailed, 5 pytest-warnings in 1950.21 seconds ====

Does this mean it worked?


#2

It did work.

The 8 xfailed means “expected failure”. There are a few tests that do that.

We run tests in our CI environments with this script instead:

python scripts/run_nupic_tests.py -u

This will give you a better visual indication of what is running and passing. And it will definitely return a non-zero exit status if there was an unexpected failure.


#3

Thanks for the writeup, @zeekayinfo3 !
(and sorry for thread-digging).

Are you still using HTM on ARM?
I’m interested in it for the fact that ARM now runs on so many embedded devices and mobiles, which is great platform for IoT and HTM.

I’m looking for some advice in CI for ARM, ideally integration with Github. So far I found Travis can run docker which will run some ARM OS which will compile HTM. But that’s quite a lot of embeddings. Is there some other, free ARM CI for Github? https://github.com/htm-community/nupic.cpp/issues/131

If you needed to make some code changes, and are willing to bring them up to our repo, it’ll be a great contribution and extending to the last platform to complete the mainstream (OSX, Win, Linux, ARM/Mobile) (I’m mixing OS and HW platforms, I know)


#4

Since I posted this, I have moved away from HTM. Right now, I have a big project that will occupy me until after this summer. If you can wait until then, I might go back and work on this more. However, it has been long since I touched this subject along with any computing environment necessary for this. I suspect it will take me some time before I can resume to the point I left off. So, the answer is that it is good to know someone showed some interest in what I tried to do over a year ago. Stay tuned.

P.S. My problem was with the 32 bit architecture. As long as you run on the 64 bit platform, it worked fine with ARM OS.


#5

Note that the 32 bit compatibility problem with NuPIC is not specific to ARM (x86 has the same issues).


#6

Thanks for the reply! I’ll try ARM64 first, so that should go well.
Still looking for some easy way to setup (free) CI.

Good luck with your work and do come back to us when you have time.


#7

Are more people still interested in 32bit builds?
If you are, could you out of curiosity try our repo? We ditched all ASM and lots of platform code replaced by standard c++ libs, so I wonder if it would just work ™ even if not tested/supported nowadays.


#8

Yes, planning to put some effort into supporting the community fork. Been a little distracted with non-HTM projects recently. :slight_smile:


#9

Opened


for tracking this