-
الگوریتم K-Means
شنبه 24 آذر 1397 23:20
خوشهبندی دادهها رو بر اساس شباهتی که دارن، به طوری که دادههای هر خوشه دارای بیشترین شباهت به هم و کمترین شباهت به دادههای خوشههای دیگه هستن، در یک خوشه قرار میده. الگوریتم K-Means یکی از الگوریتمهای مورد استفاده در داده کاوی و یادگیری ماشینی هست که برای خوشهبندی(Clustering) یا دستهبندی بدون نظارت از اون...
-
الگوریتم LBG
جمعه 16 آذر 1397 23:07
لگوریتم LBG یا Linde–Buzo–Gray یک الگوریتم رقمی سازی برداری (vector quantization) است که با استفاده از آن می توان یک codebook مناسب بدست آورد. codebook در حقیقت مجموعه مراکز بازه های رقمی سازی است. این روش مشابه روش k-means در خوشه بندی (data clustering) است. بطور کلی الگوریتم LBG، یک الگوریتم نوع پیمایشی است. در...
-
چندی سازی برداری چیست؟
چهارشنبه 14 آذر 1397 01:08
چندی سازی برداری، کمی سازی برداری و یا رقمی سازی برداری مفهوم کلی نمونه برداری وکوانتیزه سازی تصاویر همانطور که می دانید تنوع رنگ در طبیعت بسیار زیاد است. اما هنگام تصویر گرفتن از طبیعت و مشاهده تصویر گرفته شده با دوربین یا موبایل و ... می بینیم که از برخی از رنگها صرف نظر شده است (کاهش تعداد پیکسلهای رنگی)، همچنین با...
-
معماری cuda
شنبه 3 آذر 1397 11:07
مقدمه: فن آوری NVIDIA® CUDA™ بزرگترین قدرت پردازش موازی NVIDIA GPUs است. معماری کودا یک انقلاب در معماری محاسبات موازی است که ارائه می دهد عملکرد فن آوری پردازنده گرافیکی NVIDIA برای هدف کلی به منظور محاسبه GPU . برنامه هایی که بر روی معماری کودا اجرا می شوند می توانند مزیت نصب شدن بر روی بیش از صد میلیون GPU با CUDA...
-
ضرب دو ماتریس با cuda
دوشنبه 28 آبان 1397 09:57
ضرب ماتریس - ماتریس در GPU با کمک Nvidia CUDA ضرب ماتریس ماتریس قبل از شروع، بهتر است به طور خلاصه چگونگی محاسبه ی ضرب ماتریس-ماترریس به صورت خلاصه توضیح داده شود. بگذارید بگوییم ما دو ماتریس A و B داریم. فرض کنید A یک ماتریس n × m است، به این معنی که آن دارای n ردیف و m ستون است. همچنین فرض کنید که B ماتریس m × w...
-
ضرب دو ماتریس با c++
سهشنبه 24 مهر 1397 21:22
در این مبحث کد ضرب دو ماتریس در c++ و همچنین محاسبه ی زمان آن امده است: #include<iostream> #include<conio.h> #include <ctime> using namespace std; int main() { clock_t time; time = clock(); const int n = 1000; int A[n][n]; int B[n][n]; for (int i = 0; i<n; i++) for (int j = 0; j<n; j++) {...
-
جمع دو ماتریس با cuda
پنجشنبه 19 مهر 1397 02:07
در این مطلب جمع دو ماتریس به کمک کودا به همراه محاسبه ی زمان انجام فرایند امده است: #include <stdio.h> #include <stdlib.h> #include "cuda_runtime.h" #include "device_launch_parameters.h" #include <chrono> #include <iostream> #define N 100 #define BLOCK_DIM 10 __global__ void...
-
جمع دو ماتریس با زبان c++ و زمان گیری
دوشنبه 16 مهر 1397 15:29
در این مطلب جمع دوماتریس همراه با زمان گیری اورده شده است. در این قسمت ما تعداد سطر و ستون ماتریس خود را 1000 در نظر می گیریم. در ادامه کد برنامه آورده شده است: #include <iostream> #include <stdio.h> #include <string.h> #include <stdlib.h> #include <math.h> #include <ctime> using...
-
جمع دوبردار با برنامه نویسی cuda و زمان گیری
چهارشنبه 11 مهر 1397 20:46
در این مبحث قصد جمع دو بردار با سایز 10240 و محاسبه ی زمان آن را داریم. در این جا از 10 بلاک به ترد 1024 در هربلاک استفاده شده است. در ادامه مطلب کد برنامه اورده شده است: #include "cuda_runtime.h" #include "device_launch_parameters.h" #include <stdio.h> #include <chrono> #include...
-
مفهوم Thread و Block و Grid در برنامه نویسی CUDA
یکشنبه 25 شهریور 1397 09:53
Thread : Thread اجرای یک هسته با یک شاخص(index) داده شده است. هر Thread از شاخص خودش برای دسترسی به عناصر در آرایه استفاده می کند به طوری که همکاری بین Thread ها کل مجموعه داده را پردازش می کند. Block : Block یک گروه از Thread ها است. در مورد اجرای Thread ها درون یک Block نمیتوان زیاد صحبت کرد - آنها می توانند همزمان...
-
جمع دو بردار با C++
پنجشنبه 22 شهریور 1397 01:55
در این مبحث قصد محاسبه زمان حاصل از جمع دو آرایه ی یک بعدی با طول یک میلیون با استفاده از زبان ++c را داریم. کد زیر نمونه از جمع دو ارایه با طول یک میلیون است که اعداد درون خانه های آرایه با اعداد تصادفی پر شده اند. #include <iostream> #include <ctime> using namespace std; int main() { clock_t time; time =...
-
تست نصب مناسب CUDA
یکشنبه 18 شهریور 1397 21:13
cudaError_t cudaMalloc ( void** devPtr, size_t size ) تابع فوق جهت تخصیص یک محدوده خطی از حافظه در سمت GPU با سایز خاص در واحد بایت استفاده می شود که حافظه اختصاص شده توسط Pointer برگشت داده می شود. لازم به ذکر است که این تابع علاوه بر اختصاص فضای حافظه مقدار بازگشتی نتیجه آن را نیز دارند. اگر GPU با موفقیت کار تخصیص...
-
نصب کودا و ملزومات سخت افزاری و نرم افزاری
جمعه 16 شهریور 1397 19:47
راهنمای نصب CUDA در WINDOWS مقدمه: CUDA® یک پلت فرم محاسباتی موازی و مدل برنامه نویسی است که توسط NVIDIA طراحی شده است. CUDA با استفاده از قدرت واحد پردازش گرافیکی (GPU) باعث افزایش چشمگیر در محاسبات شد. CUDA با چندین هدف طراحی شده است: ‣ ارائه یک مجموعه کوچک از زبان های استاندارد برنامه نویسی،مانند C که امکان پیاده...