Skip to content

Commit aebd0fb

Browse files
author
Yusuke Oda
authored
Merge pull request #41 from primitiv/feature/store-default-object
Store default objects in python
2 parents 04de17a + f0d616b commit aebd0fb

File tree

13 files changed

+153
-25
lines changed

13 files changed

+153
-25
lines changed

.travis/debian.sh

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ docker run --name travis-ci -v $TRAVIS_BUILD_DIR:/primitiv-python -td debian:sta
77

88
# install
99
docker exec travis-ci bash -c "apt update"
10-
docker exec travis-ci bash -c "apt install -y git build-essential cmake python3-dev python3-pip python3-numpy"
10+
docker exec travis-ci bash -c "apt install -y build-essential cmake python3-dev python3-pip python3-numpy"
1111
docker exec travis-ci bash -c "pip3 install cython scikit-build"
1212

1313
# TODO(vbkaisetsu):
@@ -17,14 +17,20 @@ docker exec travis-ci bash -c "pip3 install cython scikit-build"
1717
# For more details, see: http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1392
1818

1919
# install Eigen
20-
docker exec travis-ci bash -c "apt install -y mercurial"
21-
docker exec travis-ci bash -c "hg clone https://bitbucket.org/eigen/eigen"
20+
docker exec travis-ci bash -c "apt install -y wget"
21+
docker exec travis-ci bash -c "wget http://bitbucket.org/eigen/eigen/get/3.3.4.tar.bz2 -O ./eigen.tar.bz2"
22+
docker exec travis-ci bash -c "mkdir ./eigen"
23+
docker exec travis-ci bash -c "tar xf ./eigen.tar.bz2 -C ./eigen --strip-components 1"
2224
docker exec travis-ci bash -c "mkdir ./eigen/build"
2325
docker exec travis-ci bash -c "cd ./eigen/build && cmake .."
2426
docker exec travis-ci bash -c "cd ./eigen/build && make && make install"
2527

2628
# install OpenCL environment
27-
docker exec travis-ci bash -c "apt install -y opencl-headers libclblas-dev pkg-config libhwloc-dev libltdl-dev ocl-icd-dev ocl-icd-opencl-dev clang-3.8 llvm-3.8-dev libclang-3.8-dev libz-dev"
29+
docker exec travis-ci bash -c "apt install -y opencl-headers git pkg-config libhwloc-dev libltdl-dev ocl-icd-dev ocl-icd-opencl-dev clang-3.8 llvm-3.8-dev libclang-3.8-dev libz-dev"
30+
docker exec travis-ci bash -c "wget https://github.com/CNugteren/CLBlast/archive/1.2.0.tar.gz -O ./clblast.tar.gz"
31+
docker exec travis-ci bash -c "mkdir ./clblast"
32+
docker exec travis-ci bash -c "tar xf ./clblast.tar.gz -C ./clblast --strip-components 1"
33+
docker exec travis-ci bash -c "cd ./clblast && cmake . && make && make install"
2834
# pocl 0.13 does not contain mem_fence() function that is used by primitiv.
2935
# We build the latest pocl instead of using distribution's package.
3036
# See: https://github.com/pocl/pocl/issues/294
@@ -34,7 +40,8 @@ docker exec travis-ci bash -c "cd ./pocl && make && make install"
3440

3541
if [ "${WITH_CORE_LIBRARY}" = "yes" ]; then
3642
# script
37-
docker exec travis-ci bash -c "cd /primitiv-python && ./setup.py build --enable-eigen --enable-opencl"
43+
docker exec travis-ci bash -c "cd /primitiv-python && ./setup.py build --enable-eigen --enable-opencl -- -DCMAKE_VERBOSE_MAKEFILE=ON"
44+
docker exec travis-ci bash -c "cd /primitiv-python && ./setup.py build_ext -i --enable-eigen --enable-opencl -- -DCMAKE_VERBOSE_MAKEFILE=ON"
3845
docker exec travis-ci bash -c "cd /primitiv-python && ./setup.py test --enable-eigen --enable-opencl"
3946

