Jak mogę zaimplementować niestandardową funkcję atomową obejmującą kilka zmiennych?
Chciałbym zaimplementować tę funkcję atomową w CUDA:
__device__ float lowest; // global var
__device__ int lowIdx; // global var
float realNum; // thread reg var
int index; // thread reg var
if(realNum < lowest) {
lowest= realNum; // the new lowest
lowIdx= index; // update the 'low' index
}
Nie wierzę, że mogę to zrobić z jakąkolwiek funkcją atomową. Muszę zablokować kilka locus globalnej pamięci, aby uzyskać instrukcje dla kilku. Czy mogę to zaimplementować za pomocą kodu PTXAS (Assembly)?