Повторное использование __shared__ данных между __global__ функциямиC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Повторное использование __shared__ данных между __global__ функциями

Сообщение Anonymous »

Есть ли официально санкционированный способ повторного использования общих данных между global функциями?

Код: Выделить всё

#include 
#include 

__global__ void kernel_A(int** s) {
__shared__ int sdata;
sdata = clock();
*s = &sdata;
printf("sdata: %p = %i\n", &sdata, sdata);
}

//somewhat surprisingly, inserting a device function with __shared__ data
//does not move kernel_B's shared data.
//Maybe this is just luck?
__device__ int& make_shared() {
__shared__ int bdata;
bdata = 1;
auto& result = bdata;
return result;
}

__global__ void kernel_B(int** ptr_sdata) {
auto& bdata = make_shared();
printf("bdata: %p = %i\n", &bdata, bdata);
__shared__ int sdata;
printf("A.sdata: %p = %i, B.sdata: %p = %i\n", *ptr_sdata, *ptr_sdata[0], &sdata, sdata);
}

int main() {
int** ptr_sdata;
cudaMalloc(&ptr_sdata, sizeof(int*));
kernel_A(ptr_sdata);
kernel_B(ptr_sdata);
cudaDeviceSynchronize();
}
< /code>
Это печатает: < /p>

sdata: 0x7d52c5000000 = -594894858

bdata: 0x7d52c5000004 = 1

a.sdata: 0x72c5000004 = 1

-594894858, b.sdata: 0x7d52c5000000 = -594894858 

Я понимаю, что kernel_b 
не назначен одним и тем же SMS, как SMS, так как SMS, так как это, так как многие, так как это, так как многие, так как это, так как многие, так как многие, так как многие, так как многие, так как многие, так как многие, так как многие, так как это, так как многие, так как это, так как это, так как это, так как это, так как SMS. Одиночный блок.>

Подробнее здесь: https://stackoverflow.com/questions/796 ... -functions
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»