如何在计算大数据矩阵的t检验时提高缓存性能

时间:2015-02-07 04:16:10

标签: c++ caching

我设法追查生物信息学计划的瓶颈。其中之一是计算大数据矩阵的t-test,40K * 30(有时列数可能接近200)矩阵。数据矩阵的行是基因,列是两组的样本,可以相互比较。

const std::size_t gene_count(40000);
std::vector<double> t_score_vector(gene_count, 0.0);

for(std::size_t i=0; i<gene_count; ++i){
    // do regular t-test of the two groups for row i of the data matrix
    t_score_vector[i] = t_test_score; // this single assignment decreased performance by 50%
}

现在这个大小的数据矩阵不可能完全适合缓存,8 * 40000 * 30~9MB,普通PC最多有8MB L3缓存。更糟糕的是,写入存储所有基因的t检验的载体可以减慢很多事情。

是否有更好的设计,以更好地利用缓存?

0 个答案:

没有答案