2017-12-05 6 views
0

Ich lerne jetzt boost :: compute openCL Wrapper-Bibliothek. Ich bin sehr langsam Kopiervorgang.Speicherkopie Geschwindigkeit Vergleich CPU <-> GPU

Wenn wir CPU zu CPU-Kopiergeschwindigkeit wie 1 skalieren, wie schnell ist GPU zu CPU, GPU zu GPU, CPU zu GPU kopieren?

Ich benötige keine genauen Zahlen. Nur eine allgemeine Idee wäre eine große Hilfe. In Beispiel CPU-CPU ist mindestens 10 mal schneller als GPU-GPU.

+0

hängt ganz von Ihrer Hardware-Setup und Software-Techniken, aber wenn richtig gemacht sollte in der 40 bis 90 Prozent der PCIe-Bandbreite sein, vorausgesetzt, Ihre Transfers sind groß genug (und viele andere Faktoren, einschließlich, ob Ihre GPU in einem 16 ist Fahrstreifenschlitz). Wenn ich mich richtig erinnere, sehe ich ungefähr 5-6 GB/s. – Dithermaster

Antwort

1

Niemand beantwortet meine Frage. Also habe ich ein Programm gemacht, um die Kopiergeschwindigkeit zu überprüfen.

#include<vector> 
#include<chrono> 
#include<algorithm> 
#include<iostream> 
#include<boost/compute.hpp> 
namespace compute = boost::compute; 
using namespace std::chrono; 
using namespace std; 

int main() 
{ 
    int sz = 10000000; 
    std::vector<float> v1(sz, 2.3f), v2(sz); 
    compute::vector<float> v3(sz), v4(sz); 

    auto s = system_clock::now(); 
    std::copy(v1.begin(), v1.end(), v2.begin()); 
    auto e = system_clock::now(); 
    cout << "cpu2cpu cp " << (e - s).count() << endl; 

    s = system_clock::now(); 
    compute::copy(v1.begin(), v1.end(), v3.begin()); 
    e = system_clock::now(); 
    cout << "cpu2gpu cp " << (e - s).count() << endl; 

    s = system_clock::now(); 
    compute::copy(v3.begin(), v3.end(), v4.begin()); 
    e = system_clock::now(); 
    cout << "gpu2gpu cp " << (e - s).count() << endl; 

    s = system_clock::now(); 
    compute::copy(v3.begin(), v3.end(), v1.begin()); 
    e = system_clock::now(); 
    cout << "gpu2cpu cp " << (e - s).count() << endl; 
    return 0; 
} 

Ich erwartete, dass gpu2gpu Kopie wäre schnell. Aber im Gegenteil, cpu2cpu war am schnellsten und gpu2gpu war in meinem Fall so langsam. (Mein System ist Intel I3 und Intel (R) HD-Grafik Skylake ULT GT2.) Vielleicht ist parallele Verarbeitung eine Sache und Kopiergeschwindigkeit ist eine andere.

cpu2cpu cp 7.549.776
cpu2gpu cp 18.707.268
gpu2gpu cp 65.841.100
gpu2cpu cp 65803119

ich jemand hoffen, mit diesem Testprogramm profitieren können.

Verwandte Themen