最多可以有多少位有效地执行按位操作?
问题描述:
提供了当代硬件,我想知道什么是我可以有效地(例如在1个CPU周期)perfrom按位操作的位阵列的最大尺寸。例如,对于64位处理器,我假设答案只是64.这是真的吗?我还能在GPU上获得多少资金?如果我想构建一个简单的ASIC,或者我能得到多少?最多可以有多少位有效地执行按位操作?
答
1325 MHz的RX550可以以893千兆整数/秒的速率对整数进行按位运算。这意味着每秒28.5 tera bits。将其划分为时钟频率,
每个周期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整数数组。