Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error when setting values of 2d array with index array #1664

Open
cycomanic opened this issue Nov 5, 2020 · 0 comments
Open

Error when setting values of 2d array with index array #1664

cycomanic opened this issue Nov 5, 2020 · 0 comments

Comments

@cycomanic
Copy link
Contributor

I'm encountering an error when setting values of a 2d array using 0.9.7 (will test master later).

Simplest reproducible test case:

import numpy as np

#pythran export draw_line(int32[][])
def draw_line(grid):
    x = np.arange(0, grid.shape[1]//2).astype(int)
    grid[:, x] = 1

error:

building 'test_pt' extension
C compiler: g++ -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -Werror=return-type -g -DOPENSSL_LOAD_CONF -fwrapv -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -Werror=return-type -g -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -Werror=return-type -g -fPIC

creating /tmp/tmp3_l_6d8g/tmp
compile options: '-DENABLE_PYTHON_MODULE -D__PYTHRAN__=3 -DPYTHRAN_BLAS_OPENBLAS -I/home/jschrod/.local/lib/python3.8/site-packages/pythran -I/usr/lib64/python3.8/site-packages/numpy/core/include -I/usr/include/python3.8 -c'
extra options: '-std=c++11 -fno-math-errno -w -fvisibility=hidden -fno-wrapv'
g++: /tmp/tmp49tylgd3.cpp
In file included from /home/jschrod/.local/lib/python3.8/site-packages/pythran/pythonic/include/types/ndarray.hpp:39,
                 from /home/jschrod/.local/lib/python3.8/site-packages/pythran/pythonic/types/ndarray.hpp:4,
                 from /home/jschrod/.local/lib/python3.8/site-packages/pythran/pythonic/types/tuple.hpp:13,
                 from /home/jschrod/.local/lib/python3.8/site-packages/pythran/pythonic/builtins/bool_.hpp:7,
                 from /home/jschrod/.local/lib/python3.8/site-packages/pythran/pythonic/types/NoneType.hpp:8,
                 from /home/jschrod/.local/lib/python3.8/site-packages/pythran/pythonic/types/slice.hpp:5,
                 from /home/jschrod/.local/lib/python3.8/site-packages/pythran/pythonic/core.hpp:29,
                 from /tmp/tmp49tylgd3.cpp:1:
/home/jschrod/.local/lib/python3.8/site-packages/pythran/pythonic/include/types/numpy_gexpr.hpp: In instantiation of ‘struct {anonymous}::pythonic::types::numpy_gexpr<{anonymous}::pythonic::types::ndarray<int, {anonymous}::pythonic::types::pshape<long int, long int> >, {anonymous}::pythonic::types::contiguous_normalized_slice, {anonymous}::pythonic::types::ndarray<long int, {anonymous}::pythonic::types::array_base<long int, 1, {anonymous}::pythonic::types::tuple_version> > >’:
/tmp/tmp49tylgd3.cpp:54:9:   required from ‘typename __pythran_test_pt::draw_line::type<argument_type0>::result_type __pythran_test_pt::draw_line::operator()(argument_type0&&) const [with argument_type0 = {anonymous}::pythonic::types::ndarray<int, {anonymous}::pythonic::types::pshape<long int, long int> >&; typename __pythran_test_pt::draw_line::type<argument_type0>::result_type = {anonymous}::pythonic::types::none_type]’
/tmp/tmp49tylgd3.cpp:65:79:   required from here
/home/jschrod/.local/lib/python3.8/site-packages/pythran/pythonic/include/types/numpy_gexpr.hpp:537:71: error: static assertion failed: all slices are valid
  537 |                        std::is_same<S, normalized_slice>::value)...>::value,
      |                                                                       ^~~~~
