You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The previous implementation enumerated most combinations of LCAO/PW, LibRI, ML, CUDA, and MPI through deeply nested conditionals. This PR instead determines the executable name from two independent components:
feature: pw, basic, std, ml, or max;
backend: gpu, para, omp, or ser.
The final name is then constructed as abacus_<feature>_<backend>, like what's provided before.
Changes
Remove the duplicated nested executable-naming branches.
Treat CUDA and ROCm builds consistently as gpu.
Distinguish non-MPI OpenMP builds with the omp suffix instead of classifying them as ser.
Ensure the executable name is always determined without relying on particular MPI/GPU combinations.
Remove the unnecessary cache-variable cleanup for ABACUS_BIN_NAME.
_abacus_bin_level contains pw, basic, std, ml, and max, same as before.
_abacus_bin_para contains para (MPI-parallel), omp, and ser; it means the parallel type of ABACUS will be always exposed via binary name.
_abacus_bin_device contains gpu, dcu, dsp, and sw; it is only valid and appended when those specified architectures are used.
Most likely this PR can be considered as ready. That being said, I still do not think the current workaround is clean (note I called it "workaround"), therefore it does not resolve #7785. For that issue, my personal wish is to remove this specified binary naming logic and leave just one abacus executable always, as the level part is no longer able to represent the real feature configuration regardless.
KML is not a device or architecture essentially; it is an alternative math library (similar to MKL, AOCL) and should not be added into _abacus_bin_device.
Why omit para? I think no one would expect abacus_std, abacus_std_gpu, abacus_std_omp_gpu.
KML is not a device or architecture essentially; it is an alternative math library (similar to MKL, AOCL) and should not be added into _abacus_bin_device.
Why omit para? I think no one would expect abacus_std, abacus_std_gpu, abacus_std_omp_gpu.
I think KML is only supported for HW hardware...(Maybe you can change kml to kunpeng?)
I think there will be no abacus_std, only abacus(symlink), abacus_std_cpu, abacus_std_gpu, abacus_std_omp_cpu, abacus_std_omp_gpu...
And, making the parallelism suffix "optional" makes the naming slightly irregular: for MPI builds, the platform field effectively takes the place where the parallelism field would otherwise be 🤔
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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.
The previous implementation enumerated most combinations of LCAO/PW, LibRI, ML, CUDA, and MPI through deeply nested conditionals. This PR instead determines the executable name from two independent components:
pw,basic,std,ml, ormax;gpu,para,omp, orser.The final name is then constructed as
abacus_<feature>_<backend>, like what's provided before.Changes
gpu.ompsuffix instead of classifying them asser.ABACUS_BIN_NAME.