这是一项简单的方案:
void multiply(const int* v_in, const int* w_in, int n_v, int n_w, int* w_out)
{
for(int i=0; i<n_w; i++)
{
int sum=0;
for(int j=0; j<n_v; j++)
sum += (w_in[i]*v_in[j])>>1;
w_out[i]=sum;
}
}
Presume n_v, n_w ~10^6。 显然,在《世界人权宣言》中至少有十种类似方式这样做,有不同的方式将(n_v*n_w)行动注入深层,并不会分享记忆。 理论上说,什么方式应该最快?