Wie kann die Anzahl aufeinanderfolgender CUDA-Aufrufe pro Sekunde erhöht werden?C++

Programme in C++. Entwicklerforum
Guest
 Wie kann die Anzahl aufeinanderfolgender CUDA-Aufrufe pro Sekunde erhöht werden?

Post by Guest »

Ich schreibe einen CUDA-beschleunigten Mobilfunkautomaten und möchte, dass er mit einer hohen Aktualisierungsrate läuft (ca. 100.000 Aktualisierungen pro Sekunde). Gibt es eine Möglichkeit, aufeinanderfolgende CUDA-Aufrufe schneller durchzuführen?
Ich habe es mit leeren Schleifen getestet (256 Threads x 3 Blöcke).
Zuerst habe ich habe eine einfache Schleife mit Cuda-Aufrufen geschrieben und 40.000 Iterationen pro Sekunde erhalten. Dann habe ich mein Setup geändert: Ich habe die Schleife in meine Kernelfunktion verschoben und den Aufruf __syncthreads() am Ende des Schleifenkörpers hinzugefügt. Dadurch wurde die Aktualisierungsrate auf 50.000 pro Sekunde erhöht. Kann das noch schneller gemacht werden?

Code: Select all

#include 
#include 

#define CHUNK_SIZE 16

struct Cell {
uint8_t type;
};

struct Chunk {
uint16_t x, y;
Cell cells[CHUNK_SIZE * CHUNK_SIZE][2];
};

__global__ void update(Chunk *chunks, unsigned long long steps) {
for (unsigned long long i = 0; i < steps; i++) {
// ...
__syncthreads();
}
}

int main(void) {
thrust::host_vector h_vec;
h_vec.push_back(Chunk { 0, 0 });
h_vec.push_back(Chunk { 10, 0 });
h_vec.push_back(Chunk { 10, 12 });
thrust::device_vector d_vec = h_vec;
Chunk *chunks = thrust::raw_pointer_cast(d_vec.data());
clock_t start = clock();
unsigned long long i = 0;
while ((clock() - start) < 5000) {
update(chunks, 100000);
i += 100000;
}
cudaDeviceSynchronize();
std::cout

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post