Creo una nuova app Win32 Console come progetto vuoto Sono in esecuzione Windows 7 64 bit con Visual Studio 2008 C++. Sto cercando di ottenere il codice di esempio dalla fine di questo articolo per creare: http://www.ddj.com/architect/207200659Simboli esterni non risolti nei principianti Programma CUDA
Aggiungo CUDA Build Rule v2.3.0 alle regole di compilazione personalizzate del progetto. E 'l'unica cosa con una casella di controllo nella lista file di regole disponibili
creo moveArrays.cu nel file di origine (cartella/filtro ???)
In quel file aggiungo il seguente codice:
// moveArrays.cu
//
// demonstrates CUDA interface to data allocation on device (GPU)
// and data movement between host (CPU) and device.
#include <stdio.h>
#include <assert.h>
#include <cuda.h>
int main(void)
{
float *a_h, *b_h; // pointers to host memory
float *a_d, *b_d; // pointers to device memory
int N = 14;
int i;
// allocate arrays on host
a_h = (float *)malloc(sizeof(float)*N);
b_h = (float *)malloc(sizeof(float)*N);
// allocate arrays on device
cudaMalloc((void **) &a_d, sizeof(float)*N);
cudaMalloc((void **) &b_d, sizeof(float)*N);
// initialize host data
for (i=0; i<N; i++) {
a_h[i] = 10.f+i;
b_h[i] = 0.f;
}
// send data from host to device: a_h to a_d
cudaMemcpy(a_d, a_h, sizeof(float)*N, cudaMemcpyHostToDevice);
// copy data within device: a_d to b_d
cudaMemcpy(b_d, a_d, sizeof(float)*N, cudaMemcpyDeviceToDevice);
// retrieve data from device: b_d to b_h
cudaMemcpy(b_h, b_d, sizeof(float)*N, cudaMemcpyDeviceToHost);
// check result
for (i=0; i<N; i++)
assert(a_h[i] == b_h[i]);
// cleanup
free(a_h); free(b_h);
cudaFree(a_d); cudaFree(b_d);
}
Quando costruisco ottengo questi errori:
1>------ Build started: Project: CUDASandbox, Configuration: Debug x64 ------ 1>Linking... 1>moveArrays.cu.obj : error LNK2019: unresolved external symbol cudaFree referenced in function main 1>moveArrays.cu.obj : error LNK2019: unresolved external symbol cudaMemcpy referenced in function main 1>moveArrays.cu.obj : error LNK2019: unresolved external symbol cudaMalloc referenced in function main 1>moveArrays.cu.obj : error LNK2019: unresolved external symbol __cudaUnregisterFatBinary referenced in function __cudaUnregisterBinaryUtil 1>moveArrays.cu.obj : error LNK2019: unresolved external symbol __cudaRegisterFatBinary referenced in function __sti____cudaRegisterAll_45_tmpxft_00001264_00000000_6_moveArrays_cpp1_ii_main 1>D:\Stuff\Programming\Visual Studio 2008\Projects\CUDASandbox\x64\Debug\CUDASandbox.exe : fatal error LNK1120: 5 unresolved externals 1>Build log was saved at "file://d:\Stuff\Programming\Visual Studio 2008\Projects\CUDASandbox\CUDASandbox\x64\Debug\BuildLog.htm" 1>CUDASandbox - 6 error(s), 0 warning(s) ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
posso compilare ed eseguire i programmi di esempio CUDA che è venuto con l'SDK. So che mi manca qualcosa di semplice qui, ma che cos'è?
Sei corretto. Ho dovuto aggiungere "$ (CUDA_LIB_PATH); ../../ common/lib" a Proprietà di configurazione-> Linker-> Generale-> Additional Libary Directories "cudart.lib" a Proprietà di configurazione-> Linker -> Input-> Dipendenze aggiuntive –
Sono stato creato precedentemente il mio progetto quando volevo renderlo un programma CUDA e aggiunto un file '.cu'. Indipendentemente dal fatto che ho selezionato Cuda 5.5 in "Project -> Build Customization", la libreria corretta a cui si fa riferimento, 'cudart.lib' non può essere trovata in" Proprietà di configurazione-> Linker-> Input-> Ulteriori dipendenze ", ma' $ (CudaToolkitLibDir) 'è stato trovato in" Proprietà di configurazione-> Linker-> Generale-> Directory di libreria aggiuntive ". – DanielTuzes