Skip to content

Classic sincos patch#1048

Open
Fletterio wants to merge 1 commit intomasterfrom
sincos-patch
Open

Classic sincos patch#1048
Fletterio wants to merge 1 commit intomasterfrom
sincos-patch

Conversation

@Fletterio
Copy link
Copy Markdown
Contributor

It's my understanding that all big vendors run sqrt and sin/cos on the same hardware. So if running sin then cos you saturate the pipeline with sin calls, stall on that, then saturate the pipeline with cos calls. It also allows for vendor-specific optimizations for sincos if those exist.

Current implementation saturates the same pipeline for special functions when calling cos, then goes through FMA twice to compute 1 - c^2, then the same pipeline that would be used for sin but used to compute the sqrt, and then a sign inversion. Not only is it slower (if my understanding is correct) it's also less precise near multiples of pi (although that's probably unimportant near zero).

It's my understanding that all big vendors run sqrt and sin/cos on the same hardware. So if running sin then cos you saturate the pipeline with sin calls, stall on that, then saturate the pipeline with cos calls. It also allows for vendor-specific optimizations for sincos if those exist.

Current implementation saturates the same pipeline for special functions when calling cos, then goes through FMA twice to compute 1 - c^2, then the same pipeline that would be used for sin but used to compute the sqrt, and then a sign inversion. Not only is it slower (if my understanding is correct) it's also less precise near multiples of pi (although that's probably unimportant near zero).
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.

1 participant