2013-02-16 135 views
1

我发现Visual Studio有一些问题。使用openMP多线程我的项目是在Visual Studio 2010的2倍慢速,比开发-C++,现在我写了使用CUDA技术,我的其他项目,我认为我的项目工作,因为Visual Studio中的慢,所以我需要一些其他的编译器,将支持CUDA,我的问题是:什么编译器支持CUDA

  1. 是Dev-C++支持CUDA吗?

  2. 什么编译器支持CUDA除了Visual Studio的?

  3. ,如果有大量的编译器支持CUDA什么将给最佳速度的应用?

回答

3

CUDA Toolkit将Release Notes列表支持的平台和编译器。

+0

非常感谢你,因为我看到支持的Windows编译器在Windows只Visual Studio 2008和2010年。但也有很多的编译器在Linux,我的问题是将Windows和Linux编译器之间有计划的速度差? – 2013-02-17 20:47:14

+0

是的,所有编译器都不相同,并且会生成稍有不同的代码。因此会有程序速度差异。在设备代码的情况下,nvcc使用的底层设备代码编译器应该是相同的,但即使这样,linux和windows之间的系统级差异也会影响整个程序的速度。我相信Greg已经回答了你的3个问题:1.不支持Dev-C++。 2.对于Windows,唯一支持的编译器是cl。exe,它包含在VS中。 3.这是一个无法回答的问题。 – 2013-02-17 23:21:02

+0

非常感谢大家:)) – 2013-02-18 21:37:53

0

嗯,我认为这是相反的方式。事情是,有一个驱动程序叫nvcc。它会生成设备代码和主机代码,并将主机代码发送到编译器。它应该是一个C编译器,它应该在可执行文件路径中。 (编辑:?它应该是GCC在Linux和CL在Windows上,我想我应该忽视MAC作为发行说明做())

NVCC编译器信息写着:

通用的C编译器通过NVCC在以下 情况需要:

  1. 在非CUDA相(除运行阶段),因为这些阶段将由NVCC被转发到的编译器

  2. 在CUDA阶段,进行几个预处理阶段(另请参阅0)。在Linux平台上,编译器被假定为'gcc'或'g ++'用于链接。在Windows平台上,编译器被假定为'cl'。除非指定了选项-compiler-bin-dir,否则 编译器可执行文件预计位于当前可执行文件 搜索路径中,其中 大小写此选项的值必须是这些编译器可执行文件所在的目录的名称 。

请不要这样说对编译器。你的代码在Dev-C++方面效果更好。生成的是汇编代码。我不是说他们没有任何区别,但可能是4%到5%,而不是100%。

而且绝对绝对不怪编译器为您的慢编程。这绝对是因为内存访问效率低下以及不正确使用不同类型的内存。