2015-05-14 3 views
-1

Я новичок в GPU и параллельном программировании. Я хочу выполнить функцию say «A» параллельно с разными данными: x1, x2, x3 .... «A» вызывает функцию cublas_sgemm.Сколько ядер/потоков использует cublas_sgemm?

Тогда нужно ли мне заботиться о реализации cublas_sgemm?

+0

звучит так, как будто вы хотите называть 'cublas_sgemm' из вашего собственного ядра CUDA, правильно? почему вы не хотите использовать API-интерфейс хоста? –

+0

Простыми словами, я хочу называть cublas_sgemm на разные данные одновременно. Итак, как узнать оптимальное количество экземпляров cublas_sgemm, которые можно вызывать при оптимизации производительности (учитывая, что я знаю максимальный размер матрицы)? – user3733814

+0

Ядра GPU предназначены для превышения количества подписей. Это необходимо для производительности. Если у вас есть задача завершить в минимальное время, просто запустите все параллельные операции как можно скорее. – Jez

ответ

1

Вам не нужно беспокоиться о реализации cublasSgemm. Он будет использовать столько устройств, сколько возможно для размера проблемы. Для достаточно больших матриц он будет использовать все устройство. Для любой функции, которая эффективно использует все устройство, вы вряд ли увидите значительное улучшение производительности, пытаясь добавить дополнительный параллелизм (а не просто выполнять функции gemm последовательно, с соответствующим использованием перекрытия копии и вычисления).

Для небольших матриц существует batched gemm function, что должно быть лучше, чем пытаться самостоятельно управлять параллелизмом.

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