草庐IT

go - Go 中的并行 saxpy 实现不能很好地跨内核扩展

所以我正在尝试实现一个saxpy的实现,它既被阻塞又可以使用我机器上可用的8核并行计算。我首先假设适合我机器的L1缓存(拆分256kB-128kB数据,128kB代码)的小尺寸向量x和y可以串行计算。为了测试这个假设,我编写了两个saxpy实现,一个是saxpy(BSS)的阻塞串行版本,另一个是saxpy(BPS)的阻塞并行版本。仅当向量的大小大于4096个元素时才使用分块算法。以下是实现:constcachecap=32*1024/8//4096funcblocked_serial_saxpy(afloat64,x[]float64,incxint,bfloat64,y[]float

go - Go 中的并行 saxpy 实现不能很好地跨内核扩展

所以我正在尝试实现一个saxpy的实现,它既被阻塞又可以使用我机器上可用的8核并行计算。我首先假设适合我机器的L1缓存(拆分256kB-128kB数据,128kB代码)的小尺寸向量x和y可以串行计算。为了测试这个假设,我编写了两个saxpy实现,一个是saxpy(BSS)的阻塞串行版本,另一个是saxpy(BPS)的阻塞并行版本。仅当向量的大小大于4096个元素时才使用分块算法。以下是实现:constcachecap=32*1024/8//4096funcblocked_serial_saxpy(afloat64,x[]float64,incxint,bfloat64,y[]float