-
Notifications
You must be signed in to change notification settings - Fork 683
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
Merging the HAL rewrite branch to main #4571
Conversation
This is still marked as a draft and builds are failing. Do you want me to start reviewing now or wait? |
Can wait - leaving as draft until I get the CIs passing. All of these have been reviewed by @ScottTodd as they were going into the branch, so the big thing to look for here is whether this messes you up in any way that the CI's don't check :) |
4ffb506
to
685c5cd
Compare
Doesn't seem to change anything but there's not really a reason to detach and I'd rather never have to think about this code again.
This would cause all kind of badness when multiple executables shared the same hal.interface bindings but had differing push constants.
The max size on the stack is 3KB, which is fine for something transient like this that is only used for construction of the executor.
They were all implemented using mapping anyway and this way we only have that code once and make the restriction that buffers be mappable part of their usage uniformly.
* Use `IREE_RESTRICT` for older MSVC versions. * Update iree-run-module-vulkan-gui-main.cc * Include <atomic> for std::atomic use in GetTempFile. Tested CMake build of `all` (vmla+vulkan only) on my Windows machine, with samples and Vulkan enabled.
This case is not yet exercised from our code but I'll be fixing it ASAP anyway.
Unfortunately not caught by any of our open source builds. --- ``` typedef size_t iree_host_size_t; typedef uint64_t iree_device_size_t; ``` `iree_device_size_t` should use `% " PRIu64 "` instead of `%zu` --- `ppoll` is available since Android API 21 (or 28 for `ppoll64`? seeing conflicting docs) --- `iree_hal_buffer_calculate_range` outputs into a `iree_device_size_t`, which isn't directly compatible with ``` typedef struct { uint8_t* data; iree_host_size_t data_length; } iree_byte_span_t; ```
Possibly: hard to test without 128 cores. I did try turning the topology mask into a uint8_t on my 64 core machine and it passed --config=ubsan.
The wait functionality isn't done yet.
The classic condvar shutdown notification race.
Fallback to 1 thread for when cpuinfo_get_cores_count()==0 and core count when cpuinfo_get_l2_caches_count()==0. Issue #4654 is tracking making this better.
59b7a7c
to
6de6fdf
Compare
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.
- Builds/tests are all passing
- Code is reviewed
-
google
branch should be stable soon
Nearly ready for merge.
Branches are stable. Ready to merge :D |
Major branch features:
iree/hal/local/
backend replacing host supporting multithreading and pluggable executable loadersiree/modules/vmla/
, enabling the ability for host code to use it tooiree/hal/cts/
using the public C APIs instead of the internal C++ onesNOTE: this removes the experimental metal backend (to be revived in #4370).
NOTE: this disables hal.executable linking for vmla/dylib pending a fix in #4536 (linking had prior to this been relying on those two backends to not using executable layouts and now they do). Will be fixed up soon.
First major milestone of #4369.
Fixes #4391.
Fixes #4472.