Fix #375: Strip function wrappers for ModelingToolkit GPU compatibility #378
+82
−2
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.
Description
Fixes #375 by ensuring all non-isbits types are properly stripped before GPU transfer when using ModelingToolkit-generated problems with EnsembleGPUKernel.
Problem
ModelingToolkit-generated
ODEProbleminstances contain:RuntimeGeneratedFunctionwrappersThese non-isbits types cause the error: "CuArray only supports element types that are allocated inline" when attempting GPU transfer.
Solution
Modified
make_prob_compatibleinsrc/utils.jlto:RuntimeGeneratedFunctionwrappers usingSciMLBase.unwrapped_fsys=nothing) fromODEFunctionChanges
make_prob_compatibleto unwrap functions and strip symbolic systemsTesting
EnsembleGPUKernelandGPUTsit5Related Issues
Closes #375
🤖 Generated with Claude Code
Co-Authored-By: Claude noreply@anthropic.com