2 điểm bởi GN⁺ 2023-12-20 | 1 bình luận | Chia sẻ qua WhatsApp
  • Mô phỏng lửa thời gian thực dựa trên GPU có thể được hiện thực bằng demo WebGL bằng cách kết hợp động lực học chất lỏng, tính toán song song trên lưới, cùng các mô hình cháy, lực nổi và dựng hình
  • Mô hình cơ bản giả định dòng chảy không nén đượckhông nhớt, đồng thời đạt được tính ổn định và khả năng song song hóa nhờ advection bán-Lagrange để vận chuyển các trường vô hướng như thuốc nhuộm, nhiệt độ và nhiên liệu theo trường vận tốc
  • Trong bước Navier-Stokes, trường vận tốc được tự advection theo chính nó, sau đó giảm độ phân kỳ bằng phép chiếu áp suất; phương trình Poisson được xử lý bằng các lời giải gần đúng thân thiện với GPU như lặp Jacobi
  • Nội suy trên lưới và phương pháp bán-Lagrange bậc một làm suy yếu các xoáy nhiễu loạn, nên vorticity confinement và curl noise được dùng để tăng cường chi tiết quay nhỏ
  • Lửa được mô phỏng bằng cách thêm trường mật độ nhiên liệu và nhiệt độ để tính toán quá trình cháy, làm mát và lực nổi nhiệt, rồi dựng màu bằng bức xạ vật đen dựa trên Planck’s Law để khiến chất lỏng dạng khói trông như ngọn lửa

Toàn bộ quy trình mô phỏng lửa bằng GPU

  • Lửa là một bài toán thú vị trong đồ họa, nhưng trước đây phần lớn chỉ được bắt chước bằng các cách không dựa trên vật lý
    • Lord of the Rings dùng nhiều sprite khói vì chi phí mô phỏng chất lỏng quá cao
    • Các ứng dụng thời gian thực như trò chơi điện tử cũng gần như phụ thuộc hoàn toàn vào các cách tiếp cận phi vật lý
  • Trong 10 năm gần đây, nhờ GPU mà mô phỏng chất lỏng nhanh đã trở nên dễ tiếp cận hơn, và các thuật toán động lực học chất lỏng cơ bản khá trực quan để triển khai trên GPU
    • ILM đã dùng các kỹ thuật này vào năm 2009 để mô hình hóa và dựng hình lửa trong Harry Potter
    • NVIDIA công bố FlameWorks vào năm 2014 như một hệ thống hiệu ứng lửa và khói cho game
  • Việc triển khai được xây dựng thành một demo WebGL, và về mặt toán học cần nền tảng về giải tích vectơ và phương trình vi phân
  • Mã nguồn có trên GitHub

Trước tiên mô hình hóa chất lỏng

  • Trước khi tạo lửa, cần mô phỏng chất lỏng; ở đây giả định chất lỏng không nén được (incompressible)không nhớt (inviscid)
  • Trường vận tốc 2D u(x, t) được biểu diễn bằng lưới N × N, trong đó mỗi điểm lưới mang giá trị vận tốc tại vị trí đó
  • Quá trình một trường vô hướng như mật độ thuốc nhuộm ψ(x, t) di chuyển theo vận tốc của chất lỏng được gọi là advection
  • Cách đơn giản là đẩy từng điểm lưới tiến về phía trước, nhưng việc này khó song song hóa, nhiều điểm lưới có thể dồn vào cùng một điểm đích, và dễ trở nên mất ổn định khi bước thời gian lớn

Advection ổn định: phương pháp bán-Lagrange

  • Dùng định luật bảo toàn khối lượng và định lý phân kỳ, phương trình advection vô hướng trong dòng chảy không nén được có thể viết thành ∂ψ/∂t = -u · ∇ψ
  • Cách ổn định là thay vì đẩy giá trị đi theo hướng vận tốc từ mỗi điểm lưới, ta lần ngược theo hướng vận tốc từ điểm lưới hiện tại để lấy giá trị tại vị trí trước đó
  • Cách này là Semi-Lagrangian advection, do Jos Stam đưa ra năm 1999
    • Mỗi điểm lưới chỉ được cập nhật một lần ở mỗi vòng lặp nên rất dễ song song hóa trên GPU
    • Không điểm lưới nào được cập nhật thành giá trị lớn hơn giá trị lớn nhất của các điểm lưới ban đầu, nên phương pháp này ổn định vô điều kiện
  • Nếu trường vận tốc cố định thỏa điều kiện không nén được, có thể vận chuyển ổn định các trường vô hướng như thuốc nhuộm

