PDA

View Full Version : سوال: استفاده از تمام هسته های سی پی یو



arian021
پنج شنبه 14 فروردین 1393, 00:31 صبح
سلام، دوستان من یه برنامه محاسبات سنگین دارم. برنامم تو حالت عادی 7% سی پی یو مصرف می کنه. چه جوری میتون یکار کنم که سرعت انجام محاسبات بالاتر بره و از تمام هسته های سی پی یو استفاده کنه ؟؟

syntiberium
پنج شنبه 14 فروردین 1393, 06:11 صبح
http://p30download.com/fa/entry/48434

ali.bahrami
پنج شنبه 14 فروردین 1393, 09:49 صبح
سلام دوست عزیز بهترین راه استفاده از برنامه نویسی موازی هست

salehsam
پنج شنبه 14 فروردین 1393, 10:16 صبح
سلام دوست عزیز بهترین راه استفاده از برنامه نویسی موازی هست
ممنون میشم بیشتر توضیح بدین

syntiberium
پنج شنبه 14 فروردین 1393, 13:07 عصر
ممنون میشم بیشتر توضیح بدین


http://p30download.com/fa/entry/48434

این لینکی که گذاشته بودم رو اگه نگاه می کردین یه کتاب pdf هست که فقط 4 مگابایته و کامل به فارسی راجع به برنامه نویسی موازی توضیح داده و مثال هم زده.

NASA's Spaceman
پنج شنبه 14 فروردین 1393, 13:25 عصر
کتاب خیلی عالی بود
ولی به نظرم خیلی مطالب مفهومی زیادی رو باید یاد یگیریم تا بتونیم به اون کدنویسی هاش برسیم
ولی خدا را شک که سخت افزار رو مثل کف دستم میشناسم وگرنه بدبخت میشدم تو یادگیریش
دوست عزیز خیلی ممنون بابت کتاب
با سپاس

arian021
پنج شنبه 14 فروردین 1393, 23:39 عصر
من این کتاب رو خوندم. چه جوری تو while ازش استفاده کنم ؟

hadi0x7c7
پنج شنبه 14 فروردین 1393, 23:55 عصر
در کل اندیس ها رو میگیره و یه تابع که اینجا به صورت لاندا بهش پاس دادیم(ممکنه فرمت خاصی داشته باشه) و اونو روی اون آرایه اعمال میکنه، نتکه ای که وجود داره که اندیسهای مختلف رو به صورت پارالل رو نخ ها مختلف(به طبع رو هسته مختلف) میاد حساب میکنه. به این میگن Data parallelism
اون ارگومان سوم تابع for یه delegate از نوع action<int> هستش که میشه یه تابع void با یه پارامتر int در کل تابع های زیادی وجود دارن که باید ببینید کدوم نیازتون میشه.

class Program
{
static void Main(string[] args)
{
ParallelLoopResult result = Parallel.For(0, 10, i =>
{
Console.WriteLine("{0}, task: {1}, thread: {2}", i, Task.CurrentId, Thread.CurrentThread.ManagedThreadId);
Thread.Sleep(10);
});
Console.WriteLine("Is completed: {0}", result.IsCompleted);
}
}