5

QtCreator と CUDA を組み合わせようとする古い試みを数多く見てきましたが、それらはすべて機能しなくなりました。

だから私はこのトピックを始めて、皆のための新しいリファレンスがあるようにします.

まず、次のコマンドを使用して、本に記載されているようにコードをコンパイルしようとしました。

nvcc seqCuda.cu -o seqCuda

しかし、エラーが発生しました:型名「size_t」の無効な再宣言。

私ができた唯一のことは、Visual Studio 2010 を使用して、本「CUDA アプリケーションの設計と開発」からこのサンプル コードをコンパイルすることでした。ただし、VS2010 は使いたい環境ではありません。だから私はログファイルに行き、それが使用する実行コマンドを取りました.それは次のとおりです:

nvcc -gencode=arch=compute_10,code=\"sm_10,compute_10\" --use-local-env --cl-version 2010 -ccbin "c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin"  -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.1\include"    --keep-dir "Release" -maxrregcount=0  --machine 32 --compile      -Xcompiler "/EHsc /nologo /Od /Zi  /MD " -o "Release\main.cu.obj" "C:\Users\Sam\Documents\Visual Studio 2010\Projects\CUDA_TestVS2010\CUDA_TestVS2010\main.cu"

このコマンドは、オブジェクト ファイルを作成します。seqCuda.cu のサンプル コードは正常に実行できましたが、オブジェクト ファイルから実行可能ファイルへの移動方法がわかりません。qmakeファイルを使用してQtでそれを行いたいです。

このコンパイル コマンドの重要な部分と、qmake ファイルで正しい方法でマージする方法を教えてください。

今私の問題は、このコマンドを逆アセンブルしてqmakeで書き直そうとしたことです。はい、暗闇の中で刺していて、満足のいく結果を達成できませんでした。以下は、qmakeでそれを行うための私の「試み」です。次のqmakeのコマンドのいずれかを環境変数に置き換えることができれば、特にVC2010 bin dirに感謝します。

win32 {
    INCLUDEPATH += $(CUDA_INC_PATH)
    QMAKE_LIBDIR += $(CUDA_LIB_PATH)
    ARCFLAGS = -gencode=arch=compute_10,code=\"sm_10,compute_10\" --use-local-env
    VSVERSIONFLAGS = --cl-version 2010
    VSDIRFLAG = -ccbin "c:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/bin"
    OTHERFLAGS = -maxrregcount=0  --machine 32 --compile     
    -Xcompiler "/EHsc /nologo /Od /Zi  /MD "
    LIBS += -lcudart

    cuda.output = ./${QMAKE_FILE_BASE}_cuda.obj
    cuda.commands = $(CUDA_BIN_PATH)/nvcc.exe $$ARCFLAGS $$VSVERSIONFLAGS $$VSDIRFLAG -  
    I$(CUDA_INC_DIR)     $$OTHERFLAGS
}

CUDA_SOURCES += seqCuda.cu
cuda.input = CUDA_SOURCES
QMAKE_EXTRA_COMPILERS += cuda
4

0 に答える 0