4047
# test installing by "pip install"
@@ -54,13 +61,14 @@ if [ "${WITH_CORE_LIBRARY}" = "yes" ]; then
5461
docker exec travis-ci bash -c "pip3 uninstall -y primitiv"
5562
else
5663
# install core library
57-
docker exec travis-ci bash -c "cd /primitiv-python/primitiv-core && cmake . -DPRIMITIV_USE_EIGEN=ON -DPRIMITIV_USE_OPENCL=ON"
64+
docker exec travis-ci bash -c "cd /primitiv-python/primitiv-core && cmake . -DPRIMITIV_USE_EIGEN=ON -DPRIMITIV_USE_OPENCL=ON -DCMAKE_VERBOSE_MAKEFILE=ON"
5865
docker exec travis-ci bash -c "cd /primitiv-python/primitiv-core && make"
5966
docker exec travis-ci bash -c "cd /primitiv-python/primitiv-core && make install"
6067
docker exec travis-ci bash -c "ldconfig"
6168

6269
# script
6370
docker exec travis-ci bash -c "cd /primitiv-python && ./setup.py build --enable-eigen --enable-opencl --no-build-core-library"
71+
docker exec travis-ci bash -c "cd /primitiv-python && ./setup.py build_ext -i --enable-eigen --enable-opencl --no-build-core-library"
6472
docker exec travis-ci bash -c "cd /primitiv-python && ./setup.py test --enable-eigen --enable-opencl --no-build-core-library"
6573

6674
# test installing by "./setup.py install"

.travis/fedora.sh

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ docker run --name travis-ci -v $TRAVIS_BUILD_DIR:/primitiv-python -td fedora:lat
77

88
# install
99
docker exec travis-ci bash -c "dnf update -y"
10-
docker exec travis-ci bash -c "dnf install -y git rpm-build gcc-c++ cmake python3-devel python3-numpy eigen3-devel"
10+
docker exec travis-ci bash -c "dnf install -y rpm-build gcc-c++ cmake make python3-devel python3-numpy eigen3-devel"
1111
docker exec travis-ci bash -c "pip3 install cython scikit-build"
1212

1313
# NOTE(vbkaisetsu):
@@ -34,7 +34,8 @@ if [ "${WITH_CORE_LIBRARY}" = "yes" ]; then
3434
# script
3535
# docker exec travis-ci bash -c "cd /primitiv-python && ./setup.py build --enable-eigen --enable-opencl"
3636
# docker exec travis-ci bash -c "cd /primitiv-python && ./setup.py test --enable-eigen --enable-opencl"
37-
docker exec travis-ci bash -c "cd /primitiv-python && ./setup.py build --enable-eigen"
37+
docker exec travis-ci bash -c "cd /primitiv-python && ./setup.py build --enable-eigen -- -DCMAKE_VERBOSE_MAKEFILE=ON"
38+
docker exec travis-ci bash -c "cd /primitiv-python && ./setup.py build_ext -i --enable-eigen -- -DCMAKE_VERBOSE_MAKEFILE=ON"
3839
docker exec travis-ci bash -c "cd /primitiv-python && ./setup.py test --enable-eigen"
3940

4041
# test installing by "pip install"
@@ -53,14 +54,15 @@ if [ "${WITH_CORE_LIBRARY}" = "yes" ]; then
5354
else
5455
# install core library
5556
# docker exec travis-ci bash -c "cd /primitiv-python/primitiv-core && cmake . -DPRIMITIV_USE_EIGEN=ON -DPRIMITIV_USE_OPENCL=ON"
56-
docker exec travis-ci bash -c "cd /primitiv-python/primitiv-core && cmake . -DPRIMITIV_USE_EIGEN=ON"
57+
docker exec travis-ci bash -c "cd /primitiv-python/primitiv-core && cmake . -DPRIMITIV_USE_EIGEN=ON -DCMAKE_VERBOSE_MAKEFILE=ON"
5758
docker exec travis-ci bash -c "cd /primitiv-python/primitiv-core && make"
5859
docker exec travis-ci bash -c "cd /primitiv-python/primitiv-core && make install"
5960

