ठीक है, उदाहरण के लिए मेरे पास कुछ सरणी Y है और मैं कई थ्रेड्स में Y[0] बढ़ाना चाहता हूं। अगर मैं केवल Y[0]++ को __global__ फंक्शन में बनाता हूं तो Y[0] 1 होगा। तो, इसका समाधान कैसे करें?

0
J. Toming 27 नवम्बर 2018, 22:29

1 उत्तर

सबसे बढ़िया उत्तर

परमाणु संचालन कार्यान्वयन पर निर्भर हैं। यदि यह बिना किसी चेतावनी के संकलित करता है, तो यह काम करने की संभावना है, लेकिन परीक्षण किया जाना चाहिए :-), या कम से कम असेंबलर की जांच करें।

__global__ void mykernel(int *value){
    int my_old_val = atomicAdd(value, 1);
}

गाइड देखें यहां

3
Gardener 27 नवम्बर 2018, 22:53