作为更大问题的一部分,我需要解决小型线性系统(即 NxN,其中 N ~10),因此使用相关的 cuda 库在速度方面没有任何意义。
不幸的是,还不清楚的是如何在不使用 GSL、EIGEN 等大炮的情况下解决此类系统。
谁能指出我在直线 C 中的密集矩阵求解器(Ax = B)的方向?
对于那些感兴趣的人,这部分代码的生成器的基本结构是:
ndarray=some.generator(N,N)
for v in range N:
B[v]=_F(v)*constant
for x in range N:
A[v,x]=-_F(v)*ndarray[x,v]
不幸的是,我对高等数学的了解几乎为零,所以任何建议都将不胜感激。
更新:我一直在努力解决这个问题,并且有一个几乎可以运行但不起作用的解决方案。欢迎任何潜伏的人来看看我到目前为止在pastebin上得到了什么。
我正在使用带有 Pivoting 的 Crout 分解,这似乎是最通用的方法。这个测试的想法是每个线程都做同样的工作。我知道很无聊,但计划是增加matrixcount变量,放入实际数据,每个线程单独求解小矩阵。
感谢所有对此进行检查的人。