ورود به حساب کاربری

نام کاربری *
رمز عبور *
یاداوری

امتیاز کاربران

ستاره غیر فعالستاره غیر فعالستاره غیر فعالستاره غیر فعالستاره غیر فعال

خدمات بهبود کدهای نرم افزاری نوشته شده در حوزه HPC

HPC Code Optimization

شرکت رایانش سریع هزاره ایرانیان در راستای کمک به محققین و دانشجویان فعال در حوزه HPC که در زمینه کد نویسی یا توسعه کدهای علمی و شبیه سازی فعالیت می کنند، در همین راستا خدمات بهبود کدهای نرم افزاری را در دستور کار خود قرار داده است. برای دریافت این نوع از خدمات به صورت زیر عمل می شود (لازم به توضیح است که طی این فرآیند هیچگونه کدنویسی جدیدی توسط شرکت انجام نمی شود و تمامی موارد در قالب پیشنهاد اصلاحی به فرد متقاضی اعلام می شود):

1-      ارسال مستندات و کدهای نوشته شده توسط فرد متقاضی در قالب فرم درخواست بهینه سازی کد به همراه ذکر مشکل

2-      بررسی اولیه مستندات توسط کارشناسان شرکت و تخمین مدت زمان مورد نیاز برای اصلاح و بهینه سازی کد در قالب نفر-ساعت

3-      محاسبه هزینه نفر ساعت بر مبنای جدول زیر و پرداخت 50 درصد از هزینه توسط متقاضی

4-      تخصیص کارشناس متخصص در شرکت به درخواست متقاضی

5-      شروع فرآیند بهینه سازی و اصلاح کد توسط کارشناس مربوطه

6-      اصلاح نهایی کد نوشته شده در حد امکان و تهیه گزارش مکتوب از اصلاحات مورد نیاز یا اصلاحات انجام شده و میزان بهبود زمانی و حافظه ای بدست آمده(در صورت درخواست)

7-      تسویه حساب

8-      ارسال کد اصلاح شده و  گزارش نهایی برای متقاضی

 

زبان برنامه نویسی/ابزار

هزینه کارشناسی نفر-ساعت(ریال)

هزینه تهیه گزارش(ریال)

Python

300000

1000000

C/C++

500000

1000000

Java

500000

1000000

Fortran

500000

1000000

MATLAB

400000

1000000

Mathematica

400000

1000000

Spark(Scala)

800000

1000000

Spark(Python)

700000

1000000

 

 

بهبود کد به فرآیندی اتلاق می شود که در آن بدون تغییر در کارکرد عملیاتی یک کد نوشته شده، عملکرد آن از بعد زمان اجرا، میزان اشغال منابع، تکنیکهای برنامه نویسی و ... بهبود یابد.

معمولا در کاربردهای غیر علمی نرم افزارها و کدهای نوشته شده میزان حافظه اشغال شده توسط یک کد نرم افزاری دارای اهمیت نمی باشد. میزان اشغال حافظه می تواند بر عملکرد یک نرم افزار و کد نوشته شده تاثیر مثبت یا منفی بگذارد. کارایی زمان اجرا می تواند متاثر از مواردی از قبیل جایگذاری کد های با هزینه کمتر با کدهای پرهزینه باشد، علاوه بر این تکنیکهای از جمله پیاده سازی مفاهیم برداری سازی متغیرها، برنامه نویسی چند نخی و موازی سازی می تواند باعث ارتقاء کارایی کدهای نرم افزاری شود. زمانی که یک کد نرم افزاری بهینه بر مبنای معیار درجه پیچیدگی Big-O نوشته می شود، می توان از طریق تکنیک های پروفایل سازی در کامپایلر از قبیل اندازه گیری نقاط کلیدی در کد نرم افزاری و پارامترهای کنترلی درون کامپایلرها آن را اندازه گیری کرده و ارتقاء داد.

اولین قدم در بهبود کد، انتخاب الگوریتم مناسب و کارا است. معیار درجه پیچیدگی Big-O برای دسته بندی کارایی الگوریتمها از بعد زمان اجرا یا میزان فضای مورد نیاز به کار می رود. به عنوان مثال الگوریتم مرتب سازی QuickSort دارای درجه پیچیدگی O(nlogn) است و در همه حالات از الگوریتم SelectionSort با درجه پیچیدگی O(n2) کاراتر است.

بهینه سازی کامپایل

