-
Russell Taylor authored
The problem looked to be due to the fact that the Intel compiler evaluates function arguments L->R (out other compilers do it R->L). If the LHS & output workspaces were the same one, the references obtained by the readY/E calls could be invalidated by other threads, whereas with R->L evaluation the dataY/E calls would have ensured the readY/E gave the right one. In fact, the tests that showed this up are rather artificial as it's extremely unlikely that data will be shared between Y & E vectors (unlike X vectors), but it's better to make sure it's correct.
Russell Taylor authoredThe problem looked to be due to the fact that the Intel compiler evaluates function arguments L->R (out other compilers do it R->L). If the LHS & output workspaces were the same one, the references obtained by the readY/E calls could be invalidated by other threads, whereas with R->L evaluation the dataY/E calls would have ensured the readY/E gave the right one. In fact, the tests that showed this up are rather artificial as it's extremely unlikely that data will be shared between Y & E vectors (unlike X vectors), but it's better to make sure it's correct.
Code owners
Assign users and groups as approvers for specific file changes. Learn more.