如何解决如何在 CUDA 中使用 Eigen?
本征版本:3.3.9 我在我的模拟项目中使用 Eigen。有一些大矩阵需要处理。如果用cpu,太慢了。 有没有在 cuda 上使用 eigen 的简单例子?官方文档里没找到,现在不知道怎么开始第一步。
解决方法
以下内容摘自官网:
https://eigen.tuxfamily.org/dox/TopicCUDA.html
免责声明:此页面是关于 Eigen 中的实验性功能。
从 CUDA 5.0 开始,CUDA 编译器 nvcc 能够正确解析 Eigen 的代码(几乎)。 Eigen 代码的一些改编已经允许在您自己的 CUDA 内核中使用 Eigen 的某些部分。为此,您需要 Eigen 的 devel 分支、CUDA 5.0 或更高版本和 GCC。
已知问题:
-nvcc 与 MS Visual Studio 不起作用(欢迎使用补丁)
-nvcc with clang 不起作用(补丁欢迎)
-nvcc 5.5 与 gcc-4.7(或更高版本)的标准头文件存在问题。要解决此问题,您可以在包含任何其他文件之前添加以下内容:
// workaround issue between gcc >= 4.7 and cuda 5.5
#if (defined __GNUC__) && (__GNUC__>4 || __GNUC_MINOR__>=7)
#undef _GLIBCXX_ATOMIC_BUILTINS
#undef _GLIBCXX_USE_INT128
#endif
-在 64 位系统上,Eigen 使用 long int 作为索引和大小的默认类型。在 CUDA 设备上,默认为 32 位 int 是有意义的。但是,为了保持主机和 CUDA 代码兼容,Eigen 无法自动完成此操作,因此用户需要在整个代码中将 EIGEN_DEFAULT_DENSE_INDEX_TYPE 定义为 int(如果主机和 CUDA 代码之间没有通过 Eigen 的交互,则仅适用于 CUDA 代码)对象)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。