Я запускаю CUFFT на куски (N * N/p), разделенные на несколько графических процессоров, и у меня есть вопрос относительно расчета производительности. Во-первых, немного о том, как я делаю это:Расчет производительности CUFFT
- Отправить N * N/P ломти для каждого GPU
- порционный 1-D FFT для каждой строки в р чипах
- Получить N * N/P куски обратно на хост - выполнить транспонирование на всем наборе данных
- То же самое Шаг 1
- То же самое Шаг 2
Gflops = (1e-9 * 5 * N * N *lg(N*N))/execution time
и Время выполнения рассчитывается по формуле:
execution time = Sum(memcpyHtoD + kernel + memcpyDtoH times for row and col FFT for each GPU)
Является ли это правильный способ оценки эффективности CUFFT на нескольких графических процессоров? Есть ли другой способ представить производительность FFT?
Спасибо.
Это для реального или сложного преобразования? – talonmies
cufftZ2Z - Правильно ли я включаю тайминги создания и уничтожения флеш-планов во время выполнения? Я вижу значительную разницу, если я их не включаю ... – Sayan
На этот вопрос нет «правильного» ответа. Вы должны точно сообщить, что такое ваши тайминги. Создание плана может включать ленивое создание контекста API. Вы, вероятно, не хотите, чтобы это произошло. Я действительно не использую CUFFT и не знаю много о его внутренностях. – talonmies