În mod implicit, memoria RAM alocată de sistemul de operare poate fi mutată în fișierul de swap de pe disc (pageable memory). Pentru ca placa grafică să transfere date din RAM prin magistrala PCIe la viteză maximă folosind DMA (Direct Memory Access), memoria trebuie blocată fizic în pagini fixe (page-locked / pinned memory).
from torch.utils.data import DataLoader
# 1. Activare memorie blocată în DataLoader
loader = DataLoader(
dataset,
batch_size=64,
shuffle=True,
num_workers=4,
pin_memory=True # Alocă batch-urile în page-locked RAM
)
# 2. Transfer asincron pe GPU fără blocarea firului CPU
for x, y in loader:
x = x.to("cuda", non_blocking=True)
y = y.to("cuda", non_blocking=True)
# Calculul GPU poate începe instantaneu
Combinarea pin_memory=True cu non_blocking=True suprapune transferul datelor lotului următor cu calculele de backward pass ale lotului curent, eliminând timpii morți pe GPU.
Întrebări & Exemple practice:
Memorie Blocată (Pinned Memory) și Transfer Asincron non_blockingAi o întrebare despre Memorie Blocată (Pinned Memory) și Transfer Asincron non_blocking sau ai descoperit un truc, prompt sau fragment de cod util? Distribuie-l cu ceilalți membri ai comunității!
Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau resurse pentru această pagină. Dacă ai testat un prompt sau ai un snippet util, adaugă-l mai jos pentru comunitate.