معماری‌های موازی
معماری موازی ساختار کامپیوترهای موازی به هر یک از سه حالت زیر می‌تواند تغییر کند
هر پردازنده در کامپیوتر موازی می‌تواند بر اساس یک واحد کنترل موازی یا به‌طور مستقل تحت واحد کنترلی خودش کار کند. اولین نوع معماری جریان تک دستوری - چند داده‌ای نامیده می‌شود. در این معماری دستورالعمل مشابهی به‌طور همزمان توسط واحدهای پردازش تحت کنترل واحد کنترل مرکزی اجرا می‌شوند. این بدین معنی نیست که همه پردازنده‌ها بایستی حتماً دستورالعملی را در چرخه اجرا کنند بلکه هر پردازنده بنا به ضرورت می‌تواند در هر چرخه دلخواه غیرفعال شود.
کامپیوترهای موازی که در ان هر پردازنده بر اساس واحد کنترلی خودش کار می‌کند به کامپیوترهای جریان چند دستوری چند داده‌ای مرسومند در این کامپیوترها یک نسخه از سیستم عامل و برنامه در هر پردازنده نگهداری می‌شود کامپیوترهای SIMD برای برنامه‌هایی مناسب هستند که دستورالعمل مشابهی را روی داده‌های متفاوت اجرا می‌کنند. چنین برنامه‌هایی برنامه داده - موازی نامیده می‌شوند. یک مشکل کامپیوترهای SIMD این است که آن‌ها نمی‌توانند دستورالعمل متفاوتی را در یک چرخه زمانی اجرا کنند.
پردازنده‌ها می‌توانند به وسیله تغییر داده‌ها در یک فضای آدرسی مشترک یا به وسیله ارسال پیام با یکدیگر ارتباط برقرار کنند. فضای آدرسی به صورت‌های مختلفی بر حسب روش ارتباطی مورد استفاده سازمان دهی می‌شوند. در معماری فضای آدرسی مشترک سخت‌افزاری لازم است تا امکان خواندن و نوشتن به یک آدرس اشتراکی را برای تمامی پردازنده‌ها فراهم نماید در این ساختار پردازنده‌ها با تغییر داده در یک فضای آدرسی مشترک با یکدیگر ارتباط برقرار می‌کنند
کامپیو تر با دستیابی به حافظه همگن کامپیو ترهایی هستند که زمان دستیابی به هر کلمه در حافظه یک مقدار ثابت است را نشان می‌دهد، ممکن است هر پردازنده خودش حافظه اختصاصی داشته باشد این حافظه فقط برای نگهداری متغیرهای محلی جهت انجام عملیات محاسباتی هر پردازنده بکار می‌رود هیچ‌کدام از ورودی‌های حقیقی الگوریتم در ناحیه اختصاصی وجود ندارد مشکل کامپیو ترهای UMA این است که شبکه سلسله مراتبی باید به‌طور همزمان دستیابی به حافظه اشتراکی را برای هر پردازنده فراهم کند که این امر موجب کاهش کارایی می‌شود.
یک راه چاره مجهز کردن هر پردازنده به یک بخش از حافظه اشتراکی است این حافظه اختصاصی نیست بلکه هر پردازنده می‌تواند به محتوای حافظه در پردازنده‌های دیگر نیز دسترسی داشته باشد پر واضح است که دسترسی پردازنده به حافظه خودش سریعتر از دسترسی به حافظه‌های دیگر پردازنده هاست.
«شبکه‌های سلسله مراتبی» به‌طور کلی، شبکه‌های سلسله مراتبی به دو گروه تقسیم می‌شوند: ایستا و پویا. شبکه‌های ایستا، عموماً برای تشکیل معماری‌های پیام گذر بکار می‌روند، درحالی که ازشبکه‌های پویا در معماری‌های فضای آدرسی اشتراکی استفاده می‌شود. هریک از این انواع شبکه‌ها رابه ترتیب مطرح می‌کنیم.
«شبکه‌های سلسله مراتبی ایستا» شبکه سلسله مراتبی ایستا دارای اتصال‌های مستقیم بین پردازنده هااست که به همین دلیل به شبکه مستقیم نیز موسوم است. چندین نوع مختلف ازشبکه‌های سلسله مراتبی وجود دارند که در مورد بعضی از متداول‌ترین آن‌ها بحث می‌کنیم. کارآمدترین و در عین حال پرهزینه‌ترین نوع شبکه سلسله مراتبی، شبکه سلسله مراتبی کامل است.
درچنین شبکه‌ای هر پردازنده مستقیماً به پردازنده‌های دیگر متصل می‌شود؛ بنابراین یک پردازنده می‌تواند مستقیماً از طریق خط ارتباطی، پیغامی رابه پردازنده دیگر ارسال کند. ازآنجایی که تعداد اتصال‌ها دراین شبکه، مربعی از تعداد پردازنده‌های موجود است، لذا این نوع شبکه کاملاً پرهزینه است.
دریک شبکه سلسله مراتبی ستاره‌ای، یک پردازنده به عنوان پردازنده مرکزی عمل کرده و دیگر پردازنده‌ها تنها یک اتصال به این پردازنده مرکزی دارند. در یک شبکه سلسله مراتبی ستاره‌ای، یک پردازنده به وسیله ارسال پیام به پردازنده مرکزی، پیامی رابه پردازنده دریافت‌کننده می‌فرستد و از این طریق با دیگر پردازنده‌ها مرتبط می‌شود.
در یک شبکه درجه محدودازدرجهd، هر پردازنده به حداکثر d پردازنده دیگر متصل می‌شود. دراین شبکه، یک پیام ابتدا دریک مسیر و سپس درمسیرهای دیگر فرستاده می‌شود. یک شبکه ایستا با پیچیدگی بیشتر ولی متداول تر، شبکه فوق مکعبی است. یک فوق مکعب صفر بعدی شامل یک پردازنده است. فوق مکعب یک بعدی، از اتصال پردازنده‌ها در دو فوق مکعب صفر بعدی تشکیل می‌شود. فوق مکعب دوبعدی از اتصال هر پردازنده دریک فوق مکعب یک بعدی به پردازنده‌ای در فوق مکعب یک بعدی دیگر تشکیل می‌شود و به همین ترتیب یک فوق مکعب d+1 بعدی از طریق اتصال پردازنده‌ای در یک فوق مکعب d بعدی در یک پردازنده در فوق مکعب d بعدی دیگر تشکیل می‌شود.
طراحی الگوریتم‌ها با شبه کد سی ++ - ریچارد نئو پو لیتین