VISUAL STUDIO 2013 : error LNK2019: nicht aufgelöstes externes symbol - cuRAND - Random Number Generator

Habe ich recherchiert, stundenlang,

  1. MSDN-Microsoft - Linker Tools Error LNK2019
  2. Wie löst man den Fehler LNK2019: nicht aufgelöstes externes symbol - Funktion?
  3. Was ist eine undefined reference/nicht aufgelöstes externes symbol Fehler und wie behebe ich es?
  4. Fehler LNK2019: nicht aufgelöstes externes symbol _wWinMain@16 referenced in function ___tmainCRTStartup
  5. Wie loswerden dieser Fehler: "MSVCRTD.lib(crtexe.obj) : error LNK2019: nicht aufgelöstes externes symbol _main referenced in function ___tmainCRTStartup"

    aber habe nicht gefunden, einen Weg zur Behebung der folgenden Fehler,

HTML:

Error	1	error LNK2019: unresolved external symbol _curandCreateGenerator@8 referenced in function _GPU_RNG	F:\New\Eks\Visual Studio 2013\PEOPLE PROJECTS\RNGTests\CURANDRNGLib\CURANDRNG.cu.obj	CURANDRNGLib
Error	2	error LNK2019: unresolved external symbol _curandCreateGeneratorHost@8 referenced in function _CPU_RNG	F:\New\Eks\Visual Studio 2013\PEOPLE PROJECTS\RNGTests\CURANDRNGLib\CURANDRNG.cu.obj	CURANDRNGLib
Error	3	error LNK2019: unresolved external symbol _curandDestroyGenerator@4 referenced in function _GPU_RNG	F:\New\Eks\Visual Studio 2013\PEOPLE PROJECTS\RNGTests\CURANDRNGLib\CURANDRNG.cu.obj	CURANDRNGLib
Error	4	error LNK2019: unresolved external symbol _curandSetPseudoRandomGeneratorSeed@12 referenced in function _GPU_RNG	F:\New\Eks\Visual Studio 2013\PEOPLE PROJECTS\RNGTests\CURANDRNGLib\CURANDRNG.cu.obj	CURANDRNGLib
Error	5	error LNK2019: unresolved external symbol _curandGenerateUniform@12 referenced in function _GPU_RNG	F:\New\Eks\Visual Studio 2013\PEOPLE PROJECTS\RNGTests\CURANDRNGLib\CURANDRNG.cu.obj	CURANDRNGLib

CURANDRNGLib.cu

HTML:

#include <cuda.h>
#include <cuda_runtime.h>
#include <curand.h>
#include <curand_kernel.h>

using namespace std;
extern "C" __declspec(dllexport) void __cdecl GPU_RNG(float* , unsigned int , unsigned int);
extern "C" __declspec(dllexport) void __cdecl CPU_RNG(float* , unsigned int , unsigned int);


extern void GPU_RNG(float * h_randomData, unsigned int dataCount, unsigned int mainSeed)
{
	float * d_randomData = 0;

	//allocate device memory
	size_t randomDataSize = dataCount * sizeof(float);
	cudaMalloc((void**)&d_randomData, randomDataSize);

	curandGenerator_t m_prng;
	//Create a new generator
	curandCreateGenerator(&m_prng, CURAND_RNG_PSEUDO_DEFAULT);
	//Set the generator options
	curandSetPseudoRandomGeneratorSeed(m_prng, (unsigned long) mainSeed);
	//Generate random numbers
	curandGenerateUniform(m_prng, d_randomData, dataCount);
	//Copy memory back to the device
	cudaMemcpy(h_randomData, d_randomData, randomDataSize, cudaMemcpyDeviceToHost);
	//Clean
	curandDestroyGenerator(m_prng);
	//free device memory
	cudaFree(d_randomData);
}

extern void CPU_RNG(float * h_randomData, unsigned int dataCount, unsigned int mainSeed)
{
	curandGenerator_t m_prng;
	//Create a new generator
	curandCreateGeneratorHost(&m_prng,CURAND_RNG_PSEUDO_DEFAULT);
	//Set the generator options
	curandSetPseudoRandomGeneratorSeed(m_prng, (unsigned long) mainSeed);
	//Generate random numbers
	curandGenerateUniform(m_prng, h_randomData, dataCount);
	//Clean
	curandDestroyGenerator(m_prng);
}

Sollte ich hinzufügen #include? (Ich bin nicht gut in Englisch sehr viel)

  • können Sie erstellen, die von der CUDA Beispiel-Projekte, die CURAND? Wenn dem so ist, kann man studieren, diejenigen zu verstehen, die richtige Projekt-Einstellungen.
  • @Robert ja, kann ich.
  • Diese Projekte haben alle notwendigen Einstellungen für die Verwendung von CURAND, ohne dass die undefined reference-Fehler.
  • Ich denke, ja.
  • Das bedeutet also, dass Sie sollten in der Lage sein, zu studieren, diese Projekte (oder einfach nur re-verwenden Sie eine von Ihnen) und Ihr Problem gelöst. AFAIK keines dieser Projekte sind die Erstellung einer dll, aber das ist ein separates Problem und vermutlich haben Sie das herausgefunden (Sie scheinen nicht zu Fragen, über die es hier).
  • @Robert ich muss es wissen.

InformationsquelleAutor Khalif21 | 2015-06-16
Schreibe einen Kommentar