Bài viết mới nhất

Tổng 1873 bài
Giải thuật 03/09/2026 11 phút

Rắc parallel for lên vòng tính tổng: chương trình không chậm đi, nó nói dối mất 90%

Tưởng cứ thêm #pragma omp parallel for lên mọi vòng là song song hóa được? Tôi đo vòng gộp sum += a[i]: parallel ngây thơ cho kết quả SAI, mất 90% cập nhật — không chậm mà sai thầm lặng; sửa bằng atomic thì đúng nhưng chậm 267 lần; chỉ reduction vừa đúng vừa nhanh. Nhận ra phụ thuộc trước khi song song.

Hệ điều hành 03/09/2026 9 phút

Hai fd cùng một file: cái này đọc 'ABCDE', cái kia có thể đọc 'FGHIJ' hoặc lại 'ABCDE' — tùy cách bạn tạo chúng

Hai fd tới cùng một file: tạo bằng dup thì chung offset (đọc fd1 dời luôn fd2, fd2 đọc tiếp 'FGHIJ'), mở hai lần thì offset độc lập (fd2 đọc lại 'ABCDE' từ đầu). Cùng 'hai fd một file', hành vi ngược nhau — biến ẩn là cách chúng ra đời. Đo bằng /proc/fdinfo.

Giải thuật 03/09/2026 10 phút

Semaphore không phải 'mutex biết đếm' — và K càng lớn càng nhanh là sai

Tưởng semaphore chỉ là mutex đếm, K càng lớn càng nhanh? Tôi đo: semaphore chặn CỨNG số luồng đồng thời ở đúng K (mutex chỉ là K=1), throughput tăng theo K rồi bão hòa ở K=8; và khác mutex, semaphore không có chủ sở hữu nên báo hiệu được giữa hai luồng khác nhau — thứ mutex không làm được.

Giải thuật 03/09/2026 10 phút

Cùng một biến, 8 luồng: đọc chung gần như miễn phí, ghi chung đắt gấp 721 lần

Tưởng đọc hay ghi một biến dùng chung đều như nhau, và cache coherence trong suốt nên gần như miễn phí? Tôi đo: đọc-chung 0,05 ns/op còn ghi-chung 33 ns/op — ghi đắt 721 lần vì dòng cache phải nảy giữa các lõi; càng nhiều lõi cùng ghi càng chậm, throughput tổng còn sụt. Không phải chia sẻ tốn, mà ghi vào cái chia sẻ mới tốn.

Giải thuật 03/09/2026 9 phút

2 luồng chậm hơn 1 luồng 11 lần: lock convoy, và vì sao cái đắt không phải khóa

Tưởng thêm luồng thì xong nhanh hơn, khóa chỉ tốn đúng thời gian giữ khóa? Tôi đo: khóa một vùng tới hạn tí xíu với 2-8 luồng cho throughput sụp còn 0,09-0,27 lần so một luồng — lock convoy. Cái đắt là BÀN GIAO khóa (mỗi lần đánh thức ~8,5µs), không phải việc trong khóa; gom lô hồi phục 118 lần.