Это мои результаты выполнения cublas DGEMM на 4 графических процессоров с использованием 2 потоков для каждого GPU (Тесла M2050):CUBLAS DGEMM производительность запросов
Я тестируемой мои результаты, и они хорошо; Меня беспокоит высокое значение Gflops, которое я получаю, по сравнению с версиями, использующими поток по умолчанию. Я расчет Gflops по формуле:
Gflops = {2.0*10^-9*(N^3+N^2)}/elapsed_time_in_s
Для версии, которая использует несколько потоков, мне нужно, чтобы изменить эту формулу в любом случае?
HtoD-ker-DtoH
- время, затрачиваемое на передачу данных устройства, выполнение ядра и устройство для передачи данных в секундах (это знаменатель вышеприведенной формулы). Crosspost на Nvidia форума - http://forums.nvidia.com/index.php?showtopic=219910&st=0#entry1350908
EDIT: После комментария @talonmies, я добавил cudaStreamSynchronize
до вычисления времени, а результаты таковы:
Спасибо,
Sayan
Что вы имеете в виду, когда говорите «работает на 4 GPU» и что это значит для операции DGEMM. Разделяете ли вы DGEMM на 4 устройства или что-то еще? – talonmies
Я разбиваю данные на 4 части для каждого графического процессора, а затем запускаю 'cublasdgemm' на кусках (на каждом графическом процессоре) ... – Sayan
Один C2050 дает около 550 GFLOP/s ** peak **, или около 2200 GFLOP/s для 4 ** пика ** для двойной точности, а DGEMM значительно ниже пика), поэтому я бы предположил, что время в неправильном в потоке (возможно, что-то синхронное в случае потока по умолчанию теперь асинхронно). Расчет FLOP/s не должен меняться независимо от того, как вы выполняете вычисления. – talonmies