2012-04-14 4 views
1

У меня есть четыре CUDA ядра, работающих на матрицах следующим образом:Вызывающие несколько ядер, глобальные характеристики памяти - CUDA

convolution<<<>>>(A,B); 
multiplybyElement1<<<>>>(B); 
multiplybyElement2<<<>>>(A); 
multiplybyElement3<<<>>>(C); 

// A + B + C with CUBLAS' cublasSaxpy 

каждое ядро ​​в основном (кроме свертка первого) выполняет матрица, каждый-элемент умножения на фиксированное значение жестко закодировано в его постоянной памяти (чтобы ускорить работу).

Должен ли я присоединиться к этим ядер в один по телефону что-то вроде

multiplyBbyX_AbyY_CbyZ<<<>>>(B,A,C) 

?

Глобальная память уже должна быть на устройстве так, вероятно, это не помогло бы, но я не совсем уверен,

+0

Можете ли вы попробовать протестировать обе версии и посмотреть, что лучше? В любом случае, поскольку вы повторно используете данные уже в памяти для вызовов ядра, я сомневаюсь, что будет какая-то разница в производительности. – Tudor

ответ

0

Если я правильно понял, вы спрашиваете, если вы должны объединить три «multiplybyElement» ядра в один, где каждое из этих ядер читает целую (другую) матрицу, умножая каждый элемент на константу и сохраняя новую масштабированную матрицу.

Учитывая, что эти ядра будут связаны с пропускной способностью полосы пропускания (практически нет вычислений, только один размножается для каждого элемента), вряд ли будет какая-либо польза от слияния ядер, если ваши матрицы не малы, и в этом случае вы делаете неэффективным использование графического процессора, так как ядра будут выполняться последовательно (тот же поток).

+0

Спасибо, это действительно, даже если есть инструкция «A + B + C», использующая библиотеку CUBLAS? – paulAl

+0

Вы имеете в виду, что мой совет будет таким же, если вы продолжаете звонить cuBLAS? Да. – Tom

0

Если слияние ядер означает, что вы можете выполнить только один проход по памяти, то вы можете увидеть ускорение в 3 раза.

Можете ли вы умножить фиксированные значения на фронт, а затем сделать одно умножение в одном ядре?

+0

К сожалению, мне нужны три разные константы, умноженные на три разные матрицы – paulAl

Смежные вопросы