Мне нужно измерить разницу во времени между распределением нормальной памяти процессора с помощью new
и вызовом cudaMallocManaged
. Мы работаем с единой памятью и пытаемся выяснить компромиссы с переключением на cudaMallocManaged
. (Ядра, кажется, работают намного медленнее, вероятно, из-за нехватки кеширования или чего-то еще.)Измерение CUDA Время выделения
В любом случае, я не уверен, что лучший способ времени для этих распределений. Будет ли один из process_real_cpu_clock
, process_user_cpu_clock
, или process_system_cpu_clock
, дать мне лучшие результаты? Или я должен использовать обычный системный вызов времени в C++ 11? Или я должен использовать материал cudaEvent для синхронизации?
Я полагаю, что я не должен использовать события cuda, потому что они предназначены для хронометрирования процессов графического процессора и не будут иметь решающего значения для вызовов времени cpu (исправьте меня, если я ошибаюсь там.) Если бы я мог использовать cudaEvents только mallocManaged один, что было бы наиболее точным, чтобы сравнить с тем, когда вызов new
? Я просто не знаю достаточно о распределении памяти и времени. Все, что я читаю, похоже, просто заставляет меня запутываться из-за дрянной документации от boost и nvidia.
Я, кажется, обходящий 9e-7 секунд. Завершение звонка будет, вероятно, приближать меня к тому, что я хочу. Я просто не уверен, что синхронизация выделения cuda таким образом уловит какие-то накладные расходы на синхронизацию, которые на самом деле не должны быть синхронизированы. – Cory