SVD фиксированного размера и решатель в CUDA (в устройстве) ⇐ C++
SVD фиксированного размера и решатель в CUDA (в устройстве)
Я реализовал программу на графическом процессоре (CUDA), которая использует хост (на C++) только для запуска новых ядер. При расчете на устройстве мне нужны СВД и решающие системы матриц 3х3 (плотные), фиксированного размера.
У меня есть собственная реализация SVD и решателя, но она не является числовой стабильной (поэтому ее невозможно использовать). Поскольку я новичок в C++ и CUDA, я бы предпочел вместо этого использовать библиотеку. (цифровые данные очень сложны)
Теперь мне трудно найти эту библиотеку:
[*]cuSOLVER нельзя вызвать с устройства [*]cuLA не может быть вызвана с устройства (и, похоже, заброшена) [*]Eigen выглядит многообещающе (должен ли быть доступен вызов с устройства?), но неясно, каков статус поддержки CUDA (там написано «экспериментальный»). Я встречаю людей, говорящих, что это работает, а у других возникают ошибки компиляции?
Желательно, чтобы я также мог выполнять с библиотекой общие матричные операции (транспонирование, инверсию, суммирование, умножение и т. д.), поскольку мои собственные реализации, вероятно, будут менее эффективными и численно стабильными для них.
Есть идеи, как этого добиться?
ОБНОВЛЕНИЕ: Похоже, что Eigen поддерживает базовые функции, такие как *,+, транспонирование и даже собственные значения, но SVD, инверсия и т. д. еще не поддерживаются. Это на момент написания.
Я реализовал программу на графическом процессоре (CUDA), которая использует хост (на C++) только для запуска новых ядер. При расчете на устройстве мне нужны СВД и решающие системы матриц 3х3 (плотные), фиксированного размера.
У меня есть собственная реализация SVD и решателя, но она не является числовой стабильной (поэтому ее невозможно использовать). Поскольку я новичок в C++ и CUDA, я бы предпочел вместо этого использовать библиотеку. (цифровые данные очень сложны)
Теперь мне трудно найти эту библиотеку:
[*]cuSOLVER нельзя вызвать с устройства [*]cuLA не может быть вызвана с устройства (и, похоже, заброшена) [*]Eigen выглядит многообещающе (должен ли быть доступен вызов с устройства?), но неясно, каков статус поддержки CUDA (там написано «экспериментальный»). Я встречаю людей, говорящих, что это работает, а у других возникают ошибки компиляции?
Желательно, чтобы я также мог выполнять с библиотекой общие матричные операции (транспонирование, инверсию, суммирование, умножение и т. д.), поскольку мои собственные реализации, вероятно, будут менее эффективными и численно стабильными для них.
Есть идеи, как этого добиться?
ОБНОВЛЕНИЕ: Похоже, что Eigen поддерживает базовые функции, такие как *,+, транспонирование и даже собственные значения, но SVD, инверсия и т. д. еще не поддерживаются. Это на момент написания.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Почему мой решатель IDA* дает более длинный путь, чем мой решатель A*? [закрыто]
Anonymous » » в форуме JAVA - 0 Ответы
- 20 Просмотры
-
Последнее сообщение Anonymous
-
-
-
CUDA ON DEBIAN TRIXIE: версия драйвера CUDA недостаточно для версии времени выполнения CUDA
Anonymous » » в форуме Linux - 0 Ответы
- 6 Просмотры
-
Последнее сообщение Anonymous
-