You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

103 lines
2.8 KiB

7 years ago
  1. \documentclass[a4paper,12pt]{article}
  2. \usepackage{amsmath}
  3. \usepackage{amssymb}
  4. \usepackage[polish]{babel}
  5. \usepackage{polski}
  6. \usepackage[utf8]{inputenc}
  7. \usepackage{indentfirst}
  8. \usepackage{geometry}
  9. \usepackage{array}
  10. \usepackage[pdftex]{color,graphicx}
  11. \usepackage{subfigure}
  12. \usepackage{afterpage}
  13. \usepackage{setspace}
  14. \usepackage{color}
  15. \usepackage{wrapfig}
  16. \usepackage{listings}
  17. \usepackage{datetime}
  18. \renewcommand{\onehalfspacing}{\setstretch{1.6}}
  19. \geometry{tmargin=2.5cm,bmargin=2.5cm,lmargin=2.5cm,rmargin=2.5cm}
  20. \setlength{\parindent}{1cm}
  21. \setlength{\parskip}{0mm}
  22. \newenvironment{lista}{
  23. \begin{itemize}
  24. \setlength{\itemsep}{1pt}
  25. \setlength{\parskip}{0pt}
  26. \setlength{\parsep}{0pt}
  27. }{\end{itemize}}
  28. \newcommand{\linia}{\rule{\linewidth}{0.4mm}}
  29. \definecolor{lbcolor}{rgb}{0.95,0.95,0.95}
  30. \lstset{
  31. backgroundcolor=\color{lbcolor},
  32. tabsize=4,
  33. language=C++,
  34. captionpos=b,
  35. tabsize=3,
  36. frame=lines,
  37. numbers=left,
  38. numberstyle=\tiny,
  39. numbersep=5pt,
  40. breaklines=true,
  41. showstringspaces=false,
  42. basicstyle=\footnotesize,
  43. identifierstyle=\color{magenta},
  44. keywordstyle=\color[rgb]{0,0,1},
  45. commentstyle=\color{Darkgreen},
  46. stringstyle=\color{red}
  47. }
  48. \begin{document}
  49. \noindent
  50. \begin{tabular}{|c|p{11cm}|c|} \hline
  51. Grupa 1 & Piotr Dergun, Dominik Waśko & \ddmmyyyydate\today \tabularnewline
  52. \hline
  53. \end{tabular}
  54. \section*{Zadanie 6 - Rozmycie Gaussa GPU}
  55. Celem zadania jest wykonanie rozmycia obrazu wykorzystując algorytm Gaussa za pomocą karty graficznej oraz technologii CUDA.
  56. \begin{lstlisting}
  57. __global__ void multiply(char *a,char *b,int *c, int N){
  58. int i =blockIdx.x * blockDim.x + threadIdx.x;
  59. int sum = 0;
  60. int temp,temp2;
  61. while(i<N*N){
  62. temp = (int)floor((float)(i/N*N));
  63. temp2 = i%N;
  64. for(int j=0;j<N;j++){
  65. sum +=a[temp + j] * b[j*N + temp2 ];
  66. }
  67. c[i]=sum;
  68. sum =0;
  69. i+=blockDim.x * gridDim.x;
  70. }
  71. }
  72. \end{lstlisting}
  73. Zadanie zostało uruchomione na komputerze wyposażonym w karte graficzna NVIDIA GeForce GT 640M. Karta posiada dwa multiprocesory po 192 rdzenie CUDA, taktowane zegarem 709 MHz. Pamięć karty to 980MB.
  74. Program testowano na tablicy o rozmiarze 2048x2048. Parametry dla jakich uruchomiono program to 3 rozmiary siatki: 16, 64, 256 oraz dla każdego rozmiaru siatki rozmiar bloku: 64,128,192,256,512,1024.
  75. Na rysunku 1. przedstawiono wykres zależności czasu obliczeń od rozmiaru bloku dla wszystkich trzech rozmiarów siatki. Można zauważyć, że czas obliczeń najbardziej spada przy zwiększeniu rozmiaru bloku do 192. Dalsze zwiększanie rozmiaru bloku nie powoduje ciągłego zwiększania szybkości, czas obliczeń utrzymuje się równym poziomie. Rozmiar siatki ma bardzo mały wpływ na szybkość obliczeń.
  76. \begin{figure}[h]
  77. \includegraphics[width=1.1\textwidth]{wykres.png}
  78. \caption{Wykres czasu obliczeń od rozmiaru bloku.}
  79. \label{fig:figure2}
  80. \end{figure}
  81. \end{document}