def test_astra_cuda_projector(space_and_geometry, use_cache): """Test ASTRA CUDA projector.""" # Create reco space and a phantom reco_space, geom = space_and_geometry phantom = odl.phantom.cuboid(reco_space) # Make projection space proj_space = odl.uniform_discr_frompartition(geom.partition, dtype=reco_space.dtype) # Forward evaluation projector = AstraCudaProjectorImpl(geom, reco_space, proj_space, use_cache=use_cache) proj_data = projector.call_forward(phantom) assert proj_data in proj_space assert proj_data.norm() > 0 assert np.all(proj_data.asarray() >= 0) # Backward evaluation back_projector = AstraCudaBackProjectorImpl(geom, reco_space, proj_space, use_cache=use_cache) backproj = back_projector.call_backward(proj_data) assert backproj in reco_space assert backproj.norm() > 0 assert np.all(proj_data.asarray() >= 0)