6061
# script
6162
# docker exec travis-ci bash -c "cd /primitiv-python && ./setup.py build --enable-eigen --enable-opencl --no-build-core-library"
6263
# docker exec travis-ci bash -c "export LD_LIBRARY_PATH=/usr/local/lib && cd /primitiv-python && ./setup.py test --enable-eigen --enable-opencl --no-build-core-library"
6364
docker exec travis-ci bash -c "cd /primitiv-python && ./setup.py build --enable-eigen --no-build-core-library"
65+
docker exec travis-ci bash -c "cd /primitiv-python && ./setup.py build_ext -i --enable-eigen --no-build-core-library"
6466
docker exec travis-ci bash -c "export LD_LIBRARY_PATH=/usr/local/lib && cd /primitiv-python && ./setup.py test --enable-eigen --no-build-core-library"
6567

6668
# test installing by "./setup.py install"

.travis/osx.sh

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ mkdir work
1414
if [ "${WITH_CORE_LIBRARY}" = "yes" ]; then
1515
# script
1616
git submodule update --init
17-
./setup.py build --enable-eigen
17+
./setup.py build --enable-eigen -- -DCMAKE_VERBOSE_MAKEFILE=ON
18+
./setup.py build_ext -i --enable-eigen -- -DCMAKE_VERBOSE_MAKEFILE=ON
1819
./setup.py test --enable-eigen
1920

2021
# test installing by "pip install"
@@ -40,11 +41,12 @@ if [ "${WITH_CORE_LIBRARY}" = "yes" ]; then
4041
pip3 uninstall -y primitiv
4142
else
4243
pushd primitiv-core
43-
cmake . -DPRIMITIV_USE_EIGEN=ON
44+
cmake . -DPRIMITIV_USE_EIGEN=ON -DCMAKE_VERBOSE_MAKEFILE=ON
4445
make
4546
make install
4647
popd
4748
./setup.py build --enable-eigen --no-build-core-library
49+
./setup.py build_ext -i --enable-eigen --no-build-core-library
4850
./setup.py test --enable-eigen --no-build-core-library
4951

5052
# test installing by "./setup.py install"

.travis/ubuntu.sh

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,15 @@ docker run --name travis-ci -v $TRAVIS_BUILD_DIR:/primitiv-python -td ubuntu:rol
77

88
# install
99
docker exec travis-ci bash -c "apt update"
10-
docker exec travis-ci bash -c "apt install -y git build-essential cmake python3-dev python3-pip python3-numpy libeigen3-dev"
10+
docker exec travis-ci bash -c "apt install -y build-essential cmake python3-dev python3-pip python3-numpy libeigen3-dev"
1111
docker exec travis-ci bash -c "pip3 install cython scikit-build"
1212

1313
# install OpenCL environment
14-
docker exec travis-ci bash -c "apt install -y opencl-headers libclblas-dev pkg-config libhwloc-dev libltdl-dev ocl-icd-dev ocl-icd-opencl-dev clang-3.8 llvm-3.8-dev libclang-3.8-dev libz-dev"
14+
docker exec travis-ci bash -c "apt install -y opencl-headers git wget pkg-config libhwloc-dev libltdl-dev ocl-icd-dev ocl-icd-opencl-dev clang llvm-dev libclang-dev libz-dev"
15+
docker exec travis-ci bash -c "wget https://github.com/CNugteren/CLBlast/archive/1.2.0.tar.gz -O ./clblast.tar.gz"
16+
docker exec travis-ci bash -c "mkdir ./clblast"
17+
docker exec travis-ci bash -c "tar xf ./clblast.tar.gz -C ./clblast --strip-components 1"
18+
docker exec travis-ci bash -c "cd ./clblast && cmake . && make && make install"
1519
# pocl 0.13 does not contain mem_fence() function that is used by primitiv.
1620
# We build the latest pocl instead of using distribution's package.
1721
# See: https://github.com/pocl/pocl/issues/294
@@ -21,7 +25,8 @@ docker exec travis-ci bash -c "cd ./pocl && make && make install"
2125

