برنامج Boltzmann CFD الشبكي الأسرع والأكثر كفاءة في الذاكرة، يعمل على جميع وحدات معالجة الرسومات عبر OpenCL. مجاني للاستخدام غير التجاري.
(اضغط على الصور لعرض الفيديوهات على اليوتيوب)
تغييرات الإصدار 1.0 (04.08.2022) (إصدار عام)
الافراج العام
تغييرات الإصدار 1.1 (29.09.2022) (تخصيص وحدة معالجة الرسومات)
تمت إضافة voxelization الصلبة على GPU (خوارزمية بطيئة)
أداة مضافة لطباعة موضع الكاميرا الحالي (مفتاح G )
إصلاح الأخطاء الطفيفة (الحل البديل لخلل برنامج تشغيل Intel iGPU مع عرض المثلث)
v1.2 (24.10.2022) التغييرات (حساب القوة/عزم الدوران)
تمت إضافة وظائف لحساب القوة/عزم الدوران على الأشياء
وظيفة مضافة لترجمة الشبكة
تمت إضافة إعداد التحقق من صحة السحب من Stokes
تغييرات الإصدار 1.3 (10.11.2022) (إصلاحات الأخطاء الطفيفة)
تمت إضافة وظائف تحويل الوحدات لعزم الدوران
يمكن الآن استخدام FORCE_FIELD
و VOLUME_FORCE
بشكل مستقل
إصلاح الأخطاء الطفيفة (الحل البديل لخلل برنامج تشغيل AMD القديم مع الأرقام الثنائية الحرفية)
تغييرات الإصدار 1.4 (14.12.2022) (رسومات Linux)
إعادة كتابة كاملة لمكتبة رسومات C++ لتقليل تبعيات API
تمت إضافة وضع الرسومات التفاعلية على Linux مع X11
إصلاح الخلل في تبسيط التصور في 2D
تغييرات الإصدار 2.0 (09.01.2023) (ترقية وحدات معالجة الرسومات المتعددة)
تمت إضافة دعم وحدات معالجة الرسومات المتعددة (عبر البائعين) على عقدة واحدة (كمبيوتر شخصي/كمبيوتر محمول/خادم)
تغييرات الإصدار 2.1 (15.01.2023) (التوزيع السريع)
إجراء عملية فوكسل صلبة على وحدة معالجة الرسومات بسرعة البرق (خوارزمية جديدة، من دقائق إلى ميلي ثانية)
v2.2 (20.01.2023) التغييرات (سرعة الفكسلة)
خيار إضافي لتفعيل الهندسة المتحركة/الدوارة على وحدة معالجة الرسومات، مع تهيئة السرعة التلقائية لكل نقطة في الشبكة بناءً على مركز الدوران والسرعة الخطية وسرعة الدوران
الخلايا التي يتم تحويلها من سائل صلب أثناء إعادة التأكسيل يتم الآن تهيئة DDFs الخاصة بها بشكل صحيح
تمت إضافة خيار لعدم تغيير حجم الشبكة تلقائيًا أثناء read_stl(...)
مع معلمة size
السلبي
نواة مضافة لتقديم الحدود الصلبة مع مكعبات المسيرة
v2.3 (30.01.2023) التغييرات (الجسيمات)
الجسيمات المضافة بطريقة الحدود المغمورة (إما سلبية أو مقترنة ثنائية الاتجاه، مدعومة فقط بوحدة معالجة رسومات مفردة)
تحسين طفيف لخوارزمية voxelization لوحدة معالجة الرسومات (تعود خيوط مجموعة العمل خارج المربع المحيط بالشبكة بعد العثور على تقاطعات شبكة الشعاع)
أصبح الآن حجم تخصيص ذاكرة GPU المعروض دقيقًا تمامًا
تم إصلاح الخلل في وظيفة write_line()
في src/utilities.hpp
تمت إزالة امتداد الملف .exe
لنظام التشغيل Linux/macOS
تغييرات الإصدار 2.4 (11.03.2023) (تحسينات واجهة المستخدم)
تمت إضافة قائمة تعليمات باستخدام المفتاح H الذي يعرض عناصر التحكم في لوحة المفاتيح/الماوس وإعدادات التمثيل المرئي وإحصائيات المحاكاة
تحسينات على التحكم في لوحة المفاتيح/الماوس ( + / - للتكبير/التصغير، النقر بالماوس يحرر/يقفل المؤشر)
تمت إضافة اقتراح بأكبر دقة ممكنة للشبكة إذا تم ضبط الدقة على حجم أكبر مما تسمح به الذاكرة
تحسينات طفيفة في الاتصال متعدد وحدات معالجة الرسومات (فرق أداء غير مهم)
علة ثابتة في وظيفة توازن درجة الحرارة لتمديد درجة الحرارة
تم إصلاح الخطأ المزدوج الحرفي لوحدات Intel iGPU في وظائف ألوان Skybox
تم إصلاح الخلل في make.sh حيث لا تتم إعادة توجيه معرفات أجهزة GPU المتعددة إلى الملف القابل للتنفيذ
إصلاحات طفيفة للأخطاء في محرك الرسومات (المؤشر الحر غير متمركز أثناء التدوير، والتسميات في وضع VR)
تم إصلاح الخلل في التهيئة القياسية لمعلمة الحجم LBM::voxelize_stl()
تغييرات الإصدار 2.5 (11.04.2023) (إصلاح شامل لتتبع الأشعة)
تنفيذ امتصاص الضوء في السائل لرسومات تتبع الأشعة (لا يوجد تأثير على الأداء)
تحسين معدل إطارات تتبع الأشعة عندما تكون الكاميرا داخل السائل
التحف الثابتة الخفقان عمود Skybox
تم إصلاح الخلل حيث أن الأجسام المتحركة أثناء إعادة التأكسيل قد تترك خلفها أثرًا خاطئًا لخلايا الشبكة الصلبة
تغييرات الإصدار 2.6 (16.04.2023) (تصحيح Intel Arc)
مشكلات OpenCL المصححة لوحدات معالجة الرسوميات Intel Arc: أصبحت الآن عمليات تخصيص VRAM > 4 جيجابايت ممكنة وتم الإبلاغ عن سعة VRAM الصحيحة
تغييرات الإصدار 2.7 (29.05.2023) (ترقية التصور)
تمت إضافة تصور للشريحة (أوضاع المفتاح 2 / المفتاح 3 ، ثم التبديل بين أوضاع الشريحة باستخدام المفتاح T ، وتحريك الشريحة باستخدام المفاتيح Q / E )
إطار سلكي للعلم / حبات تصور سطح صلب قابلة للتبديل باستخدام المفتاح 1
تمت إضافة تصور لضغط السطح (المفتاح 1 عند تمكين FORCE_FIELD
واستدعاء lbm.calculate_force_on_boundaries();
)
تمت إضافة وظيفة تصدير .vtk
الثنائية للشبكات مع lbm.write_mesh_to_vtk(Mesh* mesh);
تمت إضافة time_step_multiplicator
لوظيفة integrate_particles()
في ملحق PARTICLES
جعل تصحيح تقارير الذاكرة الخاطئة على Intel Arc أكثر قوة
تم إصلاح الخلل في وظائف قالب write_file()
تم إرجاعه مرة أخرى إلى سياق cl::Context
المنفصل لكل جهاز OpenCL، حيث أن السياق المشترك بخلاف ذلك سيخصص VRAM إضافية على جميع وحدات معالجة الرسومات Nvidia الأخرى غير المستخدمة
إزالة تكوينات Debug وx86 من ملف حل Visual Studio (مضاعفات أقل للتجميع)
تم إصلاح الخلل الذي يمكن أن تقترب منه الجزيئات كثيرًا من الجدران وتتعثر، أو تترك مرحلة السائل (قوة حدودية إضافية)
التغييرات v2.8 (24.06.2023) (التوثيق + البولندية)
وأخيرا أضاف المزيد من الوثائق
تنظيف جميع نماذج الإعدادات في setup.cpp
لمزيد من ملاءمة المبتدئين، وإضافة الملحقات المطلوبة في defines.hpp
كتعليقات على جميع الإعدادات
تم تحسين تحميل الأشكال الهندسية المركبة .stl
، عن طريق إضافة خيار لحذف إعادة ضبط موضع الشبكة تلقائيًا، وإضافة المزيد من الوظائف إلى بنية Mesh
في utilities.hpp
تمت إضافة وظيفة uint3 resolution(float3 box_aspect_ratio, uint memory)
لحساب دقة مربع المحاكاة بناءً على نسبة العرض إلى الارتفاع للصندوق وشغل VRAM بالميجابايت
تمت إضافة وظيفة bool lbm.graphics.next_frame(...)
لتصدير الصور لمدة فيديو محددة في حلقة حساب main_setup
تمت إضافة وحدات الماكرو VIS_...
لتسهيل ضبط أوضاع التصور في وضع الرسومات بدون رأس في lbm.graphics.visualization_modes
أصبحت الآن أبعاد صندوق المحاكاة قابلة للقسمة تلقائيًا بالتساوي حسب المجالات لعمليات محاكاة وحدات معالجة الرسومات المتعددة
تم إصلاح تنسيق رسالة المعلومات/التحذير/الخطأ لتحميل الملفات وجعل تسميات رسائل المعلومات/التحذير/الخطأ ملونة
وأضاف إعداد جسم أحمد كمثال على كيفية حساب قوى الجسم ومعامل السحب
تمت إضافة إعدادات Cessna 172 وBell 222 لعرض الأشكال الهندسية المركبة للتحميل وإعادة تدوير الأجزاء المتحركة
تمت إضافة وضع عرض شبه شفاف اختياري ( #define GRAPHICS_TRANSPARENCY 0.7f
في defines.hpp
)
وميض ثابت للتصور الانسيابي في الرسومات التفاعلية
تحسين الوضع السلس للخطوط الانسيابية في وضع الشريحة
تم إصلاح الخلل حيث تم تخصيص mass
massex
في ملحق SURFACE
أيضًا في ذاكرة الوصول العشوائي لوحدة المعالجة المركزية (غير مطلوب)
تم إصلاح الخلل في عرض معيار Q لبيانات الهالة في وضع وحدة معالجة الرسومات المتعددة، وتقليل عرض الفجوة بين المجالات
تمت إزالة تحسين الذاكرة المشتركة من نواة شبكة voxelization، حيث أنها تتعطل على وحدات معالجة الرسومات Nvidia مع برامج تشغيل GPU الجديدة وغير متوافقة مع وحدات معالجة الرسوميات OpenCL 1.0 القديمة
لون التوهين الثابت لتتبع الأشعة عند عدم وجود سطح على جدران صندوق المحاكاة بحدود دورية
تغييرات الإصدار 2.9 (31.07.2023) (تعدد مؤشرات الترابط)
تمت إضافة تطبيق موازي عبر الأنظمة parallel_for
في utilities.hpp
باستخدام std::threads
بدء تشغيل محاكاة أسرع بشكل ملحوظ (> 4x) مع تهيئة هندسية متعددة الخيوط وفحوصات سلامة
وظائف calculate_force_on_object()
و calculate_torque_on_object()
أسرع مع تعدد مؤشرات الترابط
تمت إضافة إجمالي وقت التشغيل ووقت تشغيل LBM إلى lbm.write_status()
تم إصلاح الخلل في اتجاه شعاع voxelization لإعادة تشكيل الأجسام الدوارة
تم إصلاح الخلل في Mesh::get_bounding_box_size()
تم إصلاح الخلل في وظيفة print_message()
في utilities.hpp
الإصدار 2.10 (05.11.2023) التغييرات (إعدام الإحباط)
تحسين أداء التنقيط من خلال إعدام الإحباط عندما يكون جزء فقط من صندوق المحاكاة مرئيًا
تحسين التبديل بين وضع الكاميرا المركزي/المجاني
مكتبة عرض OpenCL المُعاد تشكيلها
تتم الآن طباعة عوامل تحويل الوحدات تلقائيًا في وحدة التحكم عند استخدام units.set_m_kg_s(...)
وقت بدء تشغيل أسرع لمعيار FluidX3D
إصلاح خطأ عامل المنجم في نواة voxelize_mesh(...)
إصلاح الخلل في shading(...)
تم استبدال std::rand()
البطيئة (في مؤشرات الترابط المتعددة) بوظيفة C99 LCG القياسية
تصحيح أكثر قوة لتقارير سعة VRAM الخاطئة على وحدات معالجة الرسومات Intel Arc
إصلاح بعض التحذيرات البسيطة للمترجم
تغييرات الإصدار 2.11 (07.12.2023) (تحسين رسومات Linux)
أصبحت الرسومات التفاعلية على Linux الآن في وضع ملء الشاشة أيضًا، مما يتوافق تمامًا مع Windows
جعل تهيئة المخزن المؤقت لوحدة المعالجة المركزية/وحدة معالجة الرسومات أسرع بشكل ملحوظ باستخدام std::fill
و enqueueFillBuffer
(بدء تشغيل محاكاة أسرع بنسبة 8% بشكل عام)
تمت إضافة معلومات نظام التشغيل إلى النسخة المطبوعة من إصدار برنامج تشغيل الجهاز OpenCL
وميض ثابت مع إعدام الإحباط في مجال رؤية صغير جدًا
تم إصلاح الخلل حيث لم يتم تحديث الإطار المعروض/المصدر عند تغيير visualization_modes
تغييرات الإصدار 2.12 (18.01.2024) (بدء تشغيل أسرع)
~ تجميع أكواد المصدر بشكل أسرع بمقدار 3 مرات على نظام Linux باستخدام مراكز وحدة المعالجة المركزية المتعددة (CPU) في حالة تثبيت make
تهيئة أسرع للمحاكاة بشكل ملحوظ (~40% وحدة معالجة رسومات مفردة، ~15% وحدة معالجة رسومات متعددة)
إصلاح الأخطاء الطفيفة في وظيفة Memory_Container::reset()
تغييرات الإصدار 2.13 (11.02.2024) (تحسين تصدير .vtk)
يتم الآن تحويل البيانات الموجودة في ملفات .vtk
المصدرة تلقائيًا إلى وحدات SI
~2x تصدير أسرع .vtk
مع تعدد العمليات
تمت إضافة وظائف تحويل الوحدة لتمديد TEMPERATURE
التحف الرسومية الثابتة مع الكاميرا المحاذية للمحور في تتبع الأشعة
تم إصلاح get_exe_path()
لنظام التشغيل macOS
تم إصلاح مشكلات الشاشات المتعددة لـ X11 على Linux
الحل البديل لخلل برنامج تشغيل Nvidia: تم تعطيل enqueueFillBuffer
بسبب المخازن المؤقتة الكبيرة على وحدات معالجة الرسومات Nvidia
تم إصلاح مشكلات الانجراف الرقمي البطيء الناتجة عن -cl-fast-relaxed-math
تم إصلاح الخطأ في إعداد تقارير الحد الأقصى لحجم التخصيص في LBM::write_status()
إصلاح القياس المفقود للإحداثيات إلى وحدات SI في LBM::write_mesh_to_vtk()
تغييرات الإصدار 2.14 (03.03.2024) (ترقية التصور)
يمكن الآن تبديل التلوين بين السرعة/الكثافة/درجة الحرارة باستخدام المفتاح Z
لوحات ألوان محسنة موحدة لتصور السرعة/الكثافة/درجة الحرارة
يمكن الآن عرض مقياس الألوان مع التحويل التلقائي للوحدات باستخدام المفتاح H
يقوم الآن وضع الشريحة للتصور الميداني برسم شرائح مملوءة بالكامل بدلاً من الخطوط فقط لمتجهات السرعة
أصبح التظليل في الوضعين VIS_FLAG_SURFACE
و VIS_PHI_RASTERIZE
أكثر سلاسة الآن
يقوم make.sh
الآن باكتشاف نظام التشغيل ودعم X11 تلقائيًا على Linux ويقوم بتشغيل FluidX3D فقط في حالة نجاح التجميع الأخير
تحذيرات المترجم الثابتة على Android
تم إصلاح فشل make.sh
في بعض الأنظمة بسبب مسار المترجم غير القياسي
تم إصلاح هذا make
من عدم تجميع النوى المتعددة في بعض الأنظمة
تغييرات الإصدار 2.15 (09.04.2024) (تعزيز معدل الإطارات)
تم التخلص من نسخة ذاكرة إطار واحدة وعملية إطار واضحة واحدة في سلسلة العرض، للحصول على معدل إطارات أعلى بنسبة 20-70% على كل من نظامي التشغيل Windows وLinux
تم تمكين تحسينات برنامج التحويل البرمجي g++
لبدء تشغيل أسرع ومعدل إطارات عرض أعلى
علة ثابتة في الشيكات التعقل متعددة الخيوط
تم إصلاح تحويل الوحدة الخاطئ لمعامل التمدد الحراري
الكثافة الثابتة لتحويل الضغط في وحدات LBM
تم إصلاح الخلل الذي قد يتسبب في أن raytracing kernel قد يمنع المحاكاة
تم إصلاح التحف البصرية البسيطة باستخدام تتبع الأشعة
تم إصلاح عدم مسح وحدة التحكم هذه في بعض الأحيان قبل بدء عرض INTERACTIVE_GRAPHICS_ASCII
تغييرات الإصدار 2.16 (02.05.2024) (إصلاحات الأخطاء)
تنفيذ مبسط لمكعبات السير بشكل أسرع بنسبة 10% من خلال الاستيفاء أحادي الأبعاد على الحواف بدلاً من الاستيفاء ثلاثي الأبعاد، مما يسمح بالتخلص من جدول الحواف
تمت إضافة متغير أسرع ومبسط لمكعبات السير لعرض السطح الصلب حيث تكون الحواف دائمًا في منتصف المسافة بين خلايا الشبكة
إعادة البناء في نواة عرض OpenCL
تم إصلاح فشل عملية voxelization في Intel OpenCL CPU Runtime بسبب الوصول إلى المصفوفة خارج الحدود
تم إصلاح أن عملية voxelization لا تنتج دائمًا نتائج ثنائية متطابقة في وحدات معالجة الرسومات المتعددة مقارنةً بوحدة معالجة الرسومات الفردية
تم إصلاح فشل عملية voxelization في عمليات محاكاة السطح الحر
تم إصلاح الأداء الرهيب على وحدات معالجة الرسوميات ARM عن طريق استبدال الماكرو fused-multiply-add ( fma
) بـ a*b+c
تم إصلاح أن مفاتيح Y / Z غير صحيحة لتخطيط لوحة مفاتيح QWERTY
في Linux
تم إصلاح عدم تحديث سرعة حركة الكاميرا الحرة في تراكب المساعدة في الصورة الثابتة عند التمرير
تم إصلاح أن المؤشر قد يومض أحيانًا عند التمرير على لوحات التتبع باستخدام رسومات Linux-X11 التفاعلية
وميض ثابت للعرض التفاعلي باستخدام وحدات معالجة الرسومات المتعددة عند عدم تحريك الكاميرا
تم إصلاح استدعاء XInitThreads()
المفقود والذي قد يؤدي إلى تعطل رسومات Linux التفاعلية في بعض الأنظمة
القتال z الثابت بين نواة graphics_rasterize_phi()
و graphics_flags_mc()
تغييرات الإصدار 2.17 (05.06.2024) (دقة نطاق غير محدودة)
لم تعد المجالات تقتصر على 4.29 مليار (2³²، 1624³) خلية شبكية أو ذاكرة سعة 225 جيجابايت؛ إذا تم استخدام المزيد، فسيتم تجميع كود OpenCL تلقائيًا بفهرسة 64 بت
تصور ميداني جديد وأسرع يعتمد على تتبع الأشعة لمحاكاة وحدة معالجة الرسومات الفردية
تمت إضافة تعليمات تثبيت برنامج تشغيل GPU وOpenCL Runtime إلى الوثائق
إعادة هيكلة INTERACTIVE_GRAPHICS_ASCII
تم إصلاح تسرب الذاكرة في مدمرات floatN
و floatNxN
و doubleN
و doubleNxN
(جميعها غير مستخدمة)
جعل حركة الكاميرا/دورانها/سلوك التكبير/التصغير مستقلاً عن معدل الإطارات
تم إصلاح أن smart_device_selection()
سيطبع تحذيرًا خاطئًا إذا أبلغ الجهاز عن سرعة ساعة تبلغ 0 ميجاهرتز
تغييرات الإصدار 2.18 (21.07.2024) (المزيد من إصلاحات الأخطاء)
تمت إضافة دعم لشاشات معدل التحديث العالي على Linux
البرامج النصية لتثبيت OpenCL Runtime الأكثر إحكاما في الوثائق
ستتم الآن طباعة تعليمات تثبيت برنامج التشغيل/وقت التشغيل على وحدة التحكم في حالة عدم توفر أجهزة OpenCL
تمت إضافة معلومات المجال إلى LBM::write_status()
تمت إضافة وظيفة LBM::index
لمعلمة إدخال uint3
تم إصلاح أن عمليات المحاكاة الكبيرة جدًا لا يتم عرضها بشكل صحيح في بعض الأحيان عن طريق زيادة الحد الأقصى لمسافة العرض من 10 كيلو إلى 2.1 ميجا
تم إصلاح تباطؤ إدخال الماوس عند معدل تحديث الشاشة العالي على Linux
التحف الرسومية الثابتة في تتبع الأشعة السطحية الحرة على Intel CPU Runtime لـ OpenCL
تقدير وقت التشغيل الثابت المطبوع في وحدة التحكم للإعدادات باستخدام استدعاءات lbm.run(...)
المتعددة
تذبذبات الكثافة الثابتة في إعدادات العينة ( lbm_u
كبيرة جدًا)
تم إصلاح التحف الرسومية البسيطة في raytrace_phi()
تم إصلاح التحف الرسومية البسيطة في ray_grid_traverse_sum()
تم إصلاح عدد خطوات الوقت المطبوع الخاطئ عند إعداد عينة قطرة المطر
تغييرات الإصدار 2.19 (07.09.2024) (شرائح الكاميرا)
يمكن للكاميرا الآن الطيران على طول مسار سلس من خلال قائمة مواضع كاميرا الإطار الرئيسي المتوفرة، باستخدام خطوط Catmull-Rom
تقدير أكثر دقة لوقت التشغيل المتبقي والذي يتضمن الوقت المستغرق في العرض
تمكين ضغط الذاكرة FP16S بشكل افتراضي
تم الآن تنسيق موضع الكاميرا المطبوعة باستخدام المفتاح G لتسهيل عملية النسخ/اللصق
تمت إضافة مخطط مرجعي في الملف التمهيدي باستخدام مخطط جانت حورية البحر
وضع معلومات تخصيص الذاكرة أثناء بدء تشغيل المحاكاة في موقع أفضل
تعارض الخيوط الثابتة بين INTERACTIVE_GRAPHICS
و lbm.graphics.write_frame();
الحد الأقصى الثابت لحجم تخصيص المخزن المؤقت لوحدات معالجة الرسومات AMD وفي Intel CPU Runtime لـ OpenCL
تم إصلاح خطأ في طباعة معلومات Re<Re_max
لعمليات المحاكاة ثنائية الأبعاد
إصلاح بسيط في bandwidth_bytes_per_cell_device()
اقرأ وثائق FluidX3D!
البث (الجزء 2/2)
درجة الحرارة f 0 ( x , t ) = f 0 ( x , t )
f i temp ( x , t ) = f ( t %2 ? i : ( i %2 ? i +1 : i -1)) ( i %2 ? x : x - e i , t ) لـ i ∈ [1 ، ف -1]
الاصطدام
ρ ( x , t ) = (Σ i f i temp ( x , t )) + 1
u ( x , t ) = 1 ∕ ρ ( x , t ) Σ i c i f i temp ( x , t )
f i مكافئ متحول ( x , t ) = w i ρ · ( ( u ° c i ) 2 ∕ (2 c 4 ) - ( u ° u ) ∕ (2c 2 ) + ( u ° c i ) ∕ c 2 ) + ث ط ( ρ -1)
f i temp ( x , t +Δ t ) = f i temp ( x , t ) + Ω i ( f i temp ( x , t ), f i مكافئ ( x , t ), τ )
البث (الجزء 1/2)
f 0 ( x , t +Δ t ) = f 0 درجة الحرارة ( x , t +Δ t )
f ( t %2 ? ( i %2 ? i +1 : i -1) : i ) ( i %2 ? x + e i : x , t +Δ t ) = f i temp ( x , t +Δ t ) لـ i ∈ [1, q -1]
عامل | وحدات سي | تحديد المعادلة | وصف |
---|---|---|---|
س | م | س = (س، ص، ض) ت | موضع ثلاثي الأبعاد في الإحداثيات الديكارتية |
ر | ق | - | وقت |
ρ | كجم ∕ م3 | ρ = (Σ i f i )+1 | كثافة كتلة السوائل |
ص | كجم ∕ م ث² | ع = ج ² ρ | ضغط السوائل |
ش | م ∕ ق | u = 1 ∕ ρ Σ i c i f i | سرعة السائل |
ν | م² ∕ ث | ν = μ ∕ ρ | لزوجة القص الحركية للسائل |
μ | كجم ∕ م ث | μ = ρ ν | اللزوجة الديناميكية للسائل |
و أنا | كجم ∕ م3 | - | وظائف توزيع الكثافة المتغيرة (DDFs) |
Δ س | م | Δ س = 1 | ثابت الشبكة (في وحدات LBM) |
Δ ر | ق | Δ ر = 1 | خطوة وقت المحاكاة (بوحدات LBM) |
ج | م ∕ ق | ج = 1 ∕ √3 Δ س ∕ Δ t | سرعة الصوت الشبكية (بوحدات LBM) |
أنا | 1 | 0 ≥ ط < ف | LBM مؤشر اتجاه التدفق |
س | 1 | ف ∈ { 9,15,19,27 } | عدد اتجاهات تدفق LBM |
ه ط | م | D2Q9 / D3Q15/19/27 | اتجاهات تدفق LBM |
ج ط | م ∕ ق | ج ط = ه ط ∕ Δ ر | سرعات تدفق LBM |
ث ط | 1 | ط ط ط = 1 | سرعة LBM تحدد الأوزان |
Ω ط | كجم ∕ م3 | إس آر تي أو تي آر تي | عامل تصادم LBM |
τ | ق | τ = ν ∕ ج ² + Δ t ∕ 2 | وقت الاسترخاء LBM |
مجموعات السرعة: D2Q9، D3Q15، D3Q19 (افتراضي)، D3Q27
عوامل تشغيل التصادم: وقت استرخاء فردي (SRT/BGK) (افتراضي)، وقت استرخاء مزدوج (TRT)
تحويل DDF والتحسينات الجبرية الأخرى لتقليل خطأ التقريب
؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟؟
(الكثافة؟، السرعة؟، الأعلام؟، DDFs؟؛ كل مربع = 1 بايت)
يسمح بـ 19 مليون خلية لكل 1 جيجابايت من VRAM
البث الموضعي باستخدام Esoteric-Pull: يزيل النسخ الزائدة من وظائف توزيع الكثافة (DDFs) في الذاكرة؛ يكاد يقلل الطلب على الذاكرة إلى النصف ويزيد الأداء قليلاً بسبب حدود الارتداد الضمنية؛ يوفر أنماطًا مثالية للوصول إلى الذاكرة للبث الموضعي لخلية واحدة
الدقة الحسابية المنفصلة (FP32) ودقة الذاكرة (FP32 أو FP16S أو FP16C): تتم جميع العمليات الحسابية في FP32 من أجل التوافق على جميع الأجهزة، ولكن يمكن ضغط وحدات DDF الموجودة في الذاكرة إلى FP16S أو FP16C: تقريبًا تقلل الطلب على الذاكرة إلى النصف مرة أخرى وتقريبًا يضاعف الأداء، دون التأثير على الدقة الإجمالية لمعظم الإعدادات
TYPE_S
(ثابتة أو متحركة) حدود صلبة
حدود التوازن TYPE_E
(التدفق الداخلي/التدفق الخارجي)
حدود درجة الحرارة TYPE_T
TYPE_F
سطح حر (سائل)
TYPE_I
سطح حر (واجهة)
TYPE_G
سطح حر (غاز)
يبقى TYPE_X
للاستخدام المخصص أو المزيد من الإضافات
TYPE_Y
المتبقي للاستخدام المخصص أو المزيد من الإضافات
(الكثافة؟، السرعة؟، الأعلام؟، نسختان من DDFs؟/؟؛ كل مربع = 1 بايت)
يسمح بـ 3 ملايين خلية لكل 1 جيجابايت من VRAM
يتطلب LBM (D3Q19) التقليدي مع FP64 حوالي 344 بايت/خلية
يتطلب FluidX3D (D3Q19) 55 بايت/خلية فقط مع Esoteric-Pull+FP16
توفير كبير في التكلفة: مقارنة الحد الأقصى لدقة شبكة وحدة معالجة الرسومات المفردة لـ D3Q19 LBM
سعة GPU VRAM | 1 جيجابايت | 2 جيجابايت | 3 جيجابايت | 4 غيغابايت | 6 جيجابايت | 8 جيجا | 10 جيجابايت | 11 جيجابايت | 12 جيجابايت | 16 جيجابايت | 20 جيجابايت | 24 جيجابايت | 32 جيجابايت | 40 جيجابايت | 48 جيجابايت | 64 جيجابايت | 80 جيجابايت | 94 جيجابايت | 128 جيجابايت | 192 جيجابايت | 256 جيجابايت |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
سعر GPU التقريبي | 25 دولارًا جي تي 210 | 25 دولارًا جي تي اكس 950 | 12 دولارًا جي تي اكس 1060 | 50 دولارًا جي تي 730 | 35 دولارًا جي تي اكس 1060 | 70 دولارًا آر إكس 470 | 500 دولار آر تي إكس 3080 | 240 دولارًا جي تي اكس 1080 تي آي | 75 دولارًا تسلا M40 | 75 دولارًا غريزة MI25 | 900 دولار آر إكس 7900 إكس تي | 205 دولار تسلا P40 | 600 دولار غريزة MI60 | 5500 دولار A100 | 2400 دولار آر تي إكس 8000 | 10 آلاف دولار غريزة MI210 | 11 ألف دولار A100 | > 40 ألف دولار H100 نفل | ؟ وحدة معالجة الرسومات ماكس 1550 | ~ 10 آلاف دولار MI300X | - |
LBM التقليدي (FP64) | 144³ | 182³ | 208³ | 230³ | 262³ | 288³ | 312³ | 322³ | 330³ | 364³ | 392³ | 418³ | 460³ | 494³ | 526³ | 578³ | 624³ | 658³ | 730³ | 836³ | 920³ |
فلويد اكس 3 دي (FP32/FP32) | 224³ | 282³ | 322³ | 354³ | 406³ | 448³ | 482³ | 498³ | 512³ | 564³ | 608³ | 646³ | 710³ | 766³ | 814³ | 896³ | 966³ | 1018³ | 1130³ | 1292³ | 1422³ |
فلويد اكس 3 دي (FP32/FP16) | 266³ | 336³ | 384³ | 424³ | 484³ | 534³ | 574³ | 594³ | 610³ | 672³ | 724³ | 770³ | 848³ | 912³ | 970³ | 1068³ | 1150³ | 1214³ | 1346³ | 1540³ | 1624³ |
يسمح تحليل المجال بتجميع VRAM من وحدات معالجة الرسومات المتعددة للحصول على دقة شبكة أكبر بكثير
ليس من الضروري أن تكون وحدات معالجة الرسومات متطابقة (ولا حتى من نفس البائع)، ولكن يوصى بسعة/نطاق ترددي مماثل لـ VRAM
بنية اتصالات المجال (مبسطة)
++ .-------------------------------------------------------------- ------------------. ++++ | GPU 0 | ++++ | مجال LBM 0 | ++++'-------------------------------------------- --------------------' ++++ | انتقائي /| ++++ |/ نسخة داخل VRAM | ++++ .------------------------------------------------------------ ----------. ++++ | GPU 0 - نقل المخزن المؤقت 0 | ++++'-------------------------------------------- ----------'++!! | بكيي /| !!!! |/ نسخ | !!@@ .------------------------. .-------------------------. @@@@ | وحدة المعالجة المركزية - نقل المخزن المؤقت 0 | | وحدة المعالجة المركزية - نقل المخزن المؤقت 1 | @@@@ '------------------------' /'----------------- --------' @@@@ مؤشر X مبادلة @@@@ .-------------------------./ .- ------------------------. @@@@ | وحدة المعالجة المركزية - نقل المخزن المؤقت 1 | | وحدة المعالجة المركزية - نقل المخزن المؤقت 0 | @@@@ '------------------------'' ---------------------------------- -------'@@!! /| بكيي | !!!! | نسخ |/ !!++ .----------------------------------------- -------------. ++++ | GPU 1 - مخزن النقل المؤقت 1 | ++++'-------------------------------------------- ----------' ++++ /| انتقائي | ++++ | نسخة داخل VRAM |/ ++++ .-------------------------------------- --------------------------. ++++ | GPU 1 | ++++ | مجال LBM 1 | ++++'-------------------------------------------- --------------------' ++## | #### حاجز مزامنة المجال #### | ##|| -------------------------------------------------- -----------> الوقت ||
بنية اتصالات المجال (مفصلة)
++ .-------------------------------------------------------------- ------------------. ++++ | GPU 0 | ++++ | مجال LBM 0 | ++++'-------------------------------------------- --------------------' ++++ | انتقائي في- /| | انتقائي في- /| | انتقائي في- /| ++++ |/ نسخة VRAM (X) | |/ نسخة VRAM (Y) | |/ نسخة VRAM (Z) | ++++ .-----.-------------------------------------.- --------------------. ++++ | GPU 0 - تيرابايت 0X+ | GPU 0 - تيرابايت 0Y+ | GPU 0 - تيرابايت 0Z+ | ++++ | GPU 0 - تيرابايت 0X- | GPU 0 - تيرابايت 0Y- | GPU 0 - تيرابايت 0Z- | ++++'-----'-------------------------------------'- --------------------'++!! | بكيي /| | بكيي /| | بكيي /| !!!! |/ نسخ | |/ نسخ | |/ نسخ | !!@@ .---------. .---------.---------. .---------.---------. .---------. @@@@ | وحدة المعالجة المركزية 0X+ | | وحدة المعالجة المركزية 1X- | وحدة المعالجة المركزية 0Y+ | | وحدة المعالجة المركزية 3Y- | وحدة المعالجة المركزية 0Z+ | | وحدة المعالجة المركزية 5Z- | @@@@ | وحدة المعالجة المركزية 0X- | | وحدة المعالجة المركزية 2X+ | وحدة المعالجة المركزية 0Y- | | وحدة المعالجة المركزية 4Y+ | وحدة المعالجة المركزية 0Z- | | وحدة المعالجة المركزية 6Z+ | @@@@ '--------- /---------'-------- /-------------- ---- /---------' @@@@ مؤشر X مبادلة (X) مؤشر X مبادلة (Y) مؤشر X مبادلة (Z) @@@@ .-------- -/ ---------.---------/ ---------.---------/ ---------. @@@@ | وحدة المعالجة المركزية 1X- | | وحدة المعالجة المركزية 0X+ | وحدة المعالجة المركزية 3Y- | | وحدة المعالجة المركزية 0Y+ | وحدة المعالجة المركزية 5Z- | | وحدة المعالجة المركزية 0Z+ | @@@@ | وحدة المعالجة المركزية 2X+ | | وحدة المعالجة المركزية 0X- | وحدة المعالجة المركزية 4Y+ | | وحدة المعالجة المركزية 0Y- | وحدة المعالجة المركزية 6Z+ | | وحدة المعالجة المركزية 0Z- | @@@@ '---------' '---------'---------' '---------'--- ------' '---------' @@!! /| بكيي | /| بكيي | /| بكيي | !!!! | نسخ |/ | نسخ |/ | نسخ |/ !!++ .----..------------------------------------ -..--------------------. ++++ | GPU 1 - تيرابايت 1X- || GPU 3 - تيرابايت 3Y- || GPU 5 - تيرابايت 5Z- | ++++: ======================= :: ====================== :: =============: ++++ | GPU 2 - تيرابايت 2X+ || GPU 4 - تيرابايت 4Y+ || GPU 6 - تيرابايت 6Z+ | ++++ '--------------------''---------------------'' --------------------' ++++ /| انتقائية في- | /| انتقائية في- | /| انتقائية في- | ++++ | نسخة VRAM (X) |/ | نسخة VRAM (Y) |/ | نسخة VRAM (Z) |/ ++++ .------------------------------------.. -----..--------------------. ++++ | GPU 1 || جي بي يو 3 || جي بي يو 5 | ++++ | نطاق LBM 1 || نطاق LBM 3 || نطاق LBM 5 | ++++: ======================= :: ====================== :: =============: ++++ | GPU 2 || جي بي يو 4 || GPU 6 | ++++ | نطاق LBM 2 || نطاق LBM 4 || نطاق LBM 6 | ++++ '--------------------''---------------------'' --------------------' ++## | | | #### | حواجز تزامن المجال | #### | | | ##|| -------------------------------------------------- -----------> الوقت ||
معايير GPU/CPU الفردية
معايير GPU المتعددة
الشبكة الفرعية D3Q7 لوحدات DDF الحرارية
البث في المكان باستخدام Esoteric-Pull لوحدات DDF الحرارية
ضغط FP16S أو FP16C اختياري لوحدات DDF الحرارية مع تحويل DDF
نموذج حجم السائل
PLIC تحليلي بالكامل لحساب الانحناء بكفاءة
تحسين الحفاظ على الكتلة
تنفيذ فائق الكفاءة مع 4 حبات فقط بالإضافة إلى نواة stream_collide()
حساب اختياري للقوى من السائل على الحدود الصلبة
حدود الارتداد للشبكة المتوسطة الثابتة (الحدود الصلبة الثابتة)
تحريك حدود الارتداد في منتصف الشبكة (تحريك الحدود الصلبة)
حدود التوازن (التدفق الداخلي/الخارجي غير العاكس)
حدود درجة الحرارة (درجة حرارة ثابتة)
أنواع الحدود
القوة العالمية لكل حجم (قوة القوة)، يمكن تعديلها على الطاير
القوة المحلية لكل حجم (مجال القوة)
تطبيق LBM (FSLBM) للسطح الحر الحديث:
LBM الحراري لمحاكاة الحمل الحراري
نموذج Smagorinsky-Lilly لاضطراب الشبكة الفرعية LES للحفاظ على استقرار عمليات المحاكاة مع رقم رينولدز الكبير جدًا
Π αβ = Σ i e iα e iβ ( f i - f i eq-shifted )
س = Σ αβ Π αβ 2
______________________
τ = ½ (τ 0 + √ τ 0 2 + (16√2) ∕ ( 3π 2 ) √Q ∕ ρ )
الجسيمات ذات طريقة الحدود المغمورة (إما سلبية أو ثنائية الاتجاه، ووحدة معالجة الرسومات المفردة فقط)
يمكن لـ FluidX3D إجراء عمليات محاكاة كبيرة جدًا بحيث يصبح تخزين البيانات الحجمية لعرضها لاحقًا غير قابل للإدارة (مثل 120 جيجابايت لإطار واحد، ومئات التيرابايت للفيديو)
بدلاً من ذلك، يسمح FluidX3D بعرض بيانات المحاكاة الأولية مباشرة في VRAM، لذلك لا يلزم تصدير أي ملفات كبيرة الحجم إلى القرص الصلب (راجع حديثي الفني)
يكون العرض سريعًا جدًا لدرجة أنه يعمل بشكل تفاعلي في الوقت الفعلي لكل من التنقيط وتتبع الأشعة
يتم إجراء التنقيط وتتبع الشعاع في OpenCL ويعمل على جميع وحدات معالجة الرسومات، حتى تلك التي لا تحتوي على نوى RTX/DXR لتتبع الشعاع أو بدون أي أجهزة عرض على الإطلاق (مثل A100، MI200، ...)
في حالة عدم توفر شاشة (كما هو الحال على خادم Linux بعيد)، يوجد وضع عرض ASCII لتصور المحاكاة بشكل تفاعلي في الجهاز (حتى في WSL و/أو من خلال SSH)
يكون العرض متوازيًا تمامًا مع وحدات معالجة الرسومات المتعددة عبر التنقيط السلس لتحليل المجال
مع تعطيل وضع الرسومات التفاعلية، يمكن أن تكون دقة الصورة كبيرة بقدر ما تسمح به ذاكرة الفيديو (VRAM) (4K/8K/16K وما فوق)
أوضاع التصور (التفاعلية):
إطار سلكي للعلم / سطح صلب (ونواقل القوة على الخلايا الصلبة أو الضغط السطحي إذا تم استخدام الامتداد)
مجال السرعة (مع وضع الشريحة)
يبسط (مع وضع الشريحة)
السرعة ذات السطح المتساوي لمعيار Q
سطح حر نقطي مع مكعبات مسيرة
سطح حر متتبع للأشعة مع اجتياز سريع لشبكة الأشعة ومكعبات السير، إما 1-4 أشعة/بكسل أو 1-10 أشعة/بكسل
تمت كتابة FluidX3D في OpenCL 1.2، لذا فهو يعمل على جميع الأجهزة من جميع البائعين (Nvidia، AMD، Intel، ...):
أسرع وحدات معالجة الرسومات لمراكز البيانات في العالم: MI300X، H100 (NVL)، A100، MI200، MI100، V100(S)، GPU Max 1100، ...
وحدات معالجة الرسومات المخصصة للألعاب (سطح المكتب/الكمبيوتر المحمول): Nvidia GeForce وAMD Radeon وIntel Arc
وحدات معالجة الرسومات الاحترافية/محطات العمل: Nvidia Quadro وAMD Radeon Pro / FirePro وIntel Arc Pro
وحدات معالجة الرسومات المتكاملة
وحدات المعالجة المركزية (تتطلب تثبيت Intel CPU Runtime لـ OpenCL)
Intel Xeon Phi (يتطلب تثبيت Intel CPU Runtime لـ OpenCL)
وحدات معالجة الرسومات ARM للهواتف الذكية
تنفيذ وحدات معالجة الرسومات المتعددة عبر البائعين الأصليين
يستخدم اتصال PCIe، لذا لا حاجة إلى SLI/Crossfire/NVLink/InfinityFabric
توازي عقدة واحدة، لذلك لا يلزم تثبيت MPI
لا يجب أن تكون وحدات معالجة الرسومات من نفس البائع، ولكن يوصى بسعة ذاكرة وعرض نطاق ترددي مماثل
يعمل على نظامي التشغيل Windows وLinux مع الإصدار C++17، مع دعم محدود أيضًا لنظامي التشغيل macOS وAndroid
يدعم استيراد وتنسيق شبكات المثلث من ملفات .stl
الثنائية، مع voxelization سريع لوحدة معالجة الرسومات
يدعم تصدير البيانات الحجمية كملفات .vtk
الثنائية
يدعم تصدير شبكات المثلث كملفات .vtk
الثنائية
يدعم تصدير الصور المقدمة كملفات .png
/ .qoi
/ .bmp
؛ يتم تشغيل التشفير بالتوازي على وحدة المعالجة المركزية بينما يمكن أن تستمر المحاكاة على وحدة معالجة الرسومات دون تأخير
فيما يلي معايير الأداء على الأجهزة المختلفة في MLUPs/s، أو عدد ملايين الخلايا الشبكية التي يتم تحديثها في الثانية. الإعدادات المستخدمة للاختبار هي D3Q19 SRT مع عدم تمكين أي امتدادات (فقط LBM مع حدود الارتداد الضمنية للشبكة الوسطى) ويتكون الإعداد من مربع مكعب فارغ بحجم كافٍ (عادةً 256³). بدون ملحقات، تتطلب الخلية الشبكية الواحدة ما يلي:
سعة الذاكرة 93 (FP32/FP32) أو 55 (FP32/FP16) بايت
عرض النطاق الترددي للذاكرة يبلغ 153 (FP32/FP32) أو 77 (FP32/FP16) بايت لكل خطوة زمنية
363 (FP32/FP32) أو 406 (FP32/FP16S) أو 1275 (FP32/FP16C) FLOPs لكل خطوة زمنية (يتم احتساب عمليات FP32+INT32 مجتمعة)
ونتيجة لذلك، فإن الكثافة الحسابية لهذا التنفيذ هي 2.37 (FP32/FP32) أو 5.27 (FP32/FP16S) أو 16.56 (FP32/FP16C) FLOPs/Byte. لذا فإن الأداء يقتصر فقط على النطاق الترددي للذاكرة. يوضح الجدول الموجود في الأعمدة الثلاثة اليسرى مواصفات الأجهزة كما هي موجودة في أوراق البيانات (أداء حساب الذروة النظرية FP32، وسعة الذاكرة، وعرض النطاق الترددي الأقصى للذاكرة). تُظهر الأعمدة الثلاثة اليمنى أداء FluidX3D المُقاس لإعدادات دقة الفاصلة العائمة FP32/FP32 وFP32/FP16S وFP32/FP16C، مع (كفاءة نموذج خط السقف) بين قوسين دائريين، مما يشير إلى مقدار النسبة المئوية المستخدمة من عرض النطاق الترددي الأقصى للذاكرة .
إذا لم تكن وحدة معالجة الرسومات/وحدة المعالجة المركزية الخاصة بك مدرجة في القائمة بعد، فيمكنك الإبلاغ عن معاييرك هنا.