من اینجا میخوام نحوه دقیق محاسبه توان GPU هارو بر حسب Gflops خدمت دوستان توضیح بدم
نحوه محاسبه تعداد عملیاتهای پردازشی در هر ثانیه برای amd خیلی راحت تر از انویدیا هستش بنابر این من برای شروع از amd شروع میکنم و ابتدا از gpu نام اشنا و محبوب 4870 شروع میکنم:
AMD
محاسبه قدرت پردازشی hd 4870 به اینصورت محاسبه میشه:
4870 دارای 800 واحد پردازشی شیدر یا shader processor هست که در 160 عدد واحد SIMD یا همون single instruction multiple data قرار گرفته.
تصویر زیر شکل یک SIMD در 5870 هست و چون طبق معماری VLIW5 هست پس برای 4870 هم صادقه و SIMD های موجود در 4870 دقیقا مشابه شکل زیر هستن.
طبق گفته amd هر ALU/SFU در هر سیکل میتونه 1 پردازش 32bit fp MAD انجام بده.این بدین معناست که در هر سیکل هر SIMD میتونه 5 عدد عمل MAD 32 bit رو انجام میده.
MAD یعنی ADD+ MUL پس درواقع هر MAD 2 عمل یا OPS محسوب میشه.پس در واقع در هر سیکل یک SIMD میتواند 10 عمل محاسباتی جمع و ضرب انجام دهد.
حالا نحوه محاسبه توان HD4870 بر حسب داده های بالا
SIMD Cores number * ops * frequncy = GFLOPS
خوب طبق فرمول بالا برای 4870 داریم: 4870 از 800 واحد SP تشکیل شده وبرای
بدست اوردن SIMD باید بر تعداد ALU/SFU که برای SIMD های VLIW5 برابر 5 تا هست ما
160 هسته SIMD بدست میاریم:
محاسبه:
750mhz * 160 * 10 = 1200 Gflops
پس دیدیم برای 4870 ما 1.2Tera flops بدست اوردیم.
حالا بیاید برای 5870 هم محاسبه کنیم
محاسبه قدرت پردازشی hd 5870
در 5870 یا همون cypress ما 1600 واحد پردازشی sp یا ALU/SFU هارو داریم.پس با تقسیم بر 5 عدد 320 واحد SIMD رو بدست میاریم.فرکانس هسته هم 850 هست و طبق متد VLIW5 مثل 4870 در هر سیکل 10 عمل fp ضرب یا جمع رو انجام میده.(5 عمل MAD 32 bit رو انجام میده که هر MAD خود از ADD+MUL یعنی 2 عمل ضرب و جمع تشکیل شده پس ضرب در 2 میشود)
طبق فرمول گفته شده:
SIMD Cores number * ops * frequncy = GFLOPS
320 * 10 * 850 = 2.72 Tflops
این قدرت 5870 در محاسبه single precision یعنی fp 32 اما برای fp 64 داریم:
320 * 2 * 850 = 544 Gflops
چرا 2 عمل در هر سیکل؟؟ خوب اینجا تعداد عملیات هایی که در هر سیکل یک simd میتونه انجام بده نوشته:
4 32-bit FP MAD
Or 2 64-bit FP MUL or ADD
Or 1 64-bit FP MAD
Or 4 24-bit Int MUL or ADD
Plus 1 transcendental or 1 32-bit FP MAD
برای 64bit mad داریم 1 عمل MAD در هرسیکل پس در واقع میشود 2 عمل.
این از 5870 بریم سراغ 6970 ببنیم محاسبه اون چطوره:
برای 6970 ما 1536 واحد ALU داریم درایم با توجه به VLIW 4 بودن اون باید 1536 رو بر 4 تقسیم کنیم تا تعداد SIMD Core ها بدست بیاد.یعنی 384 عدد SIMD.
فرکانس هسته که 880 و تعداد عمل های انجامی هم 8 OPS در هر سیکله با توجه به گفته زیر برای هر SIMD :
4 32-bit FP MAD/MUL/ADD
Or 2 64-bit FP ADD
Or 1 64-bit FP MAD/FMA/MUL
Or 4 24-bit INT MAD/MUL/ADD
Or 4 32-bit INT ADD/Bitwise
Or 1 32-bit MAD/MUL
Or 1 64-bit ADD
Or 1 transcendental plus 1 32-bit FP MAD
خوب پس طبق فرمول داریم:
384 * 8 * 880 = 2703 Gflops
برای fp 64 bit هم داریم :
384 * 2 * 880 = 675 Gflops