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