【发布时间】:2021-02-10 11:37:47
【问题描述】:
我正在开发一个项目 here 的分支。如您所见,主项目和其他依赖项都是通过外部CMakeList.txt 中的 ExternalProject_Add() 添加的。我想将我编写的here 的简单 CUDA 项目添加到我已经分叉的主要 iris-distro 项目中。简单地说,我希望能够在iris_demo.cpp 中调用funcs_cuda.cuh。我想要的目标是实现一些 .cpp 文件(类似于 iris_demo.cpp),如下所示:
#include <iostream>
#include <Eigen/Core>
#include "iris/iris.h"
#include "funcs_cuda.cuh"
int main(int argc, char** argv) {
int m {900};
int n {900};
int k {900};
///////////// HERE
MatricesClass mat_class(m,n,k);
////////////
iris::IRISProblem problem(2);
problem.setSeedPoint(Eigen::Vector2d(0.1, 0.1));
Eigen::MatrixXd obs(2,2);
// Inflate a region inside a 1x1 box
obs << 0, 1,
0, 0;
problem.addObstacle(obs);
obs << 1, 1,
0, 1;
problem.addObstacle(obs);
obs << 1, 0,
1, 1;
problem.addObstacle(obs);
obs << 0, 0,
1, 0;
problem.addObstacle(obs);
iris::IRISOptions options;
iris::IRISRegion region = inflate_region(problem, options);
std::cout << "C: " << region.ellipsoid.getC() << std::endl;
std::cout << "d: " << region.ellipsoid.getD() << std::endl;
/* Some other calculation using matrices in mat_class */
return 0;
}
我尝试了多种方法来查看是否可以简单地将 funcs_cuda.cu/funcs_cuda.cuh 文件添加到项目中,并将 CUDA 添加为 iris 项目的语言,但是,我的努力都没有成功有用。你能帮我找到解决这个问题的方法吗?任何帮助、想法或提示将不胜感激。
我承认我在这个领域还是个新手,但我已经为这个问题苦苦挣扎了好几天。根据我自己对 CMake 的不完整知识,我尝试了几种方法,但所有这些方法都导致了死胡同。例如,首先困扰我的一件事是,我不能简单地将 CUDA 语言添加到 iris 项目here(我试图让其余部分与my simple cuda project 相似)(例如project(iris LANGUAGES CXX CUDA))。
或者,当文件位于子目录之一(例如 iris-distro/src/cxx/)中时,我无法完全构建和链接 CUDA 头文件。我可以在主(外部)目录(例如 iris-distro/)中构建它们,但我不知道如何将其与 iris_demo.cpp 链接。
我的操作系统是 Ubuntu 16.04,我的目标是利用我计算机上的图形处理器来加速 IRIS 项目中的一些矩阵乘法。我已经构建并运行了 cuda-matmul 项目,并且正在使用 CLion 和 gcc-5.4.0。因此,我认为这可能是由于我对 CMake 缺乏了解,因为使用 CUDA 的一切都正常。
【问题讨论】: