簡體   English   中英

內存復制速度比較CPU <-> GPU

[英]Memory copy speed comparison CPU<->GPU

我現在正在學習boost :: compute openCL包裝器庫。 我的復制過程很慢。

如果將CPU到CPU的復制速度縮放為1,GPU到CPU,GPU到GPU,CPU到GPU的復制速度有多快?

我不需要精確數字。 只是一個一般的想法將是一個很大的幫助。 在示例中,CPU-CPU至少比GPU-GPU快10倍。

沒有人在回答我的問題。 因此我制作了一個程序來檢查復印速度。

#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;
}

我期望gpu2gpu復制會很快。 但是相反,在我的情況下,cpu2cpu最快,而gpu2gpu如此慢。 (我的系統是Intel I3和Intel HD Graphics Skylake ULT GT2。)也許並行處理是一回事,而復制速度是另一回事。

cpu2cpu cp 7549776
cpu2gpu cp 18707268
gpu2gpu cp 65841100
gpu2cpu cp 65803119

我希望任何人都可以從該測試程序中受益。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM