Memorie Blocată (Pinned Memory) și Transfer Asincron non_blocking în PyTorch & Deep Learning Practic

Sintaxă & invocare Python
DataLoader(..., pin_memory=True); batch.to(device, non_blocking=True)

Î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.

Învață AI • Comunitate & Q&A

Întrebări & Exemple practice: Memorie Blocată (Pinned Memory) și Transfer Asincron non_blocking

Ai 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.

Comunitate AI Adaugă o întrebare sau distribuie un cod / prompt

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.