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

Assembly implementation #103

Merged
merged 10 commits into from
Jan 30, 2024
Merged

Conversation

Rohit-Kakodkar
Copy link
Collaborator

Description

Please describe the changes/features in this pull request.

Reimplement compute namespace so that any data required to build kernels is available through compute namespace. The premise of this change is make the interface cleaner and more intuitive.

This is breaking pull request since the kernels need to be reimplemented to account for changes in data layout.

Major changes
- The properties are broken down into individual structs for every material type
- This should let us reference the material directly inside the kernels
- Material structs are templated on material type and material property (isotropic, anisotropic)
- Implemented point property method
- Added fields within the compute namespace
- This follows the idea that all simulation data should be owned by compute namespace
- The operating kernels can have a reference to this data
- Advantages of new implementation
- Lower memory footprint through compressed field storage
- Lower RangePolicy kernel time since kernel will only iterate though non-zero nglobs

Changes to the testing methods for properties
- The properties views are now compacted by removing zero values where the property doesnt apply. This makes me update testing routine so binary read properties can be compacted before comparison

Issue Number

If there is an issue created for these changes, link it here

Checklist

Please make sure to check developer documentation on specfem docs.

[x] I ran the code through pre-commit to check style
[] My code passes all the integration tests
[x] I have added sufficient unittests to test my changes
[x] I have added/updated documentation for the changes I am proposing
[x] I have updated CMakeLists to ensure my code builds
[x] My code builds across all platforms

Major changes going into this commit
	- The properties are broken down into individual structs for every material type
		- This should let us reference the material directly inside the kernels
	- Material structs are templated on material type and material property (isotropic, anisotropic)
	- Implemented point property method

Changes to the testing methods for properties
	- The properties views are now compacted by removing zero values where the property doesnt apply. This makes me update testing routine so binary read properties can be compacted before comparison
- Reimplemented sources
- Restructed compute sources routine
- Encapsulated algorithms
- Added fields within the compute namespace
	- This follows the idea that all simulation data should be owned by compute namespace
	- The operating kernels can have a reference to this data

- Advantages of new implementation
	- Lower memory footprint through compressed field storage
	- Lower RangePolicy kernel time since kernel will only iterate though non-zero nglobs
@Rohit-Kakodkar Rohit-Kakodkar merged commit e17e5ee into Assembly-refactor Jan 30, 2024
2 of 6 checks passed
@Rohit-Kakodkar Rohit-Kakodkar deleted the Assembly-Implementation branch November 12, 2024 18:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant