对于10^6遗传因子及其GeneXGene相互作用(〜5x10^11)的分析,我有许多独立的线性回归问题,这些问题可能适用于GPU分析。使用CUDA实现大型线性回归模型
目标是使用包含交互项的线性回归在调节结果变量(脑表型)中详尽搜索GeneXGene相互作用效应。
据我所知,Householder QR因子分解可能是拟合回归模型的解决方案,但是,考虑到这个特定工作中的每个回归矩阵都可以很容易地接近〜10'000x10的大小,即使是每个回归矩阵似乎不适合GPU片上存储器(共享,寄存器等)。
我是否应该接受这个问题,它本质上是带宽限制的,并且在回归分析期间将矩阵保留在GPU全局内存中,或者是否有其他策略可行?
EDIT 下面是有关该问题的更多细节:
将有大约10'000受试者,每个〜1M遗传参数(遗传矩阵:10'000x10^6)。每次迭代的算法应该选择这个遗传矩阵的两列(10'000x2),还有其他6个与遗传数据无关的其他变量(年龄,性别等),所以最终的回归模型将处理一个矩阵,如大小为10 '000x [2(遗传因子)+6(协变量)+2(截距&相互作用项)]和结果变量向量(10'000x1)。对于给定的一对遗传因子,每次重复这一过程~5e11次。那些通过预定义统计阈值的模型应该保存为输出。
具体的问题是,虽然有〜5e11单独的回归模型,即使单个回归模型似乎不适合片上存储器。
我也猜测,坚持使用CUDA库可能不是这里的解决方案,因为这要求大部分数据操作发生在CPU端,并且只发送每个QR分解到GPU?
先走高层。尽量减少你的问题到常见的线性代数例程,并使用[CUDA库](https://developer.nvidia.com/gpu-accelerated-libraries)(其中有很多:例如cuBLAS和cuSolver可能已经有你需要的)。推迟发明你自己的东西,并担心带宽,直到你真的需要这个。 – Drop
为什么问题的大小从10^12突然变为10000 * 10? – kangshiyin
@Drop谢谢。但考虑到将会有10^12个独立的回归模型,这是否有效? – Sourena