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 main difference (or rather the only one?) between Fortran and C is, that Fortran's semantics assumes no pointer aliasing by default (though Fortran as a language allows pointer aliasing) whereas C assumes pointer aliasing is always present.
To make exceptions to this C semantics rule, restrict appeared in C99. Unfortunately restrict might be quite error prone and thus it's being used mostly in macros or automatically generated code but much less manually. But Vgenerates C, so this is great opportunity for major performance boost in certain use cases and a numerical library should be one of them.
I think to make vnum have excellent performance, restrict will be necessary. See the corresponding V issue proposing using restrict as an important optimization.
Thoughts?
The text was updated successfully, but these errors were encountered:
The main difference (or rather the only one?) between Fortran and C is, that Fortran's semantics assumes no pointer aliasing by default (though Fortran as a language allows pointer aliasing) whereas C assumes pointer aliasing is always present.
Pointer aliasing is on of the few major complications almost preventing vectorization and thus the reason why C is so slow and hard to optimize.
To make exceptions to this C semantics rule,
restrict
appeared in C99. Unfortunatelyrestrict
might be quite error prone and thus it's being used mostly in macros or automatically generated code but much less manually. But V generates C, so this is great opportunity for major performance boost in certain use cases and a numerical library should be one of them.I think to make vnum have excellent performance,
restrict
will be necessary. See the corresponding V issue proposing usingrestrict
as an important optimization.Thoughts?
The text was updated successfully, but these errors were encountered: