-
Notifications
You must be signed in to change notification settings - Fork 25
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Julia interface #90
base: master
Are you sure you want to change the base?
Julia interface #90
Conversation
added sync function to Julia wrapper moved julia utility functions into BraidUtils.jl moved wrapper_functions.jl into Wrappers.jl created new namespace for Status structures added calling_function constants to status.jl added GetCFactor function to braid_status.c
/** Turn on the optional user-defined spatial coarsening and refinement functions */ | ||
/** Turn on/off the Fortran interface (useful for avoiding undefined symbol | ||
* errors in shared library builds) */ | ||
#define braid_Fortran_Iface 0 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Use a makefile mechanism instead?
Hi @cadaverous-lives . I just pushed the changes we talked about yesterday. I used your MPIPreferences suggestion, but modified the path to something less specific (this still works and I think it's the right lib directory to point to anyway). See the examples README for details. A couple of notes:
|
- this currently just removes braid_F90_iface.c from the list of braid files/linked objects
Hey Rob, thanks for doing that! I'm glad you were able to figure out how to provide a less specific location to
Weird... I don't get that warning, but with the |
I just merged a bunch of changes from my fork, including:
|
Added .dSYM file extension to .gitignore
This prevents having to make calls to XBraid.set functions to set common parameters like max_iters, max_levels, etc.
(reopening on new branch)
Introduces a new interface to XBraid, written in Julia, along with an example and a couple of drivers demonstrating the usage of the interface.
I originally did not intend to make a pull request for this, as I made it for my own personal use, so I have made some choices that may be too restrictive. I have made this a draft pr so we can discuss the choices made.
My goal was to write the interface so that the user does not have to manage any memory or communication, and as a result the user does not write clone, free, bufpack, or bufunpack routines, and some default functions are provided for sum, norm, and inner_prod, assuming the user's vector is a Julia array.
Julia also being a just-in-time compiled language resulted in the need for a "warmup" function, which allows the user's functions to be compiled before braid_Drive is called. Without this, if the first downcycle is skipped, the user's step function is compiled every time it is called on the coarse grid by a new processor, which adds a lot of extra serial work to the first iteration.
notable features missing:
sync function(Implemented)I believe all of these features are fairly straightforward to implement, I just haven't had a need to work on them.