Hey da ... also ich bin hier mit VS2008, Programmierung mit CUDA C. Ich habe das 3.2 Toolkit installiert und funktioniert.Probleme mit Strukturen, CUDA C/C++ und VS 2008
Nun mein Problem ist, ich habe eine Datei mit diesem:
#ifndef _cuda_rng_cu_included_
#define _cuda_rng_cu_included_
#include <stdio.h>
static void HandleError(cudaError_t err,
const char *file,
int line) {
if (err != cudaSuccess) {
printf("%s in %s at line %d\n", cudaGetErrorString(err),
file, line);
exit(EXIT_FAILURE);
}
}
#define HANDLE_ERROR(err) (HandleError(err, __FILE__, __LINE__))
//some other struct
ich aus dem Buch von Beispiel CUDA diesen Code erhalten, so ist es .. arbeiten sollte, aber wenn ich bauen getroffen bekomme ich diesen Fehler (die erste):
error C2065: 'cudaError_t' : undeclared identifier
und dann ein Tsunami von Fehlern angehängt, wie uint2
Typ nicht gefunden werden und Variablen nicht deklariert werden.
Was könnte das Problem sein? cudaError_t ist in $ (CUDA_PATH_V3_2) \ include definiert und dieser Pfad befindet sich in meinem erforderlichen Include-Verzeichnis.
Die Datei Eigenschaft wird festgelegt, wie zu: Tool: CUDA Runtime API
ich das #ifndef setzen, weil ich nicht herausgefunden habe, wie man mit dem Linker zwischen normalen C++ arbeiten und CUDA C. Wie, wenn ich eine Struktur mit den beiden habe CUDA C (__global__
und ` __device__
) und einige normale Methoden. Wenn ich diese Datei .cu
benenne, wird im normalen C++ - Code, der diese Struktur verwendet, ein Fehler ausgegeben, der besagt, dass er nicht deklariert wurde.
Ich habe versucht, manuell driver_types.h
und Tonnen anderer Header, aber keine von ihnen werden vom Compiler gefunden.
Sorry, wenn ich nicht klar war, bin ich müde.
Ich habe diesen Beitrag einmal gesehen, und ich habe vergessen, es in diesem neuen Projekt zu tun. Aber es funktioniert immer noch nicht. Ich kann jetzt cuda.h, cuda_runtime.h und andere einschließen, und dieser nicht deklarierte Bezeichner verschwindet. Aber jetzt bekomme ich einen weiteren Fehler: ''threadIdx': undeclared identifier'. Gottverdammt..fühlt sich an, als ob ich das unter Linux tun sollte ... – hfingler
Was ist die Erklärung der Funktion, wo Sie den Fehler bezüglich threadIdx bekommen? Es sollte als global deklariert werden. – user434507
@ user434507, ist es in einer '__device__' Funktion. Es sollte funktionieren, ich habe diesen Code von einer Website, er generiert Zufallszahlen auf dem Gerät, es heißt Rand48. Ich habe es von hier: 'http: //forums.nvidia.com/index.php?showtopic= 64545' – hfingler