Cập nhật trường vận tốc bằng Navier-Stokes

  • Navier-Stokes equations định nghĩa cách trường vận tốc của chất lỏng thay đổi theo thời gian trong dòng chảy không nén được
  • Khi giả định chất lỏng không nhớt và tạm thời bỏ qua ngoại lực, còn lại hai thành phần cốt lõi
    • self-advection khi trường vận tốc tự vận chuyển chính nó
    • pressure để thỏa điều kiện không nén được
  • Vòng lặp mô phỏng diễn ra đại khái theo thứ tự sau
    • advection trường vận tốc u theo chính nó
    • tính áp suất p
    • trừ gradient áp suất bằng u = u - gradient(p) để cưỡng ép tính không nén được
    • dùng trường vận tốc mới để advection trường mật độ

Tính áp suất: phương trình Poisson là nút thắt cổ chai

  • Trường vận tốc ứng viên u' thu được sau self-advection không được đảm bảo thỏa điều kiện phân kỳ bằng 0, nên cần dùng áp suất để hiệu chỉnh
  • Khi sắp xếp lại điều kiện, ta thu được Poisson equation dạng ∇²p = ∇ · u'
  • Khi rời rạc hóa divergence và Laplacian trên lưới, với lưới N × N sẽ sinh ra một hệ tuyến tính gồm phương trình và ẩn số
  • Các cách giải chính xác cho hệ tuyến tính có chi phí tăng siêu tuyến tính theo kích thước lưới, nên khá nặng cho mô phỏng thời gian thực
  • Trên GPU, thay vì lời giải chính xác có thể lặp để tìm một giá trị gần đúng đủ tốt
    • Jacobi method phù hợp để triển khai trên GPU vì cập nhật ước lượng của từng phần tử theo kiểu song song
    • Các cách hội tụ nhanh hơn như Conjugate Gradient và Multigrid cũng có thể triển khai trên GPU
    • Với khói và lửa, do sự thay đổi thể tích không rõ rệt như nước, chất lượng advection hay độ dễ triển khai có thể quan trọng hơn độ chính xác tuyệt đối của áp suất

Khôi phục lại chi tiết xoáy

  • Khi lưu trường vận tốc trên lưới, quá trình nội suy gây ra hiện tượng làm trơn số học ngoài ý muốn
  • Khi cộng thêm phép gần đúng thô của advection bán-Lagrange bậc một, các xoáy nhiễu loạn sẽ biến mất và chất lỏng trở nên quá mượt, đơn điệu
  • Tăng độ phân giải có thể giảm vấn đề này, nhưng mô phỏng thời gian thực luôn bị giới hạn tài nguyên tính toán
  • Vorticity confinement là cách tìm và khuếch đại những chi tiết nhỏ bị mất đi ở mỗi bước
    • Dù không hoàn toàn thực tế về mặt vật lý, nó vẫn giữ lại các chi tiết ở thang nhỏ vào những vị trí nhìn chung hợp lý về mặt vật lý
    • Ban đầu kỹ thuật này được thiết kế cho các mô phỏng kỹ thuật về trường dòng chảy phức tạp quanh cánh quạt trực thăng
  • Độ xoáy tại mỗi điểm lưới được đo bằng curl; sau đó tính hướng có vorticity cao hơn xung quanh rồi cộng thêm vào trường vận tốc một lực quay được điều khiển bởi hằng số confinement ε > 0
    • Chỉ với giá trị confinement thấp khoảng 0–15 cũng đã tạo khác biệt lớn
    • Giá trị cao hơn có thể tạo ra dòng chảy billowing mang tính cách điệu

Tổng hợp nhiễu loạn bằng curl noise

  • Curl noise không khuếch đại vorticity hiện có của trường vận tốc, mà tạo mới một trường vorticity vô hướng bằng hàm nhiễu
  • Về mặt toán học, trước tiên tổng hợp một trường vorticity ngẫu nhiên φ = rand * z, rồi cộng vào vorticity hiện có ω để tạo vorticity cuối cùng ω* = ω + φ
  • Các chất lỏng chuyển động nhanh và nhiễu loạn mạnh như khói và lửa chịu ảnh hưởng lớn từ vorticity confinement và curl noise
  • Trường curl noise thực tế φ thay đổi theo thời gian và cũng được advection cùng dòng chảy của chất lỏng

