ممنون استاد علی
الان کتابخونه ای هست که در دات نت (یا غیر دات نت) بتونه پردازش را بر دوش هسته های CUDA در کارت گرافیک بندازه؟ مخصوصا موقع کار با توابع گرافیکی و کلاس Graphics
اگه آره ، چیه؟
کجا هست؟ تو کامپیوتر من؟ نه نیست، مورد اول رو که باید تو گوگل جستجو کنید، فکر نمی کنم اینکه من همچین کتابخانه ای ندارم دلیل باشه که نباشه. سوال دومتون هم کلا نامربوطه به کارکردش، کارکردش اینطوری نیست که وسط روتین های گرافیکی تون نقشی داشته باشه. پردازنده اش پردازنده یک کارت گرافیکی ئه، نه اینکه خودش موتور گرافیکی باشه، خودش فقط یک پردازنده است.
مگه پردازنده ی گرافیکی ، برای کارهای گرافیکی و رسم ها فقط استفاده نمیشه؟ یعنی پردازنده ی گرافیکی ، میتونه کار پردازنده ی cpu رو کنه؟
نه، پردازنده گرافیکی عملا به این شکل وجود نداره. پردازنده ای که قراره رسم دو بعدی و سه بعدی انجام بده به تمامی اون قابلیت های محاسباتی پردازنده های همه منظوره احتیاج داره، اگه محاسبات جمع و تفریق و ضرب و تقسیم و توان و لگاریتم و سینوس و کسینوس و ... رو نداشته باشه که نمیتونه کارشو انجام بده، برای همین نهایتش یک پردازنده است مثال سایر پردازنده های همه منظوره.
اگه آره ، پس چرا نمیشه پردازنده ی گرافیکی ، بدون cpu در یه سیستمی داشت؟
داشتن با استفاده کردن فرق می کنه، اون BIOS داخل مادربورد و اون ویندوز روی هارد دیسک به زبان ماشین پردازنده اصلی طراحی و کد نویسی شده اند، نه زبان ماشین پردازنده کارت گرافیکی. بماند که مادربورد هم ارتباط بین کارت گرافیکی رو به اون شکل فراهم نمی کنه که باهاش سیستمی بوت بشه.
و دوما چرا خیلی از نرم افزارها ، از cuda برای سرعت بیشترشون استفاده نمیکنن؟ مثلا افترافکت ، فقط موتور ray trace اش با یکی دو تا افکت اش از cuda استفاده میکنه . خیلی از نرم افزارها اصلا این قابلیت استفاده رو هم ندارن
اولا همه سیستم ها که امکانات سخت افزاری CUDA رو ندارند که از اون هزینه و زمانی که صرف طراحی اش شده استفاده کنند، ثانیا همه نرم افزار ها که با CUDA یا هر سیستم مشابه دیگری نمی توانند سریعتر بشوند، ثالثا بازنویسی برای استفاده از همچین قابلیت هایی همچین راحت و کم هزینه نیست که هر شرکتی روش سرمایه گذاری کنه.
ممنون استاد علی
منظورتون در قضیه ی فایل WAV و کلاس System.Media.SoundPlayer ، استفاده از عضو Stream در این کلاس هست؟
لازم نیست حتما Stream باشه، ولی به هر حال Stream زمانی که حجم فایل زیاده خیلی مناسبتر از فراخوانی کاملش در یک حافظه آرایه بایتی ئه چون Stream به تدریج که پخش میشه بخش لازمش رو در حافظه فراخوانی می کنه و لازم نیست به اندازه حجم کل فایل حافظه تخصیص بده.
من کلا با کار کرد Stream ها آشنا نیستم . در واقع تا حالا فایل صوتی را نخوندم (توسط Stream) و فایل های دیگه ای را هم که خوندم (توسط Stream) ، نمیدونم اصلا اطلاعات واقعی شو چجوری میشه استخراج کرد . مثلا فایل های ویدئویی را خوندم . خوب؟ ولی اصلا اطلاعات (رشته ی) درهم میده و تجزیه و تحلیل اش را بلد نیستم . منظورم اینه که مثلا در فایل ویدئویی ، اطلاعات اش زمانی به درد آدم میخوره که بشه فهمید مثلا اولا فریم 1000 اش از کجا (کدوم خط) تا کجاست و دوما در فریم 1000 اش چه تصویری ذخیره شده (چون میدونیم که فیلم ، مجموعه ای از عکس ها و بیت مپ هاست) و توی اون بیت مپ (فریم 1000) هم مثلا در نقطه ی فلان ، چه رنگی وجود داره ؟ حالا فایل صوتی فیلم را که کلا روند فایل صوتی رو نمیدونم چجوری ذخیره میشه و چجوری هست
چرا همه چی رو با هم قاطی می کنید، من در مورد فایل WAV توضیح میدم بعد میگید فایل ویدئویی؟ صحبت ویدئو بود؟ شما که توقع ندارید که فایل ویدئویی فشرده روی فایل رو خط به خط متنی بخونید و تجزیه و تحلیل کنید. معلومه که نمیشه. پخش فایل ویدئویی Splitter داره، Decoder داره، اینها رو که نمیشه مستقیم دور زد و از فایل اطلاعات قابل پخش درآورد.