/home/jschrod/.local/lib/python3.8/site-packages/pythran/pythonic/include/types/numpy_gexpr.hpp: In instantiation of ‘constexpr const size_t {anonymous}::pythonic::types::count_long<{anonymous}::pythonic::types::ndarray<long int, {anonymous}::pythonic::types::array_base<long int, 1, {anonymous}::pythonic::types::tuple_version> > >::value’:
/home/jschrod/.local/lib/python3.8/site-packages/pythran/pythonic/include/types/numpy_gexpr.hpp:167:24:   recursively required from ‘constexpr const size_t {anonymous}::pythonic::types::count_long<{anonymous}::pythonic::types::ndarray<long int, {anonymous}::pythonic::types::array_base<long int, 1, {anonymous}::pythonic::types::tuple_version> > >::value’
/home/jschrod/.local/lib/python3.8/site-packages/pythran/pythonic/include/types/numpy_gexpr.hpp:167:24:   required from ‘constexpr const size_t {anonymous}::pythonic::types::count_long<{anonymous}::pythonic::types::ndarray<long int, {anonymous}::pythonic::types::array_base<long int, 1, {anonymous}::pythonic::types::tuple_version> > >::value’
/home/jschrod/.local/lib/python3.8/site-packages/pythran/pythonic/include/types/numpy_gexpr.hpp:167:54:   required from ‘constexpr const size_t {anonymous}::pythonic::types::count_long<{anonymous}::pythonic::types::contiguous_normalized_slice, {anonymous}::pythonic::types::ndarray<long int, {anonymous}::pythonic::types::array_base<long int, 1, {anonymous}::pythonic::types::tuple_version> > >::value’
/home/jschrod/.local/lib/python3.8/site-packages/pythran/pythonic/include/types/numpy_gexpr.hpp:558:69:   required from ‘constexpr const size_t {anonymous}::pythonic::types::numpy_gexpr<{anonymous}::pythonic::types::ndarray<int, {anonymous}::pythonic::types::pshape<long int, long int> >, {anonymous}::pythonic::types::contiguous_normalized_slice, {anonymous}::pythonic::types::ndarray<long int, {anonymous}::pythonic::types::array_base<long int, 1, {anonymous}::pythonic::types::tuple_version> > >::value’
/home/jschrod/.local/lib/python3.8/site-packages/pythran/pythonic/include/types/numpy_gexpr.hpp:579:52:   required from ‘struct {anonymous}::pythonic::types::numpy_gexpr<{anonymous}::pythonic::types::ndarray<int, {anonymous}::pythonic::types::pshape<long int, long int> >, {anonymous}::pythonic::types::contiguous_normalized_slice, {anonymous}::pythonic::types::ndarray<long int, {anonymous}::pythonic::types::array_base<long int, 1, {anonymous}::pythonic::types::tuple_version> > >’
/tmp/tmp49tylgd3.cpp:54:9:   required from ‘typename __pythran_test_pt::draw_line::type<argument_type0>::result_type __pythran_test_pt::draw_line::operator()(argument_type0&&) const [with argument_type0 = {anonymous}::pythonic::types::ndarray<int, {anonymous}::pythonic::types::pshape<long int, long int> >&]’
/tmp/tmp49tylgd3.cpp:65:79:   required from here
/home/jschrod/.local/lib/python3.8/site-packages/pythran/pythonic/include/types/numpy_gexpr.hpp:167:24: fatal error: template instantiation depth exceeds maximum of 900 (use ‘-ftemplate-depth=’ to increase the maximum)
  167 |         count_long<T>::value + count_long<Types...>::value;
      |                        ^~~~~
compilation terminated.
WARNING: Compilation error, trying hard to find its origin...
WARNING: Nop, I'm going to flood you with C++ errors!
CRITICAL: Cover me Jack. Jack? Jaaaaack!!!!
E: error: Command "g++ -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -Werror=return-type -g -DOPENSSL_LOAD_CONF -fwrapv -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -Werror=return-type -g -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -Werror=return-type -g -fPIC -DENABLE_PYTHON_MODULE -D__PYTHRAN__=3 -DPYTHRAN_BLAS_OPENBLAS -I/home/jschrod/.local/lib/python3.8/site-packages/pythran -I/usr/lib64/python3.8/site-packages/numpy/core/include -I/usr/include/python3.8 -c /tmp/tmp49tylgd3.cpp -o /tmp/tmp3_l_6d8g/tmp/tmp49tylgd3.o -std=c++11 -fno-math-errno -w -fvisibility=hidden -fno-wrapv" failed with exit status 1

however

import numpy as np

#pythran export draw_line(int32[][])
def draw_line(grid):
    x = np.arange(0, grid.shape[0]//2).astype(int)
    grid[x, :] = 1        

works.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant