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
coforall loc inLocalesdoon loc {
coforall subloc inhere.gpus doon subloc {
var A :[0..10]int;
foreach i in0..10do A[i]= i *2;
writeln("on ", here, " A = ", A);
}
}
for reasons I cannot completely explain, this tries freeing some GPU memory on a sublocale that doesn't exist.
When this code is run with -nl 1, everything works correctly. But with -nl 1x2 we observe that mapping between device IDs and sublocale IDs is circumvented. That results in trying to free memory in a context that doesn't exist.
More details: Assume you have 4 GPUs per node. Device IDs reported by CUDA/HIP are 0-3. But because of 2 colocales per node, GPU sublocales are 0-1. The latter IDs are what we need while using the GPU runtime, but we end up using the former.
The text was updated successfully, but these errors were encountered:
The code snippet in the OP is an excerpt from test/gpu/native/multiLocale/onAllGpusOnAllLocales.chpl. If we were to add some GPU+co-locale testing, would that help with peace of mind around this going forward?
Consider:
for reasons I cannot completely explain, this tries freeing some GPU memory on a sublocale that doesn't exist.
When this code is run with
-nl 1
, everything works correctly. But with-nl 1x2
we observe that mapping between device IDs and sublocale IDs is circumvented. That results in trying to free memory in a context that doesn't exist.More details: Assume you have 4 GPUs per node. Device IDs reported by CUDA/HIP are 0-3. But because of 2 colocales per node, GPU sublocales are 0-1. The latter IDs are what we need while using the GPU runtime, but we end up using the former.
The text was updated successfully, but these errors were encountered: