19TEST_CASE(
"Make a complex wavefront and extract it as an intensity image on CPU",
"[wfp]" )
22 typedef std::complex<realT> complexT;
30 realImageT im(wfSz, wfSz);
32 complexFieldT wf(wfSz, wfSz);
34 for(
int cc = 0; cc < wfSz; ++cc)
36 for(
int rr = 0; rr < wfSz; ++rr)
38 wf(rr,cc) = std::complex(rr,cc);
45 for(
int cc = 0; cc < wfSz; ++cc)
47 for(
int rr = 0; rr < wfSz; ++rr)
49 realT val = rr*rr + cc*cc;
64 REQUIRE(fail ==
false);
72TEST_CASE(
"Make a complex wavefront and extract it as an intensity image on GPU",
"[wfp]" )
74 if( !mxlibTest::cudaDeviceAvailable() )
76 WARN(
"CUDA runtime is available but no CUDA device is present" );
81 typedef std::complex<realT> complexT;
89 realImageT im(wfSz, wfSz);
91 complexFieldT wf(wfSz, wfSz);
93 for(
int cc = 0; cc < wfSz; ++cc)
95 for(
int rr = 0; rr < wfSz; ++rr)
97 wf(rr,cc) = std::complex(rr,cc);
101 mx::cuda::cudaPtr<complexT> devWf;
102 devWf.upload(wf.data(), wfSz, wfSz);
104 mx::cuda::cudaPtr<realT> devIm;
105 devIm.resize(wfSz, wfSz);
109 devIm.download(im.data());
112 for(
int cc = 0; cc < wfSz; ++cc)
114 for(
int rr = 0; rr < wfSz; ++rr)
116 realT val = rr*rr + cc*cc;
131 REQUIRE(fail ==
false);
void extractIntensityImageAccum(realImageT &im, int imX0, int imXsz, int imY0, int imYsz, complexImageT &wf, int wfX0, int wfY0)
Extract the intensity image from a complex wavefront and accumulate the result.