У меня есть очень большая, очень разреженная матрица наименьших квадратов (A), которую я хотел бы умножить самостоятельно, следующим образом: N = A ^ T * A, где A & N хранятся в формате CSR.Очевидно, что A имеет больше строк, чем столбцов.Обычно я формирую N непосредственно строка за строкой, но в случае CSR мне сначала нужно будет сформировать график, чтобы определить, какие элементы N отличны от нуля.Я мог бы сделать это (и даже иметь некоторый старый c-код), но я надеюсь найти решение с меньшими затратами на разработку.Я использую CUDA, так что это может быть сделано как на GPU, так и на CPU, где я мог видеть преимущества использования GPU.Я набросал алгоритм, но надеялся, что эта проблема уже решена.Я не смог найти ничего в наборе инструментов CUDA, кроме прямого решателя A * x = l QR (где A = (m, n)).Google тоже не очень помог.
Я использую C ++.
У кого-нибудь есть здесь опыт?