CUDA Programming Applications

وبلاگ آموزشی کودا

CUDA Programming Applications

وبلاگ آموزشی کودا

جمع دو بردار با C++

در این مبحث قصد محاسبه زمان حاصل از جمع دو آرایه ی یک بعدی با طول یک میلیون با استفاده از زبان ++c را داریم.

 

  

کد زیر نمونه از جمع دو ارایه با طول یک میلیون است که اعداد درون خانه های آرایه با اعداد تصادفی پر شده اند.



#include<iostream>

 

#include <ctime>

 

using namespace std;

 

int main()

{

clock_t time;

time = clock();

 

int  n, d;

 

n = 1000000;

 

double* first = new double[n];

 

double* second = new double[n];

 

double* sum = new double[n];

 

for (d = 0; d < n; d++)

first[d] = rand() % 100 + 1;

 

for (d = 0; d < n; d++)

second[d] = rand() % 100 + 1;

 

for (d = 0; d < n; d++)

sum[d] = first[d] + second[d];

 

for (d = 0; d < n; d++)

cout << sum[d] << "\t";

 

cout << endl;

 

time = clock() - time;

cout << "It took me " << time << " clicks and " << ((float)time) / CLOCKS_PER_SEC << " seconds" << endl;

return 0;



}


که خروجی آن به شکل زیر است:



زمان محاسبه برای جمع دو ارایه به طول یک میلیون در سیستم من برابر 165.065 ثانیه که معادل 2.75 دقیقه است.


نکته ای که در این جا باید به آن توجه کنیم این است که در حالت معمول کامپایلر یه طولی از ارایه را می تواند محاسبه کند و پس از آن خطای سر ریز شدن پشته مطابق شکل زیر را می دهد.




برای حل این موضوع باید طول پشته را به صورت دستی تعیین کنیم.

1-برای انجام این کار از قسمت PROJECT آخرین گزینه که اسم پروژه به اضافه ی کلمه ی PROPERTIES... را نوشته انتخاب کرده:



2-در تب linker گزینه system را انتخاب می نماییم



3-سپس آیتمهای stack commit size و stack reserve size را با مقادیر بزرگ مثلا 100000 تنظیم می نماییم

نظرات 0 + ارسال نظر
امکان ثبت نظر جدید برای این مطلب وجود ندارد.