Skip to content

Docs: Update Math API page#3738

Merged
adeljo-amd merged 1 commit intodocs/developfrom
math_doc
Mar 10, 2025
Merged

Docs: Update Math API page#3738
adeljo-amd merged 1 commit intodocs/developfrom
math_doc

Conversation

@adeljo-amd
Copy link
Copy Markdown
Contributor

The goal of this PR is to improve the usability of the Math API page, by providing information about each function's maximum ULP error when compared against the C++ standard library (if applicable). It also highlights specific math functions which are unsupported too.

@adeljo-amd adeljo-amd added ci:docs-only Only run Read the Docs CI on this PR documentation labels Feb 3, 2025
@adeljo-amd adeljo-amd requested a review from neon60 February 3, 2025 16:02
@adeljo-amd adeljo-amd self-assigned this Feb 3, 2025
@adeljo-amd adeljo-amd force-pushed the math_doc branch 2 times, most recently from a1238f8 to e9be8fc Compare February 3, 2025 16:07
@adeljo-amd adeljo-amd changed the title Draft: Docs: Update Math API page Docs: Update Math API page Feb 5, 2025
Comment thread docs/reference/math_api.rst
Copy link
Copy Markdown
Contributor

@randyh62 randyh62 left a comment

Choose a reason for hiding this comment

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

Looks good to me, except for the missing data related to the functions that don't run on GPUs.

Comment thread docs/reference/math_api.rst
Comment thread docs/reference/math_api.rst
Comment thread docs/reference/math_api.rst Outdated
@neon60
Copy link
Copy Markdown
Contributor

neon60 commented Feb 7, 2025

@adeljo-amd Could you please rebase the branch?

@adeljo-amd
Copy link
Copy Markdown
Contributor Author

@adeljo-amd Could you please rebase the branch?

Done

@adeljo-amd adeljo-amd force-pushed the math_doc branch 3 times, most recently from 01057c5 to e164839 Compare February 19, 2025 12:57
@adeljo-amd
Copy link
Copy Markdown
Contributor Author

@neon60 Updated and added test ranges too

@adeljo-amd adeljo-amd requested a review from lpaoletti February 20, 2025 11:32
@g-h-c
Copy link
Copy Markdown
Contributor

g-h-c commented Feb 20, 2025

I find the explanation of ffs() might lack information. ffs() returns 0 if the integer has no bit set to 1. i.e.

  • ffs(0) returns 0
  • ffs(x) returns the position of the first bit set in x +1

Also should we warn that fns() calls are potentially slower? (as the compiler does not have a intrinsic for them, unlike ffs()):

  • ffs() uses the ff1 instruction present both in RDNA and CDNA. See https://godbolt.org/z/3ncG3E99o
  • fns() has no equivalent intrinsic, and it is implemented with a loop in the CLR.

@adeljo-amd
Copy link
Copy Markdown
Contributor Author

I find the explanation of ffs() might lack information. ffs() returns 0 if the integer has no bit set to 1. i.e.

  • ffs(0) returns 0
  • ffs(x) returns the position of the first bit set in x +1

Also should we warn that fns() calls are potentially slower? (as the compiler does not have a intrinsic for them, unlike ffs()):

  • ffs() uses the ff1 instruction present both in RDNA and CDNA. See https://godbolt.org/z/3ncG3E99o
  • fns() has no equivalent intrinsic, and it is implemented with a loop in the CLR.

@g-h-c These are fair suggestions - it probably won't be necessary to mention that ffs() calls ff1, but it would be good to highlight that fns() is implemented via software rather than via hardware intrinsics.

Besides updating the ffs() description, I think it would be good to align this with ffsll(), which I imagine has the same behavior

@adeljo-amd
Copy link
Copy Markdown
Contributor Author

@g-h-c Fixed, let me know what you think

Comment thread docs/reference/math_api.rst
@adeljo-amd adeljo-amd merged commit f970e18 into docs/develop Mar 10, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci:docs-only Only run Read the Docs CI on this PR documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants