-
Notifications
You must be signed in to change notification settings - Fork 401
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
dylib open/call/close io functions, initial ffi api #394
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This comment has been minimized.
This comment has been minimized.
enricozb
changed the title
dylib open/call/close io functions
dylib open/call/close io functions, initial ffi api
Jun 20, 2024
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
developedby
approved these changes
Jun 24, 2024
Perf run for
|
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Overview
Adds
DL_OPEN
,DL_CALL
, andDL_CLOSE
IO functions.C Runtime
Example usage looks like this: A user first defines some C functions they want to invoke through HVM at runtime:
Functions must have the signature
Port (my_func)(Net*, Book*, Port)
.This file must be compiled as a shared library (
.so
). For example,gcc -shared my-funcs.c -o my-funcs.so
. The file can then be loaded and symbols can be accessed. In Bend this looks like:C Compiled Mode
When compiling a generated HVM C file, you must use the
-rdynamic
flag to enable the shared library to access symbols from the main binary. For example,cargo run -r -- gen-c testing-ffi.hvm > testing-ffi.c gcc -rdynamic -lm testing-ffi.c -o testing-ffi
CUDA Runtime
The FFI is a little different, the above C file would look like this instead:
And functions must have the signature
Port (my_func)(GNet*, Port)
.CUDA Compiled Mode
When compiling a generated HVM C file, you must use the
-rdynamic
flag to the host compiler to enable the shared library to access symbols from the main binary. For example,cargo run -r -- gen-cu testing-ffi.hvm > testing-ffi.cu nvcc --compiler-options=-rdynamic testing-ffi.c -o testing-ffi
HVM FFI API
Not everything is exposed to users at the moment, we expose
readback_str
,readback_tup
,readback_bytes
, andinject_bytes
See
hvm.h
for users of the C runtime.See
hvm.cuh
for users of the CUDA runtime.