پارامتر –O(level> یا سایر پارامترهای خط فرمان در کامپایلر که برای تنظیم کردن میزان بهبود در خروجی برنامه های استفاده می شوند، سطوح مختلفی بهینه سازی را در کامپایلر در اختیار قرار می دهند. مستندات مربوط به GNU، Intel، PGI و سایر کامپایلرهایی که در محیط HPC استفاده می شوند توضیحاتی درباره این پارامترها دارند. به عنوان مثال در کامپایلر Intel پارامتر –O2 سطحی از بهینه سازی را در زمان کامپایل فراهم می کند که 2 نشان دهنده میزان خاصی از موازی سازی است. راهنمای بهینه سازی (Profile Guided Optimization) در کامپایلر Intel برای شناسایی هات اسپات هایی است که می تواند باعث افت کارایی شود، به این عمل profiling گویند. بهبود سطح کارایی یا کاهش حجم کد برنامه فرایندی است که باید در زمان کامپایل انجام شود و این موضوع یکی از قدرتهای کامپایلر محسوب می شود. نکته ای که باید به آن توجه کرد این است که کامپایلر نمی تواند الگوریتم SelectionSort را با QuickSort جایگزین کند.

بهینه سازی کد

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

for (int i=0; i<4; i++){
    sum+=array[i];
}

 این حلقه شامل 1 عمل انتساب، 4 مقایسه، 4 عمل افزایش، سه انشعاب و یک انشعاب غلط است. حلقه ها ممکن است وابستگی های بیشتری از قبیل داده و حافظه موقت هم داتشه باشند این در حالی است که پردازنده ها این قایلیت دارند که حلقه های را بازکرده و برای افزایش موازای سازی بسط داده و اجرا نمایند.

کامپایلر GNU از gprof برای پروفایلینگ استفاده می کند و Intel از Intel Vtune Amplifier XE استفاده می کند. ابزارهای مختلف دیگری برای پروفایلینگ وجود دارد که از آن جمله به موارد زیر می توان اشاره کرد:

valgrind utility یکی از مرسوم ترین پروفایلر های متن باز است، TotalView یک پروفایلر برنامه های موازی است. MATLAB از profile و mpiprofile برای پروفایل کردن برنامه های سریال و موازی استفاده می کند.

 

موازی سازی

انواع روشهای موازی به شرح زیر می باشند:

-          Bit Level Parallelism

با توسعه تکنولوژی VLSI اندازه کلمه در پزدازنده ها افزایش پیدا کرده و توانایی بالاتری در ارتقاء کارایی از خود نشان داده اند. برای مثال پردازنده های 32 بیتی می توانند دو عدد 32 بیتی را با سرعت بیشتری نسبت به پردازنده 16 بیتی با هم جمع کنند، چرا که یک پردازنده 16 بیتی برای جمع دو عدد 32 بیتی می بایست آن را به دو بخش بالایی و پایینی تقسیم کند که این امر موجب ایجاد سربار محاسباتی می شود.

-          Instruction Level Parallelism

در این روش کامپایلر سعی می کند دستوراتی را که می توانند با یکدیگر اجرا شوند و وابستگی داده ای به یکدیگر ندارند در یک Cycle یا Clock اجرا نماید. این دستورات باید حداقل وابستگی را به یکدیگر داشته باشند. تکنیک های مرسوم در این روش موازی سازی به قرار زیر هستند:

1-      Explicitly Parallel Instruction Computing (EPIC):

در این روش در یک Cycle بین دو تا 16 دسترالعمل قابل اجرا است که هر چه تعداد دستورات غیروابسته به هم کمتر باشد درصد بالاتری از موازی سازی را ایجاد می کند.

2-      Out of Order Execution/Register Renaming

در این روش امکان اجرای دستورات بیشتری در یک Cycle وجود دارد که با تغییر نام ثبات ها می توان به این حالت دست یافت.

3-      Speculative Execution

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

4-      Vectorization

این یکی از حالات خاص از مدل SIMD (Simple Instruction Multiple Data) اقای Flynn است که در آن یک دستور می تواند روی چندین داده به صورت همزمان کار کند. چیپ ست های x86 دارای معماری مجموعه دستورالعمل های SSE (Streaming SIMD Extension) هستند. برداری سازی به صورت خودکار پس از انتخاب پارامتر مناسب زمان کامپایل توسط کامپایلر انجام می شود.

 

-          Threading/Multi-threading

در این مدل نخ های اجرایی ایجاد می شود که به صورت همزمان اجرا می شوند.

رایانش سریعتر یا Accelerated Computing

در این روش از سخت افزارهای همه منظوره GPU استفاده می شود که از برخی روشهای نرم افزاری بهتر عمل می کند. Intel Xeon Phi و GPUs(CUDA) دو سخت افزار مشهور در این مدل محاسباتی هستند که توانسته اند انقلابی عظیم در دنیای HPC ایجاد کنند و در تقابل با CPU قرار بگیرند. NVIDIA GPUs برای حل مسائل از مدل Single Instruction Multiple Thread استفاده می کند و در در مقابل Xeon Phi قرار دارد که برای برنامه نویسانی که با روشهای کدنویسی همچونPthread, OpenMP, MPI, CUDA  آشنا هستند کمتر شناخته شده است. همه مسائل مناسب اجرا روی Accelerator ها نمی باشند و معمولا مسائلی که دارای تعداد زیاد محاسبه با داده های کم هستند را می توان بر این بستر اجرا کرد.

 

روشهای بهینه سازی

اغلب روشهایی که در اینجا ذکر می شوند توسط کامپایلرها مورد توجه قرار می گیرند اما به دلیل عدم توسط افراد به مفاهیم پایه و تخصصی کد نویسی آنها را رعایت نمی کنند و باعث ایجاد گلوگاه در کد می شوند.

این روشها عبارتند از:

1-      Dead code Elimination or Dead Code Stripping

2-      Common Sub-Expression Elimination

3-      Loop-Invariant Code Motion or Hoisting of invariant from loops

4-      Loop Unwinding or Unrolling

5-      Jump Removal/Branch Elimination

6-      Constant Folding

7-      Inlining

8-      Trace Scheduling

9-      Arithmetic Simplification

10-  Tail call optimization

11-  Iteration order reversal or Loop Termination

12-  Induction Variable Elimination

13-  Loop Fission/Distribution

14-  Loop Fusion/Combining

15-  Prefetching

16-  Memory Bank Optimization

17-  If Optimization

18-  Register Allocation

19-  Instruction Scheduling

20-  Data Alignment and Padding

21-  Structure of Arrays Over Array of Structures

22-  Loop Invariant Branches

 23-  Operations with Power of 2

 

از اینجا ثبت نام کنید

امتیاز کاربران

ستاره غیر فعالستاره غیر فعالستاره غیر فعالستاره غیر فعالستاره غیر فعال

مجازی سازی و اجرای شبکه های مبتنی بر نرم افزار از دیگر خدمات این شرکت می باشد.

SDN رویکردی در شبکه های کامپیوتری است که مدیران شبکه را قادر به مدیریت خدمات شبکه از طریق انتزاع سطح بالاتر می نماید. این امر از طریق جداسازی سیستم تصمیم گیرنده در مورد نحوه هدایت ترافیک (صفحه کنترل) از سیستم زیرین که وظیفه هدایت بسته ها به مقصد انتخابی دارد (صفجه کنترل) انجام می شود.

امتیاز کاربران

ستاره غیر فعالستاره غیر فعالستاره غیر فعالستاره غیر فعالستاره غیر فعال

از دیگر خدمات این شرکت طراحی و اجرای پروژه های انبار داده می باشد.

انبار داده یک بانک اطلاعاتی بزرگ می باشد که از طریق آن کلیه داده های حال و گذشته یک سازمان جهت انجام عملیات گزارش گیری و آنالیز در دسترس مدیران قرار می گیرد. انبار داده نقش مهمی در تصمیم گیری مدیران کمپانی برای تعیین یک استراتژی موفق داد.

امتیاز کاربران

ستاره غیر فعالستاره غیر فعالستاره غیر فعالستاره غیر فعالستاره غیر فعال

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

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

امتیاز کاربران

ستاره غیر فعالستاره غیر فعالستاره غیر فعالستاره غیر فعالستاره غیر فعال

کلان داده ها و پردازش داده های حجیم یکی دیگر از خدمات این شرکت می باشد.

کلان داده ها دارایی های داده ای اند بسیار انبوه، پرشتاب و/یا گوناگون که نیاز به روش های پردازشی تازه ای دارند تا تصمیم گیری، بینش تازه و بهینگی پردازش پیشرفته را فراهم آورند. کلان داده یا بزرگ داده ها مسیر حرکت کسب و کار و فرآیند چرخش کار در سازمان ها را مشخص می کنند. در بزرگ داده با داده های متمایز و بزرگ که دائماً از لحاظ حجم، نرخ تولید داده و تنوع در حال تغییر هستند سر و کار داریم.

شرکت دانش بنیان رایانش سریع هزاره ایرانیان به منظور ارائه راهکارهای رایانش سریع، تحلیل داده، بیگ دیتا و کلان داده به سازمانها و شرکتهای عصر دیجیتال تشکیل شده است. خدماتی از جمله طراحی راهکارهای بیگ دیتا، راه اندازی دریاچه داده و انباره داده، ساخت کاتالوگ داده، تحلیل داده و یادگیری ماشینی و ... از جمله فعالیتهای این شرکت می باشد.

 

 

آخرین مقالات

کامپایل و نصب mfix-2016.1

درک عملکرد دستگاه های انرژی، محیط زیست و فرایندها...

معرفی کامل صف پیشرفته کاف...

آپاچی کافکا نیز پلت فرم متن باز به منظور پردازش جر...

روندهای معماری داده در سا...

هدف اصلی از پیاده‌سازی معماری داده، استانداردسازی...

کامپیوترهای کوانتومی: انف...

کامپیوترهای کوانتومی انفجاری در سرعت محاسبات ایجا...

رایانش مرزی یا EDGE COMPU...

در این مقاله تصمیم داریم با مفهومی به نام رایانش...

پردازش سریع تصاویر دریافت...

پردازش سریع تصاویر دریافت از راه دور (RS) در بسیار...

امنیت در مجازی سازی و رای...

مجازی سازی و رایانش ابری در رایانش ابری کامپوننت...

الگوریتم‌‌های پیش‌بین و ک...

استفاده از الگوریتم‌های پیش‌بین و هوش مصنوعی به د...

استفاده از سیستم چند عامل...

رایانش ابری یکی از راه حل های فشرده توسعه یافته بر...

۶ مهارت پر تقاضای بازار د...

متخصص دانش ابری (Cloud professional) یکی از عناوی...

جریان موازی بین منابع HPC...

چکیده انجام تجزیه و تحلیل یا تولید تصویری همزمان ب...

پردازش داده‌های جریانی در...

با ظهور وب ۲٫۰ و اینترنت اشیا، ردگیری همه نوع اطلا...

معرفی روش ها و ارائه پیشن...

چكیده محاسبات ابری یک فنآوری جدید نیست؛ بلکه روشی...

آیا فرآیند دموکراتیزه شدن...

ما وسط یک تحول تکنولوژیکی هستیم که شیوه سازماندهی...

کارکرد نظارتی و مدیریتی م...

محاسبات ابری و اینترنت اشیا به عنوان دو مبحث داغ د...

پیوند کلان داده با هوش مص...

سیستم‌های نرم‌افزاری تجاری همچون سرویس‌های ERP و...

محاسبات ابری قدرت رقابتی...

آیا فناوری دیجیتال، یک نیروی دموکراتیزه کننده است...

معماري لامبدا در مقابل مع...

معماري لامبدا تولید بی وقفه داده ها در دنیاي امروز...

زبان برنامه‌نویسی Milk سر...

زبان برنامه‌نویسی Milk که توسط دانشگاه MIT توسعه...

بیگ دیتا ، یادگیری ماشین...

سازمان‌ها گاهی اوقات به سختی تلاش می‌کنند تا با دس...

محاسبات مه چه هستند و چه...

در ابتدا همه چیز «ابر» بود، ولی حالا کلمه جدید «مه...

توسعه هوش مصنوعی مبتنی بر...

به گزارش ایسنا و به نقل از انگجت، پژوهشگران "ام.آی...

نگاهی به کاربردهای رایانش...

رایانش ابری مبحثی است که این روزها زیاد به آن پرد...

نرم افزار شبیه سازی، آنال...

دانلود CST Studio Suite: ارائه راه حل های محاسبات...

دانلود Siemens Star CCM+...

نرم افزار Star CCM یک ابزار شبیه سازی قدرتمند است...

ورود بیگ دیتا به صنعت دار...

تکنولوژی در حال ورود به صنعت داروسازی است و پیش‌بی...

چهارمین جلسه meetup: اصلا...

مهاجمان اغلب با استفاده از اشتباهات کدنویسی کوچک و...

مدیریت خصوصیات صف در کلاس...

 لیست زیر ,ویژگی های صف را نمایش می دهد : acl_grou...

AMD از رویکرد طراحی تازه‌...

AMD چند روز پیش به‌صورت رسمی از رویکرد طراحی جدیدی...

دومین جلسه meet up:مقدمه...

فهرست : توضیح مختصر از توسعه ی کلودسیم نصب کلودسیم...

گالری تصاویر

hacklink al duşakabin fiyatları fethiye escort bayan escort - vip elit escort dizi film izle erotik film izle duşakabin hack forum casibom marsbahis marsbahisgirtr marsbahis matadorbet casibom