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

Enable GPU offload of depth and current refraction solver #45

Merged
merged 9 commits into from
Dec 5, 2024

Conversation

awnawab
Copy link
Contributor

@awnawab awnawab commented Nov 28, 2024

49R2 enables the current and depth refraction solver in the wave propagation kernel. This PR ports this solver to run on GPU. The CPU and GPU variants posed conflicting demands for performance, so I am now also using Loki to preprocess PROPAGS2 for GPU enabled runs.

ecwam_gpu_49r2

@awnawab
Copy link
Contributor Author

awnawab commented Nov 28, 2024

@jrbidlot and @jkousal32, could you also please have a look? Especially the new test config which enables current refraction, I am not sure I have configured this correctly.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can I ask how you chose the value of nproma?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I set it based on GPU performance, since these test cases have mostly been used to assess GPU performance. If you know of a better value for CPU performance then I am happy to change it to that.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We have used nproma values around 24 but actually, it has not been really tested on Atos to determine if there is another optimum one.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Until we actually supply the currents which will contain actual surface current data, it does not matter what we specify for CDATECURA because the routine that reads the potential file called currents, on not finding it will simply initialise the currents to 0.
But in preparation on when we will actually add the file currents, I would suggest to set
CDATECURA = "${begofrn}",
i.e. we will expect current data from the beginning of the run.
We should also add the namelist entry IDELCUR. It will tell ecWAM how often in seconds the file currents will contain new data. For now we can select IDELCUR = 86400,
(i.e. new current field every day)

Copy link
Contributor

@jrbidlot jrbidlot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See my comment on adding IDELCUR and future work on adding actual ocean current data

@awnawab
Copy link
Contributor Author

awnawab commented Dec 4, 2024

Thanks a lot @jrbidlot for the feedback! I've addressed your comments, please have another look when you can 😄

Copy link
Contributor

@jrbidlot jrbidlot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks fine to me.
Thanks

Copy link
Contributor

@mlange05 mlange05 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

GPU and Loki changes look good to me. 👍

@wdeconinck wdeconinck merged commit 682893c into ecmwf-ifs:develop Dec 5, 2024
10 of 12 checks passed
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.

5 participants