我有一个visual studio c ++项目(包含VS 2010和insight 2),其中包含一个cuda文件。这是代码
Hello.h:
#pragma once
#pragma warning(push)
#pragma warning(disable:4996)
#include "thrust\device_vector.h"
#pragma warning(pop)
class Hello
{
public:
Hello( const thrust::host_vector<unsigned long>& data );
unsigned long Sum();
unsigned long Max();
private:
thrust::device_vector<unsigned long> m_data;
}
Hello.cu:
#include "thrust\host_vector.h"
#include "thrust\device_vector.h"
#include "thrust\extrema.h"
#include "Hello.h"
using namespace ::thrust;
Hello::Hello( const thrust::host_vector<unsigned long>& data )
: m_data( data.cbegin(), data.cend() )
{
}
unsigned long
Hello::Sum()
{
return( reduce( m_data.cbegin(), m_data.cend(),
( unsigned long )0,
plus<unsigned long>() ) );
}
unsigned long
Hello::Max()
{
return( *max_element( m_data.cbegin(), m_data.cend() ) );
}
最后是main.cpp:
#ifdef _WIN32
#define WINDOWS _LEAN_AND_MEAN
#define NOMINMAX
#include <Windows.h>
#endif
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <ppl.h> //parallel patterns library
#include "Hello.h"
using namespace ::Concurrency;
int
main( int argc, char** argv )
{
printf( "Generating data...\n" );
thrust::host_vector<unsigned long> host_data( 100000 );
thrust::generate( host_data.begin(), host_data.end(), rand );
printf( "generated %d numbers\n", host_data.size() );
parallel_invoke(
[host_data]()
{
printf( "\nRunning host code...\n" );
unsigned long host_result = thrust::reduce( host_data.cbegin(),
host_data.cend(), 0, thrust::plus<unsigned long>() );
printf( "The sum is %d\n", host_result );
host_result = *thrust::max_element( host_data.cbegin(),
host_data.cend(), thrust::less<unsigned long>() );
printf( "The max is %d\n", host_result );
},
[host_data]()
{
printf( "\nCopying data to device...\n" );
Hello hello( host_data );
printf( "\nRunning CUDA device code...\n" );
unsigned long device_result = hello.Sum();
printf( "The sum is %d\n", device_result );
printf( "\nRunning CUDA device code...\n" );
device_result = hello.Max();
printf( "The max is %d\n", device_result );
}
);
return( 0 );
}
此代码来自:here
我的问题是,当我构建项目时,它给了我这个错误:
Hello.cu(5): fatal error C1083: Cannot open include file: 'Hello.h': No such file or directory
然而,当我右键单击“include”Hello.h“”时,它找到文件就好了。
我已添加了我的.h所在的文件夹,其中包含项目的附加目录。所以我真的不知道为什么它无法打开文件。
我不知道是否更多的配置问题可能是我忘记的c ++事情......
答案 0 :(得分:1)
您的.cu文件很可能有自定义构建规则来使用NVCC。右键单击.cu文件并查看其属性。构建规则将再次包含其他包含目录的部分。确保包含标题的目录也存在。