Ich beobachte erhebliche Beschleunigungen bei der Datenübertragung, wenn ich für die CUDA-Datenübertragung fixierten Speicher verwende. Unter Linux ist mlock der zugrunde liegende Systemaufruf, um dies zu erreichen. In der Manpage von mlock heißt es, dass das Sperren der Seite das Austauschen verhindert:
mlock () sperrt Seiten im Adressbereich, beginnend mit addr und weiter für len Bytes. Alle Seiten, die einen Teil des angegebenen Adressbereichs enthalten, befinden sich garantiert im RAM, wenn der Anruf erfolgreich zurückgegeben wird.
In meinen Tests hatte ich ein paar Gigs freien Speicher auf meinem System, so dass nie das Risiko bestand, dass die Speicherseiten ausgetauscht wurden, aber ich beobachtete trotzdem die Beschleunigung. Kann jemand erklären, was hier wirklich los ist? Jeder Einblick oder jede Information wird sehr geschätzt.