Forwarded from Ali Abbasi
جعبه ابزار دانشجو:
#سایت_انلاین
#دانلود_ویدیو
لیست سایتهای آموزش آنلاین و دانلود ویدیو در حوزه IT
List of free online programming/CS courses
https://github.com/fffaraz/MOOC
The best place on the web to learn anything, free.
http://www.noexcuselist.com/
http://tutsplus.com/
http://4programmer.com/
http://www.tutdl.ir
http://bs-learning.ir/
http://ilikephp.ir
http://sigmavid.com/
https://faranesh.com/
https://quera.ir/
دانلود کتابهای IT
http://it-ebooks.info/
http://www.allitebooks.com
http://pythonbooks.revolunet.com/
https://github.com/vhf/free-programming-books/blob/master/free-programming-interactive-tutorials-en.md
آموزش برنامه نویسی و سایت هایی جهت تقویت مهارت کدنویسی و الگوریتم
http://www.learnpython.org/
http://www.coderz.ir/
https://www.codeschool.com/
http://stackoverflow.com/questions/1711/what-is-the-single-most-influential-book-every-programmer-should-read
https://github.com/chhantyal/influential-cs-books
https://projecteuler.net/
http://www.w3schools.com/
https://learnxinyminutes.com/
https://codefights.com/
https://regexcrossword.com
http://learncodethehardway.org/
https://www.hackerrank.com/
http://www.agoogleaday.com/
http://overapi.com/
https://www.bento.io/
http://www.codewars.com/
https://www.codecademy.com/
http://www.checkio.org
https://typing.io/
https://projecteuler.net/
http://visualgo.net/
لیست پروژه های حوزه علوم کامپیوتر و راه حل هاش
https://github.com/karan/Projects
#سایت_انلاین
#دانلود_ویدیو
لیست سایتهای آموزش آنلاین و دانلود ویدیو در حوزه IT
List of free online programming/CS courses
https://github.com/fffaraz/MOOC
The best place on the web to learn anything, free.
http://www.noexcuselist.com/
http://tutsplus.com/
http://4programmer.com/
http://www.tutdl.ir
http://bs-learning.ir/
http://ilikephp.ir
http://sigmavid.com/
https://faranesh.com/
https://quera.ir/
دانلود کتابهای IT
http://it-ebooks.info/
http://www.allitebooks.com
http://pythonbooks.revolunet.com/
https://github.com/vhf/free-programming-books/blob/master/free-programming-interactive-tutorials-en.md
آموزش برنامه نویسی و سایت هایی جهت تقویت مهارت کدنویسی و الگوریتم
http://www.learnpython.org/
http://www.coderz.ir/
https://www.codeschool.com/
http://stackoverflow.com/questions/1711/what-is-the-single-most-influential-book-every-programmer-should-read
https://github.com/chhantyal/influential-cs-books
https://projecteuler.net/
http://www.w3schools.com/
https://learnxinyminutes.com/
https://codefights.com/
https://regexcrossword.com
http://learncodethehardway.org/
https://www.hackerrank.com/
http://www.agoogleaday.com/
http://overapi.com/
https://www.bento.io/
http://www.codewars.com/
https://www.codecademy.com/
http://www.checkio.org
https://typing.io/
https://projecteuler.net/
http://visualgo.net/
لیست پروژه های حوزه علوم کامپیوتر و راه حل هاش
https://github.com/karan/Projects
GitHub
GitHub - fffaraz/awesome-courses: List of free online programming/CS courses [Massive Open Online Courses]
List of free online programming/CS courses [Massive Open Online Courses] - fffaraz/awesome-courses
♣️ جزوه درسی مهندسی نرم افزار پیشرفته : دکتر فریدون شمس 🔰🔰
Forwarded from آکادمی ترید طلایی
Rapid Miner Learnning.pdf
84.2 MB
⚫️ جزوه دست نویس درس پایگاه داده استاد ابراهیمی مقدم 🔰
⚫️ جزوه دست نویس درس پایگاه داده دکترشهریاری دانشگاه امیر کبیر 🔰
Forwarded from Batis Ab
الگوریتم موازی
از ویکیپدیا، دانشنامهٔ آزاد
الگوریتمهای موازی در علوم کامپیوتر، برخلاف الگوریتمهای متوالی سنتی، الگوریتمهایی هستند که در آنها، هر بار قسمتی از برنامه روی پردازندهای متفاوت اجرا میشود و در آخر برای کسب نتیجهٔ مطلوب، نتایج کنار هم قرار میگیرند.
بعضی از الگوریتمها را میتوان به آسانی به چنین قسمتهایی تقسیم کرد. بطور مثال، عمل بررسی اعداد از یک تا صدهزار برای تشخیص اعداد اول را، میتوان با اختصاص دادن زیر مجموعهای از اعداد به هر پردازنده موجود و سپس گردآوری فهرست نتایج مطلوب، قسمت بندی کرد.
برخی از الگوریتمها برای اجرای مراحل بعد، نیاز به نتایج مراحل قبل دارند. اینگونه مسائل را مسائل ذاتاً متوالی میگویند. روشهای عددی تکرار شونده، مانند روش نیوتون یا مسئلهٔ سه تن، نمونههایی از الگوریتمهای متوالی هستند.
برخی از مسائل را خیلی دشوار میتوان به صورت موازی در آورد حتی اگر بازگشتی باشند. یکی از این نمونهها جستحوی عمقی درخت است.
الگوریتمهای موازی ارزشمندند زیرا اجرای عملیات محاسباتی بزرگ از طریق الگوریتمهای موازی، به دلیل کارکرد پردازندههای مدرن، بسیار سریع تر از اجرای آنها با الگوریتمهای متوالی است. ساخت یک کامپیوتر با یک پردازندهٔ خیلی سریع بسیار سخت تر از ساختن یک کامپیوتر با تعداد زیادی پردازندهٔ کندتر با توان عملیاتی یکسان است.
با این حال، برای سرعت الگوریتمهای موازی نیز محدودیتهای خاص نظری وجود دارد. قسمتی از هر الگوریتم موازی، متوالی است، از این رو هر الگوریتم موازی یک نقطهٔ اشباع دارد. بعد از آن نقطهٔ اشباع اضافه کردن تعداد بیشتری پردازنده افزایش توان عملیاتی را در پی ندارد و تنها باعث بالا بردن هزینه و خسارات میشود.
هزینه و پیچیدگی الگوریتمهای موازی بر اساس حافظه و زمانی(تعداد سیکلهای پردازنده) که مصرف میکنند تخمین زده میشود.
الگوریتمهای موازی باید از جهت ارتباط بین پردازندههای مختلف نیز بهینه شوند. الگوریتمهای موازی از دو راه با پردازندهها ارتباط برقرار میکنند، حافظهٔ مشترک، و رد و بدل کردن پیام.
پردازش حافظهٔ مشترک نیاز به قفل بندی اضافه برای اطلاعات دارد، از این رو هزینهٔ سیکلهای گذرگاه و پردازندههای اضافی را تحمیل میکند و همچنین باعث غیر موازی شدن قسمتهایی از الگوریتم میشود.
پردازش از طریق انتقال پیام، از کانالها و جعبههای پیام استفاده میکند اما این نوع ارتباط باعث افزایش هزینهٔ انتقال روی گذرگاه، حافظهٔ اضافی برای صف و جعبههای پیام و تاخیر در پیامها میشود.
در طراحیهای چند پردازندهای از گذرگاههای خاصی استفاده میشود تا بدین گونه از هزینههای تعاملات کاسته شود اما این پردازندهاست که حجم ترافیک را تعیین میکند.
مشکل دیگر الگوریتمهای موازی تضمین توازن درخور آنها است. برای مثال، بررسی تمام اعداد از یک تا صدهزار برای یافتن اعداد اول را میتوان به راحتی بین پردازندهها تقسیم کرد. اما در این روش ممکن است بعضی از پردازندهها مجبور شوند بیشتر از بعضی دیگر کار کنند، در این صورت پردازندههایی که کارشان به پایان رسیدهاست تا پایان کار دیگر پردازندهها بی کار میمانند.
زیر مجموعهای از الگوریتمهای موازی، الگوریتمهای توزیعی هستند که برای استفاده در محیطهای محاسبات خوشهای و محاسبات توزیعی طراحی شدهاند، که در این حیطه باید ملاحظاتی افزون بر الگوریتمهای موازی «سنتی»، اعمال شود.
از ویکیپدیا، دانشنامهٔ آزاد
الگوریتمهای موازی در علوم کامپیوتر، برخلاف الگوریتمهای متوالی سنتی، الگوریتمهایی هستند که در آنها، هر بار قسمتی از برنامه روی پردازندهای متفاوت اجرا میشود و در آخر برای کسب نتیجهٔ مطلوب، نتایج کنار هم قرار میگیرند.
بعضی از الگوریتمها را میتوان به آسانی به چنین قسمتهایی تقسیم کرد. بطور مثال، عمل بررسی اعداد از یک تا صدهزار برای تشخیص اعداد اول را، میتوان با اختصاص دادن زیر مجموعهای از اعداد به هر پردازنده موجود و سپس گردآوری فهرست نتایج مطلوب، قسمت بندی کرد.
برخی از الگوریتمها برای اجرای مراحل بعد، نیاز به نتایج مراحل قبل دارند. اینگونه مسائل را مسائل ذاتاً متوالی میگویند. روشهای عددی تکرار شونده، مانند روش نیوتون یا مسئلهٔ سه تن، نمونههایی از الگوریتمهای متوالی هستند.
برخی از مسائل را خیلی دشوار میتوان به صورت موازی در آورد حتی اگر بازگشتی باشند. یکی از این نمونهها جستحوی عمقی درخت است.
الگوریتمهای موازی ارزشمندند زیرا اجرای عملیات محاسباتی بزرگ از طریق الگوریتمهای موازی، به دلیل کارکرد پردازندههای مدرن، بسیار سریع تر از اجرای آنها با الگوریتمهای متوالی است. ساخت یک کامپیوتر با یک پردازندهٔ خیلی سریع بسیار سخت تر از ساختن یک کامپیوتر با تعداد زیادی پردازندهٔ کندتر با توان عملیاتی یکسان است.
با این حال، برای سرعت الگوریتمهای موازی نیز محدودیتهای خاص نظری وجود دارد. قسمتی از هر الگوریتم موازی، متوالی است، از این رو هر الگوریتم موازی یک نقطهٔ اشباع دارد. بعد از آن نقطهٔ اشباع اضافه کردن تعداد بیشتری پردازنده افزایش توان عملیاتی را در پی ندارد و تنها باعث بالا بردن هزینه و خسارات میشود.
هزینه و پیچیدگی الگوریتمهای موازی بر اساس حافظه و زمانی(تعداد سیکلهای پردازنده) که مصرف میکنند تخمین زده میشود.
الگوریتمهای موازی باید از جهت ارتباط بین پردازندههای مختلف نیز بهینه شوند. الگوریتمهای موازی از دو راه با پردازندهها ارتباط برقرار میکنند، حافظهٔ مشترک، و رد و بدل کردن پیام.
پردازش حافظهٔ مشترک نیاز به قفل بندی اضافه برای اطلاعات دارد، از این رو هزینهٔ سیکلهای گذرگاه و پردازندههای اضافی را تحمیل میکند و همچنین باعث غیر موازی شدن قسمتهایی از الگوریتم میشود.
پردازش از طریق انتقال پیام، از کانالها و جعبههای پیام استفاده میکند اما این نوع ارتباط باعث افزایش هزینهٔ انتقال روی گذرگاه، حافظهٔ اضافی برای صف و جعبههای پیام و تاخیر در پیامها میشود.
در طراحیهای چند پردازندهای از گذرگاههای خاصی استفاده میشود تا بدین گونه از هزینههای تعاملات کاسته شود اما این پردازندهاست که حجم ترافیک را تعیین میکند.
مشکل دیگر الگوریتمهای موازی تضمین توازن درخور آنها است. برای مثال، بررسی تمام اعداد از یک تا صدهزار برای یافتن اعداد اول را میتوان به راحتی بین پردازندهها تقسیم کرد. اما در این روش ممکن است بعضی از پردازندهها مجبور شوند بیشتر از بعضی دیگر کار کنند، در این صورت پردازندههایی که کارشان به پایان رسیدهاست تا پایان کار دیگر پردازندهها بی کار میمانند.
زیر مجموعهای از الگوریتمهای موازی، الگوریتمهای توزیعی هستند که برای استفاده در محیطهای محاسبات خوشهای و محاسبات توزیعی طراحی شدهاند، که در این حیطه باید ملاحظاتی افزون بر الگوریتمهای موازی «سنتی»، اعمال شود.
Forwarded from Batis Ab
طراحی الگوریتمهای موازی
طراحی الگوریتمها به راحتی و به دستورات مشخص محدود نمیشود. هدف ارائهٔ چهارچوبی است که طی آن طراحی الگوریتمهای موازی امکان پذیر شود. در این فرایند سعی بر ایجاد درکی شهودی است از آنچه که یک الگوریتم موازی خوب را تشکیل میدهد.
مشکلات موجود در طراحی الگوریتمهای موازی
• بازده
• تناسب
• جزء بندی محاسبات
• تجزیهٔ
• تکنیکهای تجزیهٔ تابعی
• موقعیت
• ارتباطات همگام و غیر همگام
• انباشتگی
طراحیهای علمی
این روش طراحی را در چهار مرحله انجام میدهد.
• جزء بندی
• ارتباطات
• انباشتگی
• نقشه بندی
در دو مرحلهٔ اول، تمرکز ما روی تناسب و همزمانی است. در دو مرحلهٔ دیگر نیز تمرکز روی موقعیت، و دیگر مسائل مربوط به کارایی است.
جزء بندی
کارهای مربوط به محاسبات و دادههایی که روی آنها پردازش انجام میگیرد را به بخشهای کوچک تقسیم کنید. مشکلات عملی مانند تعداد پردازندهها در کامپیوتر مرکز در محاسبات نمیآید.
ارتباطات
ارتباطات لازم برای هماهنگ کردن اجرای امور مشخص میشوند. الگوریتمها و ساختارهای مناسب ارتباطی نیز تعیین میگردند.
انباشتگی
امور و ساختارهای ارتباطی تعریف شده در دو مرحلهٔ اول یک طرح با توجه به معیارهای زیر ارزیابی میشوند.
• نیازهای اجرایی
• هزینههای پیاده سازی
در صورت لزوم، کارها با هم ادغام میشوند برای:
• بهبود بخشیدن به کارآیی
• کاهش هزینههای توسعه
نگاشت (تطابق – (mapping) - جزءجزء کردن کارها و تخصیص کارها به پردازنده ها(
برای هر پردازنده یک سری کار تعریف می شود و در این نگاشت موارد زیر رعایت می شود:
• افزایش بهره برداری پردازنده ها -طوری که کارها به صورت متوازن بر روی آن ها تقسیم شود
• کاهش هزینههای ارتباطی بین پردازنده ها
نگاشت را میتوان بصورت ثابت یا در زمان اجرا توسط الگوریتمهای توازن بارگذاری انجام داد.
طراحی الگوریتمها به راحتی و به دستورات مشخص محدود نمیشود. هدف ارائهٔ چهارچوبی است که طی آن طراحی الگوریتمهای موازی امکان پذیر شود. در این فرایند سعی بر ایجاد درکی شهودی است از آنچه که یک الگوریتم موازی خوب را تشکیل میدهد.
مشکلات موجود در طراحی الگوریتمهای موازی
• بازده
• تناسب
• جزء بندی محاسبات
• تجزیهٔ
• تکنیکهای تجزیهٔ تابعی
• موقعیت
• ارتباطات همگام و غیر همگام
• انباشتگی
طراحیهای علمی
این روش طراحی را در چهار مرحله انجام میدهد.
• جزء بندی
• ارتباطات
• انباشتگی
• نقشه بندی
در دو مرحلهٔ اول، تمرکز ما روی تناسب و همزمانی است. در دو مرحلهٔ دیگر نیز تمرکز روی موقعیت، و دیگر مسائل مربوط به کارایی است.
جزء بندی
کارهای مربوط به محاسبات و دادههایی که روی آنها پردازش انجام میگیرد را به بخشهای کوچک تقسیم کنید. مشکلات عملی مانند تعداد پردازندهها در کامپیوتر مرکز در محاسبات نمیآید.
ارتباطات
ارتباطات لازم برای هماهنگ کردن اجرای امور مشخص میشوند. الگوریتمها و ساختارهای مناسب ارتباطی نیز تعیین میگردند.
انباشتگی
امور و ساختارهای ارتباطی تعریف شده در دو مرحلهٔ اول یک طرح با توجه به معیارهای زیر ارزیابی میشوند.
• نیازهای اجرایی
• هزینههای پیاده سازی
در صورت لزوم، کارها با هم ادغام میشوند برای:
• بهبود بخشیدن به کارآیی
• کاهش هزینههای توسعه
نگاشت (تطابق – (mapping) - جزءجزء کردن کارها و تخصیص کارها به پردازنده ها(
برای هر پردازنده یک سری کار تعریف می شود و در این نگاشت موارد زیر رعایت می شود:
• افزایش بهره برداری پردازنده ها -طوری که کارها به صورت متوازن بر روی آن ها تقسیم شود
• کاهش هزینههای ارتباطی بین پردازنده ها
نگاشت را میتوان بصورت ثابت یا در زمان اجرا توسط الگوریتمهای توازن بارگذاری انجام داد.