spaCy/spacy/syntax
Matthew Honnibal 2c37e0ccf6
💫 Use Blis for matrix multiplications (#2966)
Our epic matrix multiplication odyssey is drawing to a close...

I've now finally got the Blis linear algebra routines in a self-contained Python package, with wheels for Windows, Linux and OSX. The only missing platform at the moment is Windows Python 2.7. The result is at https://github.com/explosion/cython-blis

Thinc v7.0.0 will make the change to Blis. I've put a Thinc v7.0.0.dev0 up on PyPi so that we can test these changes with the CI, and even get them out to spacy-nightly, before Thinc v7.0.0 is released. This PR also updates the other dependencies to be in line with the current versions master is using. I've also resolved the msgpack deprecation problems, and gotten spaCy and Thinc up to date with the latest Cython.

The point of switching to Blis is to have control of how our matrix multiplications are executed across platforms. When we were using numpy for this, a different library would be used on pip and conda, OSX would use Accelerate, etc. This would open up different bugs and performance problems, especially when multi-threading was introduced.

With the change to Blis, we now strictly single-thread the matrix multiplications. This will make it much easier to use multiprocessing to parallelise the runtime, since we won't have nested parallelism problems to deal with.

* Use blis

* Use -2 arg to Cython

* Update dependencies

* Fix requirements

* Update setup dependencies

* Fix requirement typo

* Fix msgpack errors

* Remove Python27 test from Appveyor, until Blis works there

* Auto-format setup.py

* Fix murmurhash version
2018-11-27 00:44:04 +01:00
..
__init__.pxd * Work on greedy parser 2014-12-16 22:46:55 +11:00
__init__.py * Work on greedy parser 2014-12-16 22:46:55 +11:00
_beam_utils.pxd Refactor parser (#2308) 2018-05-15 22:17:29 +02:00
_beam_utils.pyx Refactor parser (#2308) 2018-05-15 22:17:29 +02:00
_parser_model.pxd Fix parser for GPU 2018-05-19 17:24:34 +00:00
_parser_model.pyx 💫 Use Blis for matrix multiplications (#2966) 2018-11-27 00:44:04 +01:00
_state.pxd Try to fix root-outside-sentence bug 2018-05-02 14:39:48 +00:00
_state.pyx Tidy up syntax 2017-10-27 19:45:57 +02:00
arc_eager.pxd WIP on stringstore change. 27 failures 2017-05-28 14:06:40 +02:00
arc_eager.pyx Revert "Improve dynamic oracle when values are missing in parse" 2018-05-16 00:31:52 +02:00
ner.pxd WIP on stringstore change. 27 failures 2017-05-28 14:06:40 +02:00
ner.pyx Fix out-of-bounds access in NER training 2018-10-27 01:12:50 +02:00
nn_parser.pxd Refactor parser (#2308) 2018-05-15 22:17:29 +02:00
nn_parser.pyx 💫 Use Blis for matrix multiplications (#2966) 2018-11-27 00:44:04 +01:00
nonproj.pxd integrated pseudo-projective parsing into parser 2016-03-01 10:09:08 +01:00
nonproj.pyx Merge master into develop. Big merge, many conflicts -- need to review 2018-04-29 14:49:26 +02:00
stateclass.pxd Fix memory leak in beam parser 2017-11-14 02:11:40 +01:00
stateclass.pyx Fix memory leak in beam parser 2017-11-14 02:11:40 +01:00
transition_system.pxd Revert "Merge branch 'develop' of https://github.com/explosion/spaCy into develop" 2018-03-27 19:23:02 +02:00
transition_system.pyx Add extra comment on 'add label' in parser 2018-08-15 15:37:24 +02:00