Вам не нужно беспокоиться о реализации cublasSgemm. Он будет использовать столько устройств, сколько возможно для размера проблемы. Для достаточно больших матриц он будет использовать все устройство. Для любой функции, которая эффективно использует все устройство, вы вряд ли увидите значительное улучшение производительности, пытаясь добавить дополнительный параллелизм (а не просто выполнять функции gemm последовательно, с соответствующим использованием перекрытия копии и вычисления).
Для небольших матриц существует batched gemm function, что должно быть лучше, чем пытаться самостоятельно управлять параллелизмом.
звучит так, как будто вы хотите называть 'cublas_sgemm' из вашего собственного ядра CUDA, правильно? почему вы не хотите использовать API-интерфейс хоста? –
Простыми словами, я хочу называть cublas_sgemm на разные данные одновременно. Итак, как узнать оптимальное количество экземпляров cublas_sgemm, которые можно вызывать при оптимизации производительности (учитывая, что я знаю максимальный размер матрицы)? – user3733814
Ядра GPU предназначены для превышения количества подписей. Это необходимо для производительности. Если у вас есть задача завершить в минимальное время, просто запустите все параллельные операции как можно скорее. – Jez