Thêm nhiên liệu và nhiệt độ cho lửa

  • Chỉ với vòng lặp chất lỏng cơ bản đã có thể tạo ra dòng chảy giống khói, nhưng để mô phỏng lửa và khói cần thêm vài kênh dữ liệu
  • Mô hình cháy thêm mật độ nhiên liệu ρtrường nhiệt độ T
    • 0 ≤ ρ ≤ 1 là mật độ nhiên liệu
    • T > 0 là nhiệt độ tại mỗi vị trí
  • Ở đây giả định nhiên liệu trong hệ đã được mồi cháy và tiếp tục cấp nhiệt, không xử lý bài toán nhiên liệu chưa bắt lửa
  • Ở mỗi bước thời gian, nhiên liệu làm tăng nhiệt độ theo nhiệt độ cháy đã định
    • Nhiệt độ được cập nhật theo dạng T' = max(T, ρ * T_burn)
  • Nhiệt khuếch tán từ nơi nóng sang nơi lạnh, và dòng chuyển động lớn của chất lỏng cũng mang nhiệt đi
    • Trong mô phỏng, trường nhiệt độ được advection theo trường vận tốc
    • Các phân tử phản ứng cũng di chuyển cùng chất lỏng nên trường nhiên liệu cũng được advection
  • Các phân tử nóng phát xạ nhiệt độ dưới dạng ánh sáng theo Stefan-Boltzmann Law
    • Trong mô phỏng chính xác về mặt vật lý sẽ dùng hằng số Stefan-Boltzmann
    • Trong mô phỏng đồ họa, việc cho nghệ sĩ điều chỉnh tốc độ làm mát σ_cool thường hữu ích hơn
  • Nhiên liệu giảm ở mỗi bước thời gian theo tốc độ cháy γ_fuel

Nâng chất lỏng nóng lên bằng lực nổi nhiệt

  • Chỉ tính trường nhiệt độ thì vẫn chưa ảnh hưởng đến dòng chảy, nên cần thêm hiệu ứng không khí nóng bốc lên và không khí lạnh chìm xuống
  • Thermal buoyancy cộng một lực hướng lên tỷ lệ với nhiệt độ vào trường vận tốc
    • Vì giả định dòng chảy không nén được, mô hình không xử lý sự giãn nở thực của không khí
    • Trường vận tốc được cập nhật theo dạng u' = u + (β T Δt) j
    • β là hằng số lực nổi dương và j là vectơ đơn vị hướng lên
  • Khi kết hợp mô hình cháy và lực nổi nhiệt, có thể tạo ra chất lỏng trông giống lửa
    • Với các giá trị lực nổi và làm mát phù hợp, có thể thu được các cột vật chất lớn, phồng nở
    • Kết quả ở giai đoạn này vẫn gần với khói hơn là ngọn lửa chính xác
  • Toàn bộ vòng lặp gồm self-advection của vận tốc, quá trình cháy, vorticity confinement, lực nổi nhiệt, phép chiếu áp suất, rồi advection của mật độ, nhiệt độ và nhiên liệu

Dựng màu ngọn lửa bằng bức xạ vật đen

  • Lửa là một participating medium và phát ra ánh sáng thông qua bức xạ vật đen
  • Màu cam và đỏ của lửa đến từ bức xạ vật đen; nếu mô phỏng nhiên liệu đang cháy được dựng bằng công thức phù hợp thì có thể chuyển từ khói sang lửa
  • Planck’s Law mô tả mật độ phổ ánh sáng do vật đen ở nhiệt độ T phát ra
  • Nếu triển khai dựng hình vật đen bằng fragment shader, có thể tạo nên một mô phỏng lửa hoàn chỉnh trên nền mô hình chất lỏng, cháy và lực nổi
  • Vẫn còn những chủ đề mở rộng chưa được đề cập
    • các kỹ thuật không dựa trên lưới để giải mô phỏng trong một thể tích cố định
    • bài toán miền biến thiên, nơi chất lỏng chiếm các vùng khác nhau trong lưới như nước trong một chiếc cốc chỉ đổ nửa
    • vật cản động
    • các cách cải thiện dựng hình như bức xạ vật đen chính xác hơn, tán xạ ánh sáng và hiệu ứng hậu kỳ

