CUDA Использование общей памяти для продукта АдамараC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 CUDA Использование общей памяти для продукта Адамара

Сообщение Anonymous »

Я пытаюсь понять, правильно ли я использую и понимаю общую память для простого ядра с одномерным входом и матричным входом. Я использую произведение Адамара в том смысле, что 1D-вход должен выполнять поэлементное скалярное произведение с каждой строкой входной матрицы.

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

const int DSIZE = 4;
const int block_size = 2;

__global__ void hdot(const float *A, const float *B, float *C, int ds){

int idx_A = threadIdx.x + blockIdx.x * blockDim.x;

int idx_B = threadIdx.x + blockIdx.x * blockDim.x;
int idy_B = threadIdx.y + blockIdx.y * blockDim.y;

__shared__ float sharedA[block_size];
__shared__ float sharedB[block_size][block_size];

if ((idx_B < ds) && (idy_B < ds)){
sharedA[threadIdx.x] = A[idx_A];
sharedB[threadIdx.y][threadIdx.x] = B[idx_B * ds + idy_B];
__syncthreads();

C[idx_B * ds + idy_B] = sharedA[threadIdx.x] * sharedB[threadIdx.y][threadIdx.x];
}
}
Я думаю, что правильно определяю свою общую память, но не вижу никаких изменений во времени выполнения. Однако численные результаты точны.
Большое спасибо!

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

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

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

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

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

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