ludvigak / finufft.jl Goto Github PK
View Code? Open in Web Editor NEWJulia interface to the nonuniform FFT library FINUFFT
License: Other
Julia interface to the nonuniform FFT library FINUFFT
License: Other
I'm trying to learn some basic Non-Uniform FFT.
I want to see if I can get a frequency spectrum of a laser pulse with a NUFFT type 1 using the FINUFFT.jl library.
Here's the example:
using FFTW
using FINUFFT
c = 2.998e8; #m/s speed of light
wl = 525.0e-9; #m wavelength
fwhm = 500.0e-15; #temporal fwhm
tau0 = fwhm/sqrt(2*log(2)); #gaussian fwhm
tlbw = 0.44/fwhm #transform limited bandwidth
maxf = c/wl +tlbw
minf = c/wl-tlbw
df = (maxf - minf)/1.0e3
#simulation
dt = pl/5.0;
t0 = -2.0*fwhm
tend = 2.0*fwhm
ttot = ceil(Int64,(tend-t0)/dt)
E = [exp(-t^2/tau0^2)*cos(2.0*pi*wlfreq*t) for t in t0:dt:tend];
t = [i for i in t0:dt:tend];
lent = length(E)
Nt = length(t);
The pulse looks like:
Taking the fft:
freq = FFTW.fftshift(FFTW.fftfreq(lent,1/dt))
Ef = FFTW.fftshift(FFTW.fft(E));
If = abs2.(Ef); #intensity spectrum
Looks like:
Which is exactly what I expect.
Now I want to us a NUFFT type 1 according to:
https://finufft.readthedocs.io/en/latest/math.html
I decide to take nonuniform points in the form of a tangent curve so as to get most of the FWHM of the pulse:
#nonuniform indices to extract sampling points
#using tangent curve
maxpi = pi*22.0/100.0;
dpi = 2.0*maxpi/(lent/2);
l = [i for i in -maxpi:dpi:maxpi];
tt = @. tan(1.95*l);
ttt = @. -tt[1]+tt;
ttt = @. ttt*lent/8.81+1;
t4 = @. ceil(Int64,ttt);
#extract nonuniform points
Enu = convert.(ComplexF64,E[t4]); #field at nonuniform points
tnu = t[t4]; #time at noniniform points
lentnu = length(Enu)
wmax = freq[end]; #max freq get from previous FFTW, around 1.5e15
Nw = length(freq); #number of total points|
dw = 2*wmax/Nw; # spacing of target k grid|
w = dw .* [i for i in ceil(Int64,-Nw/2):ceil(Int64,Nw/2-1)]; # % a particular uniform M-grid of this spacing|
#normalize
Enunorm = Enu ./ maximum(E)
fhat = FINUFFT.nufft1d1(tnu, Enunorm, 1, 1.0e-12, Nw); #% type 1, requesting M modes
And the intensity spectrum looks like:
Not sure what to make of it. The amplitudes change but by an extremely small bit?
The main pulse frequency is off by more than 2.
the type 1 transform works.
However, I can't even get this to work:
FINUFFT.nufft1d2(xj=[-2.0, -1.0, 0.0, 0.5, 3.0], fk = [1.0im, 1.0im, 1.0im, 1.0im])
With error:
MethodError: no method matching nufft1d2(; xj::Vector{Float64}, fk::Vector{ComplexF64})
Closest candidates are:
nufft1d2(!Matched::Array{T}, !Matched::Integer, !Matched::Real, !Matched::Array{Complex{T}}; kwargs...) where T<:Union{Float32, Float64}
@ FINUFFT ~/.julia/packages/FINUFFT/Tq5pq/src/simple.jl:189
The error indicates that every input matches. So what's the issue?
This is a great tool, and I look forward to using it.
I am trying to build FINUFFT in Julia. I am running High Sierra, I have Julia v1.1.1, and I have both gcc 8 and curl installed. I've followed the instructions in the documentation to add FINUFFT and test FINUFFT. However, when I try to test FINUFFT, I get the error
"ERROR: LoadError: FINUFFT is not properly installed. Please build it first."
Indeed the file "deps.jl" does not exist in the deps folder.
Is there a way I can try to manually build this?
Choosing the tolerance too small throws an error instead of a warning:
julia> using FINUFFT
julia> nj = 1000000;
julia> x = pi*(1 .- 2*rand(Float32, nj));
julia> c = rand(ComplexF32, nj);
julia> ms = 2000000;
julia> tol = 1e-8;
julia> fk = nufft1d1(x, c, 1, tol, ms);
setup_spreader warning: increasing tol=1e-08 to eps_mach=6e-08.
ERROR: FINUFFT Error (1): requested tolerance epsilon too small to achieve (warning only)
Stacktrace:
[1] check_ret
@ C:\Users\mv6955\.julia\packages\FINUFFT\GNqRW\src\FINUFFT.jl:230 [inlined]
[2] finufft_makeplan(type::Int64, n_modes_or_dim::Vector{Int64}, iflag::Int64, ntrans::Int32, eps::Float64; dtype::Type, kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
@ FINUFFT C:\Users\mv6955\.julia\packages\FINUFFT\GNqRW\src\guru.jl:128
[3] nufft1d1!(xj::Vector{Float32}, cj::Vector{ComplexF32}, iflag::Int64, eps::Float64, fk::Matrix{ComplexF32}; kwargs::Base.Pairs{Symbol, DataType, Tuple{Symbol}, NamedTuple{(:dtype,), Tuple{DataType}}})
@ FINUFFT C:\Users\mv6955\.julia\packages\FINUFFT\GNqRW\src\simple.jl:469
[4] nufft1d1(xj::Vector{Float32}, cj::Vector{ComplexF32}, iflag::Int64, eps::Float64, ms::Int64; kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
@ FINUFFT C:\Users\mv6955\.julia\packages\FINUFFT\GNqRW\src\simple.jl:45
[5] nufft1d1(xj::Vector{Float32}, cj::Vector{ComplexF32}, iflag::Int64, eps::Float64, ms::Int64)
@ FINUFFT C:\Users\mv6955\.julia\packages\FINUFFT\GNqRW\src\simple.jl:35
[6] top-level scope
@ REPL[7]:1
Proposal: In the check_ret function of FINUFFT.jl, add the following two lines after line 202:
@warn msg
return
If you agree, I will open a PR including this change and the fix for #42 .
Cheers, Jonas
Dear Ludvig,
Sorry, I now see you built the jl interface around the C interface. From our end it has been good to simplify the C calling sequences to be identical to the C++ ones. (as of v 1.1). The C interface was really clunky. Now we call the C++ directly; much better.
But this means you'll have to fix your julia wrapper - mostly removing _c from things and passing opts as pointer.
Although I'm trying to play with julia (struggling over getting fast loops on unrelated project), I think you'd be much faster at tweaking your code.
Let me know if I can help.
Best, Alex
Hello and thanks for your work. I've been working with FINUFFT since march and I have had no problems, but today it crashed when I updated to the last versions of Julia and Juno. I'm working on a Mac running with Catalina. I've tried to uninstall the package and even Julia and Atom, but the problem persists. The following is the build.log file, what could I do? Thanks in regard.
Collecting package metadata (current_repodata.json): ...working... done
Solving environment: ...working... done
environment location: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/usr
added / updated specs:
- fftw
The following NEW packages will be INSTALLED:
fftw pkgs/main/osx-64::fftw-3.3.8-h1de35cc_3
Preparing transaction: ...working... done
Verifying transaction: ...working... done
Executing transaction: ...working... done
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 130 100 130 0 0 330 0 --:--:-- --:--:-- --:--:-- 330
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 2190k 0 2190k 0 0 1691k 0 --:--:-- 0:00:01 --:--:-- 2863k
Archive: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/downloads/v1.1.2.zip
5b92daf4244c92844dd2640ef80457c030e1bf25
creating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/.gitignore
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/CHANGELOG
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/LICENSE
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/README.md
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/TODO
creating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/contrib/
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/contrib/legendre_rule_fast.c
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/contrib/legendre_rule_fast.h
creating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/devel/
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/devel/ESlocalpoly.m
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/devel/eval_ker_expts.cpp
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/devel/eval_ker_expts2.cpp
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/devel/eval_ker_expts_ludvig.cpp
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/devel/fig_speed_ker_ppval.m
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/devel/gen_all_horner_C_code.m
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/devel/gen_ker_horner_C_code.m
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/devel/gen_ker_horner_loop_C_code.m
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/devel/i7_1thr_ker_eval_speeds.png
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/devel/ker_horner_allw.c
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/devel/ker_horner_allw_loop_notpadded.c
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/devel/ker_ppval_coeff_mat.m
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/devel/test_ker_ppval.cpp
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/devel/time2d2interp.cpp
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/devel/v2spec.md
creating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/docs/
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/docs/Makefile
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/docs/README
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/docs/ackn.rst
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/docs/conf.py
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/docs/dirs.rst
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/docs/genmatlabhelp.sh
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/docs/genpdfmanual.sh
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/docs/index.rst
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/docs/install.rst
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/docs/juliainterface.rst
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/docs/logo.png
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/docs/math.rst
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/docs/matlab.rst
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/docs/matlabhelp.raw
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/docs/numft.rst
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/docs/peripois2d.rst
creating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/docs/pics/
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/docs/pics/fser1d.png
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/docs/pics/fser2d.png
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/docs/pics/pois_fft.png
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/docs/pics/pois_fhat.png
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/docs/pics/pois_nufft.png
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/docs/pics/pois_nugrid.png
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/docs/pythoninterface.rst
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/docs/refs.rst
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/docs/related.rst
extracting: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/docs/requirements.txt
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/docs/serieseval.rst
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/docs/spreadpic.png
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/docs/trouble.rst
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/docs/tut.rst
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/docs/usage.rst
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/docs/usage_adv.rst
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/docs/users.rst
creating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/examples/
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/examples/README
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/examples/example1d1.cpp
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/examples/example1d1c.c
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/examples/example1d1cf.c
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/examples/example1d1f.cpp
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/examples/example2d1.cpp
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/finufft-manual.pdf
creating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/finufftpy/
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/finufftpy/init.py
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/finufftpy/_interfaces.py
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/finufftpy/finufftpy.cpp
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/finufftpy/ndarray.h
creating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/fortran/
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/fortran/README
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/fortran/dirft1d.f
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/fortran/dirft1df.f
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/fortran/dirft2d.f
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/fortran/dirft2df.f
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/fortran/dirft3d.f
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/fortran/dirft3df.f
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/fortran/finufft_f.cpp
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/fortran/finufft_f.h
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/fortran/nufft1d_demo.f
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/fortran/nufft1d_demof.f
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/fortran/nufft2d_demo.f
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/fortran/nufft2d_demof.f
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/fortran/nufft2dmany_demo.f
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/fortran/nufft2dmany_demof.f
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/fortran/nufft3d_demo.f
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/fortran/nufft3d_demof.f
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/fortran/prini.f
creating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/lib-static/
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/lib-static/README
creating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/lib/
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/lib/README
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/make.inc.GCC7
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/make.inc.linux_ICC
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/make.inc.macosx_clang
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/make.inc.macosx_gcc-8
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/make.inc.powerpc
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/makefile
creating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/matlab/
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/matlab/big1dtest.m
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/matlab/check_changenthreads.m
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/matlab/check_finufft.m
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/matlab/check_modeords.m
creating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/matlab/examples/
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/matlab/examples/poisson2dnuquad.m
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/matlab/fig_accuracy.m
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/matlab/finufft.cpp
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/matlab/finufft.mw
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/matlab/finufft1d1.m
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/matlab/finufft1d2.m
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/matlab/finufft1d3.m
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/matlab/finufft2d1.m
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/matlab/finufft2d1many.m
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/matlab/finufft2d2.m
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/matlab/finufft2d2many.m
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/matlab/finufft2d3.m
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/matlab/finufft3d1.m
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/matlab/finufft3d2.m
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/matlab/finufft3d3.m
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/matlab/finufft_m.cpp
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/matlab/finufft_m.h
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/matlab/finufft_opts.m
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/matlab/test_strictadjoint.m
creating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/python_tests/
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/python_tests/README.md
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/python_tests/accuracy_speed_tests.py
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/python_tests/demo1d1.py
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/python_tests/run_accuracy_tests.py
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/python_tests/run_speed_tests.py
extracting: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/requirements.txt
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/setup.py
creating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/src/
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/src/common.cpp
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/src/common.h
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/src/defs.h
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/src/dirft.h
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/src/dirft1d.cpp
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/src/dirft2d.cpp
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/src/dirft3d.cpp
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/src/finufft.h
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/src/finufft1d.cpp
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/src/finufft2d.cpp
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/src/finufft3d.cpp
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/src/ker_horner_allw_loop.c
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/src/ker_lowupsampfac_horner_allw_loop.c
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/src/spreadinterp.cpp
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/src/spreadinterp.h
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/src/utils.cpp
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/src/utils.h
creating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/test/
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/test/README
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/test/check1d.sh
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/test/check2d.sh
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/test/check3d.sh
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/test/check_finufft.sh
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/test/checkallaccs.sh
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/test/dumbinputs.cpp
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/test/finufft1d_basicpassfail.cpp
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/test/finufft1d_test.cpp
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/test/finufft2d_test.cpp
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/test/finufft2dmany_test.cpp
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/test/finufft3d_test.cpp
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/test/highaspect3d_test.sh
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/test/manysmallprobs.cpp
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/test/mycpuinfo.sh
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/test/nuffttest1d.sh
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/test/nuffttest2d.sh
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/test/nuffttest3d.sh
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/test/nuffttestnd.sh
creating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/test/results/
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/test/results/README
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/test/results/check1d.sh.refout
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/test/results/check2d.sh.refout
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/test/results/check3d.sh.refout
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/test/results/dumbinputs.refout
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/test/results/gcc_vs_icc_xeon.txt
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/test/results/nuffttestnd_results_i7_2-2-17.txt
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/test/results/nuffttestnd_results_i7_3-16-17.txt
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/test/results/nuffttestnd_results_i7_6-17-17.txt
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/test/results/nuffttestnd_results_i7_gcc72_4-24-18.txt
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/test/results/nuffttestnd_results_i7_gcc72_4-25-18.txt
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/test/results/nuffttestnd_results_i7_gcc72_9-14-18.txt
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/test/results/nuffttestnd_results_i7_v1.1.2_gcc92.txt
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/test/results/nuffttestnd_results_v1.1.1_xeonE5-2643v3_gcc74.txt
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/test/results/nuffttestnd_results_v1.1.2_xeonE5-2643v3_gcc74.txt
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/test/results/perftest_xeon-E5-2643v3.txt
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/test/results/spreadtestnd_results_i7_2-2-17.txt
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/test/results/spreadtestnd_results_i7_3-16-17.txt
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/test/results/spreadtestnd_results_i7_6-17-17.txt
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/test/results/spreadtestnd_results_i7_gcc72_4-24-18.txt
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/test/results/spreadtestnd_results_i7_gcc72_4-25-18.txt
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/test/results/spreadtestnd_results_i7_gcc72_9-14-18.txt
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/test/results/spreadtestnd_results_i7_v1.1.2_gcc92.txt
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/test/results/spreadtestnd_results_v1.1.1_xeonE5-2643v3_gcc74.txt
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/test/results/spreadtestnd_results_v1.1.2_xeonE5-2643v3_gcc74.txt
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/test/results/testutils.refout
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/test/spreadbenchmark.py
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/test/spreadtestnd.cpp
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/test/spreadtestnd.sh
inflating: /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2/test/testutils.cpp
g++-9 -c -fPIC -O3 -funroll-loops -march=native -fcx-limited-range -I src -fopenmp -DNEED_EXTERN_C -fopenmp src/spreadinterp.cpp -o src/spreadinterp.o
make: g++-9: No such file or directory
make: *** [src/spreadinterp.o] Error 1
[ Info: Running conda install -y fftw
in /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/usr environment
┌ Warning: Assignment to load_cache
in soft scope is ambiguous because a global variable by the same name exists: load_cache
will be treated as a new local. Disambiguate by using local load_cache
to suppress this warning or global load_cache
to assign to the existing global variable.
└ @ ~/.julia/packages/BinDeps/5xsHU/src/dependencies.jl:979
┌ Warning: Assignment to pre_hooks
in soft scope is ambiguous because a global variable by the same name exists: pre_hooks
will be treated as a new local. Disambiguate by using local pre_hooks
to suppress this warning or global pre_hooks
to assign to the existing global variable.
└ @ ~/.julia/packages/BinDeps/5xsHU/src/dependencies.jl:980
┌ Warning: Assignment to load_hooks
in soft scope is ambiguous because a global variable by the same name exists: load_hooks
will be treated as a new local. Disambiguate by using local load_hooks
to suppress this warning or global load_hooks
to assign to the existing global variable.
└ @ ~/.julia/packages/BinDeps/5xsHU/src/dependencies.jl:981
┌ Warning: Assignment to depsfile_location
in soft scope is ambiguous because a global variable by the same name exists: depsfile_location
will be treated as a new local. Disambiguate by using local depsfile_location
to suppress this warning or global depsfile_location
to assign to the existing global variable.
└ @ ~/.julia/packages/BinDeps/5xsHU/src/dependencies.jl:1011
┌ Warning: Assignment to depsfile_buffer
in soft scope is ambiguous because a global variable by the same name exists: depsfile_buffer
will be treated as a new local. Disambiguate by using local depsfile_buffer
to suppress this warning or global depsfile_buffer
to assign to the existing global variable.
└ @ ~/.julia/packages/BinDeps/5xsHU/src/dependencies.jl:1012
┌ Warning: Assignment to depsfile_content
in soft scope is ambiguous because a global variable by the same name exists: depsfile_content
will be treated as a new local. Disambiguate by using local depsfile_content
to suppress this warning or global depsfile_content
to assign to the existing global variable.
└ @ ~/.julia/packages/BinDeps/5xsHU/src/dependencies.jl:1043
┌ Warning: Assignment to load_cache
in soft scope is ambiguous because a global variable by the same name exists: load_cache
will be treated as a new local. Disambiguate by using local load_cache
to suppress this warning or global load_cache
to assign to the existing global variable.
└ @ ~/.julia/packages/BinDeps/5xsHU/src/dependencies.jl:979
┌ Warning: Assignment to pre_hooks
in soft scope is ambiguous because a global variable by the same name exists: pre_hooks
will be treated as a new local. Disambiguate by using local pre_hooks
to suppress this warning or global pre_hooks
to assign to the existing global variable.
└ @ ~/.julia/packages/BinDeps/5xsHU/src/dependencies.jl:980
┌ Warning: Assignment to load_hooks
in soft scope is ambiguous because a global variable by the same name exists: load_hooks
will be treated as a new local. Disambiguate by using local load_hooks
to suppress this warning or global load_hooks
to assign to the existing global variable.
└ @ ~/.julia/packages/BinDeps/5xsHU/src/dependencies.jl:981
┌ Warning: Assignment to depsfile_location
in soft scope is ambiguous because a global variable by the same name exists: depsfile_location
will be treated as a new local. Disambiguate by using local depsfile_location
to suppress this warning or global depsfile_location
to assign to the existing global variable.
└ @ ~/.julia/packages/BinDeps/5xsHU/src/dependencies.jl:1011
┌ Warning: Assignment to depsfile_buffer
in soft scope is ambiguous because a global variable by the same name exists: depsfile_buffer
will be treated as a new local. Disambiguate by using local depsfile_buffer
to suppress this warning or global depsfile_buffer
to assign to the existing global variable.
└ @ ~/.julia/packages/BinDeps/5xsHU/src/dependencies.jl:1012
┌ Warning: Assignment to depsfile_content
in soft scope is ambiguous because a global variable by the same name exists: depsfile_content
will be treated as a new local. Disambiguate by using local depsfile_content
to suppress this warning or global depsfile_content
to assign to the existing global variable.
└ @ ~/.julia/packages/BinDeps/5xsHU/src/dependencies.jl:1043
[ Info: Attempting to create directory /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/downloads
[ Info: Downloading file https://github.com/flatironinstitute/finufft/archive/v1.1.2.zip
[ Info: Done downloading file https://github.com/flatironinstitute/finufft/archive/v1.1.2.zip
[ Info: Attempting to create directory /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src
[ Info: Attempting to create directory /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps
[ Info: Directory /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps already exists
[ Info: Changing directory to /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/src/finufft-1.1.2
ERROR: LoadError: failed process: Process(make lib/libfinufft.so LIBRARY_PATH=/Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/usr/lib CPATH=/Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/usr/include FFTWOMPSUFFIX=threads CXX=g++-9 CC=gcc-9
, ProcessExited(2)) [2]
Stacktrace:
[1] pipeline_error at ./process.jl:525 [inlined]
[2] run(::Cmd; wait::Bool) at ./process.jl:440
[3] run(::Cmd) at ./process.jl:438
[4] run(::BinDeps.SynchronousStepCollection) at /Users/antoniodiaz/.julia/packages/BinDeps/5xsHU/src/BinDeps.jl:524 (repeats 2 times)
[5] top-level scope at /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/build.jl:95
[6] include(::String) at ./client.jl:457
[7] top-level scope at none:5
in expression starting at /Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/build.jl:95
lib = BinDeps.libdir(fftw) = "/Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/usr/lib"
inc = BinDeps.includedir(fftw) = "/Users/antoniodiaz/.julia/packages/FINUFFT/xjSlF/deps/usr/include"
Hi,
over at NFFT.jl I have been working on an AbstractNFFTs.jl
interface package that allows to use different NFFT implementations. The design is similar to that of AbstractFFTs.jl
, which also allows for different implementations of the ordinary FFT.
Some more background can be found here:
The question is if
FINUFFT.jl
would be interested in implementing AbstractNFFTs.jl
FINUFFT.jl
.Currently we have one CPU (NFFT.jl
) and one GPU (CuNFFT.jl
) implementation. Further I have a wrapper for NFFT3.jl
(https://github.com/JuliaMath/NFFT.jl/blob/master/NFFT3/NFFT3.jl) that will hopefully be incorporated in NFFT3.jl
soon.
The wrapper would not need to be your primary interface. It's just an additional interface being compatible with the common interface.
Best,
Tobias
Hi there, many thanks for the work. I am running Catalina with JuliaPro v1.2.0. I have followed the steps and have installed the relevant dependencies according to the instructions provided by flatironinstitute. The build seems to be successful, however when I try to run test FINUFFT
I get this error:
Test Summary: | Error Total FINUFFT | 1 1 ERROR: LoadError: Some tests did not pass: 0 passed, 0 failed, 1 errored, 0 broken. in expression starting at /Users/patrickchang/.juliapro/JuliaPro_v1.2.0-1/packages/FINUFFT/bgr7t/test/runtests.jl:3 ERROR: Package FINUFFT errored during testing
The origin of this error seems to arise because it can't seem to load libfinufft:
ERROR: LoadError: LoadError: LoadError: Unable to load libfinufft (/Users/patrickchang/.juliapro/JuliaPro_v1.2.0-1/packages/FINUFFT/bgr7t/deps/usr/lib/libfinufft.dylib) Please re-run Pkg.build(package), and restart Julia.
A similar issue I have found JuliaLang/julia#29720 suggests creating a simlink. If this is the solution - do you know which paths I am supposed to link? Otherwise do you have any other suggestions on resolving the issue?
Below is the full error message when running test FINUFFT
:
(v1.2) pkg> test FINUFFT
Testing FINUFFT
Resolving package versions...
Status /var/folders/r3/8h3wf5111v96y8vqd4y966l40000gp/T/jl_DX6vRx/Manifest.toml
[9e28174c] BinDeps v0.8.10
[34da2185] Compat v2.2.0
[8f4d0f93] Conda v1.3.0
[d8beea63] FINUFFT v0.4.2
[682c06a0] JSON v0.21.0
[69de0a69] Parsers v0.3.10
[30578b45] URIParser v0.4.0
[81def892] VersionParsing v1.2.0
[2a0f44e3] Base64 [@stdlib/Base64
]
[b99e7846] BinaryProvider [@stdlib/BinaryProvider
]
[864e158e] CredentialsHandler [@stdlib/CredentialsHandler
]
[ade2ca70] Dates [@stdlib/Dates
]
[8bb1440f] DelimitedFiles [@stdlib/DelimitedFiles
]
[8ba89e20] Distributed [@stdlib/Distributed
]
[cd3eb016] HTTP [@stdlib/HTTP
]
[83e8ac13] IniFile [@stdlib/IniFile
]
[b77e0a4c] InteractiveUtils [@stdlib/InteractiveUtils
]
[76f85450] LibGit2 [@stdlib/LibGit2
]
[8f399da3] Libdl [@stdlib/Libdl
]
[37e2e46d] LinearAlgebra [@stdlib/LinearAlgebra
]
[56ddb016] Logging [@stdlib/Logging
]
[d6f4376e] Markdown [@stdlib/Markdown
]
[739be429] MbedTLS [@stdlib/MbedTLS
]
[a63ad114] Mmap [@stdlib/Mmap
]
[44cfe95a] Pkg [@stdlib/Pkg
]
[de0858da] Printf [@stdlib/Printf
]
[3fa0cd96] REPL [@stdlib/REPL
]
[9a3f8284] Random [@stdlib/Random
]
[ea8e919c] SHA [@stdlib/SHA
]
[9e88b42a] Serialization [@stdlib/Serialization
]
[1a1011a3] SharedArrays [@stdlib/SharedArrays
]
[6462fe0b] Sockets [@stdlib/Sockets
]
[2f01184e] SparseArrays [@stdlib/SparseArrays
]
[10745b16] Statistics [@stdlib/Statistics
]
[9d418dce] TOML [@stdlib/TOML
]
[8dfed614] Test [@stdlib/Test
]
[cf7118a7] UUIDs [@stdlib/UUIDs
]
[4ec0a83e] Unicode [@stdlib/Unicode
]
ERROR: LoadError: LoadError: LoadError: Unable to load
libfinufft (/Users/patrickchang/.juliapro/JuliaPro_v1.2.0-1/packages/FINUFFT/bgr7t/deps/usr/lib/libfinufft.dylib)
Please re-run Pkg.build(package), and restart Julia.
Stacktrace:
[1] error(::String, ::String) at /Applications/JuliaPro-1.2.0-1.app/Contents/Resources/julia/Contents/Resources/julia/lib/julia/sys.dylib:?
[2] @checked_lib(::LineNumberNode, ::Module, ::Any, ::Any) at /Users/patrickchang/.juliapro/JuliaPro_v1.2.0-1/packages/FINUFFT/bgr7t/deps/deps.jl:11
[3] include_relative(::Module, ::String) at /Applications/JuliaPro-1.2.0-1.app/Contents/Resources/julia/Contents/Resources/julia/lib/julia/sys.dylib:?
[4] include at ./Base.jl:31 [inlined]
[5] include(::String) at /Users/patrickchang/.juliapro/JuliaPro_v1.2.0-1/packages/FINUFFT/bgr7t/src/FINUFFT.jl:2
[6] top-level scope at /Users/patrickchang/.juliapro/JuliaPro_v1.2.0-1/packages/FINUFFT/bgr7t/src/FINUFFT.jl:22
[7] include_relative(::Module, ::String) at /Applications/JuliaPro-1.2.0-1.app/Contents/Resources/julia/Contents/Resources/julia/lib/julia/sys.dylib:?
[8] include(::Module, ::String) at /Applications/JuliaPro-1.2.0-1.app/Contents/Resources/julia/Contents/Resources/julia/lib/julia/sys.dylib:?
[9] top-level scope at none:2
[10] eval at ./boot.jl:330 [inlined]
[11] eval(::Expr) at ./client.jl:432
[12] top-level scope at ./none:3
in expression starting at /Users/patrickchang/.juliapro/JuliaPro_v1.2.0-1/packages/FINUFFT/bgr7t/deps/deps.jl:26
in expression starting at /Users/patrickchang/.juliapro/JuliaPro_v1.2.0-1/packages/FINUFFT/bgr7t/deps/deps.jl:26
in expression starting at /Users/patrickchang/.juliapro/JuliaPro_v1.2.0-1/packages/FINUFFT/bgr7t/src/FINUFFT.jl:21
FINUFFT: Error During Test at /Users/patrickchang/.juliapro/JuliaPro_v1.2.0-1/packages/FINUFFT/bgr7t/test/runtests.jl:3
Got exception outside of a @test
LoadError: Failed to precompile FINUFFT [d8beea63-0952-562e-9c6a-8e8ef7364055] to /Users/patrickchang/.juliapro/JuliaPro_v1.2.0-1/compiled/v1.2/FINUFFT/WbG1O.ji.
Stacktrace:
[1] error(::String) at /Applications/JuliaPro-1.2.0-1.app/Contents/Resources/julia/Contents/Resources/julia/lib/julia/sys.dylib:?
[2] compilecache(::Base.PkgId, ::String) at /Applications/JuliaPro-1.2.0-1.app/Contents/Resources/julia/Contents/Resources/julia/lib/julia/sys.dylib:?
[3] _require(::Base.PkgId) at /Applications/JuliaPro-1.2.0-1.app/Contents/Resources/julia/Contents/Resources/julia/lib/julia/sys.dylib:?
[4] require(::Base.PkgId) at /Applications/JuliaPro-1.2.0-1.app/Contents/Resources/julia/Contents/Resources/julia/lib/julia/sys.dylib:? (repeats 2 times)
[5] include_relative(::Module, ::String) at /Applications/JuliaPro-1.2.0-1.app/Contents/Resources/julia/Contents/Resources/julia/lib/julia/sys.dylib:?
[6] include(::Module, ::String) at /Applications/JuliaPro-1.2.0-1.app/Contents/Resources/julia/Contents/Resources/julia/lib/julia/sys.dylib:?
[7] include(::String) at ./client.jl:431
[8] top-level scope at /Users/patrickchang/.juliapro/JuliaPro_v1.2.0-1/packages/FINUFFT/bgr7t/test/runtests.jl:4
[9] top-level scope at /Users/vagrant/worker/juliapro-release-osx1011-0_6/build/tmp_julia/Julia-1.2.app/Contents/Resources/julia/share/julia/stdlib/v1.2/Test/src/Test.jl:1113
[10] top-level scope at /Users/patrickchang/.juliapro/JuliaPro_v1.2.0-1/packages/FINUFFT/bgr7t/test/runtests.jl:4
[11] include_relative(::Module, ::String) at /Applications/JuliaPro-1.2.0-1.app/Contents/Resources/julia/Contents/Resources/julia/lib/julia/sys.dylib:?
[12] include(::Module, ::String) at /Applications/JuliaPro-1.2.0-1.app/Contents/Resources/julia/Contents/Resources/julia/lib/julia/sys.dylib:?
[13] include(::String) at ./client.jl:431
[14] top-level scope at none:5
[15] eval(::Module, ::Any) at /Applications/JuliaPro-1.2.0-1.app/Contents/Resources/julia/Contents/Resources/julia/lib/julia/sys.dylib:?
[16] exec_options(::Base.JLOptions) at /Applications/JuliaPro-1.2.0-1.app/Contents/Resources/julia/Contents/Resources/julia/lib/julia/sys.dylib:?
[17] _start() at /Applications/JuliaPro-1.2.0-1.app/Contents/Resources/julia/Contents/Resources/julia/lib/julia/sys.dylib:?
in expression starting at /Users/patrickchang/.juliapro/JuliaPro_v1.2.0-1/packages/FINUFFT/bgr7t/test/test_error_handler.jl:1
Test Summary: | Error Total
FINUFFT | 1 1
ERROR: LoadError: Some tests did not pass: 0 passed, 0 failed, 1 errored, 0 broken.
in expression starting at /Users/patrickchang/.juliapro/JuliaPro_v1.2.0-1/packages/FINUFFT/bgr7t/test/runtests.jl:3
ERROR: Package FINUFFT errored during testing
Now that the library has a CUDA implementation, we should interface it from here.
SInce this modifies the plan, in Julia it is more natural to have a bang (!) in the function name.
A minor tweak. Only affects guru interface. But now is a good time to do it since we just brought to master...
This issue is used to trigger TagBot; feel free to unsubscribe.
If you haven't already, you should update your TagBot.yml
to include issue comment triggers.
Please see this post on Discourse for instructions and more details.
If you'd like for me to do this for you, comment TagBot fix
on this issue.
I'll open a PR within a few hours, please be patient!
To keep up with the times, the FINUFFT dependency should be provided as a JLL created using BinaryBuilder. Contributions welcome!
Thanks for this work. I wanted to use your library and I try to build it on macOS.
My first move was to make a change in deps/build.jl
-buildcmd = `make lib LIBRARY_PATH=$lib CPATH=$inc`
+buildcmd = `make lib LIBRARY_PATH=$lib CPATH=$inc CXX=g++-8 CC=gcc-8`
It generates a .so library file but a dylib seems to be expected...
ERROR: LoadError: failed process: Process(`cp /Users/navaro/.julia/packages/FINUFFT/W7sdX/deps/src/finufft-1.0/lib/libfinufft.dylib /Users/navaro/.julia/packages/FINUFFT/W7sdX/deps/usr/lib/libfinufft.dylib`, ProcessExited(1)) [1]
If you have an idea...
Hi @ludvigak
I'm just starting learning to use this package, so this could be a noob question.
The first step I'm taking is to recover a uniform dft.
For example, in FFTW.jl and FastTransforms.jl, I do the following
using FFTW, FastTransforms
f = [-2.0, 1.52, 0.93] # a random vector
f1 = fft(f)
x = [i/3 for i=0:2] # uniform frequency
f2 = nufft2(f .+ 0.0im, x, 1e-10)
The result f2 is equal to f1.
In FINUFFT.jl, I tried the follwing,
using FINUFFT
nufft1d1(x, f .+ 0.0im, -1, 1e-10, 3)
But the result isn't the same as f1.
Did I need to do anything else to use it the right way?
Taking care of the discussed changes with respect to the dtype
keyword argument, I noticed that the out-of-place nufftndm
calls essentially validate their arguments twice since valid_setpts
, valid_ntr
, and checkkwdtype
are called a second time within the nufftndm!
functions. Wouldn't it make sense to remove these checks from the out-of-place functions and simplify them to something like the following?
function nufft3d3(xj :: Array{T},
yj :: Array{T},
zj :: Array{T},
cj :: Array{Complex{T}},
iflag :: Integer,
eps :: Real,
sk :: Array{T},
tk :: Array{T},
uk :: Array{T};
kwargs...) where T <: finufftReal
ntrans = valid_ntr(xj,cj)
fk = Array{Complex{T}}(undef, nk, ntrans)
nufft3d3!(xj, yj, zj, cj, iflag, eps, sk, tk, uk, fk; kwargs...)
return fk
end
Currently, the function looks like
function nufft3d3(xj :: Array{T},
yj :: Array{T},
zj :: Array{T},
cj :: Array{Complex{T}},
iflag :: Integer,
eps :: Real,
sk :: Array{T},
tk :: Array{T},
uk :: Array{T};
kwargs...) where T <: finufftReal
(nj, nk) = valid_setpts(3,3,xj,yj,zj,sk,tk,uk)
ntrans = valid_ntr(xj,cj)
fk = Array{Complex{T}}(undef, nk, ntrans)
checkkwdtype(T; kwargs...)
nufft3d3!(xj, yj, zj, cj, iflag, eps, sk, tk, uk, fk;kwargs...)
return fk
end
with the in-place method
function nufft3d3!(xj :: Array{T},
yj :: Array{T},
zj :: Array{T},
cj :: Array{Complex{T}},
iflag :: Integer,
eps :: Real,
sk :: Array{T},
tk :: Array{T},
uk :: Array{T},
fk :: Array{Complex{T}};
kwargs...) where T <: finufftReal
(nj, nk) = valid_setpts(3,3,xj,yj,zj,sk,tk,uk)
ntrans = valid_ntr(xj,cj)
checkkwdtype(T; kwargs...)
plan = finufft_makeplan(3,3,iflag,ntrans,eps;dtype=T,kwargs...)
finufft_setpts!(plan,xj,yj,zj,sk,tk,uk)
finufft_exec!(plan,cj,fk)
ret = finufft_destroy!(plan)
check_ret(ret)
end
First, thank you for this submission! The code works really, really well, and especially shines in 3D. This is a feature request:
Storing big 3D volumes as ComplexF64
is very memory intensive. Does the core C++ code support complex floats instead of doubles? If so, wrapping the ComplexF32
variant would be very useful for large 3D problems.
@JuliaRegistrator register()
Although the finufft_jll is built with thread-safety in mind, we still have to call one of the nufft-methods once before running multiple threads each requiring the library to prevent a segfault. I guess this issue could be fixed by calling the finufft library once while the package is loaded. But maybe there is a more elegant option to fix this problem?
MWE leading to a segfault:
julia> using FINUFFT
julia> x = rand(100); c = rand(ComplexF64,100);
julia> Threads.@threads for k in 1:8
nufft1d1(x, c, -1, 1e-10, 100);
end
Please submit a bug report with steps to reproduce this fault, and any error messages that follow (in their entirety). Thanks.
Exception: EXCEPTION_ACCESS_VIOLATION at 0x70684b68 -- search0.isra.13 at C:\Users\mv6955\.julia\artifacts\bf7c8150c03037fb2fa33ec629071e4d377e422a\bin\libfftw3-3.dll (unknown line)
in expression starting at REPL[3]:1
search0.isra.13 at C:\Users\mv6955\.julia\artifacts\bf7c8150c03037fb2fa33ec629071e4d377e422a\bin\libfftw3-3.dll (unknown line)
mkplan at C:\Users\mv6955\.julia\artifacts\bf7c8150c03037fb2fa33ec629071e4d377e422a\bin\libfftw3-3.dll (unknown line)
fftw_mkplan_d at C:\Users\mv6955\.julia\artifacts\bf7c8150c03037fb2fa33ec629071e4d377e422a\bin\libfftw3-3.dll (unknown line)
mkplan at C:\Users\mv6955\.julia\artifacts\bf7c8150c03037fb2fa33ec629071e4d377e422a\bin\libfftw3-3.dll (unknown line)
search0.isra.13 at C:\Users\mv6955\.julia\artifacts\bf7c8150c03037fb2fa33ec629071e4d377e422a\bin\libfftw3-3.dll (unknown line)
mkplan at C:\Users\mv6955\.julia\artifacts\bf7c8150c03037fb2fa33ec629071e4d377e422a\bin\libfftw3-3.dll (unknown line)
fftw_mkplan_d at C:\Users\mv6955\.julia\artifacts\bf7c8150c03037fb2fa33ec629071e4d377e422a\bin\libfftw3-3.dll (unknown line)
mkplan at C:\Users\mv6955\.julia\artifacts\bf7c8150c03037fb2fa33ec629071e4d377e422a\bin\libfftw3-3.dll (unknown line)
search0.isra.13 at C:\Users\mv6955\.julia\artifacts\bf7c8150c03037fb2fa33ec629071e4d377e422a\bin\libfftw3-3.dll (unknown line)
mkplan at C:\Users\mv6955\.julia\artifacts\bf7c8150c03037fb2fa33ec629071e4d377e422a\bin\libfftw3-3.dll (unknown line)
fftw_mkplan_d at C:\Users\mv6955\.julia\artifacts\bf7c8150c03037fb2fa33ec629071e4d377e422a\bin\libfftw3-3.dll (unknown line)
mkplan at C:\Users\mv6955\.julia\artifacts\bf7c8150c03037fb2fa33ec629071e4d377e422a\bin\libfftw3-3.dll (unknown line)
search0.isra.13 at C:\Users\mv6955\.julia\artifacts\bf7c8150c03037fb2fa33ec629071e4d377e422a\bin\libfftw3-3.dll (unknown line)
mkplan at C:\Users\mv6955\.julia\artifacts\bf7c8150c03037fb2fa33ec629071e4d377e422a\bin\libfftw3-3.dll (unknown line)
fftw_mkplan_d at C:\Users\mv6955\.julia\artifacts\bf7c8150c03037fb2fa33ec629071e4d377e422a\bin\libfftw3-3.dll (unknown line)
mkplan at C:\Users\mv6955\.julia\artifacts\bf7c8150c03037fb2fa33ec629071e4d377e422a\bin\libfftw3-3.dll (unknown line)
search0.isra.13 at C:\Users\mv6955\.julia\artifacts\bf7c8150c03037fb2fa33ec629071e4d377e422a\bin\libfftw3-3.dll (unknown line)
mkplan at C:\Users\mv6955\.julia\artifacts\bf7c8150c03037fb2fa33ec629071e4d377e422a\bin\libfftw3-3.dll (unknown line)
.text at C:\Users\mv6955\.julia\artifacts\bf7c8150c03037fb2fa33ec629071e4d377e422a\bin\libfftw3-3.dll (unknown line)
fftw_mkapiplan at C:\Users\mv6955\.julia\artifacts\bf7c8150c03037fb2fa33ec629071e4d377e422a\bin\libfftw3-3.dll (unknown line)
.text at C:\Users\mv6955\.julia\artifacts\bf7c8150c03037fb2fa33ec629071e4d377e422a\bin\libfftw3-3.dll (unknown line)
finufft_makeplan at C:\Users\mv6955\.julia\artifacts\8dcc8b4f6e304280280e5a86a98dfd610a9216bf\bin\libfinufft.dll (unknown line)
finufft1d1 at C:\Users\mv6955\.julia\artifacts\8dcc8b4f6e304280280e5a86a98dfd610a9216bf\bin\libfinufft.dll (unknown line)
nufft1d1! at C:\Users\mv6955\.julia\packages\FINUFFT\EEFSZ\src\FINUFFT.jl:506
nufft1d1 at C:\Users\mv6955\.julia\packages\FINUFFT\EEFSZ\src\FINUFFT.jl:256 [inlined]
nufft1d1 at C:\Users\mv6955\.julia\packages\FINUFFT\EEFSZ\src\FINUFFT.jl:255
unknown function (ip: 000000001f81dba9)
macro expansion at .\REPL[3]:2 [inlined]
#2#threadsfor_fun at .\threadingconstructs.jl:81
#2#threadsfor_fun at .\threadingconstructs.jl:48
unknown function (ip: 000000001f81d1a3)
jl_apply at /cygdrive/c/buildbot/worker/package_win64/build/src\julia.h:1690 [inlined]
start_task at /cygdrive/c/buildbot/worker/package_win64/build/src\task.c:705
Allocations: 775621 (Pool: 775360; Big: 261); GC: 1
This behavior is not related to Windows 10 and can also be reproduced on Fedora.
Hi,
Due I guess to how recent the Julia release has been (22/12), I cannot get FINUFFT to run in that setup. I get:
ERROR: LoadError: UndefVarError: libfinufft not defined
when trying "using FINUFFT".
I looked into it but couldn't see an obvious, easy, fix. libfinufft was not created. When I run it on Julia 1.6.x under the rosetta emulator for M1, it runs properly (and there is a libfinufft.so etc.) My guess is libfinunfft has no support so far for that architecture.
If you'd have time to get have a look that would be great. Thanks again for creating the package!
Cheers,
Paul.
Hi,
in the FINUFFT wrapper, I tried to create two plans, one for type 1 and one for type 2:
https://github.com/JuliaMath/NFFT.jl/blob/master/Wrappers/FINUFFT.jl
However, it seems the plans are not independent. Can it be that they access some global state? For now I moved the code into the nfft!
and nfft_adjoint!
functions and with that it works without problems. When I move both plans into the constructor of the type, I get either a wrong result, or a segfault.
Cheers,
Tobias
julia> p = finufft_makeplan(2,10,+1,1,1e-6)
finufft_plan{Float64}(2, 1, 1, 10, 1, 1, 0, 0, Ptr{Nothing} @0x0000000001f0cce0)
julia> finufft_destroy(p)
0
julia> finufft_destroy(p)
free(): invalid pointer
signal (6): Aborted
in expression starting at REPL[8]:1
...
crashes out of Julia. Fun stuff.
This is because the high-level language wrapper needs to zero the plan_ptr
and check if nonzero before sending it to finufft_destroy
.
The in-place versions nufftndm! do not work for single-precision inputs without explicitly providing the dtype keyword argument whereas the out-of-place variants work just fine:
Out-of-place:
julia> using FINUFFT
julia> nj = 1000000;
julia> x = pi*(1 .- 2*rand(Float32, nj));
julia> c = rand(ComplexF32, nj);
julia> ms = 2000000;
julia> tol = 1e-5;
julia> fk = nufft1d1(x, c, 1, tol, ms);
In-place:
julia> fk = nufft1d1!(x, c, 1, tol, Array{ComplexF32}(undef,ms));
ERROR: MethodError: no method matching finufft_setpts!(::finufft_plan{Float64}, ::Vector{Float32})
Closest candidates are:
finufft_setpts!(::finufft_plan{T}, ::Array{T}) where T<:Union{Float32, Float64} at C:\Users\mv6955\.julia\packages\FINUFFT\GNqRW\src\guru.jl:159
finufft_setpts!(::finufft_plan{T}, ::Array{T}, ::Array{T}) where T<:Union{Float32, Float64} at C:\Users\mv6955\.julia\packages\FINUFFT\GNqRW\src\guru.jl:159
finufft_setpts!(::finufft_plan{T}, ::Array{T}, ::Array{T}, ::Array{T}) where T<:Union{Float32, Float64} at C:\Users\mv6955\.julia\packages\FINUFFT\GNqRW\src\guru.jl:159
...
Stacktrace:
[1] nufft1d1!(xj::Vector{Float32}, cj::Vector{ComplexF32}, iflag::Int64, eps::Float64, fk::Vector{ComplexF32}; kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
@ FINUFFT C:\Users\mv6955\.julia\packages\FINUFFT\GNqRW\src\simple.jl:470
[2] nufft1d1!(xj::Vector{Float32}, cj::Vector{ComplexF32}, iflag::Int64, eps::Float64, fk::Vector{ComplexF32})
@ FINUFFT C:\Users\mv6955\.julia\packages\FINUFFT\GNqRW\src\simple.jl:458
[3] top-level scope
@ REPL[23]:1
Using the dtype argument, the problem is resolved:
julia> fk = nufft1d1!(x, c, 1, tol, Array{ComplexF32}(undef,ms), dtype=Float32);
Wouldn't it make more sense to adapt the in-place function definitions such that they infer the plan-type from the provided-data, e.g., as in
function nufft1d1!(xj :: Array{T},
cj :: Array{Complex{T}},
iflag :: Integer,
eps :: Real,
fk :: Array{Complex{T}};
kwargs...) where T <: finufftReal
valid_setpts(1,1,xj)
ntrans = valid_ntr(xj,cj)
(ms, ntrans_fk) = get_nmodes_from_fk(1,fk)
checkkwdtype(T; kwargs...)
plan = finufft_makeplan(1,[ms;],iflag,ntrans,eps;**dtype=T**,kwargs...)
finufft_setpts!(plan,xj)
finufft_exec!(plan,cj,fk)
ret = finufft_destroy!(plan)
check_ret(ret)
end
I highlighted the proposed modification with ** **.
Cheers, Jonas
FINUFFT (including tests) crashes the julia process on 1.8.5.
Julia Version 1.8.5
Commit 17cfb8e65e (2023-01-08 06:45 UTC)
Platform Info:
OS: Windows (x86_64-w64-mingw32)
CPU: 16 × AMD Ryzen 7 3700X 8-Core Processor
WORD_SIZE: 64
LIBM: libopenlibm
LLVM: libLLVM-13.0.1 (ORCJIT, znver2)
Threads: 16 on 16 virtual cores
Environment:
JULIA_NUM_THREADS = 16
Same error happens with win10+intel cpu
ERROR: Package FINUFFT errored during testing (exit code: 3221226356)
All tests pass for 1.8.1.
Unfortunately I have no further ideas about the cause of the error.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.