Frage

Ich Zuweisung eines cl_mem Puffer auf einem GPU und arbeiten daran, die funktioniert fein, bis eine bestimmte Größe überschritten wird. In diesem Fall selbst die Zuordnung erfolgreich ist, aber die Ausführung oder das Kopieren nicht. Ich will Speicher des Geräts für einen schnelleren Betrieb verwenden, so dass ich zuteilen wie:

buf = clCreateBuffer (cxGPUContext, CL_MEM_WRITE_ONLY, buf_size, NULL, &ciErrNum);

Nun, was ich nicht verstehe, ist die Größenbeschränkung. Ich bin über 16 Mbyte Kopieren sollte aber etwa 128 Mbyte (siehe CL_DEVICE_MAX_MEM_ALLOC_SIZE) nutzen können.

Warum unterscheiden sich diese Zahlen so viel?


Hier ist ein Auszug aus oclDeviceQuery:

 CL_PLATFORM_NAME:  NVIDIA
 CL_PLATFORM_VERSION:  OpenCL 1.0 
 OpenCL SDK Version:  4788711

  CL_DEVICE_NAME:          GeForce 8600 GTS
  CL_DEVICE_TYPE:          CL_DEVICE_TYPE_GPU
  CL_DEVICE_ADDRESS_BITS:              32
  CL_DEVICE_MAX_MEM_ALLOC_SIZE:  128 MByte
  CL_DEVICE_GLOBAL_MEM_SIZE:     255 MByte
  CL_DEVICE_LOCAL_MEM_TYPE:      local
  CL_DEVICE_LOCAL_MEM_SIZE:      16 KByte
  CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE:  64 KByte
War es hilfreich?

Lösung

clCreateBuffer wird nicht wirklich einen Puffer auf dem Gerät erstellen. Dies macht Sinn, da zum Zeitpunkt der Erstellung der Fahrer nicht wissen, welches Gerät den Puffer verwenden (man erinnere sich, dass ein Zusammenhang mehrere Geräte haben kann). Der Puffer wird auf dem eigentlichen Gerät erstellt werden, wenn Sie ein Schreib einreihen oder wenn Sie starten einen Kernel, der den Puffer als Parameter annimmt.

Wie für die 16 MB Grenze, verwenden Sie die neuesten Treiber (195.xx)? Wenn dem so ist, sollten Sie NVIDIA Kontakt entweder über die Foren oder direkt.

Andere Tipps

Vergessen Sie nicht, was andere Speicher auf dem Gerät verwendet haben, passieren (und wenn diese auch Ihre Grafikkarte ist, der Speicher, das Ihre Anzeige verwendet).

(Gibt es eine Möglichkeit, die aktuell verfügbaren Speicher zu bekommen, oder das größte Fragment, etc. zu jagen?)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top