PDA

View Full Version : مبتدی: تبدیل کدها Fortran به F#



voodoo01
چهارشنبه 23 تیر 1389, 15:45 عصر
سلام خدمت دوست عزیز
من برنامه ای با Fortran جهت محاسبه دستگاه معادلات نوشته ام که جواب این محاسبات جهت پردازش روش حرکت گاز در لوله و محاسبه افت فشار و سرعت به کار میرود مثلا در بانک من حدود 900 هزار رکرود برای محاسبه و جود دارد ، روش حل دستگاه تکرار در حل معادلات و رسیدن به خطایی نزدیک به 0.00006 مقدار است واین محاسبات برای مقار 900 هزار رکورد حود 1 دقیقه و 20 ثانیه می باشد...
آیا میتوان با F# با سرعت Fortran یا حتی بیشتر داده هارا پردازش نمود؟

Mehdi Asgari
چهارشنبه 23 تیر 1389, 19:00 عصر
اصلا نمیشه جواب قطعی ای به سوالت داد. در واقع جوابت به کلی فاکتور بستگی داره. با فرض مساوی بودن تمام شرایط (سخت افزار ، سیستم عامل ، الگوریتم به کار رفته ...) باز هم شاید بشه با استفاده از مثلا پردازش موازی روی چند هسته (در صورت CPU-bound بودن الگوریتم) یا Asynchronous Work-flows (در صورت IO-bound بودن الگوریتم) ، سرعت پردازش رو بالاتر برد.
اگر بتونی قطعه کدی یا الگوریتمی همراه با داده های اولیه اینجا قرار بدی ، من هم به عنوان یک چالش حاضرم باهات مسابقه بدم ، ببینیم کد کی سریع تر اجرا میشه :چشمک:

voodoo01
پنج شنبه 24 تیر 1389, 10:19 صبح
دوست عزیز من هم مدت زیادی دنبال یک ماراتون بودم تا بدونم کد نوشته شده در چه سطحی قرار داره ...
فایل t.f90 یک مجموعه روالها برای جواب گیری مقدیر محاسبات می باشد
فایل input.txt تعدادی داده برای دست گرمی
مقدار کارت های P1 تل p5 اطلاعات مر بوط به روش محاسبه و ورودی خروجی است و کارت NTBG نام گره و MTBG اتصالات مربوطه میباشد
الگوریتم >>
هاردی کراس بهینه شده که اگر دنبال اطلاعات بیشتر بودین با نام (مانم سفره گاز ) شناخته میشود

با احترام فراوان

VooDoo

Mehdi Asgari
پنج شنبه 24 تیر 1389, 11:39 صبح
من که فورترن بلد نیستم. شما شبهه کدی الگوریتمی چیزی بذار که سواد ما بکشه بتونیم بخونیمش
در ضمن ، فقط الگوریتم های حساس و محاسباتی هستن که مهمن ، وگرنه من که وقت ندارم کل برنامۀ شما رو بازنویسی کنم. (1700 خط کده)

voodoo01
پنج شنبه 24 تیر 1389, 12:08 عصر
فقط الگوریتم های حساس و محاسباتی هستن که مهمن ، وگرنه من که وقت ندارم کل برنامۀ شما رو بازنویسی کنم. (1700 خط کده)
:گیج::متفکر:
کل برنامه نبودش که فقط قسمت محاسبات بودش همین:ناراحت:
مثلا یک آرایه 800 هزار خانه ای در سه
ردیف اول شامل اعدادی بین 40 تا 70 به صورت تصادفی پرشود (اعداد اعشاری)
ردیف دوم شامل یک عدد بین 0 تا 1 (اعشاری)
ردیف سوم یک عدد بین 900 تا 1600 به صورت تصادفی (عدد صحیح)

فرمول :
D()=(a(2)-a(0)/360)+(sqr(a(0)-12)*atan(a(1)+90) ok

با تشکر

VooDoo

Mehdi Asgari
پنج شنبه 24 تیر 1389, 15:35 عصر
فایل input.txt با اون چیزی که گفتی فرق داره. بیشتر توضیح بده (یا اگه لینکی به توضیح الگوریتم داری بده بخونم)

voodoo01
یک شنبه 27 تیر 1389, 09:57 صبح
با سلام خدمت دوست عزیز من یک فکری کردم
یک سری کد نمونه از سایت MSDN گرفتم که خیلی کامل بودن در مورد کاربردهای F#
http://code.msdn.microsoft.com/fsharpsamples/Release/ProjectReleases.aspx?ReleaseId=3359

با چند نفر از دوستان نشستیم داریم کدهای Fortran تبدیل میکنم به F# تا چند روزه دیگه برنامه نهایی و داده ها رو قرار میدم تو همین تاپیک اگه لطف کنید و انجا برنامه هارا با هم مقایسه کنید و ویرایش های احتمالی یا ...

دوستان کد نمونه ها رو میتوانید از قسمت ضمینه ها هم دریافت کنند

با احترام فراوان

VOODOO

mohammadsepehri
شنبه 11 شهریور 1391, 17:45 عصر
نقل قول: منابع آموزشی #F


با سلام -کتاب جدید آموزشی اف شارپ با امکانات خیلی زیاد از انتشارات دیباگران منتشر شده است . لینک خرید کتاب هم اینه :
http://www.mftshop.com/productdetail...type=b&id=7608 (http://www.mftshop.com/productdetail.aspx?type=b&id=7608)
پیشنهاد میکنم امتحان کنید .