DDECal IDG prediction segfault when including beam
I did a successful run combining IDGPredict with DDECal like so (abridged parsets for clarity):
atermkernelsize = 5
steps=[solve]
solve.type = ddecal
solve.idg.regions = facets_fastphase.reg
solve.idg.images = [field-MFS-model.fits]
and I have also successfully run an IDGPredict on its own including the beam (though admittedly did not check the model column I wrote into to see if it predicted something physical):
atermkernelsize = 5
steps=[predict]
predict.type = idgpredict
predict.aterms = [beam]
predict.beam.type = beam
predict.beam.differential = true
predict.beam.usechannelfreq = true
predict.regions = facets_fastphase.reg
predict.images = [field-MFS-model.fits]
When I now try to include the predict with the beam, however, it segfaults:
atermkernelsize = 5
steps=[solve]
solve.type = ddecal
solve.aterms = [beam]
solve.beam.type = beam
solve.beam.differential = true
solve.beam.usechannelfreq = true
solve.idg.regions = facets_fastphase.reg
solve.idg.images = [field-MFS-model.fits]
Is this maybe related to #138? The debug backtrace if that helps is this:
(gdb) bt
#0 apply_aterm_degridder<std::complex<float> >(std::complex<float>*, std::complex<float> const*, std::complex<float> const*) (aterm2=0x22653000, aterm1=0x221e5000, pixels=0x7ffffffdad00)
at /opt/lofar/idg/src/idg-lib/src/common/Math.h:156
#1 _ZN3idg6kernel3cpu9optimized16kernel_degridderEiiliffPKfiiiPKNS_3UVWIfEES4_PSt7complexIfES4_PKSA_PKjPKNS_8MetadataESD_._omp_fn.0(void) () at /opt/lofar/idg/src/idg-lib/src/CPU/Optimized/kernels/KernelDegridder.cpp:166
#2 0x00007fffed0bd0b0 in __kmp_api_GOMP_parallel_40_alias () at /opt/intel/oneapi/compiler/2023.2.0/linux/compiler/lib/intel64_lin/libiomp5.so
#3 0x00007fffe2ad91a3 in idg::kernel::cpu::optimized::kernel_degridder(int, int, long, int, float, float, float const*, int, int, int, idg::UVW<float> const*, float const*, std::complex<float>*, float const*, std::complex<float> const*, unsigned int const*, idg::Metadata const*, std::complex<float> const*)
(nr_subgrids=nr_subgrids@entry=583, nr_polarizations=nr_polarizations@entry=4, grid_size=grid_size@entry=10000, subgrid_size=subgrid_size@entry=72, image_size=image_size@entry=0.0606017113, w_step_in_lambda=w_step_in_lambda@entry=8225.87988, shift=shift@entry=0x1e2fb2c0, nr_correlations=nr_correlations@entry=4, nr_channels=500, nr_stations=62, uvw=0x1feb7040, wavenumbers=0x1e27c0c0, visibilities=0x7ffcebc0a040, spheroidal=0x1e25bd40, aterms=0x221d6f20, aterm_indices=0x1fe834b0, metadata=0x1ff04950, subgrid=0x7ffad4218040) at /opt/lofar/idg/src/idg-lib/src/CPU/Optimized/kernels/KernelDegridder.cpp:50
#4 0x00007fffe2acaac4 in idg::kernel::cpu::OptimizedKernels::run_degridder(int, int, long, int, float, float, float const*, int, int, int, idg::UVW<float> const*, float const*, std::complex<float>*, float const*, std::complex<float> const*, unsigned int const*, idg::Metadata const*, std::complex<float> const*)
(this=0x20160d00, nr_subgrids=583, nr_polarizations=4, grid_size=10000, subgrid_size=72, image_size=0.0606017113, w_step_in_lambda=8225.87988, shift=0x1e2fb2c0, nr_channels=500, nr_correlations=4, nr_stations=62, uvw=0x1feb7040, wavenumbers=0x1e27c0c0, visibilities=0x7ffcebc0a040, spheroidal=0x1e25bd40, aterms=0x221d6f20, aterm_indices=0x1fe834b0, metadata=0x1ff04950, subgrid=0x7ffad4218040) at /opt/lofar/idg/src/idg-lib/src/CPU/Optimized/OptimizedKernels.cpp:32
#5 0x00007fffe2ac5857 in idg::proxy::cpu::CPU::do_degridding(idg::Plan const&, idg::Array1D<float> const&, idg::Array4D<std::complex<float> >&, idg::Array2D<idg::UVW<float> > const&, idg::Array1D<std::pair<unsigned int, unsigned int> > const&, idg::Array4D<idg::Matrix2x2<std::complex<float> > > const&, idg::Array1D<unsigned int> const&, idg::Array2D<float> const&)
(this=<optimized out>, plan=<optimized out>, frequencies=<optimized out>, visibilities=<optimized out>, uvw=<optimized out>, baselines=<optimized out>, aterms=<optimized out>, aterm_offsets=<optimized out>, spheroidal=<optimized out>) at /opt/lofar/idg/src/idg-lib/src/CPU/common/CPU.cpp:373
#6 0x00007fffed54e1c2 in idg::api::BulkDegridderImpl::compute_visibilities(std::vector<unsigned long, std::allocator<unsigned long> > const&, std::vector<unsigned long, std::allocator<unsigned long> > const&, std::vector<double const*, std::allocator<double const*> > const&, std::vector<std::complex<float>*, std::allocator<std::complex<float>*> > const&, double const*, std::complex<float> const*, std::vector<unsigned int, std::allocator<unsigned int> > const&) const
(this=this@entry=0x8014a0, antennas1=std::vector of length 1891, capacity 1891 = {...}, antennas2=std::vector of length 1891, capacity 1891 = {...}, uvws=std::vector of length 14, capacity 14 = {...}, visibilities=std::vector of length 14, capacity 14 = {...}, uvw_factors=<optimized out>,
uvw_factors@entry=0x7ffff7f10da0 <dp3::steps::IDGPredict::ComputeVisibilities(unsigned long, std::vector<double const*, std::allocator<double const*> > const&, std::complex<float>*) const::kUVWFactors>, aterms=0x221d6f20, aterm_offsets=std::vector of length 1, capacity 1 = {...}) at /opt/lofar/idg/src/idg-api/BulkDegridder.cpp:136
#7 0x00007ffff7d432bc in dp3::steps::IDGPredict::ComputeVisibilities(unsigned long, std::vector<double const*, std::allocator<double const*> > const&, std::complex<float>*) const
(this=0x85a720, direction=0, uvws=std::vector of length 14, capacity 14 = {...}, term_data=<optimized out>) at /data2/sweijen/test_IDGpredict/predict_solve_scalarphase/test/localDP3/steps/IDGPredict.cc:511
#8 0x00007ffff7d4538a in dp3::steps::IDGPredict::Predict(unsigned long) (this=0x85a720, direction=0) at /data2/sweijen/test_IDGpredict/predict_solve_scalarphase/test/localDP3/steps/IDGPredict.cc:413
#9 0x00007ffff7d4547b in dp3::steps::IDGPredict::flush() (this=this@entry=0x85a720) at /data2/sweijen/test_IDGpredict/predict_solve_scalarphase/test/localDP3/steps/IDGPredict.cc:253
#10 0x00007ffff7bb24b8 in dp3::steps::DDECal::doSolve() (this=0x857240) at /data2/sweijen/test_IDGpredict/predict_solve_scalarphase/test/localDP3/steps/DDECal.cc:548
#11 0x00007ffff7bb9f76 in dp3::steps::DDECal::process(std::unique_ptr<dp3::base::DPBuffer, std::default_delete<dp3::base::DPBuffer> >) (this=0x857240, bufin=std::unique_ptr<dp3::base::DPBuffer> = {...})
at /data2/sweijen/test_IDGpredict/predict_solve_scalarphase/test/localDP3/steps/DDECal.cc:720
#12 0x00007ffff7d8a953 in dp3::steps::MSReader::process(std::unique_ptr<dp3::base::DPBuffer, std::default_delete<dp3::base::DPBuffer> >) (this=this@entry=0x781b90, buffer=std::unique_ptr<dp3::base::DPBuffer> = {...})
at /data2/sweijen/test_IDGpredict/predict_solve_scalarphase/test/localDP3/steps/MSReader.cc:413
#13 0x00007ffff7c69bb0 in dp3::base::Execute(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, char**)
(parsetName="DP3_solve_fastphase_idgpredict_throughddecal.parset", argc=argc@entry=2, argv=argv@entry=0x7fffffffb7e8) at /data2/sweijen/test_IDGpredict/predict_solve_scalarphase/test/localDP3/base/DP3.cc:321
#14 0x000000000040258b in main(int, char**) (argc=2, argv=0x7fffffffb7e8) at /data2/sweijen/test_IDGpredict/predict_solve_scalarphase/test/localDP3/base/Main.cc:74
Edited by Frits Sweijen