有多少位可以最多有效地执行按位运算?

时间:2017-05-26 11:12:21

标签: parallel-processing bit-manipulation hardware-acceleration

提供现代硬件,我想知道我可以有效地(例如在1个CPU周期内)执行按位操作的位阵列的最大大小是多少。例如对于64位处理器,我认为答案只是64.这是真的吗?我可以在GPU或者一些奇特的硬件上获得多少?如果我想构建一个简单按位的ASIC,或者我能走多远?

1 个答案:

答案 0 :(得分:1)

1325 MHz的RX550可以以每秒893千兆整数的速率对整数进行逐位运算。这意味着每秒28.5万亿比特。将其除以时钟频率,

每个周期21581位(此GPU中只有512个内核,每个执行32位整数计算意味着每个周期32 * 512 = 16384位,但也有浮点单位,必须使用它来模拟整数运算每个周期达到21.6 kbit,也许还有一些其他未知单元也在工作(例如64位内核有助于任何按位操作))

但是当然总是存在比CPU更高的延迟,如果需要通过pci-e桥接数据,这将降至4GB / s,这意味着每秒32千兆位。这比1核CPU慢。重要的是每位计算的计算量。如果只进行1次操作,那么发送到GPU将无济于事。如果每位运行50次以上,则应将其发送到GPU或FPGA。

测试内核(opencl):

__kernel void bitwise(__global int16 * data)
{ 
    int16 pData=data[get_global_id(0)];
    int16 pData2=pData&&1234123;
    for(int i=0;i<25;i++)
    {    
        pData|=(pData^55 && pData^120);
        pData2|=(pData2^55 && pData2^120);
    }
    data[get_global_id(0)]=pData&pData2;
}

测试缓冲区是128M整数数组。