حاسبة قانون أمداهل
البرنامج المتوازي بنسبة 95% يعمل أسرع بنحو 5.93 مرة على 8 معالجات، لا 8 مرات، ولن يتجاوز 20 مرة مهما أضفت. استخدمه لتحديد حجم عنقود حوسبة أو للرد على وعد مبسّط بتسريع N مرة قبل شراء العتاد. مجاني في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
مثال محلول
- الجزء المتوازي
- 0.95
- المعالجات
- 8
- الجزء التسلسلي
- 0.05
- التسارع
- 5.9259259259
- الكفاءة
- 0.7407407407
- الحد التسلسلي
- 20
يسمي قانون أمداهل السقف الذي يفرضه العمل التسلسلي المتبقي على التسريع المتوازي. إذا أمكن تشغيل كسر P من برنامج على نحو متزامن وبقي الباقي متتابعًا، فإن إضافة المعالجات لا تضرب زمن التشغيل في N أبدًا. التسريع النظري هو واحد على واحد ناقص P زائد P على N: ويبقى الباقي التسلسلي في المقام مهما كبر N. تقبل حاسبة قانون أمداهل هذه الكسر القابل للتوازي وعدد المعالجات، ثم تعيد عامل التسريع والكسر التسلسلي والكفاءة المتوازية والحد التسلسلي التقاربي واحد على واحد ناقص P كلما بقي عمل تسلسلي. والحساب هوية مغلقة، حتمية تمامًا، بلا محاكاة وبلا نموذج لغوي. استخدمها لتحديد حجم عنقود، أو لدحض زعم ساذج بمقدار N مرة، أو للتحقق من منحنى تسريع في كتاب قبل شراء العتاد.
ما الذي يقيسه قانون أمداهل وكيف يُشتق عامل التسريع
قانون أمداهل هو ملاحظة جين أمداهل سنة 1967: العمل التسلسلي المتبقي يحدّ كم يمكن لبرنامج كامل أن يصبح أسرع، مهما كان عدد المعالجات التي تطبقها على الجزء المتوازي. اكتب P لكسر زمن الساعة لمعالج واحد يمكن تشغيله على نحو متزامن، وN لعدد المعالجات. الكسر المتتابع هو واحد ناقص P.
بعد قسمة العمل المتوازي N أقسام يصبح الزمن النسبي واحدًا ناقص P زائد P على N، فيكون التسريع النظري S لـ N مقلوب ذلك المجموع: واحد مقسومًا على واحد ناقص P زائد P على N. عندما يساوي P واحدًا يتوازى كل دورة ويساوي التسريع N. وعندما يساوي P صفرًا يكون العمل تسلسليًا خالصًا ويبقى التسريع واحدًا لكل N.
وبين هذين الطرفين ينمو التسريع مع N لكنه يتسطح نحو الحد التسلسلي واحد على واحد ناقص P. وذلك السقف هو مقصد القانون: برنامج لا يزيد تسلسله على خمسة في المئة لا يتجاوز تسريعًا بعشرين مرة، حتى على مليون نواة، لأن الخمسة في المئة التسلسلية تبقى بعد أن يُقطَّع المحيط المتوازي إلى ما لا نهاية. الكفاءة المتوازية هي التسريع مقسومًا على N؛ وتهبط كلما نما N ما لم يكن P واحدًا تمامًا.
تقيّم هذه الحاسبة تلك الهويات مباشرة. وليست محللة أداء، ولا محاكي أحداث متقطعة، ولا نموذج Gustafson للتسريع المُوسَّع الذي يطرح سؤالًا آخر بتكبير المسألة مع الآلة. إذا عرفت P من قياس أو من تقدير سريع يفصل الحلقات الساخنة عن التهيئة، فإن صيغة أمداهل تعطي التسريع النظري الذي ينبغي توقعه قبل أن تجعل آثار الخبيئة أو تنازع الأقفال أو حركة NUMA المنحنى الحقيقي أسوأ.
حالات الاستخدام
تحديد حجم العنقود وعدد النوى
أدخل الكسر القابل للتوازي المقاس وامسح أعداد المعالجات حتى يقترب التسريع النظري من الحد التسلسلي، ثم توقف عن شراء نوى لا تستطيع حصادها.
فحوص واقعية في مراجعات الأداء
استبدل زعم تسريع ساذج بمقدار N مرة بحد أمداهل حتى تُظهر مراجعات المعمارية الباقي التسلسلي بدل منحنى خطي بلا سقف.
الأسئلة الشائعة
ماذا يحدث إذا خرج الكسر القابل للتوازي عن 0 إلى 1؟
P كسر من زمن معالج واحد، فتُرفض القيم دون 0 أو فوق 1 ولا تُفوتر. أرسل 0.95 لـ 95 في المئة، لا 95.
بِمَ يختلف هذا عن قانون Gustafson؟
يُبقي أمداهل حجم المسألة ثابتًا ويسأل كم أسرع يجري العمل نفسه على N معالجات. أما Gustafson فيدع المسألة تنمو مع الآلة. وهذه النقطة النهائية تنفذ أمداهل فقط.
ما معادلة قانون أمدال؟
التسريع هو واحد مقسومًا على مجموع الجزء التسلسلي والجزء المتوازي موزعًا على المعالجات. مع 0.95 متوازيًا و8 معالجات يصبح واحدًا على 0.05 زائد 0.95 مقسومًا على 8، أي نحو 5.93 مرة.
ماذا تعني الكفاءة المتوازية؟
هي التسريع مقسومًا على عدد المعالجات. مع 5.93 مرة على 8 معالجات تبلغ نحو 0.74، أي أن كل معالج يقدّم قرابة ثلاثة أرباع نصيبه المثالي، وتنخفض هذه النسبة كلما أضفت المزيد.
هل سيبلغ برنامجي الفعلي هذا التسريع؟
غالبًا لا. النتيجة سقف نظري لحجم عمل ثابت، وتؤدي الذاكرة المؤقتة وتنافس الأقفال وحركة الذاكرة إلى منحنيات فعلية أسوأ، فاعتبرها أفضل حالة تقارن بها قياساتك.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/dev/amdahls-law \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"parallel_fraction":0.95,"processors":8}'const res = await fetch("https://api.kit.forhosting.com/dev/amdahls-law", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"parallel_fraction": 0.95,
"processors": 8
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/amdahls-law",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"parallel_fraction": 0.95,
"processors": 8
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/amdahls-law", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"parallel_fraction":0.95,"processors":8}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"parallel_fraction":0.95,"processors":8}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/amdahls-law", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"parallel_fraction": 0.95,
"processors": 8
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.amdahls_law",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الحدود
max_processors | 1000000000000 |
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
عقد الإدخال وشكل الاستجابة وسلوك الخطأ
بعد التحقق يحسب المحرك الكسر التسلسلي واحدًا ناقص P، ومقام أمداهل ذلك الباقي التسلسلي زائد P على N، والتسريع واحدًا على المقام، والكفاءة تسريعًا على N. وعندما يساوي P واحدًا يكون الحد التسلسلي غير محدود، فتُحذف تلك المفتاح بدل إخراجها null. مثال: P يساوي 0.95 وN يساوي ثمانية يعطي تسريعًا نحو 5.93 وكفاءة نحو 0.74 وحدًا تسلسليًا قدره عشرون. هذا وحي تسريع نظري وفق نموذج أمداهل بالحمل الثابت، لا قياسًا لثنائيك ولا حاسبة تسريع موسَّع لغوستافسون. أرسل بهيئة POST جسم JSON بحقلين إلزاميين. parallel_fraction هو الكسر القابل للتوازي P، عدد منتهٍ من صفر إلى واحد ضمنًا؛ أرسل 0.95 للخمسة وتسعين في المئة، لا خمسة وتسعين. تُقبل الأسماء البديلة p وparallelizable_fraction وf. processors هو عدد المعالجات N، عدد صحيح من واحد إلى تريليون. تُقبل الأسماء البديلة n وcores وn_processors. الحقول الناقصة والقيم غير المنتهية وأعداد المعالجات غير الصحيحة وN دون واحد وN فوق الحد المنشور وكسر قابل للتوازي خارج صفر إلى واحد تفشل بـ invalid_input مع تسمية الحقل ولا تُفوتر. يكرر جسم JSON الحقلين parallel_fraction وprocessors ثم يعيد serial_fraction وspeedup وefficiency وسلسلة formula تعيد صياغة S لـ N يساوي واحدًا على واحد ناقص P زائد P على N. وعندما يكون P أصغر من واحد حصرًا يعيد أيضًا serial_limit، الحد التقاربي واحد على واحد ناقص P. تُقرَّب الأرقام إلى اثني عشر رقمًا معنويًا حتى تطابق القيم المرجعية والأداة المجانية في المتصفح واجهة API بايتًا ببايت.
أين تكسب حاسبة قانون أمداهل مكانها
استخدم أداة المتصفح عند تحديد حجم عنقود، أو مراجعة زعم أداء بأن التسريع سيتتبع عدد النوى، أو شرح صفٍّ لِمَ يقف خمسة وتسعون في المئة متوازيًا عند عشرين مرة. ارفع N حتى يقترب التسريع من الحد التسلسلي، ثم توقف عن شراء نوى لا تستطيع حصادها. النتائج حتمية تمامًا: الزوج نفسه من P وN يعطي دائمًا متجه التسريع نفسه، فتستطيع تثبيت الأمثلة في الاختبارات والمواد التعليمية. لا نموذج لغوي ولا خدمة تنميط خارجية ولا عشوائية. استخدم API عندما يحتاج برنامج نصي أو بيئة مقابلة أو دفتر معمارية أو فحص تكامل مستمر إلى JSON مستقر لأزواج كثيرة (P, N) تحت عقد واحد. قابل النتيجة بقانون Gustafson إذا نمت الحمولة مع الآلة؛ إذ يُبقي أمداهل حجم المسألة ثابتًا، وهو الحد المحافظ لأعمال الدفعات والمترجمات والنوى العلمية التي لا تكبر سحرًا عند إضافة المقابس. كل طلب ناجح بند قابل للفوترة بسعر $0.002؛ والتحقق الفاشل لا يستهلك الرصيد. يحافظ نطاق المعالجات المنشور على التقييم المغلق ضمن أعداد IEEE-754 المزدوجة العادية ويغطي كل آلة عملية كنت ستحدد حجمها يدويًا. صِل نقطة النهاية بدروس الحوسبة المتوازية ومخططي السعة ومراجعات المعمارية أو أوراكل مقابلات البرمجة حيث تفضّل هوية أمداهل الدقيقة على جداول تسريع قصصية تخفي الباقي التسلسلي.
حالات التكامل
تعليم الحوسبة المتوازية
امنح الطلاب وحيًا حتميًا لـ S(N)=1/((1-P)+P/N)، بما في ذلك حالتي P=0 وP=1 والحد التسلسلي، دون إقامة محللة أداء.
أسئلة تقنية
ما صيغة قانون أمداهل للتسريع؟
أرسل parallel_fraction P في [0, 1] وprocessors N عددًا صحيحًا ≥ 1. تعيد API القيمة S(N)=1/((1-P)+P/N) مع الكسر التسلسلي 1-P والكفاءة S/N.
ما الحد التسلسلي الذي تعيده الحاسبة؟
serial_limit هو 1/(1-P)، أقصى تسريع عندما يسعى N إلى اللانهاية. ويُحذف عندما P=1 لأن برنامجًا متوازيًا تمامًا لا حد تسلسليًا له.
كم تكلفة حاسبة قانون أمداهل؟
أداة المتصفح مجانية. تستخدم طلبات API رصيد KIT المدفوع مسبقًا بسعر $0.002 لكل نداء ناجح؛ والإدخال غير الصالح لا يُفوتر.