Как часть более крупной проблемы, мне нужно решить небольшие линейные системы (т.е. NxN, где N ~ 10), чтобы использование соответствующих библиотек cuda не имело никакого смысла с точки зрения скорости.
К сожалению что-тоТакже неясно, как решить такие системы, не затягивая большие пушки, такие как GSL, EIGEN и т. д.
Может ли кто-нибудь направить меня в направлении решателя с плотной матрицей (Ax = B) по прямой C?
Для тех, кто заинтересован, базовая структура генератора для этого раздела кода:
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 .
Я использую Crout Decomposition с Pivoting, который кажется наиболее общим подходом.Идея этого теста заключается в том, что каждый поток выполняет одну и ту же работу.Скучно, я знаю, но план состоит в том, что переменная matrixcount увеличивается, вводятся фактические данные, и каждый поток решает маленькие матрицы индивидуально.
Спасибо всем, кто проверял это.
ОБНОВЛЕНИЕ ПОСЛЕ ОТВЕТА: Закончен код решения матрицы для работы с процессором и графическим процессором, проверьте мою отложенную запись здесь