2226
if [ "${WITH_CORE_LIBRARY}" = "yes" ]; then
2327
# script
24-
docker exec travis-ci bash -c "cd /primitiv-python && ./setup.py build --enable-eigen --enable-opencl"
28+
docker exec travis-ci bash -c "cd /primitiv-python && ./setup.py build --enable-eigen --enable-opencl -- -DCMAKE_VERBOSE_MAKEFILE=ON"
29+
docker exec travis-ci bash -c "cd /primitiv-python && ./setup.py build_ext -i --enable-eigen --enable-opencl -- -DCMAKE_VERBOSE_MAKEFILE=ON"
2530
docker exec travis-ci bash -c "cd /primitiv-python && ./setup.py test --enable-eigen --enable-opencl"
2631

2732
# test installing by "pip install"
@@ -41,13 +46,14 @@ if [ "${WITH_CORE_LIBRARY}" = "yes" ]; then
4146
docker exec travis-ci bash -c "pip3 uninstall -y primitiv"
4247
else
4348
# install core library
44-
docker exec travis-ci bash -c "cd /primitiv-python/primitiv-core && cmake . -DPRIMITIV_USE_EIGEN=ON -DPRIMITIV_USE_OPENCL=ON"
49+
docker exec travis-ci bash -c "cd /primitiv-python/primitiv-core && cmake . -DPRIMITIV_USE_EIGEN=ON -DPRIMITIV_USE_OPENCL=ON -DCMAKE_VERBOSE_MAKEFILE=ON"
4550
docker exec travis-ci bash -c "cd /primitiv-python/primitiv-core && make"
4651
docker exec travis-ci bash -c "cd /primitiv-python/primitiv-core && make install"
4752
docker exec travis-ci bash -c "ldconfig"
4853

4954
# script
5055
docker exec travis-ci bash -c "cd /primitiv-python && ./setup.py build --enable-eigen --enable-opencl --no-build-core-library"
56+
docker exec travis-ci bash -c "cd /primitiv-python && ./setup.py build_ext -i --enable-eigen --enable-opencl --no-build-core-library"
5157
docker exec travis-ci bash -c "cd /primitiv-python && ./setup.py test --enable-eigen --enable-opencl --no-build-core-library"
5258

5359
# test installing by "./setup.py install"

primitiv-core

Submodule primitiv-core updated 101 files

primitiv/_device.pxd

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
cdef extern from "primitiv/device.h":
22
cdef cppclass CppDevice "primitiv::Device":
3-
@staticmethod
4-
void set_default(CppDevice &dev) except +
53
void dump_description() except +
64

75

primitiv/_device.pyx

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ from weakref import WeakValueDictionary
1010
# It means that users can not compare instances by using "is" operator.
1111
cdef object py_primitiv_device_weak_dict = WeakValueDictionary()
1212

13+
cdef object py_primitiv_default_device = None
14+
1315

1416
cdef class Device:
1517
"""Interface of the Tensor provider.
@@ -24,7 +26,20 @@ cdef class Device:
2426
:type device: primitiv.Device
2527
2628
"""
27-
CppDevice.set_default(device.wrapped[0])
29+
global py_primitiv_default_device
30+
py_primitiv_default_device = device
31+
32+
@staticmethod
33+
def get_default():
34+
"""Retrieves the current default device.
35+
36+
:return: The current default device
37+
:rtype: primitiv.Device
38+
39+
"""
40+
if py_primitiv_default_device is None:
41+
raise RuntimeError("Default object is null.")
42+
return py_primitiv_default_device
2843

2944
def dump_description(self):
3045
"""Prints device description to stderr.

0 commit comments

Comments
 (0)