Не удается открыть файл включения в .cu - PullRequest
0 голосов
/ 17 ноября 2011

У меня есть проект 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 );
}

Этот код взят из: здесь

Моя проблема в том, что когда я строю проект, он выдает мне эту ошибку:

Hello.cu(5): fatal error C1083: Cannot open include file: 'Hello.h': No such file or  directory

Однако, когда я щелкаю правой кнопкой мыши на"include" Hello.h "" находит файл просто отлично.

Я добавил папку, в которой мои .h находятся в дополнительных каталогах включения проекта.Так что я действительно не знаю, почему он не может открыть файл.

Я не знаю, больше ли это проблема с конфигурацией, может быть, я забыла про c ++ ...

1 Ответ

1 голос
/ 17 ноября 2011

Ваш файл .cu, скорее всего, будет иметь пользовательское правило сборки для использования NVCC. Щелкните правой кнопкой мыши файл .cu и посмотрите его свойства. Правило сборки снова будет содержать раздел для дополнительных каталогов включения. Убедитесь, что там есть каталог, содержащий ваш заголовок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...