Keterbatasan perangkat keras dalam transfer data (throughput tinggi)

1

Saat ini saya mencari keterbatasan perangkat keras untuk pengaturan ilmiah. Kami mengalami kehilangan data terkait beban tinggi. Pertama-tama saya akan menjelaskan masalah dan mengusulkan solusi, yang saya harap Anda dapat memverifikasi.

Kami memiliki kamera yang menyediakan empat gambar 120px x 120px pada 10kHz. Ini dikumpulkan oleh frame grabber (NI PCIe-1433). Frame grabber terhubung ke slot PCI.

Jika saya mengerti dengan benar, data akan ditransfer dari frame grabber ke CPU. (Frame grabber -> bus -> south bridge -> bus -> north bridge -> side side bus -> cpu -> memory controller on-chip -> bus -> RAM?)

Kami kemudian memuat data ke CPU high-end, yang berarti CPU meminta data dari RAM (RAM-> bus-> pengontrol memori CPU?) Dan memuatnya ke GPU (CPU -> bus sisi depan -> jembatan utara -> bus -> NVidia GPU?).

Spesifikasi frame grabber sendiri cukup jelas, dan harus bisa menanganinya. Pemikiran saat ini adalah bahwa beban CPU ganda (menulis ke RAM; RAM -> GPU) menyebabkan kemacetan. Perbaikan yang mungkin dilakukan adalah dengan memutakhirkan CPU ke model kecepatan satu jam yang lebih tinggi dan / atau untuk meningkatkan RAM.

Saya juga mencari sumber daya yang secara ringkas menjelaskan transfer data ini (mungkin tanpa frame grabber) dan bagaimana menilai kecepatan dan menemukan kemacetan opsional.

Daimonie
sumber
Apakah itu PCI atau PCI-E? Pada 144.000.000 piksel per detik (dengan asumsi tidak ada kompresi data yang dilakukan) dan 8 bit per piksel yang akan menjadi aliran data 1.152.000.000 bit / 137 MB / s. PCI yang normal akan menutup sekitar 133 MB / s. Nama akan menyarankan itu model PCI-E? Karena arsitektur komputer modern tidak benar-benar memiliki jembatan utara / selatan klasik seperti dulu dan teknologi seperti DMA mungkin digunakan juga, tidak mudah untuk menentukan jalur mana data akan diambil. Bagaimana Anda memuat data ke dalam GPU?
Seth
Itu harus PCIe. Motherboardnya adalah 0k240y dell, prosesornya adalah intel xeon 1620v3. Data diakses oleh labview, yang memanggil dll C ++ / CUDA yang memuat dan menghitung data yang kita inginkan.
Daimonie
BTW, perhitungan yang Anda lakukan di atas tidak memperhitungkan pengkodean 8B / 10B, bukan?
Daimonie
Bukan itu. Itu hanya perhitungan cepat jika itu benar-benar hanya PCI yang mengabaikan pengkodean khusus, kompresi atau serupa yang dapat terjadi. Gagasan Anda tentang data dari grabber ke RAM cukup akurat, bahkan jika FSB dan north bridge telah cukup banyak dihilangkan. Sedangkan untuk jalur CPU ke GPU akan tergantung pada bagaimana modul itu dirancang. Bergantung padanya GPU mungkin langsung membaca dari RAM. Saya tidak akan membandingkan koneksi mana pun. Mungkin ada beberapa tes kecepatan RAM yang tersedia. Juga pertimbangkan memeriksa kode Anda untuk setiap kemacetan seperti ops mahal dalam loop.
Seth
Terima kasih - Saya baru membaca sekitar 8/10 jadi saya ingin tahu. Benar, aku senang ada yang benar! Kode tidak melakukan OPS yang mahal. Pengodean GPU adalah C ++ / CUDA, jadi sementara CPU menggunakan pointer pada data RAM (cepat), masih membutuhkan transfer Host / Perangkat (lambat). Jika saya benar, jalur PCIe untuk grabber dan GPU berbeda, jadi seharusnya tidak ada banyak persyaratan di sana. Namun, mungkin ada hambatan CPU-ram dari apa yang saya kumpulkan. Ini mulai terlihat seperti skylake i7 yang mungkin benar-benar membuat perbedaan (kecepatan bus southbridge, kecepatan single-core).
Daimonie