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

[CI] Add symbols.yml and modules.yml #261

Merged
merged 13 commits into from
Feb 22, 2024
Merged

Conversation

amontoison
Copy link
Member

@amontoison amontoison commented Feb 14, 2024

@jfowkes @nimgould
I add two new CI builds with this pull request.

The goal of the first new build (symbols.yml) is to check if the following shared libraries export the same symbols:

  • libgalahad_single.so with 32-bit integer
  • libgalahad_double.so with 32-bit integer
  • libgalahad_single.so with 64-bit integer
  • libgalahad_double.so with 64-bit integer

Two libraries can export the same symbols ONLY IF it's exactly the same routine.
For example libgalahad_single.so and libgalahad_double.so can both export iamax_ ONLY IF both libraries are
compiled with 32-bit integer.

Note that I don't compile GALAHAD with SSIDS for now but it seems that many C++ symbols are shared by both single / double libraries.
We probably need to preprocess some symbols in C++ files...

The goal of the second new build (modules.yml) is to check that each library generates Fortran modules with different names.

@amontoison amontoison changed the title [CI] Add symbols.yml [CI] Add symbols.yml and modules.yml Feb 14, 2024
@amontoison
Copy link
Member Author

amontoison commented Feb 14, 2024

An example of what we can conclude from the output of the two new builds:

@amontoison
Copy link
Member Author

amontoison commented Feb 14, 2024

@nimgould Can you confirm that the following Fortran modules are the same in single and double precision?

  • "galahad_blas_interface"
  • "galahad_lapack_interface"
  • "spral_ssids_blas_iface"
  • "spral_ssids_lapack_iface"
  • "galahad_clock"
  • "galahad_string"
  • "galahad_symbols"
  • "galahad_tools"
  • "galahad_copyright"
  • "galahad_hash"
  • "galahad_common_ciface"
  • "galahad_hash_ciface"
  • "galahad_hsl_kb22_long_integer"
  • "galahad_hsl_mc68_integer"
  • "galahad_hsl_mc78_integer"
  • "galahad_hsl_of01_integer"
  • "galahad_hsl_zb01_integer"
  • "galahad_hsl_mc68_integer_ciface"
  • "galahad_kinds"
  • "galahad_kinds_single"
  • "galahad_kinds_double"
  • "spral_kinds"
  • "spral_kinds_single"
  • "spral_kinds_double"
  • "mkl_pardiso"
  • "mkl_pardiso_private"
  • "lancelot_hsl_routines"
  • "pastixf_enums"
  • "pastixf_interfaces" (x)
  • "spmf_enums"
  • "spmf_interfaces" (x)
  • "spral_core_analyse"
  • "spral_hw_topology"
  • "spral_metis_wrapper"
  • "spral_pgm"
  • "spral_ssids_profile"

I'm not sur for the last ones.

@amontoison
Copy link
Member Author

@nimgould I checked the modules of my previous message tonight and the modules pastixf_interfaces and spmf_interfaces are different in single and double precision.

They should have a different name to not collapse if a library / binary is linked with both -lgalahad_single and -lgalahad_double.

The other modules are only using integers so it's fine if they have the same name in single / double precision.

@amontoison
Copy link
Member Author

amontoison commented Feb 16, 2024

Nick, we renamed the Fortran modules for 64-bit integer but we did nothing for the C routines.
Should we also add a suffix _64?
https://github.com/ralna/GALAHAD/actions/runs/7906337216/job/21580936425?pr=261#step:9:1007

@nimgould
Copy link
Contributor

Yes to both of these, I will sort them out as soon as I have a working draft of the HSL subset library.

@amontoison amontoison merged commit 0a5c178 into ralna:master Feb 22, 2024
17 of 21 checks passed
@amontoison amontoison deleted the check_symbols branch February 22, 2024 10:12
@nimgould
Copy link
Contributor

I am not sure I know what to do with the pastix/spm interface modules as these are provided by the pastix people with the same name for single and double. I can change the galahad dummy names, but what happens when somebody links against a binary library compiled by someone else? Any ideas?

@nimgould
Copy link
Contributor

I could presume that the single precision module is pastixf_interfaces_single, while the double one is just pastixf_interfaces (without a _double)?

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.

2 participants