Я строю ядро для поэлементного умножения двух матриц, но по крайней мере с моими конфигурациями мое ядро OpenCL работает быстрее только тогда, когда каждая матрица больше 2 ГБ. Поэтому мне было интересно, если это из-за моего наивного ядра (см. Ниже) или из-за природы поэлементных операций, то есть, что элементарные операции не выигрывают от использования графических процессоров.
Спасибо за ваш вклад!
Ядро:
KERNEL_CODE = """
// elementwise multiplication: C = A .* B.
__kernel void matrixMul(
__global float* C,
__global float* A,
__global float* B,
int width, int height)
{
// ID
int x = get_global_id(0);
int y = get_global_id(1);
// Multiplying
C[y * height + x ] = A[y * height + x] * B[y * height + x];
}
"""
p.s. Я читал, что некоторые эксперты считают, что CUDA слишком отличается от OpenCL, чтобы отвечать на оба вопроса в одном и том же вопросе, но не смог удалить его из заголовка и тегов.