From fa92fc50355d0cbc185098ef6bcf78fa9dc65623 Mon Sep 17 00:00:00 2001 From: Willem Jan Palenstijn Date: Tue, 17 Oct 2017 21:05:06 +0200 Subject: Regroup .travis.yml sections to better match travis docs --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 1cd7420..b34b1a0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -60,6 +60,8 @@ before_install: install: - conda install python=$TRAVIS_PYTHON_VERSION six numpy scipy cython - conda info -a + +script: - cd build/linux - ./autogen.sh - if [ x$CLANG == xyes ]; then export CXX=clang++; export CC=clang; fi @@ -67,6 +69,4 @@ install: - make -j 4 - make test - make install - -script: - python -c "import astra" -- cgit v1.2.3 From 355ee14464f76f7a506143ef44a9b5a5319c4951 Mon Sep 17 00:00:00 2001 From: Willem Jan Palenstijn Date: Tue, 17 Oct 2017 21:06:50 +0200 Subject: Move set_gpu_index, get_gpu_info from astra.astra to astra --- python/astra/__init__.py | 3 ++- samples/python/s020_3d_multiGPU.py | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/python/astra/__init__.py b/python/astra/__init__.py index b73fff5..d5aac44 100644 --- a/python/astra/__init__.py +++ b/python/astra/__init__.py @@ -27,6 +27,7 @@ from . import matlab as m from .creators import astra_dict,create_vol_geom, create_proj_geom, create_backprojection, create_sino, create_reconstruction, create_projector,create_sino3d_gpu, create_backprojection3d_gpu from .functions import data_op, add_noise_to_sino, clear, move_vol_geom from .extrautils import clipCircle +from .astra import set_gpu_index, get_gpu_info from . import data2d from . import astra from . import data3d @@ -45,4 +46,4 @@ import os if 'ASTRA_GPU_INDEX' in os.environ: L = [ int(x) for x in os.environ['ASTRA_GPU_INDEX'].split(',') ] - astra.set_gpu_index(L) + set_gpu_index(L) diff --git a/samples/python/s020_3d_multiGPU.py b/samples/python/s020_3d_multiGPU.py index 11a1e11..e872870 100644 --- a/samples/python/s020_3d_multiGPU.py +++ b/samples/python/s020_3d_multiGPU.py @@ -28,11 +28,11 @@ import numpy as np # Set up multi-GPU usage. # This only works for 3D GPU forward projection and back projection. -astra.astra.set_gpu_index([0,1]) +astra.set_gpu_index([0,1]) # Optionally, you can also restrict the amount of GPU memory ASTRA will use. # The line commented below sets this to 1GB. -#astra.astra.set_gpu_index([0,1], memory=1024*1024*1024) +#astra.set_gpu_index([0,1], memory=1024*1024*1024) vol_geom = astra.create_vol_geom(1024, 1024, 1024) -- cgit v1.2.3 From 3eaebe8827db8ddf029fdb94ccda2b0af1385bec Mon Sep 17 00:00:00 2001 From: Willem Jan Palenstijn Date: Tue, 17 Oct 2017 21:07:28 +0200 Subject: Add basic post-install python tests --- .travis.yml | 2 +- README.md | 11 ++++++ README.txt | 16 ++++++++ python/astra/__init__.py | 1 + python/astra/tests.py | 97 ++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 126 insertions(+), 1 deletion(-) create mode 100644 python/astra/tests.py diff --git a/.travis.yml b/.travis.yml index b34b1a0..aca9940 100644 --- a/.travis.yml +++ b/.travis.yml @@ -69,4 +69,4 @@ script: - make -j 4 - make test - make install - - python -c "import astra" + - python -c "import astra; astra.test_noCUDA()" diff --git a/README.md b/README.md index 5211e69..ddc881c 100644 --- a/README.md +++ b/README.md @@ -123,6 +123,17 @@ Run build_setup.bat to automatically copy the boost headers and libraries. For matlab: Run build_matlab.bat. The .dll and .mexw64 files will be in bin\x64\Release_Cuda. For python 2.7/3.5: Run build_python27.bat or build_python35.bat. Astra will be directly installed into site-packages. +## Testing your installation + +To perform a (very) basic test of your ASTRA installation in Python, you can +run the following Python commands. You can choose if you want to skip the test +of the GPU functionality for systems without a NVIDIA GPU. + +``` +import astra +astra.test_noCUDA() # To skip GPU tests +astra.test_CUDA() # To also perform GPU tests +``` ## References diff --git a/README.txt b/README.txt index 94da3d4..63c9cf5 100644 --- a/README.txt +++ b/README.txt @@ -151,6 +151,22 @@ For matlab: Run build_matlab.bat. The .dll and .mexw64 files will be in bin\x64\ For python 2.7/3.5: Run build_python27.bat or build_python35.bat. Astra will be directly installed into site-packages. +Testing your installation: +--------------------------- + +To perform a (very) basic test of your ASTRA installation in Python, you can +run the following Python commands. You can choose if you want to skip the test +of the GPU functionality for systems without a NVIDIA GPU. + +import astra +astra.test_noCUDA() # To skip GPU tests +astra.test_CUDA() # To also perform GPU tests + + + + + + References: ------------ diff --git a/python/astra/__init__.py b/python/astra/__init__.py index d5aac44..8238a88 100644 --- a/python/astra/__init__.py +++ b/python/astra/__init__.py @@ -39,6 +39,7 @@ from . import plugin from . import plugins from . import log from .optomo import OpTomo +from .tests import test_noCUDA, test_CUDA __version__ = '1.8' diff --git a/python/astra/tests.py b/python/astra/tests.py new file mode 100644 index 0000000..32afd36 --- /dev/null +++ b/python/astra/tests.py @@ -0,0 +1,97 @@ +# ----------------------------------------------------------------------- +# Copyright: 2010-2017, iMinds-Vision Lab, University of Antwerp +# 2013-2017, CWI, Amsterdam +# +# Contact: astra@uantwerpen.be +# Website: http://www.astra-toolbox.com/ +# +# This file is part of the ASTRA Toolbox. +# +# +# The ASTRA Toolbox is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# The ASTRA Toolbox is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with the ASTRA Toolbox. If not, see . +# +# ----------------------------------------------------------------------- + +from __future__ import print_function, absolute_import + +def _basic_par2d_fp(type): + import astra + import numpy as np + vg = astra.create_vol_geom(2, 32) + pg = astra.create_proj_geom('parallel', 1, 32, [0]) + proj_id = astra.create_projector(type, pg, vg) + vol = np.random.rand(2, 32) + (sino_id, sino) = astra.create_sino(vol, proj_id) + astra.data2d.delete(sino_id) + astra.projector.delete(proj_id) + err = np.max(np.abs(sino[0,:] - np.sum(vol,axis=0))) + return err < 1e-6 + +def _basic_par3d_fp(): + import astra + import numpy as np + vg = astra.create_vol_geom(2, 32, 32) + pg = astra.create_proj_geom('parallel3d', 1, 1, 32, 32, [0]) + vol = np.random.rand(32, 2, 32) + (sino_id, sino) = astra.create_sino3d_gpu(vol, pg, vg) + astra.data3d.delete(sino_id) + err = np.max(np.abs(sino[:,0,:] - np.sum(vol,axis=1))) + return err < 1e-6 + + +def _basic_par2d(): + print("Testing basic CPU 2D functionality... ", end="") + if _basic_par2d_fp('line'): + print("Ok") + return True + else: + print("Error") + return False + +def _basic_par2d_cuda(): + print("Testing basic CUDA 2D functionality... ", end="") + if _basic_par2d_fp('cuda'): + print("Ok") + return True + else: + print("Error") + return False + +def _basic_par3d_cuda(): + print("Testing basic CUDA 3D functionality... ", end="") + if _basic_par3d_fp(): + print("Ok") + return True + else: + print("Error") + return False + +def test_noCUDA(): + """Perform a very basic functionality test, without CUDA""" + + ok = _basic_par2d() + if not ok: + raise RuntimeError("Test failed") + +def test_CUDA(): + """Perform a very basic functionality test, including CUDA""" + + import astra + print("Getting GPU info... ", end="") + print(astra.get_gpu_info()) + ok1 = _basic_par2d() + ok2 = _basic_par2d_cuda() + ok3 = _basic_par3d_cuda() + if not (ok1 and ok2 and ok3): + raise RuntimeError("Test failed") -- cgit v1.2.3 From 84e163009c10f6ac5631cf5f29a4923852542eaf Mon Sep 17 00:00:00 2001 From: Willem Jan Palenstijn Date: Tue, 17 Oct 2017 22:29:52 +0200 Subject: Add basic post-install matlab tests --- README.md | 10 +++++-- README.txt | 8 ++++-- matlab/tools/astra_test_CUDA.m | 59 ++++++++++++++++++++++++++++++++++++++++ matlab/tools/astra_test_noCUDA.m | 32 ++++++++++++++++++++++ 4 files changed, 104 insertions(+), 5 deletions(-) create mode 100644 matlab/tools/astra_test_CUDA.m create mode 100644 matlab/tools/astra_test_noCUDA.m diff --git a/README.md b/README.md index ddc881c..f36bdea 100644 --- a/README.md +++ b/README.md @@ -126,8 +126,8 @@ For python 2.7/3.5: Run build_python27.bat or build_python35.bat. Astra will be ## Testing your installation To perform a (very) basic test of your ASTRA installation in Python, you can -run the following Python commands. You can choose if you want to skip the test -of the GPU functionality for systems without a NVIDIA GPU. +run the following Python commands. You can choose to skip the test of the GPU +functionality for systems without a NVIDIA GPU. ``` import astra @@ -135,6 +135,12 @@ astra.test_noCUDA() # To skip GPU tests astra.test_CUDA() # To also perform GPU tests ``` +To test your ASTRA installation in Matlab, the equivalent commands are: + +``` +astra_test_noCUDA % To skip GPU tests +astra_test_CUDA % To also perform GPU tests +``` ## References diff --git a/README.txt b/README.txt index 63c9cf5..69b3b3b 100644 --- a/README.txt +++ b/README.txt @@ -155,16 +155,18 @@ Testing your installation: --------------------------- To perform a (very) basic test of your ASTRA installation in Python, you can -run the following Python commands. You can choose if you want to skip the test -of the GPU functionality for systems without a NVIDIA GPU. +run the following Python commands. You can choose to skip the test of the GPU +functionality for systems without a NVIDIA GPU. import astra astra.test_noCUDA() # To skip GPU tests astra.test_CUDA() # To also perform GPU tests +To test your ASTRA installation in Matlab, the equivalent commands are: - +astra_test_noCUDA % To skip GPU tests +astra_test_CUDA % To also perform GPU tests References: diff --git a/matlab/tools/astra_test_CUDA.m b/matlab/tools/astra_test_CUDA.m new file mode 100644 index 0000000..4171f20 --- /dev/null +++ b/matlab/tools/astra_test_CUDA.m @@ -0,0 +1,59 @@ +%-------------------------------------------------------------------------- +% Clears and frees memory of all objects (data, projectors, algorithms) +% currently in the astra-library. +%-------------------------------------------------------------------------- +%-------------------------------------------------------------------------- +% This file is part of the ASTRA Toolbox +% +% Copyright: 2010-2017, iMinds-Vision Lab, University of Antwerp +% 2014-2017, CWI, Amsterdam +% License: Open Source under GPLv3 +% Contact: astra@uantwerpen.be +% Website: http://www.astra-toolbox.com/ +%-------------------------------------------------------------------------- + +%% +fprintf('Getting GPU info...') +astra_get_gpu_info() + +%% +astra_test_noCUDA() + +%% +fprintf('Testing basic CUDA 2D functionality...') + +vg = astra_create_vol_geom(2, 32); +pg = astra_create_proj_geom('parallel', 1, 32, [0]); +proj_id = astra_create_projector('cuda', pg, vg); + +vol = rand(2, 32); +[sino_id, sino] = astra_create_sino(vol, proj_id); +astra_mex_data2d('delete', sino_id); +astra_mex_projector('delete', proj_id); + +err = max(abs(sino - sum(vol))); + +if err < 1e-6 + disp('Ok') +else + disp('Error') +end + +%% +fprintf('Testing basic CUDA 3D functionality...') + +vg = astra_create_vol_geom(2, 32, 32); +pg = astra_create_proj_geom('parallel3d', 1, 1, 32, 32, [0]); + +vol = rand(32, 2, 32); +[sino_id, sino] = astra_create_sino3d_cuda(vol, pg, vg); +astra_mex_data3d('delete', sino_id); + +err = max(max(abs(sino - sum(vol,2)))); + +if err < 1e-6 + disp('Ok') +else + disp('Error') +end + diff --git a/matlab/tools/astra_test_noCUDA.m b/matlab/tools/astra_test_noCUDA.m new file mode 100644 index 0000000..6437661 --- /dev/null +++ b/matlab/tools/astra_test_noCUDA.m @@ -0,0 +1,32 @@ +%-------------------------------------------------------------------------- +% Clears and frees memory of all objects (data, projectors, algorithms) +% currently in the astra-library. +%-------------------------------------------------------------------------- +%-------------------------------------------------------------------------- +% This file is part of the ASTRA Toolbox +% +% Copyright: 2010-2017, iMinds-Vision Lab, University of Antwerp +% 2014-2017, CWI, Amsterdam +% License: Open Source under GPLv3 +% Contact: astra@uantwerpen.be +% Website: http://www.astra-toolbox.com/ +%-------------------------------------------------------------------------- + +fprintf('Testing basic CPU 2D functionality...') + +vg = astra_create_vol_geom(2, 32); +pg = astra_create_proj_geom('parallel', 1, 32, [0]); +proj_id = astra_create_projector('line', pg, vg); + +vol = rand(2, 32); +[sino_id, sino] = astra_create_sino(vol, proj_id); +astra_mex_data2d('delete', sino_id); +astra_mex_projector('delete', proj_id); + +err = max(abs(sino - sum(vol))); + +if err < 1e-6 + disp('Ok') +else + disp('Error') +end -- cgit v1.2.3