Я делаю sort_by_key
с массивами ключ-значение размером 80 миллионов.
Устройство представляет собой GTX 560 Ti с 2 ГБ VRAM. Когда доступно (бесплатно)
память до sort_by_key равна 1200MB
, сортировка заканчивается в 200ms
.
Но когда доступная память падает до 600MB
, sort_by_key для
тот же массив значений ключа занимает 1.5-3s
!
Я запустил программу под Compute Visual Profiler . Я обнаружил, что ГПУ
отметка времени скачет на 1,5-3 с между последним ядром до sort_by_key
и первый вызов ядра внутри sort_by_key
(который является
RakingReduction
).
Я подозреваю, что внутри sort_by_key
происходит выделение памяти,
прежде чем он вызовет свое первое внутреннее ядро. Память, которая sort_by_key
потребности доступны (даже если доступная память 600MB
), так как
sort_by_key
работает, хотя и медленнее. Я вижу, что компьютер
зависает на 1с, когда это происходит. Я также вижу удар в процессоре
Физическая память график, если я держу Process Explorer открытым.
Могу ли я что-нибудь сделать, чтобы это sort_by_key
работало так же быстро?
когда доступная память меньше? Кроме того, что происходит между
устройство и хост, который вызывает скачок памяти и временный
замораживания