Yes it is, But input is always double:( BR Nikos
On Mon, May 12, 2025 at 5:38 AM Marcus D. Leech <patchvonbr...@gmail.com> wrote: > On 11/05/2025 22:27, Nikos Balkanas wrote: > > Thx Marcus, > > I worked it out 2 days ago. Just my memory allocation. > I am passing input buffer with a global pointer. > I was using global stack allocation. When I switched to > malloc, it just works fine:) > Here is what happened: Input buffs didn't reach the _recv_one_packet() > where > b was evaluated to nil and therefore out_buffs were allocated to nil. It > would be helpful > to check allocations like these and issue a warning. > Input, however, still reached the convert_chdr_1_to_fc64_1_guts but > outputs and therefore output were evaluated to NULL. > With NULL output it was sent through the guts function. > Even commenting out the switch and sending it through > the generic chdr_sc16_to_xx crashed it with no output buffers:( > I am not quite sure why b is not evaluated in _recv_one_packet() > and is available downstream in convert_chdr_1_to_fc64_1_guts > with a global stack allocation. Unstable code? > > Anyway, I need the complex double for libfftw3. Its > input data is (fftw_complex) aka 16 B, no matter > what precision I use. It comes out in float, long double > and quad flavors, but input is the same. > And it blows Opencl fft I was using by 10x! > on the filesystem, less with live signals, > but still faster:) And signal power is hotter:) > > BR > Nikos > > FFTW3 is available in a single-precision instance -- Gnu Radio uses it. > FFTW3F. > > > > On Mon, May 12, 2025 at 4:24 AM Marcus D. Leech <patchvonbr...@gmail.com> > wrote: > >> On 10/05/2025 07:17, Nikos Balkanas wrote: >> >> It turns out that the problem is not just bypassing the sse2 code:( >> After commenting it out, uhd still crashes. The conversion output >> buffers are not created in _recv_one_packet() >> Any ideas why they don't? >> >> TIA >> Nikos >> >> This should *Just work*. >> >> What happens if you use rx_samples_to_file and specify: >> >> --type double >> >> This should write out double-precision (64-bit) complex floats to the >> output file. You should be able to use that example >> code as a bit of a template. >> >> Also, I have to ask, why double precision? Even single-precision float >> has more precision and dynamic range than is >> actually represented by the 16-bit values on the wire, coming from the >> ADCs. By moving to double-precision, unless you >> have a library that only supports double-precision math, you're just >> slowing down your computations for no good reason. >> >> >> >> >> >> On Sat, May 10, 2025 at 7:56 AM Nikos Balkanas <nbalka...@gmail.com> >> wrote: >> >>> Hi all, >>> >>> I recently changed my host application to complex double. I had to >>> change my stream_args to >>> fc64. I pass my void pointer to uhd_rx_streamer_recv same as before: >>> ptr = (void **)&zin; >>> Unfortunately, the convert_chdr_1_to_fc64_1_guts doesn't like it, I >>> have only 1196 maxsamples, and crashes. I don't need the sse2 code for my >>> conversion. I only use 1024 complex >>> samples/packet for fft. I am very happy with the >>> generic chdr_sc16_to_xx. >>> Does anyone have any fc64 experience and how one can pass the void >>> buffer pointer to >>> skip the sse2 code? >>> >>> TIA >>> Nikos >>> >> >> _______________________________________________ >> USRP-users mailing list -- usrp-users@lists.ettus.com >> To unsubscribe send an email to usrp-users-le...@lists.ettus.com >> >> >> _______________________________________________ >> USRP-users mailing list -- usrp-users@lists.ettus.com >> To unsubscribe send an email to usrp-users-le...@lists.ettus.com >> > >
_______________________________________________ USRP-users mailing list -- usrp-users@lists.ettus.com To unsubscribe send an email to usrp-users-le...@lists.ettus.com