Az összeg a vektor elemeinek

4.2 összege vektor elemeinek

Feladat. Úgy kell számítani az elemek összege a vektor mérete N elemekkel.

A programban a következő lépéseket kell végrehajtani: 1. Töltsd le az adatokat a számításokhoz. 2. Másolja át az adatokat a GPU. 3. Végezze el a számítást a GPU keresztül magfüggvény. 4. Másolja a számított adatok GPU memória a CPU. 5. Tekintse eredményeket. 6. Vegye le a felhasznált források.







Folytassa közvetlenül a kód:

Az első dolog, írunk kernel funkció, mely összefoglalja az elemek egy vektor:

// fel a funkciót vektor elemek

__global__ void summOfVector (int * a. int * b) <






__shared__ int adatok [BLOCK_SIZE]; // Létrehozunk tömb megosztott memória devaysa
int tid = threadIdx. x;
int IDX = blockIdx. x * blockDim. x + threadIdx. x;
adatok [tid] = (IDX 0; s = s / 2) <
if (tid
# include
# Adjuk N (10000)
# Adjuk BLOCK_SIZE 512

Lefoglalni egy külön funkció a gépen, amely inicializálja az adatokat:

// inicializálás vektorok
void initvector () <
vecTemp = (float *) malloc (N * sizeof (float));
vecX = (float *) malloc (N * sizeof (float));
vecP = (float *) malloc (N * sizeof (float));
vecR = (float *) malloc (N * sizeof (float));
vecB = (float *) malloc (N * sizeof (float));

A (int i = 0; i >> (dev_a dev_b dev_c) ..;

cudaMemcpy (partial_c dev_c blocksPerGrid * sizeof (float) cudaMemcpyDeviceToHost ...);

floatdotres = 0;
A (int i = 0; i




Kapcsolódó cikkek