OpenTM is a declarative abstraction, since #pragma omp transfor schedule relays the responsibility of implementing non-locking transactional logic to the system.
pk267
OpenTM basically declares each iteration of the loop as independent transaction, so if the 2 iterations touch the same data, one of them will abort. And if they don't, they will run concurrently.
jedi
@pk267, does the transaction have to abort, or can it also block and wait for the contending transaction to complete operating on shared data?
pk267
From what Prof. Kayvon mentioned in class, it seems like they abort.
Also, you'd never wanna do such a thing on transactions (whatever way of implementing you choose) because it will lead to loss of serializability.
OpenTM is a declarative abstraction, since #pragma omp transfor schedule relays the responsibility of implementing non-locking transactional logic to the system.
OpenTM basically declares each iteration of the loop as independent transaction, so if the 2 iterations touch the same data, one of them will abort. And if they don't, they will run concurrently.
@pk267, does the transaction have to abort, or can it also block and wait for the contending transaction to complete operating on shared data?
From what Prof. Kayvon mentioned in class, it seems like they abort.
Also, you'd never wanna do such a thing on transactions (whatever way of implementing you choose) because it will lead to loss of serializability.