Giter Site home page Giter Site logo

ceygen's Introduction

Ceygen

Note: this software is not maintained since 2015.

About

Ceygen is a binary Python extension module for linear algebra with Cython typed memoryviews. Ceygen is built atop the Eigen C++ library. Ceygen is not a Cython wrapper or an interface to Eigen!

The name Ceygen is a rather poor wordplay on Cython + Eigen; it has nothing to do with software piracy. Ceygen is distributed under the MIT license.

Cython was developed by Matěj Laitl with support from the Institute of Information Theory and Automation, Academy of Sciences of the Czech Republic. Feel free to send me a mail to matej at laitl dot cz.

Features

Ceygen...

  • is fast - Ceygen's primary raison d'être is to provide overhead-free algebraic operations for Cython projects that work with typed memoryviews (especially small-sized). For every function there is a code-path where no Python function is called, no memory is allocated on heap and no data is copied. Eigen itself performs rather well, too.
  • is documented - see Documentation or hop directly to on-line docs.
  • supports various data types - Ceygen uses Cython fused types (a.k.a. wannabe templates) along with Eigen's template nature to support various data types without duplicating code. While just a few types are pre-defined (float, double, ...), adding a new type is a matter of adding 3 lines and rebuilding Ceygen.
  • is extensively tested - Ceygen's test suite validates every its public method, including errors raised on invalid input. Thanks to Travis CI, every push is automatically tested against Python 2.6, 2.7, 3.2 and 3.3.
  • is multithreading-friendly - Every Ceygen function doesn't acquire the GIL unless it needs to create a Python object (always avoidable); all functions are declared nogil so that you can call them in prange blocks without losing parallelism.
  • provides descriptive error messages - Care is taken to propagate all errors properly (down from Eigen) so that you are not stuck debugging your program. Ceygen functions don't crash on invalid input but rather raise reasonable errors.
  • works well with NumPy, but doesn't depend on it. You don't need NumPy to build or run Ceygen, but thanks to Cython, Cython memoryviews and NumPy arrays are fully interchangeable without copying the data (where it is possible). The test suite currently makes use of NumPy because of our laziness. :-)

On the other hand, Ceygen...

  • depends on Eigen build-time. Ceygen expects Eigen 3 headers to be installed under /usr/lib/eigen3 when it is being built. Installing Eigen is a matter of unpacking it, because it is a pure template library defined solely in the headers. Ceygen doesn't reference Eigen at all at runtime because all code is complited in.
  • still provides a very little subset of Eigen functionality. We add new functions only as we need them in another projects, but we believe that the hard part is the infrastructure - implementing a new function should be rather straightforward (with decent Cython and C++ knowledge). We're very open to pull requests! (do include unit tests in them)
  • needs recent Cython (currently at least 0.19.1) to compile. If this is a problem, you can distribute .cpp files or final Python extension module instead.
  • doesn't bring Eigen's elegance to Cython - if you think of lazy evaluation and advanced expessions, stop dreaming. Ceygen will make your code faster, not nicer. Array expessions will help here.

A simple example to compute matrix product within a big matrix may look like

>>> cdef double[:, :] big = np.array([[1.,  2.,   2.,  0.,   0.,  0.],
>>>                                   [3.,  4.,   0., -2.,   0.,  0.]])
>>> ceygen.core.dot_mm(big[:, 0:2], big[:, 2:4], big[:, 4:6])
[[ 2. -4.]
 [ 6. -8.]]
>>> big
[[ 1.  2.   2.  0.   2. -4.]
 [ 3.  4.   0. -2.   6. -8.]],

where the dot_mm call above doesn't copy any data, allocates no memory on heap, doesn't need the GIL and uses vectorization (SSE, AltiVec...) to get the best out of your processor.

Obtaining

Ceygen development happens in its github repository, git clone [email protected]:strohel/Ceygen.git -ing is the preferred way to get it as you'll have the latest & greatest version (which shouldn't break thanks to continuous integration). Released versions are available from Ceygen's PyPI page.

Building

Ceygen uses standard Distutils to build, test and install itself, simply run:

  • python setup.py build to build Ceygen
  • python setup.py test to test it (inside build directory)
  • python setup.py install to install it
  • python setup.py clean to clean generated object, .cpp and .html files (perhaps to force recompilation)

Commands can be combined, automatically call dependent commands and can take options, the recommended combo to safely install Ceygen is therefore python setup.py -v test install.

Building Options

You can set various build options as it is usual with distutils, see python setup.py --help. Notable is the build_ext command and its --include-dirs (standard) and following additional options (whose are Ceygen extensions):

--include-dirs defaults to /usr/include/eigen3 and must be specified if you've installed Eigen 3 to a non-standard directory,
--cflags defaults to -O2 -march=native -fopenmp. Please note that it is important to enable optimizations and generation of appropriate MMX/SSE/altivec-enabled code as the actual computation code from Eigen is built along with the boilerplate Ceygen code,
--ldflags additional flags to pass to linker, defaults to -fopenmp. Use standard --libraries for specifying extra libraries to link against,
--annotate pass --annotate to Cython to produce annotated HTML files during compiling. Only useful during Ceygen development.

You may want to remove -fopenmp from cflags and ldflags if you are already parallelising above Ceygen. The resulting command could look like python setup.py -v build_ext --include-dirs=/usr/local/include/eigen3 --cflags="-O3 -march=core2" --ldflags= test. The same could be achieved by putting the options to a setup.cfg file:

[build_ext]
include_dirs = /usr/local/include/eigen3
cflags = -O3 -march=core2
ldflags =

Documentation

Ceygen documentation is maintained in reStructuredText format under doc/ directory and can be exported into a variety of formats using Sphinx (version at least 1.0 needed). Just type make in that directory to see a list of supported formats and for example make html to build HTML pages with the documentation.

See ChangeLog.rst file for changes between versions or view it online.

On-line documentation is available at http://strohel.github.com/Ceygen-doc/

Bugs

Please report any bugs you find and suggestions you may have to Ceygen's github Issue Tracker.

ceygen's People

Contributors

strohel avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

ceygen's Issues

`pip` install fails

  % pip install Ceygen                                                  
