mreineck / ducc

Fork of https://gitlab.mpcdf.mpg.de/mtr/ducc to simplify external contributions
GNU General Public License v2.0
13 stars 12 forks source link

Gradient only SHTs #12

Closed mreineck closed 1 year ago

mreineck commented 1 year ago

Implements #11

This adds a mode keyword to most of the SHT functions. Default is "STANDARD", which leads to the original behaviour. "GRAD_ONLY" expects two map components and one alm component, and should behave as if the curl a_lm are zero. "DERIV1" exists for completeness and behaves analogously to the _deriv1 functions.

Adjoint functions are implemented as well; they simply don't generate any curl a_lm on output.

Docstrings are not yet updated; I fear they will become quite convoluted, since the array dimensions now depend even more on the values of other parameters.

@carronj , @Sebastian-Belkner , do you want to have a look?

carronj commented 1 year ago

Looks just great to me! Between 20-35% speed-up in my configs with lmax~5000. If it is that simple to put in, why not a CURL_ONLY mode right away as well :).

I believe usage is quite intuitive, I am not too worried about the docstrings…

Le 15 mars 2023 à 13:57, mreineck @.***> a écrit :

Implements #11 https://github.com/mreineck/ducc/issues/11 This adds a mode keyword to most of the SHT functions. Default is "STANDARD", which leads to the original behaviour. "GRAD_ONLY" expects two map components and one alm component, and should behave as if the curl a_lm are zero. "DERIV1" exists for completeness and behaves analogously to the _deriv1 functions.

Adjoint functions are implemented as well; they simply don't generate any curl a_lm on output.

Docstrings are not yet updated; I fear they will become quite convoluted, since the array dimensions now depend even more on the values of other parameters.

@carronj https://github.com/carronj , @Sebastian-Belkner https://github.com/Sebastian-Belkner , do you want to have a look?

You can view, comment on, or merge this pull request online at:

https://github.com/mreineck/ducc/pull/12 https://github.com/mreineck/ducc/pull/12 Commit Summary

a06ea47 https://github.com/mreineck/ducc/pull/12/commits/a06ea470935cea757c3ad8ad4b6efa081b0f4915 first attmpt File Changes (7 files https://github.com/mreineck/ducc/pull/12/files) M python/misc_pymod.cc https://github.com/mreineck/ducc/pull/12/files#diff-3861c7adf8e7a1ad853b3dac8c1474527ced83d2e296d8c4cc48e9c47311453d (2) M python/sht_pymod.cc https://github.com/mreineck/ducc/pull/12/files#diff-a490c8f886a1769ce6b15ed9a01a3a014b8fe3c30418956bf2cd32146d25fd2f (261) M python/test/test_sht.py https://github.com/mreineck/ducc/pull/12/files#diff-2de454262524c7f04b53d6d2fdba57385d3d6741c65229c219b191fdb0865356 (31) M src/ducc0/sht/sht.cc https://github.com/mreineck/ducc/pull/12/files#diff-672d9fb4c2b242c7d01f7d2947d46b3d1e2727b0aa9c8fb33b51e1a4bbc7d47e (264) M src/ducc0/sht/sht.h https://github.com/mreineck/ducc/pull/12/files#diff-8379be1da91cda03df93ab17676e1766faff72eb0c2d3ec67b5048f7a4c842d9 (31) M src/ducc0/sht/sphere_interpol.h https://github.com/mreineck/ducc/pull/12/files#diff-6b76fb003620a8b3bdd86727a054e104a85258a060de019db59249d9dd4f5fb7 (20) M src/ducc0/sht/totalconvolve.h https://github.com/mreineck/ducc/pull/12/files#diff-93823d8f8382cd12579e766f5e42fce554461c74ea7a3e77eab4933b8f8abaec (4) Patch Links:

https://github.com/mreineck/ducc/pull/12.patch https://github.com/mreineck/ducc/pull/12.patch https://github.com/mreineck/ducc/pull/12.diff https://github.com/mreineck/ducc/pull/12.diff — Reply to this email directly, view it on GitHub https://github.com/mreineck/ducc/pull/12, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACW2IOICA2XVJUNDR3FCS4LW4G4E5ANCNFSM6AAAAAAV3Y4AQA. You are receiving this because you were mentioned.

mreineck commented 1 year ago

If it is that simple to put in, why not a CURL_ONLY mode right away as well :).

If it is going to be used, sure!

If it isn't used, it will still increase compile time and binary size for everyone, and that makes me a bit reluctant.