Como faço para iniciar um aplicativo CUDA no Visual Studio 2010?

Pergunta Direta: Como faço para criar um projeto Hello World CUDA simples no visual studio 2010?

Background: Eu escrevi kernels CUDA. Eu estou intimamente familiarizado com os arquivos .vcproj do Visual Studio 2005 – tweaked vários à mão. No VS 2005, se eu quiser construir um kernel CUDA, incluo uma regra de compilation personalizada e, em seguida, defino explicitamente a chamada nvcc para criar os arquivos.

Eu migrei para o Win 7 e o VS 2010 porque realmente quero experimentar o nSight. Eu tenho o nSight 1.5 instalado. Mas isso é onde eu estou totalmente perdido. Se eu continuar como antes, o nvcc relata que ele suporta apenas msvc 8.0 e 9.0. Mas o site afirma claramente que ele suporta VS 2010.

Eu li em outro lugar que eu preciso ter o VS 2008 (msvc 9.0) também instalado – a minha palavra. Fazendo isso agora.

Mas estou supondo que pelo menos parte dos meus problemas derivam das especificações da ferramenta de compilation personalizada. Vários sites falam sobre a adição de um arquivo * .rules à compilation, mas concluí que isso se aplica apenas ao VS 2008. Em “Criar personalizações”, vejo CUDA 3.1 e 3.2, mas quando adiciono kernels ao projeto, eles não são construiu. Outro site proclama que a chave são três arquivos: Cuda.props Cuda.xml Cuda.targets , mas não diz como ou onde adicionar esses arquivos – ou melhor, eu vou apostar que não entendo as notas referenciado no site.

Alguém sabe como criar um projeto simples no VS 2010 que constrói um kernel CUDA – usando a configuração nSight 1.5 ou o arquivo NvCudaRuntimeApi.v3.2.rules que vem com o CUDA 3.2 RC?

Desde já, obrigado! Eu ofereceria uma recompensa, mas eu tenho apenas 65 pontos no total.

CUDA TOOLKIT 4.0 e posterior

O arquivo de personalizações de compilation (instalado no diretório Program Files\MSBuild\Microsoft.Cpp\v4.0\BuildCustomizations ) “ensina” o Visual Studio como compilar e vincular quaisquer arquivos .cu em seu projeto em seu aplicativo. Se você optar por ignorar a instalação das personalizações ou se tiver instalado o VS2010 após o CUDA, poderá adicioná-las posteriormente seguindo as instruções em Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.0\extras\visual_studio_integration .

  • Criar um novo projeto usando os assistentes padrão do MS (por exemplo, um projeto de console vazio)
  • Implemente seu código de host (serial) em arquivos .c ou .cpp
  • Adicione a personalização de compilation da NVIDIA (clique com o botão direito do mouse no projeto, Construa personalizações , marque a checkbox CUDA relevante)
  • Veja a nota 1 se estiver usando o CUDA 4.0
  • Implemente seus wrappers e kernels em arquivos .cu
  • Se você adicionou arquivos .cu antes das personalizações de compilation, será necessário definir o tipo dos arquivos .cu para CUDA C/C++ (clique com o botão direito do mouse no arquivo, Propriedades , defina o Tipo de Item ).
  • Adicione a biblioteca de tempo de execução CUDA (clique com o botão direito do mouse no projeto, escolha Propriedades e , em Linker -> Input, inclua cudart.lib nas Dependências Adicionais )
  • Então apenas construa seu projeto e os arquivos .cu serão compilados para. Obj e adicionados ao link automaticamente

A propósito, eu defendo evitar a cutil se possível, em vez disso, faça sua própria checagem. O Cutil não é suportado pela NVIDIA, ele é usado apenas para tentar manter os exemplos no SDK focados no projeto real do programa e no algoritmo e evitar repetir as mesmas coisas em todos os exemplos (por exemplo, análise de linha de comando). Se você escrever o seu próprio, então você terá um controle muito melhor e saberá o que está acontecendo. Por exemplo, o wrapper cutilSafeCall chama exit() se a function falhar – uma aplicação real (em oposição a uma amostra) provavelmente deveria manipular a falha com mais elegância!


NOTA

  1. Para CUDA 4.0 somente você pode precisar aplicar essa correção para as personalizações de compilation. Este patch corrige a seguinte mensagem:

O resultado “” de avaliar o valor “$ (CudaBuildTasksPath)” do atributo “AssemblyFile” no elemento não é válido

Esta resposta se aplica ao CUDA 3.2, a partir de 4.0 em diante CUDA suporta o compilador VC 10 diretamente, veja outras respostas para mais informações

Você precisa do VS 2008 ou do 6.1 SDK do Windows instalado. Isso porque o NSight 1.5 RC ou o CUDA 3.2 SDK usam o compilador VC 9 sob o capô. Eu tenho isso funcionando com sucesso com 2008 instalado e me disseram que deveria trabalhar com o SDK, mas não tentei.

Com o NSight 1.5 e / ou o CUDA 3.2 SDK, você não precisa mexer nas regras de compilation personalizadas. Eu estive lá e é doloroso. Com o mais recente constrói tudo o que vai embora:

  • Crie seu projeto VC ++.
  • Adicione um arquivo .CU a ele.
  • Selecione o arquivo de projeto no Solution Explorer.
  • Projeto aberto | Crie personalizações …
  • Verifique a personalização “CUDA 3.2 (.targets, .props)”.
  • Selecione um arquivo .CU no seu projeto e pressione Alt-Enter para mostrar suas propriedades.
  • Certifique-se de que o Tipo de Item está definido como “CUDA C / C ++”

Deve apenas construir. Deixe-me saber se isso ajuda e se você tiver problemas como isso é da memory.

A boa notícia de que o CUDA trabalhando com o VS 2010 ficou muito mais fácil.

Ade

BTW: Vou atualizar meu post no blog.

Outro bom tutorial aqui:

http://www.stevenmarkford.com/installing-nvidia-cuda-with-visual-studio-2010/

Se você receber um erro sobre ‘< ', observe esta etapa (de uma resposta anterior):

Se você adicionou arquivos .cu antes das personalizações de compilation, será necessário definir o tipo dos arquivos .cu para CUDA C / C ++ (clique com o botão direito do mouse no arquivo, Propriedades, defina o Tipo de Item).

Mas se você seguir seus passos, deve funcionar!