Context: As I was doing some new development into ExaFMM, I added some arguments to the function calculate(...) in fmm.cxx.
The issue: The code would compile, but when importing FLOWExaFMM, I'd get the following error:
ERROR: LoadError: InitError: Unregistered method with key (:function, :calculate, :FLOWExaFMM, 0x6f3a446a03830f60) requested, maybe you need to precompile the Julia module?
The solution: After much debugging, I realize that FLOWExaFMM would import well as long as calculate(...) would keep the same arguments than before the modifications. As I was debugging, I went into /home/edoalvar/.julia/packages/CxxWrap/ZOkSN/src/CxxWrap.jl and added a print statement to print the hash dictionary with pre-compiled dictionaries. After adding this new line into CxxWrap.jl the issue disappeared. This leads me to conclude that CxxWrap keeps a static history of modules and their structure in somewhere in permanent memory, and changing the number of arguments of calculate(...), the function no longer matched what it had in its dictionary. Modifying CxxWrap.jl led Julia to recompile CxxWrap, forcing it to flush previous information on ExaFMM.
Context: As I was doing some new development into ExaFMM, I added some arguments to the function
calculate(...)
infmm.cxx
.The issue: The code would compile, but when importing FLOWExaFMM, I'd get the following error:
ERROR: LoadError: InitError: Unregistered method with key (:function, :calculate, :FLOWExaFMM, 0x6f3a446a03830f60) requested, maybe you need to precompile the Julia module?
The solution: After much debugging, I realize that FLOWExaFMM would import well as long as
calculate(...)
would keep the same arguments than before the modifications. As I was debugging, I went into/home/edoalvar/.julia/packages/CxxWrap/ZOkSN/src/CxxWrap.jl
and added a print statement to print the hash dictionary with pre-compiled dictionaries. After adding this new line intoCxxWrap.jl
the issue disappeared. This leads me to conclude that CxxWrap keeps a static history of modules and their structure in somewhere in permanent memory, and changing the number of arguments ofcalculate(...)
, the function no longer matched what it had in its dictionary. ModifyingCxxWrap.jl
led Julia to recompile CxxWrap, forcing it to flush previous information on ExaFMM.