Advertisement
Guest User

Untitled

a guest
Dec 18th, 2017
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 7.28 KB | None | 0 0
  1. #include "device_functions.h"
  2. #include "cuda_runtime.h"
  3. #include "device_launch_parameters.h"
  4. #include <cuda.h>
  5. #include <stdio.h>
  6. #include <stdlib.h>
  7. #include <string.h>
  8. #include <string>
  9.  
  10. #define max 30
  11. #define n 10
  12. const char duomenys[] = "IFF51_KazlauskasJonas_L4a_dat.txt";        // duomenu failo vardas
  13. const char rezultatai[] = "IFF51_KazlauskasJonas_L4a_rez.txt";  // rezultatu failo vardas
  14.  
  15. struct obj
  16. {
  17.     int gijosNr;
  18.     char SPavadinimas[255];
  19.     int IKiekis;
  20.     float DKaina;
  21. };
  22.  
  23. void skaityti(struct obj P1[], struct obj P2[], struct obj P3[], struct obj P4[], struct obj P5[]);
  24. void spausdinti(struct obj P1[], struct obj P2[], struct obj P3[], struct obj P4[], struct obj P5[]);
  25. void spausdintiGijuRezultatus(struct obj P[]);
  26. __global__ void sudejimas(struct obj *d_Obj, struct obj *d_P1, struct obj *d_P2, struct obj *d_P3, struct obj *d_P4, struct obj *d_P5) {
  27.     int index = blockIdx.x * blockDim.x + threadIdx.x;
  28.     int i = 0;
  29.     int in = 0;
  30.     while (d_P1[index].SPavadinimas[i] != '\0') {
  31.         d_Obj[index].SPavadinimas[i] = d_P1[index].SPavadinimas[i];
  32.         i++;
  33.     }
  34.     in = i;
  35.     i = 0;
  36.     while (d_P2[index].SPavadinimas[i] != '\0') {
  37.         d_Obj[index].SPavadinimas[in + i] = d_P2[index].SPavadinimas[i];
  38.         i++;
  39.     }
  40.     in += i;
  41.     i = 0;
  42.     while (d_P3[index].SPavadinimas[i] != '\0') {
  43.         d_Obj[index].SPavadinimas[in + i] = d_P3[index].SPavadinimas[i];
  44.         i++;
  45.     }
  46.     in += i;
  47.     i = 0;
  48.     while (d_P4[index].SPavadinimas[i] != '\0') {
  49.         d_Obj[index].SPavadinimas[in + i] = d_P4[index].SPavadinimas[i];
  50.         i++;
  51.     }
  52.     in += i;
  53.     i = 0;
  54.     while (d_P5[index].SPavadinimas[i] != '\0') {
  55.         d_Obj[index].SPavadinimas[in + i] = d_P5[index].SPavadinimas[i];
  56.         i++;
  57.     }
  58.  
  59.     d_Obj[index].gijosNr = index;
  60.     d_Obj[index].IKiekis = d_P1[index].IKiekis + d_P2[index].IKiekis + d_P3[index].IKiekis + d_P4[index].IKiekis + d_P5[index].IKiekis;
  61.     d_Obj[index].DKaina = d_P1[index].DKaina + d_P2[index].DKaina + d_P3[index].DKaina + d_P4[index].DKaina + d_P5[index].DKaina;
  62. }
  63. int main()
  64. {
  65.     struct obj P1[max];
  66.     struct obj P2[max];
  67.     struct obj P3[max];
  68.     struct obj P4[max];
  69.     struct obj P5[max];
  70.     struct obj h_Obj[max];
  71.  
  72.     skaityti(P1, P2, P3, P4, P5);
  73.     FILE *rf;
  74.     rf = fopen(rezultatai, "w");
  75.     fprintf(rf, "Duomenys:");
  76.     fclose(rf);
  77.     spausdinti(P1, P2, P3, P4, P5);
  78.  
  79.     struct obj *d_P1;
  80.     struct obj *d_P2;
  81.     struct obj *d_P3;
  82.     struct obj *d_P4;
  83.     struct obj *d_P5;
  84.     struct obj *d_Obj;
  85.  
  86.     cudaMalloc(&d_P1, max * sizeof(obj));
  87.     cudaMalloc(&d_P2, max * sizeof(obj));
  88.     cudaMalloc(&d_P3, max * sizeof(obj));
  89.     cudaMalloc(&d_P4, max * sizeof(obj));
  90.     cudaMalloc(&d_P5, max * sizeof(obj));
  91.     cudaMalloc(&d_Obj, max * sizeof(obj));
  92.  
  93.     cudaMemcpy(d_P1, P1, max * sizeof(obj), cudaMemcpyHostToDevice);
  94.     cudaMemcpy(d_P2, P2, max * sizeof(obj), cudaMemcpyHostToDevice);
  95.     cudaMemcpy(d_P3, P3, max * sizeof(obj), cudaMemcpyHostToDevice);
  96.     cudaMemcpy(d_P4, P4, max * sizeof(obj), cudaMemcpyHostToDevice);
  97.     cudaMemcpy(d_P5, P5, max * sizeof(obj), cudaMemcpyHostToDevice);
  98.  
  99.  
  100.     sudejimas << <1, n >> > (d_Obj, d_P1, d_P2, d_P3, d_P4, d_P5);
  101.     cudaDeviceSynchronize();
  102.  
  103.  
  104.     cudaMemcpy(h_Obj, d_Obj, n * sizeof(obj), cudaMemcpyDeviceToHost);
  105.     spausdintiGijuRezultatus(h_Obj);
  106.     cudaFree(d_Obj);
  107.     cudaFree(d_P1);
  108.     cudaFree(d_P2);
  109.     cudaFree(d_P3);
  110.     cudaFree(d_P4);
  111.     cudaFree(d_P5);
  112.     system("pause");
  113.  
  114.     return 0;
  115. }
  116. void skaityti(struct obj P1[], struct obj P2[], struct obj P3[], struct obj P4[], struct obj P5[])
  117. {
  118.     int kiekis = 0;
  119.     int a = 0;
  120.     FILE *fd = fopen(duomenys, "r");
  121.  
  122.     while (!feof(fd)) {
  123.         if (kiekis == 0) {
  124.             fscanf(fd, "%d", &a);
  125.             //printf("%d", a);
  126.  
  127.             for (int i = 0; i < a; i++) {
  128.                 fscanf(fd, "%s %d %f", &P1[i].SPavadinimas, &P1[i].IKiekis, &P1[i].DKaina);
  129.                 //printf("%s %d %f", &P1[i].SPavadinimas, &P1[i].IKiekis, &P1[i].DKaina);
  130.             }
  131.         }
  132.         if (kiekis == 1) {
  133.             fscanf(fd, "%d", &a);
  134.             for (int i = 0; i < a; i++) {
  135.                 fscanf(fd, "%s %d %f", &P2[i].SPavadinimas, &P2[i].IKiekis, &P2[i].DKaina);
  136.             }
  137.         }
  138.         if (kiekis == 2) {
  139.             fscanf(fd, "%d", &a);
  140.             for (int i = 0; i < a; i++) {
  141.                 fscanf(fd, "%s %d %f", &P3[i].SPavadinimas, &P3[i].IKiekis, &P3[i].DKaina);
  142.             }
  143.         }
  144.         if (kiekis == 3) {
  145.             fscanf(fd, "%d", &a);
  146.             for (int i = 0; i < a; i++) {
  147.                 fscanf(fd, "%s %d %f", &P4[i].SPavadinimas, &P4[i].IKiekis, &P4[i].DKaina);
  148.             }
  149.         }
  150.         if (kiekis == 4) {
  151.             fscanf(fd, "%d", &a);
  152.             for (int i = 0; i < a; i++) {
  153.                 fscanf(fd, "%s %d %f", &P5[i].SPavadinimas, &P5[i].IKiekis, &P5[i].DKaina);
  154.             }
  155.         }kiekis++;
  156.     }
  157.     fclose(fd);
  158. }
  159. //pradiniai spausdinimai
  160. void spausdinti(struct obj P1[], struct obj P2[], struct obj P3[], struct obj P4[], struct obj P5[])
  161. {
  162.     FILE *rf;
  163.     rf = fopen(rezultatai, "a+");
  164.     fprintf(rf, "-------------------------------------------------\n");
  165.     fprintf(rf, " Nr.         Pavadinimas       Kiekis      Kaina   \n");
  166.     fprintf(rf, "-------------------------------------------------\n");
  167.     for (int i = 0; i < n; i++)
  168.     {
  169.         fprintf(rf, " %-10d  %-16s  %-11d  %-10.2f \n", (i + 1), P1[i].SPavadinimas, P1[i].IKiekis, P1[i].DKaina);
  170.     }
  171.     fprintf(rf, "-------------------------------------------------\n\n");
  172.     fprintf(rf, "-------------------------------------------------\n");
  173.     fprintf(rf, " Nr.         Pavadinimas       Kiekis      Kaina   \n");
  174.     fprintf(rf, "-------------------------------------------------\n");
  175.     for (int i = 0; i < n; i++)
  176.     {
  177.         fprintf(rf, " %-10d  %-16s  %-11d  %-10.2f \n", (i + 1), P2[i].SPavadinimas, P2[i].IKiekis, P2[i].DKaina);
  178.     }
  179.     fprintf(rf, "-------------------------------------------------\n\n");
  180.     fprintf(rf, "-------------------------------------------------\n");
  181.     fprintf(rf, " Nr.         Pavadinimas       Kiekis      Kaina   \n");
  182.     fprintf(rf, "-------------------------------------------------\n");
  183.     for (int i = 0; i < n; i++)
  184.     {
  185.         fprintf(rf, " %-10d  %-16s  %-11d  %-10.2f \n", (i + 1), P3[i].SPavadinimas, P3[i].IKiekis, P3[i].DKaina);
  186.     }
  187.     fprintf(rf, "-------------------------------------------------\n\n");
  188.     fprintf(rf, "-------------------------------------------------\n");
  189.     fprintf(rf, " Nr.         Pavadinimas       Kiekis      Kaina   \n");
  190.     fprintf(rf, "-------------------------------------------------\n");
  191.     for (int i = 0; i < n; i++)
  192.     {
  193.         fprintf(rf, " %-10d  %-16s  %-11d  %-10.2f \n", (i + 1), P4[i].SPavadinimas, P4[i].IKiekis, P4[i].DKaina);
  194.     }
  195.     fprintf(rf, "-------------------------------------------------\n\n");
  196.     fprintf(rf, "-------------------------------------------------\n");
  197.     fprintf(rf, " Nr.         Pavadinimas       Kiekis      Kaina   \n");
  198.     fprintf(rf, "-------------------------------------------------\n");
  199.     for (int i = 0; i < n; i++)
  200.     {
  201.         fprintf(rf, " %-10d  %-16s  %-11d  %-10.2f \n", (i + 1), P5[i].SPavadinimas, P5[i].IKiekis, P5[i].DKaina);
  202.     }
  203.     fprintf(rf, "-------------------------------------------------\n\n");
  204.     fclose(rf);
  205. }
  206. void spausdintiGijuRezultatus(struct obj P[])
  207. {
  208.     FILE *rf;
  209.     rf = fopen(rezultatai, "a+");
  210.     fprintf(rf, "Rezultatai:\n");
  211.     fprintf(rf, "-------------------------------------------------\n");
  212.     fprintf(rf, " GijosNr.    Pavadinimas       Kiekis      Kaina   \n");
  213.     fprintf(rf, "-------------------------------------------------\n");
  214.     for (int i = 0; i < n; i++)
  215.     {
  216.         fprintf(rf, " %-10d  %-16s  %-11d  %-10.2f \n", i, P[i].SPavadinimas, P[i].IKiekis, P[i].DKaina);
  217.     }
  218.     fprintf(rf, "-------------------------------------------------");
  219.     fclose(rf);
  220. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement