First of, many thanks to each one of you for taking your time to post your
valuable comments and suggestions. My apologies for not filling in the
details. Here goes:
1.We have linux running on the Microblaze. So, what I am looking at this
point is a software only solution.
2. We have cross compilation tools and buildroot. I was able to compile
python3.8 externally and run it on Microblaze. Note that I compiled python
outside of buildroot since the version of python built from buildroot did
not work.
3. Buildroot did not have support for Numpy. So I added it to the
configuration. To resolve the compilation issues, here is what I did:
diff -r -u
/home/gokul/numpyExpt/numpy-1.16.4/numpy/core/include/numpy/npy_cpu.h
python-numpy-1.16.4.BAK/numpy/core/include/numpy/npy_cpu.h
--- /home/gokul/numpyExpt/numpy-1.16.4/numpy/core/include/numpy/npy_cpu.h
2019-02-22 06:03:41.0 +0530
+++ python-numpy-1.16.4.BAK/numpy/core/include/numpy/npy_cpu.h 2019-12-22
18:52:16.468085099 +0530
@@ -102,6 +102,8 @@
#define NPY_CPU_ARCEB
#elif defined(__riscv) && defined(__riscv_xlen) && __riscv_xlen == 64
#define NPY_CPU_RISCV64
+#elif defined(__MICROBLAZEEL__)
+#define NPY_CPU_MICROBLAZEEL
#else
#error Unknown CPU, please report this to numpy maintainers with \
information about your platform (OS, CPU and compiler)
diff -r -u
/home/gokul/numpyExpt/numpy-1.16.4/numpy/core/include/numpy/npy_endian.h
python-numpy-1.16.4.BAK/numpy/core/include/numpy/npy_endian.h
--- /home/gokul/numpyExpt/numpy-1.16.4/numpy/core/include/numpy/npy_endian.h
2019-02-22 06:03:41.0 +0530
+++ python-numpy-1.16.4.BAK/numpy/core/include/numpy/npy_endian.h
2019-12-22 18:54:08.912859083 +0530
@@ -48,7 +48,8 @@
|| defined(NPY_CPU_MIPSEL)\
|| defined(NPY_CPU_PPC64LE) \
|| defined(NPY_CPU_ARCEL) \
-|| defined(NPY_CPU_RISCV64)
+|| defined(NPY_CPU_RISCV64) \
+|| defined(NPY_CPU_MICROBLAZEEL)
#define NPY_BYTE_ORDER NPY_LITTLE_ENDIAN
#elif defined(NPY_CPU_PPC)\
|| defined(NPY_CPU_SPARC) \
diff -ruN -x '*.py'
/home/gokul/numpyExpt/numpy-1.16.4/numpy/core/include/microblaze-fenv.h
python-numpy-1.16.4/numpy/core/include/microblaze-fenv.h
--- /home/gokul/numpyExpt/numpy-1.16.4/numpy/core/include/microblaze-fenv.h
1970-01-01 05:30:00.0 +0530
+++ python-numpy-1.16.4/numpy/core/include/microblaze-fenv.h2020-01-02
14:06:30.410908275 +0530
@@ -0,0 +1,36 @@
+#ifndef MICROBLAZE_FENV_H
+#define MICROBLAZE_FENV_H 1
+
+enum
+ {
+FE_INEXACT =
+#define FE_INEXACT (0x00)
+ FE_INEXACT,
+FE_UNDERFLOW =
+#define FE_UNDERFLOW(0x00)
+ FE_UNDERFLOW,
+FE_OVERFLOW =
+#define FE_OVERFLOW (0x00)
+ FE_OVERFLOW,
+FE_DIVBYZERO =
+#define FE_DIVBYZERO(0x00)
+ FE_DIVBYZERO,
+FE_INVALID =
+#define FE_INVALID (0x00)
+ FE_INVALID
+ };
+
+enum
+ {
+FE_TOWARDZERO =
+#define FE_TOWARDZERO (0x0)
+ FE_TOWARDZERO,
+FE_DOWNWARD =
+#define FE_DOWNWARD (0x0)
+ FE_DOWNWARD,
+FE_UPWARD =
+#define FE_UPWARD (0x0)
+ FE_UPWARD
+ };
+
+#endif
The last change above was to take care of floating point exception errors in
compilation. Not sure if this is the right approach- I had to do this since
Microblaze didnt support all these exceptions
4. When I run with these changes, I get the following runtime error:
~# /usr/local/bin/python
Python 3.8.0 (default, Jan 3 2020, 16:10:54)
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
Traceback (most recent call last):
File "", line 1, in
File "/usr/lib/python3.8/site-packages/numpy/__init__.py", line 150, in
from . import random
File "/usr/lib/python3.8/site-packages/numpy/random/__init__.py", line
143, in
from .mtrand import *
SystemError: execution of module numpy.random.mtrand failed without setting
an exception
>>>
--
Sent from: http://numpy-discussion.10968.n7.nabble.com/
___
NumPy-Discussion mailing list
NumPy-Discussion@python.org
https://mail.python.org/mailman/listinfo/numpy-discussion