Skip to content
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

rtc_boids and other profiling changes #371

Merged
merged 6 commits into from
Oct 19, 2020
Merged

rtc_boids and other profiling changes #371

merged 6 commits into from
Oct 19, 2020

Conversation

Robadob
Copy link
Member

@Robadob Robadob commented Aug 24, 2020

This branch started out as adding an rtc version of boids but has grown, so I've compiled a changelog.

Changelog:

  • Added boids_rtc_bruteforce and boids_rtc_spatial3D examples, these models are identical to their non-rtc variants.
  • Removed rtc_example
  • Removed new and delete from agent_function_wrapper and agent_function_condition_wrapper, api object is now allocated in local not global.
  • Added getVariableByHash_ldg() and getVariable_ldg() to CURVE. These are used by message bruteforce (also affects RTC curve header).
  • Improve the arguments passed to RTC, so that they match the non-rtc compilation settings.
  • Add CMake option EXPORT_RTC_SOURCES. If enabled, this sets the macro OUTPUT_RTC_DYNAMIC_FILES causing RTC dynamic files to be exported to the working directory at runtime.
  • Refactor CURVE, to improve RTC variable access performance (removal of a redundant branch).
  • Optimise end() iterator for spatial messaging to reduce instructions on comparison.

Normal tests pass on Windows (seatbelts on).
Normal tests pass on Linux (Petes machine, seatbelts on/off).
Swig tests pass on Windows (seatbelts on)
Normal tests fail on Mavericks. All tests failing are environment, not sure why.

@Robadob
Copy link
Member Author

Robadob commented Oct 9, 2020

So much got added to this branch than intended. Not sure if we want to keep the __ldg change (but I think removing it will also require reverting 48b863).

Otherwise it seems mergeable.

CMakeLists.txt Outdated Show resolved Hide resolved
@Robadob Robadob changed the title rtc_example is now rtc_boids_bruteforce rtc_boids and other profiling changes Oct 13, 2020
@Robadob Robadob force-pushed the boids_rtc branch 3 times, most recently from d9c7273 to efa0d9e Compare October 16, 2020 15:44
Robadob and others added 5 commits October 16, 2020 16:46
Broken when rebasing d231ecb after 7c11310, but SWIG tests were not ran.

Also delete spurious cu file found in SWIG tests directories.
Remove device new for FLAME GPU API for agent functions and agent function conditions
Add curve get via __ldg() function.
Pass additional flags to RTC compilation
Add CMake option to log dynamic RTC files to disk at runtime
CURVE device methods set/get variable methods are now seperated into agent, message in, message out, new agent.
When executing non-rtc code, these forward to the previous set/get variable methods.
Under RTC however they go to specific methods, this allows variable accesses to be optimised away to direct memory reads at compile time.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants