решает свою собственную маленькую матрицу. Циклическая обработка потока по одной матрице - плохая идея. Если не что-то иное, производительность, получаемая при асинхронном чтении, огромна.
асть более крупной проблемы, мне нужно решить небольшие линейные системы (т.е. 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 увеличивается, вводятся фактические данные, и каждый поток решает маленькие матрицы индивидуально.
Спасибо всем, кто проверял это.
ОБНОВЛЕНИЕ ПОСЛЕ ОТВЕТА: Закончен код решения матрицы для работы с процессором и графическим процессором, проверьте мою ленивую записьВот