numenta / nupic-legacy

Numenta Platform for Intelligent Computing is an implementation of Hierarchical Temporal Memory (HTM), a theory of intelligence based strictly on the neuroscience of the neocortex.
http://numenta.org/
GNU Affero General Public License v3.0
6.34k stars 1.56k forks source link

NuPIC Installs and Runs on Windows OS #1439

Closed rhyolight closed 9 years ago

rhyolight commented 9 years ago

It would be great to have NuPIC install and run out-of-the-box on Windows operating system. This would extend our user-base considerably.

There is a ton of work going on in the https://github.com/numenta/nupic.core/pull/184 PR by @rcrowder and @kandeel. While that work is heading in the right direction and it's awesome to see such wonderful progress (and see an AppConveyor build running and passing!!), the PR is so large it's pretty much un-mergeable. I don't think we can allow all the third party code into our codebase. At the very least, someone will need to research the licenses for all this code, and it would be hard to believe that they will all be compatible with GPLv3.

I think the right way forward is to figure out how to install these dependencies without polluting the nupic.core codebase with a bunch of third-party code.

Depends on https://github.com/numenta/nupic.core/issues/266.


rcrowder commented 9 years ago

Thank you @rhyolight The grunt of the work by Utensil, Ahmed, myself, and others, have pushed this quite far ahead now.

The bug-bear, if our wire's aren't crossed, is the additional external dependency on the PCRE library (http://www.pcre.org/ https://github.com/rcrowder/nupic.core/blob/103-windows-build/external/win32/include/pcre/pcre.h). A library we use on the Win32 and Win64 versions for regular expression handling (Regex). I was hoping that when the move is made to C++11 Regex could be revisited, if possible with the new language additions.

We replicate the other external platforms use of pre-built libraries for Apr, Yaml, and Z Lib. I'll check through the source and see the extent of PCRE's usage.

Getting NuPIC modified to work on Windows has been partially achieved. The last time I tried it I had SWIG problems. I think David may have been further. It certainly seems feasible. And another potential reason to investigate Pip deployment for Windows.

rhyolight commented 9 years ago

Thanks for the update, @rcrowder. If you think the tasks you mentioned above can be defined as issues (with PRs for each issue), let me know so I can update the issue tracker. I'm trying to keep issues (and PRs) as short and succinct as possible. It makes collaboration much easier when work units are small.

rcrowder commented 9 years ago

New branch https://github.com/rcrowder/nupic/tree/windows-build

Green on Travis; https://travis-ci.org/rcrowder/nupic/jobs/42587316 Red on AppVeyor; https://ci.appveyor.com/project/rcrowder/nupic/branch/windows-build

With a local nupic.core built and installed (the 103-windows-build core branch), the setup.py gets much further than AppVeyor. As you may have seen on Gitter, I can get to a point of 'import nupic' in Python.

Build instructions have been added to the top level Readme https://github.com/rcrowder/nupic/blob/windows-build/README.md

rcrowder commented 9 years ago

@rhyolight I've added two Gists for the PyCharm console output for hello_sp and hello_tp - https://gist.github.com/rcrowder Still need to get all tests running and passing, so these may not match osx output.

Also lol'd with David on Gitter after seeing the new changes :smile:

rhyolight commented 9 years ago

@rcrowder Very nice!

rhyolight commented 9 years ago

I've done some reorganization of the Windows tickets for milestone 0.2 and 0.3. All the subtasks that were defined in this super issue were either covered in https://github.com/numenta/nupic.core/issues/266 or moved to 0.3 super issues (https://github.com/numenta/nupic/issues/1785 & https://github.com/numenta/nupic/issues/1786).