1 bình luận

 
GN⁺ 2023-12-20
Ý kiến trên Hacker News
  • Tôi có bằng tiến sĩ CFD, nhưng đây là lần đầu tiên tôi thấy kỹ thuật vorticity confinement và curl-noise turbulence
    Trong các miền có số Reynolds cao hơn như CFD công nghiệp, thường người ta không muốn dùng cách tiếp cận bù lại tiêu tán nhân tạo của phương pháp số bằng nhiễu
    Ngược lại, nhiều khi còn muốn có tiêu tán nhân tạo để ổn định mô phỏng số Reynolds cao, và trong đồ họa máy tính thì có vẻ trông thuyết phục quan trọng hơn là đúng về mặt vật lý

    • Quy tắc đầu tiên của đồ họa máy tính thời gian thực về cơ bản luôn là “đánh lừa càng nhiều càng tốt, miễn đừng bị phát hiện — mà thường bị phát hiện rồi cũng mặc”
      Thậm chí còn không cần phải trông chính xác, chỉ cần trông ngầu là được
    • Chính xác là như vậy
      Với dân mê vật lý như tôi, mọi người thường cười khi tôi chỉ ra những cảnh vi phạm định luật vật lý ở tiệm arcade
      Có một bài phỏng vấn dịch với nhà vật lý từng làm Mario World ở Nintendo khá thú vị; ông nhấn mạnh rằng vật lý trong thế giới Mario dù không giống vật lý “thực”, vẫn có những quy tắc nhất quán như vật lý thực, và điều đó quan trọng để người chơi hiểu mình có thể làm gì trong game và giải câu đố
    • Bài báo về curl noise hình như là bài năm 2007: https://www.cs.ubc.ca/~rbridson/docs/bridson-siggraph2007-cu...
      Tôi đã dùng ý tưởng cốt lõi của bài đó để làm một chương trình khá ổn tạo texture cho hành tinh khí: https://github.com/smcameron/gaseous-giganticus
    • Tiếc là tôi đã phải có cuộc nói chuyện kiểu này nhiều lần
      Tôi đã hơn một lần bị hỏi kiểu “tại sao Unreal Engine làm được trong vài giây mà phần mềm CFD của anh lại mất hàng giờ cho một mô phỏng”
    • Thật đáng tiếc khi họ không dẫn tên Dr. John Steinhoff của University of Tennessee Space Institute, người thực sự phát minh ra vorticity confinement
      https://en.wikipedia.org/wiki/John_Steinhoff
      https://en.wikipedia.org/wiki/Vorticity_confinement
      Cũng có các bài báo liên quan:
      https://www.researchgate.net/publication/239547604_Modificat...
      https://www.researchgate.net/publication/265066926_Computati...
  • Trước đây tôi từng đọc đâu đó một bài viết rồi làm một mô phỏng ngọn lửa cực kỳ đơn giản kiểu đồ chơi bằng C
    Chỉ cần đặt độ sáng của mỗi pixel bằng độ sáng trung bình của các pixel kề ngay bên cạnh, rồi tính từ dưới lên trên
    Chỉ cần thêm vài pixel “nóng” di chuyển qua lại ở phía dưới là lập tức có lửa, mã rất ít mà trông khá hay dù không cần giải tích

    • Đó là toán tử Laplace
      Trong 1 chiều, nó đơn giản là đạo hàm bậc hai, tức độ cong; đỉnh càng nhọn thì càng âm, đáy càng nhọn thì càng dương
      Nếu thay đổi giá trị theo mức đó thì sẽ tạo ra hiệu ứng làm trơn, và dạng rời rạc của nó theo đúng nghĩa đen chính là lấy trung bình
      Thực ra bạn vẫn luôn đang làm giải tích
      Biết con đường và đi trên con đường là hai chuyện khác nhau
      Có cả video 3Blue1Brown giải thích bằng đồ họa trực quan: https://youtube.com/watch?v=ToIXSwZ1pJU
    • “Đặt độ sáng của mỗi pixel bằng độ sáng trung bình của các pixel kề ngay bên cạnh” nghe giống tích chập
  • Họ đang nói về mô phỏng lửa và khói cho game, mô phỏng chất lưu trên GPU, nhưng nếu các hiệu ứng này chạy trong game thì GPU chẳng phải đã bận sẵn rồi sao
    Vừa chạy bài toán CFD vừa render cùng lúc nghe có vẻ là gánh nặng khá lớn
    Tôi cũng tò mò liệu có thể chạy mấy thứ này trên iGPU trong khi dGPU xử lý tác vụ liên quan đến render hay không, hay iGPU quá yếu nên thà đẩy xuống CPU còn hơn

    • Trả lời ngắn là GPU không hề “đã bận sẵn”
      GPU ngày nay rất mạnh, có thể xử lý vật lý, các render pass cầu kỳ, mô phỏng chất lưu, tìm đường cho đơn vị “AI trong game” ở mức hơn 100FPS
      Nói dài hơn thì khoảng thời gian giữa việc render các khung hình “trình chiếu” rất nhanh trên 60FPS chính là ngân sách khung hình, và thông thường bạn có 5~30ms để tính toán trạng thái khung tiếp theo cùng mọi thứ cần cho việc render
      Trong đó có thể gồm di chuyển đơn vị trên bản đồ, tính vật lý ngọn lửa, sao chép texture địa hình, render đỉnh có material, và trong nhiều engine game, GPU mỗi khung hình thực hiện hàng chục phép tính riêng như vậy
      GPU về cơ bản là một máy tính phụ gắn vào máy tính chính, nên mỗi khung hình bạn ném cho nó nhiều tác vụ, nó trả kết quả lại, rồi các kết quả đó được ghép lại thành thứ trông giống một trò chơi
      Gần như chẳng ai dùng iGPU
      So với dGPU chính thì nó thường vô dụng đến mức bị bỏ qua
    • Giờ LLM cũng chạy trên GPU, nên GPU trong tương lai sẽ phải chia tài nguyên giữa đồ họa, vật lý và AI cho NPC
      Có lẽ thời kỳ cân bằng những thứ đó sẽ khá thú vị, và ngày càng có vẻ tài nguyên tính toán cục bộ và từ xa sẽ cùng chia tải
    • Hồi trước người ta từng chạy tính toán PhysX trên một GPU chuyên dụng được chọn riêng
      Tôi nhớ là mình đã gán cấu hình đó hoặc nhận ra điều đó khi nhìn những bức tường liên tục bị phá hủy trong Red Faction
      Nó gần như là Minecraft, nhưng theo kiểu cầm rocket launcher trên sao Hỏa
  • Để dùng GPU thì không nhất thiết phải đang chơi game
    Dạo này cũng có nhiều phần mềm render có chế độ GPU
    Tuy vậy, các thuật toán GPU thường được song song hóa ở mức rất cao nên nhiều khi khác với thuật toán mô phỏng trên CPU

  • EmberGen là một phần mềm cực kỳ điên rồ, có thể mô phỏng lửa và khói theo thời gian thực trên GPU dành cho người dùng phổ thông, đồng thời hỗ trợ workflow dạng node nên rất dễ tạo hiệu ứng mới
    Quy trình vốn trước đây mất hàng giờ giờ đây có thể tinh chỉnh xong chỉ trong vài phút
    https://jangafx.com/software/embergen/
    Tôi cứ nghĩ bài này sẽ nói về EmberGen, và thành thật mà nói cũng hơi tiếc là EmberGen không được chú ý nhiều trên HN: https://hn.algolia.com/?dateRange=all&page=0&prefix=true&que...
    Tôi không liên quan gì đến EmberGen/JangaFX, chỉ là một khách hàng hài lòng thôi

  • Nếu thích mấy thứ như thế này thì Ten Minute Physics cũng sẽ rất thú vị
    Đặc biệt là chương 17, “How to write an Eulerian Fluid Simulator with 200 lines of code”
    https://matthias-research.github.io/pages/tenMinutePhysics/i...

  • Tôi đang tò mò không biết có tài liệu nào được khuyến nghị cho người học mô phỏng CFD từ đầu, nhất là với một người học toán rồi chuyển sang làm kỹ sư phần mềm
    Chủ đề này thực sự rất hấp dẫn, nhưng đã lâu rồi tôi không đụng đến giải tích vectơ hay phương trình vi phân riêng nên kiến thức toán đã rỉ sét khá nhiều

    • Nếu bạn quan tâm hơn đến mô phỏng vật lý phục vụ nghiên cứu thì tôi khó giúp được, nhưng nếu là mô phỏng thiên về giải trí thì rất khó đánh bại SideFX Houdini
      https://www.youtube.com/watch?v=zxiqA8_CiC4
      Bản “Apprentice” miễn phí cho mục đích phi thương mại chỉ bị giới hạn ở tính năng render và cộng tác
      Tuy nhiên đây là một công cụ khá sâu
      Nếu đi từ phía phần mềm sang ngành này, workflow để học những công cụ như vậy hoàn toàn khác biệt
      Nhiều người nói Houdini gần với một IDE hơn là một chương trình dựng mô hình 3D, và ở nhiều khía cạnh tôi đồng ý
      Thay vì dùng công cụ trực quan kiểu Blender, bạn gần như xây mọi thứ bằng mạng lưới node rồi chỉnh các thuộc tính và tham số
      Hầu hết mọi thứ có thể làm bằng Python, gọn gàng hơn mấy thứ như 3ds Max, nhưng vì không được biên dịch nên hiệu năng kém trong các mô phỏng lớn
      Ngôn ngữ riêng kiểu C của nó là VEX cũng dùng ổn, và còn có hệ thống node chi tiết hơn dành cho các tác vụ tinh vi như toán học phức tạp
      Về mặt kỹ thuật thì gần như toàn bộ là workflow hướng dữ liệu
      Tuy nhiên nếu bạn là kiểu người “học bằng cách đọc tài liệu” thì sẽ phải nhanh chóng làm quen với việc yêu thích tutorial
      Nó rất khác với bất kỳ môi trường hay mô hình tư duy nào tôi từng dùng, cộng đồng nhìn chung khá thân thiện nhưng cũng bị lời nguyền chuyên môn hóa khá nặng
    • Một cách khác là ứng tuyển vào nơi như StarCCM rồi làm việc trực tiếp trong lĩnh vực đó
    • Trước đây tôi từng làm việc này với tư cách nhà thầu cho NASA
      Nếu thực sự muốn theo đuổi thì tốt nhất là kiếm một công việc trong lĩnh vực đó, và có thể thử ứng tuyển phía Federal hoặc Contractor ở Marshall Space Flight Center hay Ames
      Ở Ames có các hệ thống Aitken [#85, 9.07 PFlops], Pleiades [#132, 5.95 PFlops], Electra [#143, 5.44 PFlops] theo Top500
      GRC, LARC, JSC cũng có một phần
      Ít nhất là vài năm trước, việc tích hợp giữa Contractor/Federal khá tốt và gần như minh bạch, trừ chuyện phân bổ tiền
      Bên trong NASA, nhóm Propulsion Structural, Thermal & Fluid Analysis của MSFC [2][3] và nhóm Entry Systems của Ames [4] khá nổi tiếng
      Khi đó chúng tôi chạy các mô phỏng Hybrid RANS/LES quy mô khoảng 100 triệu cell cho phương tiện hoặc phương tiện + bệ phóng, dùng Overflow/LARC [5] hoặc Loci/Mississippi State University [6], bao gồm lưới chồng động, khoảng 10~20 loài hóa học cháy phản ứng, và động lực học hạt bay hơi Lagrangian
      SSME và SRB được kích hoạt cùng lúc, đồng thời có cả hệ thống dập nước khi phóng
      Tuy nhiên thông tin này đã là từ 10 năm trước nên tôi không rõ mặt bằng hiện nay ra sao, chắc giờ đã tiến xa hơn thế
      Nếu muốn biết ngành này đang quan tâm điều gì thì dù hơi cũ, nghiên cứu CFD Vision 2030 Study năm 2014 vẫn là tài liệu nhập môn không tệ [7]
      Đi dạo quanh Supercomputing nếu kiếm được vé cũng khá hay
      Năm nay nó được tổ chức ở Denver [8]
      Tuy nhiên trọng tâm của nó là phía “quy mô lớn”, nên bạn sẽ chủ yếu thấy các mô phỏng thời tiết khổng lồ hoặc động lực học tinh vân
      Tôi thích bản thân hội nghị này, nhưng đúng là khó thu hút chú ý nếu không có thành tựu ở quy mô kiểu #CPUs/#GPUs/#FPGAs++
      Ngoài NASA, phía chính phủ còn có NIST(Gaithersburg), DOE(Oak Ridge, Sandia, Los Alamos), Air Force(AF Research Lab), Huntington Beach
      [1] NASA Advanced Supercomputing Division: https://en.wikipedia.org/wiki/NASA_Advanced_Supercomputing_D...
      [2] NASA, MSFC: https://www.nasa.gov/wp-content/uploads/2016/01/g-28367g_pst...

[3] Một số ví dụ hơi cũ: https://ntrs.nasa.gov/api/citations/20140016892/downloads/20...
[4] NASA Ames: https://www.nasa.gov/entry-systems-and-technology-division/
[5] OVERFLOW/NASA/LARC: https://overflow.larc.nasa.gov/
[6] Loci/MSU: https://simcenter.msstate.edu/
[7] Nghiên cứu CFD Vision 2030: https://ntrs.nasa.gov/api/citations/20140003093/downloads/20...
[8] Supercomputing SC23: https://sc23.supercomputing.org/