Я пытаюсь использовать CUSP в качестве внешнего линейного решателя для системы Mathematica, чтобы использовать возможности GPU.
Вот веб-страница проекта CUSP. Я прошу подсказать, как мы можем интегрировать CUSP в систему Mathematica. Я уверен, что многим из вас будет интересно обсудить это. Я думаю, что написание входной матрицы и последующая подача ее в программу CUSP - это не то, что нужно. Использование LibrarayFunctionLoad
системы Mathematica будет лучшим способом передачи входной матрицы решателю на GPU на лету. Каким будет способ подачи матрицы и матрицы правой стороны непосредственно из системы Mathematica?
Вот некоторый фрагмент кода CUSP.
#include
#include
#include
int main(void)
{
// create an empty sparse matrix structure (HYB format)
cusp::hyb_matrix A;
// load a matrix stored in MatrixMarket format
cusp::io::read_matrix_market_file(A, "5pt_10x10.mtx");
// allocate storage for solution (x) and right hand side (b)
cusp::array1d x(A.num_rows, 0);
cusp::array1d b(A.num_rows, 1);
// solve the linear system A * x = b with the Conjugate Gradient method
cusp::krylov::cg(A, x, b);
return 0;
}
Этот вопрос дает нам возможность обсудить возможности компиляции в системе Mathematica 8. Также можно затронуть тему mathlink интерфейса MMA. Я надеюсь, что люди здесь найдут эту проблему достойной и достаточно интересной, чтобы поразмышлять над ней.
BR