Downloading/unpacking Ceygen
  Downloading Ceygen-0.3.tar.gz
  Running setup.py (path:/tmp/pip-build-1uva238w/Ceygen/setup.py) egg_info for package Ceygen
    Traceback (most recent call last):
      File "<string>", line 17, in <module>
      File "/tmp/pip-build-1uva238w/Ceygen/setup.py", line 18, in <module>
        module.language = "c++"
    AttributeError: 'list' object has no attribute 'language'
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):

  File "<string>", line 17, in <module>

  File "/tmp/pip-build-1uva238w/Ceygen/setup.py", line 18, in <module>

    module.language = "c++"

AttributeError: 'list' object has no attribute 'language'

Trying to install on Mac - TypeError

running test
running build
running build_py
creating build
creating build/lib.macosx-10.8-x86_64-2.7
creating build/lib.macosx-10.8-x86_64-2.7/ceygen
copying ceygen/init.py -> build/lib.macosx-10.8-x86_64-2.7/ceygen
creating build/lib.macosx-10.8-x86_64-2.7/ceygen/tests
copying ceygen/tests/init.py -> build/lib.macosx-10.8-x86_64-2.7/ceygen/tests
copying ceygen/tests/main.py -> build/lib.macosx-10.8-x86_64-2.7/ceygen/tests
copying ceygen/tests/support.py -> build/lib.macosx-10.8-x86_64-2.7/ceygen/tests
copying ceygen/core.pxd -> build/lib.macosx-10.8-x86_64-2.7/ceygen
copying ceygen/dtype.pxd -> build/lib.macosx-10.8-x86_64-2.7/ceygen
copying ceygen/elemwise.pxd -> build/lib.macosx-10.8-x86_64-2.7/ceygen
copying ceygen/llt.pxd -> build/lib.macosx-10.8-x86_64-2.7/ceygen
copying ceygen/lu.pxd -> build/lib.macosx-10.8-x86_64-2.7/ceygen
copying ceygen/reductions.pxd -> build/lib.macosx-10.8-x86_64-2.7/ceygen
running build_ext
Compiling ceygen/core.pyx because it changed.
Compiling ceygen/dtype.pyx because it changed.
Compiling ceygen/elemwise.pyx because it changed.
Compiling ceygen/llt.pyx because it changed.
Compiling ceygen/lu.pyx because it changed.
Compiling ceygen/reductions.pyx because it changed.
Compiling ceygen/tests/bench.pyx because it changed.
Compiling ceygen/tests/test_core.pyx because it changed.
Compiling ceygen/tests/test_dispatch.pyx because it changed.
Compiling ceygen/tests/test_dtype.pyx because it changed.
Compiling ceygen/tests/test_elemwise.pyx because it changed.
Compiling ceygen/tests/test_llt.pyx because it changed.
Compiling ceygen/tests/test_lu.pyx because it changed.
Compiling ceygen/tests/test_reductions.pyx because it changed.
Cythonizing ceygen/core.pyx
Cythonizing ceygen/dtype.pyx
warning: ceygen/dtype.pyx:16:4: Unreachable code
warning: ceygen/dtype.pyx:18:4: Unreachable code
warning: ceygen/dtype.pyx:20:4: Unreachable code
warning: ceygen/dtype.pyx:22:4: Unreachable code
warning: ceygen/dtype.pyx:24:4: Unreachable code
Cythonizing ceygen/elemwise.pyx
Cythonizing ceygen/llt.pyx
Cythonizing ceygen/lu.pyx
Cythonizing ceygen/reductions.pyx
Cythonizing ceygen/tests/bench.pyx
Traceback (most recent call last):
File "setup.py", line 59, in
'Topic :: Software Development :: Libraries :: Python Modules',
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/core.py", line 152, in setup
dist.run_commands()
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 953, in run_commands
self.run_command(cmd)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 972, in run_command
cmd_obj.run()
File "/Users/almacmillan/Sites/raptor2/raptor2/Ceygen/support/dist_cmd_test.py", line 31, in run
self.run_command('build') # build if not alredy run
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/cmd.py", line 326, in run_command
self.distribution.run_command(command)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 972, in run_command
cmd_obj.run()
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/command/build.py", line 127, in run
self.run_command(cmd_name)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/cmd.py", line 326, in run_command
self.distribution.run_command(command)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 972, in run_command
cmd_obj.run()
File "/Users/almacmillan/Sites/raptor2/raptor2/Ceygen/support/dist_cmd_build_ext.py", line 45, in run
annotate=self.annotate, force=self.force, build_dir=self.build_temp)
File "/Users/almacmillan/.virtualenvs/coachfairer/lib/python2.7/site-packages/Cython/Build/Dependencies.py", line 785, in cythonize
cythonize_one(_args[1:])
File "/Users/almacmillan/.virtualenvs/coachfairer/lib/python2.7/site-packages/Cython/Build/Dependencies.py", line 885, in cythonize_one
result = compile([pyx_file], options)
File "/Users/almacmillan/.virtualenvs/coachfairer/lib/python2.7/site-packages/Cython/Compiler/Main.py", line 608, in compile
return compile_multiple(source, options)
File "/Users/almacmillan/.virtualenvs/coachfairer/lib/python2.7/site-packages/Cython/Compiler/Main.py", line 586, in compile_multiple
result = run_pipeline(source, options, context=context)
File "/Users/almacmillan/.virtualenvs/coachfairer/lib/python2.7/site-packages/Cython/Compiler/Main.py", line 433, in run_pipeline
err, enddata = Pipeline.run_pipeline(pipeline, source)
File "/Users/almacmillan/.virtualenvs/coachfairer/lib/python2.7/site-packages/Cython/Compiler/Pipeline.py", line 328, in run_pipeline
data = phase(data)
File "/Users/almacmillan/.virtualenvs/coachfairer/lib/python2.7/site-packages/Cython/Compiler/Pipeline.py", line 52, in generate_pyx_code_stage
module_node.process_implementation(options, result)
File "/Users/almacmillan/.virtualenvs/coachfairer/lib/python2.7/site-packages/Cython/Compiler/ModuleNode.py", line 109, in process_implementation
self.generate_c_code(env, options, result)
File "/Users/almacmillan/.virtualenvs/coachfairer/lib/python2.7/site-packages/Cython/Compiler/ModuleNode.py", line 326, in generate_c_code
self.body.generate_function_definitions(env, code)
File "/Users/almacmillan/.virtualenvs/coachfairer/lib/python2.7/site-packages/Cython/Compiler/Nodes.py", line 394, in generate_function_definitions
stat.generate_function_definitions(env, code)
File "/Users/almacmillan/.virtualenvs/coachfairer/lib/python2.7/site-packages/Cython/Compiler/Nodes.py", line 394, in generate_function_definitions
stat.generate_function_definitions(env, code)
File "/Users/almacmillan/.virtualenvs/coachfairer/lib/python2.7/site-packages/Cython/Compiler/Nodes.py", line 4146, in generate_function_definitions
self.body.generate_function_definitions(self.scope, code)
File "/Users/almacmillan/.virtualenvs/coachfairer/lib/python2.7/site-packages/Cython/Compiler/Nodes.py", line 394, in generate_function_definitions
stat.generate_function_definitions(env, code)
File "/Users/almacmillan/.virtualenvs/coachfairer/lib/python2.7/site-packages/Cython/Compiler/Nodes.py", line 2861, in generate_function_definitions
FuncDefNode.generate_function_definitions(self, env, code)
File "/Users/almacmillan/.virtualenvs/coachfairer/lib/python2.7/site-packages/Cython/Compiler/Nodes.py", line 1798, in generate_function_definitions
self.generate_function_body(env, code)
File "/Users/almacmillan/.virtualenvs/coachfairer/lib/python2.7/site-packages/Cython/Compiler/Nodes.py", line 1567, in generate_function_body
self.body.generate_execution_code(code)
File "/Users/almacmillan/.virtualenvs/coachfairer/lib/python2.7/site-packages/Cython/Compiler/Nodes.py", line 400, in generate_execution_code
stat.generate_execution_code(code)
File "/Users/almacmillan/.virtualenvs/coachfairer/lib/python2.7/site-packages/Cython/Compiler/Nodes.py", line 5697, in generate_execution_code
self.body.generate_execution_code(code)
File "/Users/almacmillan/.virtualenvs/coachfairer/lib/python2.7/site-packages/Cython/Compiler/Nodes.py", line 400, in generate_execution_code
stat.generate_execution_code(code)
File "/Users/almacmillan/.virtualenvs/coachfairer/lib/python2.7/site-packages/Cython/Compiler/Nodes.py", line 6033, in generate_execution_code
self.body.generate_execution_code(code)
File "/Users/almacmillan/.virtualenvs/coachfairer/lib/python2.7/site-packages/Cython/Compiler/Nodes.py", line 6475, in generate_execution_code
fresh_finally_clause().generate_execution_code(code)
File "/Users/almacmillan/.virtualenvs/coachfairer/lib/python2.7/site-packages/Cython/Compiler/Nodes.py", line 6463, in fresh_finally_clause
node_copy = copy.deepcopy(node)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 190, in deepcopy
y = _reconstruct(x, rv, 1, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 334, in _reconstruct
state = deepcopy(state, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 163, in deepcopy
y = copier(x, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 257, in _deepcopy_dict
y[deepcopy(key, memo)] = deepcopy(value, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 190, in deepcopy
y = _reconstruct(x, rv, 1, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 334, in _reconstruct
state = deepcopy(state, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 163, in deepcopy
y = copier(x, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 257, in _deepcopy_dict
y[deepcopy(key, memo)] = deepcopy(value, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 190, in deepcopy
y = _reconstruct(x, rv, 1, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 334, in _reconstruct
state = deepcopy(state, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 163, in deepcopy
y = copier(x, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 257, in _deepcopy_dict
y[deepcopy(key, memo)] = deepcopy(value, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 190, in deepcopy
y = _reconstruct(x, rv, 1, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 334, in _reconstruct
state = deepcopy(state, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 163, in deepcopy
y = copier(x, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 257, in _deepcopy_dict
y[deepcopy(key, memo)] = deepcopy(value, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 190, in deepcopy
y = _reconstruct(x, rv, 1, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 334, in _reconstruct
state = deepcopy(state, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 163, in deepcopy
y = copier(x, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 257, in _deepcopy_dict
y[deepcopy(key, memo)] = deepcopy(value, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 190, in deepcopy
y = _reconstruct(x, rv, 1, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 334, in _reconstruct
state = deepcopy(state, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 163, in deepcopy
y = copier(x, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 257, in _deepcopy_dict
y[deepcopy(key, memo)] = deepcopy(value, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 163, in deepcopy
y = copier(x, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 230, in _deepcopy_list
y.append(deepcopy(a, memo))
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 190, in deepcopy
y = _reconstruct(x, rv, 1, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 334, in _reconstruct
state = deepcopy(state, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 163, in deepcopy
y = copier(x, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 257, in _deepcopy_dict
y[deepcopy(key, memo)] = deepcopy(value, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 163, in deepcopy
y = copier(x, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 230, in _deepcopy_list
y.append(deepcopy(a, memo))
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 190, in deepcopy
y = _reconstruct(x, rv, 1, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 334, in _reconstruct
state = deepcopy(state, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 163, in deepcopy
y = copier(x, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 257, in _deepcopy_dict
y[deepcopy(key, memo)] = deepcopy(value, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 163, in deepcopy
y = copier(x, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 230, in _deepcopy_list
y.append(deepcopy(a, memo))
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 190, in deepcopy
y = _reconstruct(x, rv, 1, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 334, in _reconstruct
state = deepcopy(state, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 163, in deepcopy
y = copier(x, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 257, in _deepcopy_dict
y[deepcopy(key, memo)] = deepcopy(value, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 190, in deepcopy
y = _reconstruct(x, rv, 1, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 334, in _reconstruct
state = deepcopy(state, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 163, in deepcopy
y = copier(x, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 257, in _deepcopy_dict
y[deepcopy(key, memo)] = deepcopy(value, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 163, in deepcopy
y = copier(x, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 230, in _deepcopy_list
y.append(deepcopy(a, memo))
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 190, in deepcopy
y = _reconstruct(x, rv, 1, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 334, in _reconstruct
state = deepcopy(state, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 163, in deepcopy
y = copier(x, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 257, in _deepcopy_dict
y[deepcopy(key, memo)] = deepcopy(value, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 190, in deepcopy
y = _reconstruct(x, rv, 1, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 334, in _reconstruct
state = deepcopy(state, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 163, in deepcopy
y = copier(x, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 257, in _deepcopy_dict
y[deepcopy(key, memo)] = deepcopy(value, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 190, in deepcopy
y = _reconstruct(x, rv, 1, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 334, in _reconstruct
state = deepcopy(state, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 163, in deepcopy
y = copier(x, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 257, in _deepcopy_dict
y[deepcopy(key, memo)] = deepcopy(value, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 190, in deepcopy
y = _reconstruct(x, rv, 1, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 334, in _reconstruct
state = deepcopy(state, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 163, in deepcopy
y = copier(x, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 257, in _deepcopy_dict
y[deepcopy(key, memo)] = deepcopy(value, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 190, in deepcopy
y = _reconstruct(x, rv, 1, memo)
File "/usr/local/Cellar/python/2.7.4/Frameworks/Python.framework/Versions/2.7/lib/python2.7/copy.py", line 329, in _reconstruct
y = callable(_args)
File "/Users/almacmillan/.virtualenvs/coachfairer/bin/../lib/python2.7/copy_reg.py", line 93, in newobj
return cls.new(cls, *args)
TypeError: object.new(cStringIO.StringO) is not safe, use cStringIO.StringO.new()

Ceygen incompatible with Eigen3.2.5

The problem is in the last function in lu.pyx

Here is the build log:
https://gist.github.com/Dapid/94cff5f6f3b4124a23da

My guess is that the problem is somewhere in the MSDispatcher:

cdef cppclass MSDispatcher[Scalar]:
    void run(Scalar *x_data, Py_ssize_t *x_shape, Py_ssize_t *x_strides,
             Scalar *o,
             void (*c)(Scalar *, Py_ssize_t *, Py_ssize_t *, CContig, Scalar *) nogil,
             void (*f)(Scalar *, Py_ssize_t *, Py_ssize_t *, FContig, Scalar *) nogil,
             void (*n)(Scalar *, Py_ssize_t *, Py_ssize_t *, NContig, Scalar *) nogil,
    ) nogil except +

But I don't know what dies it correspond to in Eigen to check if there has been any changes.

Installation on Windows/ Problems

Hi I installed ceygen 0.2 and saved the eigen folder within it.

I am using TDM GCC on windows 7. I ahve eigen downloaded and have cereated a setup.cfg to point to it.

I have two issues:

  1. after setiing benchmark for numpy=1, the tests run, but seem to show numpy aas faster (higher gflops and lower time) than ceygen.

  2. there are errors in a few tests..

I like the idea of ceygen and it might prove to be effective if I can ge this working!

thanks!

Edit: I also donwloaded this master branch and I got another set of errors.

REsults from Ceygen 0.2---------------------------------------------------------------------------------------------------------------------------------
size: 1024, iterations: 488281
ceygen: 7.99e-07s per call, 0.390s total, 2.56 GFLOPS
ok
test_bench_iinv (ceygen.tests.bench.Bench) ...
size: 2_2, iterations: 1000000
ceygen: 1.24e-06s per call, 1.238s total, 0.01 GFLOPS
size: 3_3, iterations: 1000000
ceygen: 1.39e-06s per call, 1.395s total, 0.02 GFLOPS
size: 4_4, iterations: 1000000
ceygen: 1.53e-06s per call, 1.526s total, 0.04 GFLOPS
size: 6_6, iterations: 1000000
ceygen: 2.15e-06s per call, 2.153s total, 0.10 GFLOPS
size: 8_8, iterations: 488281
ceygen: 2.62e-06s per call, 1.280s total, 0.20 GFLOPS
size: 12_12, iterations: 144675
ceygen: 3.98e-06s per call, 0.576s total, 0.43 GFLOPS
size: 16_16, iterations: 61035
ceygen: 6.08e-06s per call, 0.371s total, 0.67 GFLOPS
size: 24_24, iterations: 18084
ceygen: 1.38e-05s per call, 0.249s total, 1.00 GFLOPS
size: 32_32, iterations: 7629
ceygen: 2.40e-05s per call, 0.183s total, 1.37 GFLOPS
size: 48_48, iterations: 2260
ceygen: 5.62e-05s per call, 0.127s total, 1.97 GFLOPS
size: 64_64, iterations: 953
ceygen: 1.40e-04s per call, 0.133s total, 1.88 GFLOPS
size: 96_96, iterations: 282
ceygen: 3.58e-04s per call, 0.101s total, 2.47 GFLOPS
size: 128_128, iterations: 119
ceygen: 6.47e-04s per call, 0.077s total, 3.24 GFLOPS
size: 192_192, iterations: 35
ceygen: 1.71e-03s per call, 0.060s total, 4.13 GFLOPS
size: 256_256, iterations: 14
ceygen: 3.71e-03s per call, 0.052s total, 4.52 GFLOPS
size: 384_384, iterations: 4
ceygen: 1.20e-02s per call, 0.048s total, 4.72 GFLOPS
size: 512_512, iterations: 1
ceygen: 2.80e-02s per call, 0.028s total, 4.79 GFLOPS
size: 768_768, iterations: 1
ceygen: 8.90e-02s per call, 0.089s total, 5.09 GFLOPS
size: 1024_1024, iterations: 1
ceygen: 2.12e-01s per call, 0.212s total, 5.06 GFLOPS
ok
test_bench_inv (ceygen.tests.bench.Bench) ...
size: 2_2, iterations: 1000000
ceygen: 1.37e-06s per call, 1.375s total, 0.01 GFLOPS
size: 3_3, iterations: 1000000
ceygen: 1.48e-06s per call, 1.485s total, 0.02 GFLOPS
size: 4_4, iterations: 1000000
ceygen: 1.61e-06s per call, 1.608s total, 0.04 GFLOPS
size: 6_6, iterations: 1000000
ceygen: 2.23e-06s per call, 2.231s total, 0.10 GFLOPS
size: 8_8, iterations: 488281
ceygen: 2.62e-06s per call, 1.279s total, 0.20 GFLOPS
size: 12_12, iterations: 144675
ceygen: 4.06e-06s per call, 0.587s total, 0.43 GFLOPS
size: 16_16, iterations: 61035
ceygen: 6.14e-06s per call, 0.375s total, 0.67 GFLOPS
size: 24_24, iterations: 18084
ceygen: 1.42e-05s per call, 0.257s total, 0.97 GFLOPS
size: 32_32, iterations: 7629
ceygen: 2.40e-05s per call, 0.183s total, 1.37 GFLOPS
size: 48_48, iterations: 2260
ceygen: 5.62e-05s per call, 0.127s total, 1.97 GFLOPS
size: 64_64, iterations: 953
ceygen: 1.40e-04s per call, 0.133s total, 1.88 GFLOPS
size: 96_96, iterations: 282
ceygen: 3.55e-04s per call, 0.100s total, 2.49 GFLOPS
size: 128_128, iterations: 119
ceygen: 5.71e-04s per call, 0.068s total, 3.67 GFLOPS
size: 192_192, iterations: 35
ceygen: 1.74e-03s per call, 0.061s total, 4.06 GFLOPS
size: 256_256, iterations: 14
ceygen: 4.07e-03s per call, 0.057s total, 4.12 GFLOPS
size: 384_384, iterations: 4
ceygen: 1.20e-02s per call, 0.048s total, 4.72 GFLOPS
size: 512_512, iterations: 1
ceygen: 2.80e-02s per call, 0.028s total, 4.79 GFLOPS
size: 768_768, iterations: 1
ceygen: 9.10e-02s per call, 0.091s total, 4.98 GFLOPS
size: 1024_1024, iterations: 1
ceygen: 2.11e-01s per call, 0.211s total, 5.09 GFLOPS
ok
test_bench_multiply_mm (ceygen.tests.bench.Bench) ...
size: 2_2, iterations: 1000000
numpy: 4.53e-07s per call, 0.453s total, 0.01 GFLOPS
ceygen: 2.17e-07s per call, 0.217s total, 0.02 GFLOPS
size: 3_3, iterations: 1000000
numpy: 4.57e-07s per call, 0.457s total, 0.02 GFLOPS
ceygen: 2.33e-07s per call, 0.233s total, 0.04 GFLOPS
size: 4_4, iterations: 1000000
numpy: 4.58e-07s per call, 0.458s total, 0.03 GFLOPS
ceygen: 2.36e-07s per call, 0.236s total, 0.07 GFLOPS
size: 6_6, iterations: 1000000
numpy: 4.67e-07s per call, 0.467s total, 0.08 GFLOPS
ceygen: 2.61e-07s per call, 0.261s total, 0.14 GFLOPS
size: 8_8, iterations: 1000000
numpy: 4.82e-07s per call, 0.482s total, 0.13 GFLOPS
ceygen: 2.94e-07s per call, 0.294s total, 0.22 GFLOPS
size: 12_12, iterations: 1000000
numpy: 5.28e-07s per call, 0.528s total, 0.27 GFLOPS
ceygen: 3.86e-07s per call, 0.386s total, 0.37 GFLOPS
size: 16_16, iterations: 976562
numpy: 5.63e-07s per call, 0.550s total, 0.45 GFLOPS
ceygen: 5.46e-07s per call, 0.533s total, 0.47 GFLOPS
size: 24_24, iterations: 434027
numpy: 6.98e-07s per call, 0.303s total, 0.83 GFLOPS
ceygen: 9.19e-07s per call, 0.399s total, 0.63 GFLOPS
size: 32_32, iterations: 244140
numpy: 8.89e-07s per call, 0.217s total, 1.15 GFLOPS
ceygen: 1.47e-06s per call, 0.358s total, 0.70 GFLOPS
size: 48_48, iterations: 108506
numpy: 1.49e-06s per call, 0.162s total, 1.54 GFLOPS
ceygen: 3.01e-06s per call, 0.327s total, 0.76 GFLOPS
size: 64_64, iterations: 61035
numpy: 2.24e-06s per call, 0.137s total, 1.82 GFLOPS
ceygen: 5.11e-06s per call, 0.312s total, 0.80 GFLOPS
size: 96_96, iterations: 27126
numpy: 5.49e-06s per call, 0.149s total, 1.68 GFLOPS
ceygen: 1.25e-05s per call, 0.340s total, 0.74 GFLOPS
size: 128_128, iterations: 15258
numpy: 8.52e-06s per call, 0.130s total, 1.92 GFLOPS
ceygen: 1.99e-05s per call, 0.304s total, 0.82 GFLOPS
size: 192_192, iterations: 6781
numpy: 2.11e-05s per call, 0.143s total, 1.75 GFLOPS
ceygen: 4.42e-05s per call, 0.300s total, 0.83 GFLOPS
size: 256_256, iterations: 3814
numpy: 3.70e-05s per call, 0.141s total, 1.77 GFLOPS
ceygen: 7.81e-05s per call, 0.298s total, 0.84 GFLOPS
size: 384_384, iterations: 1695
numpy: 8.50e-05s per call, 0.144s total, 1.74 GFLOPS
ceygen: 1.76e-04s per call, 0.298s total, 0.84 GFLOPS
size: 512_512, iterations: 953
numpy: 1.51e-04s per call, 0.144s total, 1.73 GFLOPS
ceygen: 3.13e-04s per call, 0.298s total, 0.84 GFLOPS
size: 768_768, iterations: 423
numpy: 4.54e-04s per call, 0.192s total, 1.30 GFLOPS
ceygen: 7.64e-04s per call, 0.323s total, 0.77 GFLOPS
size: 1024*1024, iterations: 238
numpy: 1.45e-03s per call, 0.345s total, 0.72 GFLOPS
ceygen: 1.73e-03s per call, 0.411s total, 0.61 GFLOPS
ok
test_bench_multiply_vs (ceygen.tests.bench.Bench) ...
size: 2, iterations: 1000000
ceygen: 1.73e-07s per call, 0.173s total, 0.01 GFLOPS
size: 3, iterations: 1000000
ceygen: 1.69e-07s per call, 0.169s total, 0.02 GFLOPS
size: 4, iterations: 1000000
ceygen: 1.70e-07s per call, 0.170s total, 0.02 GFLOPS
size: 6, iterations: 1000000
ceygen: 1.73e-07s per call, 0.173s total, 0.03 GFLOPS
size: 8, iterations: 1000000
ceygen: 1.80e-07s per call, 0.180s total, 0.04 GFLOPS
size: 12, iterations: 1000000
ceygen: 1.81e-07s per call, 0.181s total, 0.07 GFLOPS
size: 16, iterations: 1000000
ceygen: 1.78e-07s per call, 0.178s total, 0.09 GFLOPS
size: 24, iterations: 1000000
ceygen: 1.86e-07s per call, 0.186s total, 0.13 GFLOPS
size: 32, iterations: 1000000
ceygen: 1.88e-07s per call, 0.188s total, 0.17 GFLOPS
size: 48, iterations: 1000000
ceygen: 2.10e-07s per call, 0.210s total, 0.23 GFLOPS
size: 64, iterations: 1000000
ceygen: 2.00e-07s per call, 0.200s total, 0.32 GFLOPS
size: 96, iterations: 1000000
ceygen: 2.14e-07s per call, 0.214s total, 0.45 GFLOPS
size: 128, iterations: 1000000
ceygen: 2.39e-07s per call, 0.239s total, 0.54 GFLOPS
size: 192, iterations: 1000000
ceygen: 2.90e-07s per call, 0.290s total, 0.66 GFLOPS
size: 256, iterations: 976562
ceygen: 2.87e-07s per call, 0.280s total, 0.89 GFLOPS
size: 384, iterations: 651041
ceygen: 3.70e-07s per call, 0.241s total, 1.04 GFLOPS
size: 512, iterations: 488281
ceygen: 4.30e-07s per call, 0.210s total, 1.19 GFLOPS
size: 768, iterations: 325520
ceygen: 5.53e-07s per call, 0.180s total, 1.39 GFLOPS
size: 1024, iterations: 244140
ceygen: 6.68e-07s per call, 0.163s total, 1.53 GFLOPS
ok
test_dot_mm (ceygen.tests.test_core.TestCore) ... ERROR
test_dot_mm_baddims (ceygen.tests.test_core.TestCore) ... ok
test_dot_mm_none (ceygen.tests.test_core.TestCore) ... ok
test_dot_mm_strides (ceygen.tests.test_core.TestCore) ... ERROR
test_dot_mv (ceygen.tests.test_core.TestCore) ... ok
test_dot_mv_baddims (ceygen.tests.test_core.TestCore) ... ok
test_dot_mv_none (ceygen.tests.test_core.TestCore) ... ok
test_dot_mv_strides (ceygen.tests.test_core.TestCore) ... ok
test_dot_mv_transposed (ceygen.tests.test_core.TestCore) ... ok
test_dot_vm (ceygen.tests.test_core.TestCore) ... ok
test_dot_vm_baddims (ceygen.tests.test_core.TestCore) ... ok
test_dot_vm_none (ceygen.tests.test_core.TestCore) ... ok
test_dot_vm_transposed (ceygen.tests.test_core.TestCore) ... ok
test_dot_vv (ceygen.tests.test_core.TestCore) ... ok
test_dot_vv_baddims (ceygen.tests.test_core.TestCore) ... ok
test_dot_vv_none (ceygen.tests.test_core.TestCore) ... ok
test_dot_vv_strides (ceygen.tests.test_core.TestCore) ... ok
test_from_readme (ceygen.tests.test_core.TestCore) ... ERROR
test_mmm (ceygen.tests.test_dispatch.TestDispatch) ... ok
test_mms (ceygen.tests.test_dispatch.TestDispatch) ... ok
test_ms (ceygen.tests.test_dispatch.TestDispatch) ... ok
test_mv (ceygen.tests.test_dispatch.TestDispatch) ... ok
test_mvv (ceygen.tests.test_dispatch.TestDispatch) ... ok
test_vs (ceygen.tests.test_dispatch.TestDispatch) ... ok
test_vvs (ceygen.tests.test_dispatch.TestDispatch) ... ok
test_vvv (ceygen.tests.test_dispatch.TestDispatch) ... ok
test_add_mm (ceygen.tests.test_elemwise.TestElemwise) ... ok
test_add_mm_baddims (ceygen.tests.test_elemwise.TestElemwise) ... ok
test_add_mm_none (ceygen.tests.test_elemwise.TestElemwise) ... ok
test_add_ms (ceygen.tests.test_elemwise.TestElemwise) ... ok
test_add_ms_baddims (ceygen.tests.test_elemwise.TestElemwise) ... ok
test_add_ms_none (ceygen.tests.test_elemwise.TestElemwise) ... ok
test_add_vs (ceygen.tests.test_elemwise.TestElemwise) ... ok
test_add_vs_baddims (ceygen.tests.test_elemwise.TestElemwise) ... ok
test_add_vs_none (ceygen.tests.test_elemwise.TestElemwise) ... ok
test_add_vv (ceygen.tests.test_elemwise.TestElemwise) ... ok
test_add_vv_baddims (ceygen.tests.test_elemwise.TestElemwise) ... ok
test_add_vv_none (ceygen.tests.test_elemwise.TestElemwise) ... ok
test_divide_mm (ceygen.tests.test_elemwise.TestElemwise) ... ok
test_divide_mm_baddims (ceygen.tests.test_elemwise.TestElemwise) ... ok
test_divide_mm_none (ceygen.tests.test_elemwise.TestElemwise) ... ok
test_divide_vv (ceygen.tests.test_elemwise.TestElemwise) ... ok
test_divide_vv_baddims (ceygen.tests.test_elemwise.TestElemwise) ... ok
test_divide_vv_none (ceygen.tests.test_elemwise.TestElemwise) ... ok
test_multiply_mm (ceygen.tests.test_elemwise.TestElemwise) ... ok
test_multiply_mm_baddims (ceygen.tests.test_elemwise.TestElemwise) ... ok
test_multiply_mm_none (ceygen.tests.test_elemwise.TestElemwise) ... ok
test_multiply_ms (ceygen.tests.test_elemwise.TestElemwise) ... ok
test_multiply_ms_baddims (ceygen.tests.test_elemwise.TestElemwise) ... ok
test_multiply_ms_none (ceygen.tests.test_elemwise.TestElemwise) ... ok
test_multiply_vs (ceygen.tests.test_elemwise.TestElemwise) ... ok
test_multiply_vs_baddims (ceygen.tests.test_elemwise.TestElemwise) ... ok
test_multiply_vs_none (ceygen.tests.test_elemwise.TestElemwise) ... ok
test_multiply_vv (ceygen.tests.test_elemwise.TestElemwise) ... ok
test_multiply_vv_baddims (ceygen.tests.test_elemwise.TestElemwise) ... ok
test_multiply_vv_none (ceygen.tests.test_elemwise.TestElemwise) ... ok
test_subtract_mm (ceygen.tests.test_elemwise.TestElemwise) ... ok
test_subtract_mm_baddims (ceygen.tests.test_elemwise.TestElemwise) ... ok
test_subtract_mm_none (ceygen.tests.test_elemwise.TestElemwise) ... ok
test_subtract_vv (ceygen.tests.test_elemwise.TestElemwise) ... ok
test_subtract_vv_baddims (ceygen.tests.test_elemwise.TestElemwise) ... ok
test_subtract_vv_none (ceygen.tests.test_elemwise.TestElemwise) ... ok
test_det (ceygen.tests.test_lu.TestLu) ... ok
test_det_badinput (ceygen.tests.test_lu.TestLu) ... skipped 'until fix from http
://eigen.tuxfamily.org/bz/show_bug.cgi?id=548 is released in Eigen'
test_iinv (ceygen.tests.test_lu.TestLu) ... ok
test_iinv_badinput (ceygen.tests.test_lu.TestLu) ... ok
test_inv (ceygen.tests.test_lu.TestLu) ... ok
test_inv_badinput (ceygen.tests.test_lu.TestLu) ... ok
test_colwise_sum (ceygen.tests.test_reductions.TestReductions) ... ok
test_colwise_sum_badargs (ceygen.tests.test_reductions.TestReductions) ... ok
test_rowwise_sum (ceygen.tests.test_reductions.TestReductions) ... ok
test_rowwise_sum_badargs (ceygen.tests.test_reductions.TestReductions) ... ok
test_sum_m (ceygen.tests.test_reductions.TestReductions) ... ok
test_sum_m_badargs (ceygen.tests.test_reductions.TestReductions) ... ok
test_sum_v (ceygen.tests.test_reductions.TestReductions) ... ok
test_sum_v_badargs (ceygen.tests.test_reductions.TestReductions) ... ok

ERROR: test_dot_mm (ceygen.tests.test_core.TestCore)

Traceback (most recent call last):
File "test_core.pyx", line 205, in ceygen.tests.test_core.TestCore.test_dot_mm
(ceygen/tests\test_core.cpp:8683)
File "core.pyx", line 108, in ceygen.core.dot_mm (ceygen\core.cpp:4620)
ValueError: is_malloc_allowed() && "heap allocation is forbidden (EIGEN_RUNTIME_
NO_MALLOC is defined and g_is_malloc_allowed is false)" does not hold in C:/Ceyg
en-0.2/Eigen/Eigen/src/Core/util/Memory.h:189

ERROR: test_dot_mm_strides (ceygen.tests.test_core.TestCore)

Traceback (most recent call last):
File "test_core.pyx", line 240, in ceygen.tests.test_core.TestCore.test_dot_mm
strides (ceygen/tests\test_core.cpp:9745)
File "core.pyx", line 108, in ceygen.core.dot_mm (ceygen\core.cpp:4620)
ValueError: is_malloc_allowed() && "heap allocation is forbidden (EIGEN_RUNTIME

NO_MALLOC is defined and g_is_malloc_allowed is false)" does not hold in C:/Ceyg
en-0.2/Eigen/Eigen/src/Core/util/Memory.h:189

ERROR: test_from_readme (ceygen.tests.test_core.TestCore)

Traceback (most recent call last):
File "test_core.pyx", line 17, in ceygen.tests.test_core.TestCore.test_from_re
adme (ceygen/tests\test_core.cpp:1923)
File "core.pyx", line 108, in ceygen.core.dot_mm (ceygen\core.cpp:4620)
ValueError: is_malloc_allowed() && "heap allocation is forbidden (EIGEN_RUNTIME_
NO_MALLOC is defined and g_is_malloc_allowed is false)" does not hold in C:/Ceyg
en-0.2/Eigen/Eigen/src/Core/util/Memory.h:189


Ran 87 tests in 88.089s

FAILED (errors=3, skipped=1)
error: There were test failures

C:\Ceygen-0.2>python setup.py -v test install

---------------------------------------------------------------------------------Master Branch ------------------------------------------------------

C:\Ceygen-0.2>python setup.py -v test install
running test
running build
running build_py
not copying ceygen__init__.py (output up-to-date)
not copying ceygen\tests\support.py (output up-to-date)
not copying ceygen\tests__init__.py (output up-to-date)
not copying ceygen\tests__main__.py (output up-to-date)
not copying ceygen\core.pxd (output up-to-date)
not copying ceygen\dtype.pxd (output up-to-date)
not copying ceygen\elemwise.pxd (output up-to-date)
not copying ceygen\llt.pxd (output up-to-date)
not copying ceygen\lu.pxd (output up-to-date)
not copying ceygen\reductions.pxd (output up-to-date)
running build_ext
skipping 'ceygen.core' extension (up-to-date)
skipping 'ceygen.dtype' extension (up-to-date)
skipping 'ceygen.elemwise' extension (up-to-date)
building 'ceygen.llt' extension
C:\Python27\Scripts\gcc.exe -DMS_WIN64 -mdll -O3 -Wall -IC:\Ceygen-0.2\ceygen -I
C:/Ceygen-0.2/Eigen -IC:\Anaconda\include -IC:\Anaconda\PC -c ceygen\llt.cpp -o
build\temp.win-amd64-2.7\Release\ceygen\llt.o -O3 -march=core2
ceygen\llt.cpp: In function 'PyObject* get_memview_MemoryView_5array_7memview___
get__(pyx_array_obj)':
ceygen\llt.cpp:3415:15: warning: dereferencing type-punned pointer will break st
rict-aliasing rules
ceygen\llt.cpp:3415:15: warning: dereferencing type-punned pointer will break st
rict-aliasing rules
ceygen\llt.cpp: In function 'pyx_array_obj pyx_array_new(PyObject, Py_ssiz
e_t, char
, char
, char
)':
ceygen\llt.cpp:3723:17: warning: dereferencing type-punned pointer will break st
rict-aliasing rules
ceygen\llt.cpp:3723:17: warning: dereferencing type-punned pointer will break st
rict-aliasing rules
ceygen\llt.cpp: In function 'PyObject* __pyx_memoryview_is_slice(pyx_memoryvie
w_obj
, PyObject
)':
ceygen\llt.cpp:4885:21: warning: dereferencing type-punned pointer will break st
rict-aliasing rules
ceygen\llt.cpp:4885:21: warning: dereferencing type-punned pointer will break st
rict-aliasing rules
ceygen\llt.cpp: In function 'PyObject* _pyx_memoryview_MemoryView_10memoryview
16is_c_contig(pyx_memoryview_obj)':
ceygen\llt.cpp:7030:15: warning: dereferencing type-punned pointer will break st
rict-aliasing rules
ceygen\llt.cpp:7030:15: warning: dereferencing type-punned pointer will break st
rict-aliasing rules
ceygen\llt.cpp: In function 'PyObject
_pyx_memoryview_MemoryView_10memoryview
18is_f_contig(pyx_memoryview_obj)':
ceygen\llt.cpp:7095:15: warning: dereferencing type-punned pointer will break st
rict-aliasing rules
ceygen\llt.cpp:7095:15: warning: dereferencing type-punned pointer will break st
rict-aliasing rules
ceygen\llt.cpp: In function 'PyObject
_pyx_memoryview_new(PyObject, int, int,
Pyx_TypeInfo)':
ceygen\llt.cpp:7313:15: warning: dereferencing type-punned pointer will break st
rict-aliasing rules
ceygen\llt.cpp:7313:15: warning: dereferencing type-punned pointer will break st
rict-aliasing rules
ceygen\llt.cpp: In function 'PyObject* unellipsify(PyObject, int)':
ceygen\llt.cpp:7494:15: warning: dereferencing type-punned pointer will break st
rict-aliasing rules
ceygen\llt.cpp:7494:15: warning: dereferencing type-punned pointer will break st
rict-aliasing rules
ceygen\llt.cpp:7649:20: warning: dereferencing type-punned pointer will break st
rict-aliasing rules
ceygen\llt.cpp:7649:20: warning: dereferencing type-punned pointer will break st
rict-aliasing rules
ceygen\llt.cpp:7709:22: warning: dereferencing type-punned pointer will break st
rict-aliasing rules
ceygen\llt.cpp:7709:22: warning: dereferencing type-punned pointer will break st
rict-aliasing rules
ceygen\llt.cpp: In function 'PyObject
__pyx_memoryview_fromslice(__Pyx_memviews
lice, int, PyObject* ()(char), int ()(char, PyObject_), int)':
ceygen\llt.cpp:9733:15: warning: dereferencing type-punned pointer will break st
rict-aliasing rules
ceygen\llt.cpp:9733:15: warning: dereferencing type-punned pointer will break st
rict-aliasing rules
ceygen\llt.cpp: In function 'int __Pyx_BufFmt_ProcessTypeChunk(_Pyx_BufFmt_Cont
ext
)':
ceygen\llt.cpp:14130:78: warning: unknown conversion type character 'z' in forma
t
ceygen\llt.cpp:14130:78: warning: unknown conversion type character 'z' in forma
t
ceygen\llt.cpp:14130:78: warning: too many arguments for format
ceygen\llt.cpp:14182:67: warning: unknown conversion type character 'z' in forma
t
ceygen\llt.cpp:14182:67: warning: unknown conversion type character 'z' in forma
t
ceygen\llt.cpp:14182:67: warning: too many arguments for format
ceygen\llt.cpp: In function 'PyObject* _pyx_buffmt_parse_array(Pyx_BufFmt_Con
text
, const char
)':
ceygen\llt.cpp:14242:69: warning: unknown conversion type character 'z' in forma
t
ceygen\llt.cpp:14242:69: warning: format '%d' expects type 'int', but argument 3
has type 'size_t'
ceygen\llt.cpp:14242:69: warning: too many arguments for format
ceygen\llt.cpp: In function 'int _Pyx_GetBufferAndValidate(Py_buffer, PyObject
_, _Pyx_TypeInfo, int, int, int, Pyx_BufFmt_StackElem)':
ceygen\llt.cpp:14423:73: warning: unknown conversion type character 'z' in forma
t
ceygen\llt.cpp:14423:73: warning: format '%s' expects type 'char
', but argument
3 has type 'Py_ssize_t'
ceygen\llt.cpp:14423:73: warning: unknown conversion type character 'z' in forma
t
ceygen\llt.cpp:14423:73: warning: too many arguments for format
ceygen\llt.cpp: In function 'int _Pyx_ValidateAndInit_memviewslice(int, int, i
nt, int, _Pyx_TypeInfo, _Pyx_BufFmt_StackElem, _Pyx_memviewslice, PyObject
)':
ceygen\llt.cpp:14525:50: warning: unknown conversion type character 'z' in forma
t
ceygen\llt.cpp:14525:50: warning: format '%s' expects type 'char
', but argument
3 has type 'Py_ssize_t'
ceygen\llt.cpp:14525:50: warning: unknown conversion type character 'z' in forma
t
ceygen\llt.cpp:14525:50: warning: too many arguments for format
ceygen\llt.cpp: In function 'void Pyx_RaiseArgtupleInvalid(const char, int, P
y_ssize_t, Py_ssize_t, Py_ssize_t)':
ceygen\llt.cpp:14781:59: warning: unknown conversion type character 'z' in forma
t
ceygen\llt.cpp:14781:59: warning: format '%s' expects type 'char
', but argument
5 has type 'Py_ssize_t'
ceygen\llt.cpp:14781:59: warning: unknown conversion type character 'z' in forma
t
ceygen\llt.cpp:14781:59: warning: too many arguments for format
ceygen\llt.cpp: In function 'void __Pyx_RaiseTooManyValuesError(Py_ssize_t)':
ceygen\llt.cpp:15209:94: warning: unknown conversion type character 'z' in forma
t
ceygen\llt.cpp:15209:94: warning: too many arguments for format
ceygen\llt.cpp: In function 'void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t)':
ceygen\llt.cpp:15215:48: warning: unknown conversion type character 'z' in forma
t
ceygen\llt.cpp:15215:48: warning: format '%s' expects type 'char*', but argument
3 has type 'Py_ssize_t'
ceygen\llt.cpp:15215:48: warning: too many arguments for format
writing build\temp.win-amd64-2.7\Release\ceygen\llt.def
C:\Python27\Scripts\g++.exe -DMS_WIN64 -shared -s build\temp.win-amd64-2.7\Relea
se\ceygen\llt.o build\temp.win-amd64-2.7\Release\ceygen\llt.def -LC:\Anaconda\li
bs -LC:\Anaconda\PCbuild\amd64 -lpython27 -lmsvcr90 -o build\lib.win-amd64-2.7\c
eygen\llt.pyd -fopenmp
g++.exe: libgomp.spec: No such file or directory
error: command 'g++' failed with exit status 1

C:\Ceygen-0.2>

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.