2013-01-21 92 views
1

我在Nvidia的Nsight中有一个小项目,它为我创建了makefiles。我想使用一些SSE指令,并想用gcc而不是nvcc编译项目中的cpp文件。如何在使用Nsight Eclipse Edition时使用gcc进行编译?

有没有办法配置Nsight来做到这一点,或者我必须手动编写Makefile?

编辑:.cu文件应该与nvcc当然编译。

回答

1

您应该能够在CU文件中使用GCC SSE指令 - NVCC使用您的平台编译器编译所有主机代码。

如果你仍然想使用GCC,你有两个选择:

  1. 创建两个项目 - 一个是NVCC和使用GCC编译的另一个常规可执行文件的项目编制了静态库项目。然后您可以设置Nsight将可执行文件链接到您的库。 (你也可以使用NVCC作为可执行文件,GCC作为库)
  2. 正如@Eric提到的,你可以创建一个“Makefile Project”并手动编写makefile。
+1

另外我只注意到nvcc完全“转发”cpp文件到gcc。 (我注意到,因为错误消息的格式发生了变化) – Hannes

+0

@Eugene但是,如何将我的“平台编译器”从GCC更改为ICC(Intel C++)?你能帮我解决我的问题吗? http://stackoverflow.com/questions/23133335/how-can-i-create-the-project-in-eclipse-nsight-which-use-both-intel-c-and-cuda – Alex

+0

@Alex应该有一个在CUDA项目属性中暴露的“ccbin”NVCC标志(我不记得属性树中的确切路径 - 就像Build-> Settings)。只需指出你的icc编译器。 – Eugene

1

要在Nsight中使用gcc,您必须创建makefile项目并手动编写makefile。

或者,你可以使用nvcc编译你的.cpp/.c文件。要添加不能被nvcc识别的额外编译器选项(只能由gcc识别),应该在nvcc选项-Xcompiler前加上前缀。

使用nvcc的一个副作用是你的.cpp程序需要运行libcudart.so,即使它并不真的需要。