【水動力學】04 二維洪水淹沒模型Pypims安裝

模型介紹

HiPIMS(High-Performance Integrated hydrodynamic Modelling System)使用最先進的數值方案(Godunov型有限體積法)來求解二維淺水方程以進行洪水模擬。為了支持高分辨率洪水模擬,使用CUDA/C ++語言在多個GPU上實現了HiPIMS,以實現高性能計算。由于HiPIMS具有模塊化和靈活的結構,因此只要問題可以在均勻的矩形網格上解決,就可以進一步開發用于水文科學的其他應用。

HiPIMS由水力環境建模實驗室開發和維護,HiPIMS的開發由梁秋華(Qiuhua Liang)教授領導,凝聚了將近二十年的心血和眾多研究人員的努力。

Pypims 是HiPIMS的Python API,該API提供了一個用戶友好的集成工具鏈,用于準備輸入,運行HiPIMS和可視化輸出。完整的文檔在https://pypims.readthedocs.io/en/latest/上。

第一種安裝方式:編譯安裝

Pypims 是一個Python第三方庫,源代碼已經在Github開源,按照說明書 在Win 11電腦上安裝成功。步驟記錄如下。

計算機環境

我的計算機操作系統為Windows 11 專業工作站版,版本號23H2。
系統類型是64 位操作系統, 基于 x64 的處理器。
處理器為12th Gen Intel? Core? i7-12700 2.10 GHz,內存為 96 GB。
GPU為NVIDIA RTX A4000,顯存為 16 GB,驅動版本為576.02,CUDA版本為12.9。

安裝Miniconda

Miniconda是Anaconda的輕量級版本,由Continuum Analytics(現Anaconda Inc.)開發。通過Miniconda,用戶可高效管理項目依賴,平衡靈活性與資源消耗。

安裝Git

從Git官方網站下載安裝程序:
Git官網下載頁面
運行下載的.exe文件,按照安裝向導默認選項完成安裝。安裝完成后,在命令提示符或PowerShell中輸入 git --version 驗證是否安裝成功。
安裝完成后需設置用戶名和郵箱:

git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"

使用 git config --list 可查看當前配置。

安裝Visual Studio

Visual Studio 是由微軟開發的集成開發環境(IDE),支持多種編程語言(如 C#, C++, Python, JavaScript 等)和平臺(Windows, Web, 移動端等)。
安裝免費的Visual Studio Community版本,并安裝C++負載。

安裝NVIDIA CUDA Toolkit

CUDA Toolkit可以從NVIDIA網站下載。
安裝完成后,設置環境變量。

克隆Pypims項目

進入欲安裝的文件夾,在命令提示符工具中,輸入以下命令

git clone https://github.com/pypims/pypims.git
cd pypims

如果連接不上Github,可以設置網絡代理。

修改CmakeLists

當前 CUDA 版本或顯卡驅動 不再支持 sm_35。因此需要在Pypims項目文件./pypims/pypims/CMakeLists.txt中,去掉對sm_35的支持,并替換為本機顯卡支持的Compute Capability(sm_86)。
CUDA GPU Compute Capability查詢網址:https://developer.nvidia.com/cuda-gpus

RTX A4000 → Compute Capability = 8.6 → sm_86
IF(WIN32)set(PLATFORM_CXX_FLAGS /Zi)set(CUDA_SEPARABLE_COMPILATION ON)set(CUDA_NVCC_FLAGS -arch=sm_86;--expt-extended-lambda)
ENDIF(WIN32)

修改cuda_data_bank.cu

在./pypims/pypims/lib/src/multi_threading/cuda_data_bank.cu代碼中,使用了 HEMI_DEV_CALLABLE_INLINE_MEMBER 宏,它的作用是用來兼容 GPU 和 CPU 編譯環境。而 HEMI 本身不再與新版本 CUDA(>= 11)和 Thrust 完美兼容。再加上我使用的是 CUDA 12.9,在編譯時會觸發如下錯誤:

error : static assertion failed with "unimplemented for this system"

這主要是 Thrust 在執行 thrust::device_vector<GC::Vector3>.resize() 操作時,無法推導出如何用你提供的構造器在 device 上初始化對象。
解決方案是手動定義 thrust::device_vector<GC::Vector3> 時不要使用 .resize(n)

// 不推薦
thrust::device_vector<GC::Vector3> v;
v.resize(n);  // ? 這會默認構造 device 端 Vector3,如果 Thrust 不支持就會崩潰// 推薦
std::vector<GC::Vector3> host_vec(n, GC::Vector3(0, 0, 0));
thrust::device_vector<GC::Vector3> v = host_vec;

因此對cuda_data_bank.cu文件的cuDataBankBranch函數修改為

  cuDataBankBranch::cuDataBankBranch(unsigned int _size_lower2receive, unsigned int _size_lower2send, unsigned int _size_upper2receive, unsigned int _size_upper2send):size_lower2receive(_size_lower2receive), size_lower2send(_size_lower2send), size_upper2receive(_size_upper2receive), size_upper2send(_size_upper2send){lower_status = 0;std::vector<GC::Vector3> host_vec1(size_lower2receive, GC::Vector3(0, 0, 0));data_lower = host_vec1;indices_lower2receive = host_vec1;std::vector<GC::Vector3> host_vec2(size_lower2send, GC::Vector3(0, 0, 0));indices_lower2send = host_vec2;upper_status = 0;std::vector<GC::Vector3> host_vec3(size_upper2receive, GC::Vector3(0, 0, 0));data_upper = host_vec3;indices_upper2receive = host_vec3;std::vector<GC::Vector3> host_vec4(size_upper2send, GC::Vector3(0, 0, 0));indices_upper2send = host_vec4;}

創建虛擬環境

虛擬環境:允許創建隔離的Python環境,避免依賴沖突。
用管理員方式打開Anaconda Prompt,創建 Conda 虛擬環境

conda create -n pypims python=3.7 -y

安裝依賴

激活環境

conda activate pypims

安裝Cmake

conda install cmake -y

安裝GDAL

conda install gdal -y

用相同的方式安裝./pypims/docs/requirements.txt中列出的所有庫

conda install rasterio -y
conda install fiona -y
conda install numpy -y
conda install scipy -y
conda install matplotlib -y
conda install imageio -y
conda install pandas -y
conda install pyshp -y
conda install “sphinx>=4.1” -y
conda install “sphinx-rtd-theme>=1.0.0” -y
conda install nbsphinx -y

安裝ipykernel,用于在Visual Studio Code中運行Jupyter Notebook的demo。

conda install ipykernel -y

安裝Pypims

在Pypims文件夾中,打開Anaconda Prompt,進入pypims環境,輸入命令

python setup.py install

安裝完成。

第二種安裝方式:Conda直接安裝

在安裝完Miniconda、Git、Visual Studio、NVIDIA CUDA Toolkit后,創建虛擬環境,并安裝所有依賴。

然后在虛擬環境中,輸入以下命令,直接安裝Pypims。

注意:此方式未經測試,可能會遇到錯誤。

conda install pypims

或者

pip install pypims

運行洪水淹沒模擬案例

根據Pypims官方提供的教程,使用Visual Studio Code打開./pypims/docs/source/Tutorials/flood.ipynb,選擇Python環境pypims,運行flood.ipynb,學習Pypims的使用。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/89300.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/89300.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/89300.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ARC 03 從Github Action job 到 runner pod

Github Action job 分配到集群 背景 job 是 Github Action 的基本單位&#xff0c;每個 job 單獨分配一個 runner。workflow 由一個或者多個 job 組成。如果用戶觸發runs-on字段為arc-runner-set的 job&#xff0c;那么 Github Action 服務器將 job 分配給 listener pod。 源碼…

ubuntu 22.04 anaconda comfyui安裝

背景&#xff1a; 戴爾R740服務器&#xff0c;安裝了proxmox操作系統&#xff0c;配置了顯卡直通。創建了一個ubuntu 22.04 VM虛擬機實例&#xff0c;并安裝了顯卡驅動與cuda等相關配置&#xff1a; 接下來準備搭建一套comfyui的環境&#xff0c;前段時間B站&#xff0c;抖音各…

每日面試題04:volatile字段的原理

在之前面試題02ConcurrentHashMap的底層原理中提到了volatile修飾符&#xff0c;在多線程編程的世界里&#xff0c;數據同步是一道繞不開的坎。當多個線程同時操作共享變量時&#xff0c;“看不見對方的修改”或“代碼順序錯亂”往往會導致程序行為異常。而 volatile作為 Java …

【云原生網絡】Istio基礎篇

文章目錄概述基礎知識技術架構概述數據平面核心組件網絡代理Envoy控制平面核心組件xDS協議Pilot組件其他概述參考博客&#x1f60a;點此到文末驚喜?? 概述 基礎知識 背景知識 服務網格&#xff08;Service Mesh&#xff09;&#xff1a;獨立于應用程序的基礎設施層&#x…

PySpark Standalone 集群

一、PySpark Standalone 集群概述PySpark Standalone 集群是 Apache Spark 的一種部署模式&#xff0c;它不依賴于其他資源管理系統&#xff08;如 YARN 或 Mesos&#xff09;&#xff0c;而是使用 Spark 自身的集群管理器。這種模式適合快速部署和測試&#xff0c;尤其在開發和…

圖像質量評價(Image Quality Assessment,IQA)

文章目錄圖像質量評價&#xff08;Image Quality Assessment&#xff0c;IQA&#xff09;一、評估方式&#xff1a;主觀評估 客觀評估1.1、主觀評估方式1.2、客觀評估方式&#xff1a;全參考 半參考 無參考&#xff08;1&#xff09;全參考的方法對比&#xff08;Full-Refer…

【跟我學YOLO】(2)YOLO12 環境配置與基本應用

歡迎關注『跟我學 YOLO』系列 【跟我學YOLO】&#xff08;1&#xff09;YOLO12&#xff1a;以注意力為中心的物體檢測 【跟我學YOLO】&#xff08;2&#xff09;YOLO12 環境配置與基本應用 【跟我學YOLO】&#xff08;3&#xff09;YOLO12 用于診斷視網膜病變 【跟我學YOLO】&a…

Python爬蟲實戰:研究openpyxl庫相關技術

1. 引言 在當今數字化時代,互聯網上蘊含著海量有價值的數據。如何高效地獲取這些數據并進行分析處理,成為數據科學領域的重要研究方向。網絡爬蟲作為一種自動化的數據采集工具,可以幫助我們從網頁中提取所需的信息。而 openpyxl 作為 Python 中處理 Excel 文件的優秀庫,能…

Redis學習其一

文章目錄1.NoSQL概述1.1概述1.2Nosql的四大分類2.Redis入門2.1概述2.2基礎知識2.2.1基礎命令/語法2.2.2Redis為什么單線程還這么快2.3性能測試3.五大數據類型3.1Redis-key3.2String(字符串)3.3List(列表)3.4Set(集合)3.5Hash&#xff08;哈希&#xff09;3.6Zset&#xff08;有…

高性能架構模式——高性能緩存架構

目錄 一、引入前提二、緩存架構的設計要點2.1、緩存穿透2.1.1、緩存穿透第一種情況:存儲數據不存在2.1.2、緩存穿透第二種情況:緩存數據生成耗費大量時間或者資源2.2、緩存雪崩2.2.1、解決緩存雪崩的第一種方法:更新鎖機制2.2.2、解決緩存雪崩的第二種方法:后臺更新機制2.3…

ubuntu+windows雙系統恢復

文章目錄前言一、恢復windows1.直接在grub命令行輸入exit退出2.手動查找windows引導文件先ls列出所有磁盤和分區查找各個分區是否包含引導文件設置引導分區以及引導文件路徑啟動windows二、在windows系統下刪除Ubuntu殘留引導文件三、準備ubuntu系統引導盤四、安裝ubuntu系統五…

使用Dify構建HR智能助理,深度集成大模型應用,賦能HR招聘管理全流程,dify相關工作流全開源。

HR智能助理系統 &#x1f4cb; 項目概述 HR智能助理系統是一個基于AI技術的人力資源管理平臺&#xff0c;旨在通過智能化工具提升招聘效率&#xff0c;優化候選人評估流程&#xff0c;并提供專業的面試方案生成服務。 &#x1f3af; 核心價值 提升招聘效率60%&#xff1a;自動化…

PowerBI實現僅在需要圖表時顯示圖表

PowerBI實現僅在需要圖表時顯示圖表實現效果點擊維度前&#xff1a;點擊維度后&#xff1a;實現步驟第一步&#xff0c;先創建一個矩陣表和一個柱形圖第二步&#xff0c;添加一個新卡片圖第三步&#xff0c;創建文本度量值Text "? 選擇一個地區"第四步&#xff0c;創…

信息收集知識總結

信息收集 在信息收集中&#xff0c;需要收集的信息&#xff1a;目標主機的DNS信息、目標IP地址、子域名、旁站和C段、CMS類型、敏感目錄、端口信息、操作系統版本、網站架構、漏洞信息、服務器與中間件信息、郵箱、人員、地址等。 域名信息收集 拿到公司名或者一個域名&…

工作第一步建立連接——ssh

照本宣科 SSH&#xff08;Secure Shell&#xff0c;安全外殼協議&#xff09;是一種用于在不安全網絡上進行安全遠程登錄和實現其他安全網絡服務的協議.功能主要是遠程登陸和文件傳輸&#xff08;使用scp&#xff09; 為了建立 SSH 遠程連接&#xff0c;需要兩個組件&#xf…

Markdown變身Word,解鎖格式轉換新姿勢

目錄一、引言二、在線轉換工具使用法2.1 工具推薦2.2 操作步驟2.3 優缺點分析三、文本編輯器的內置功能或插件3.1 適用編輯器列舉3.2 以 Visual Studio Code 為例的操作流程3.3 優勢說明四、使用專門的轉換軟件4.1 Pandoc 軟件介紹4.2 安裝步驟4.3 命令行轉換操作五、編程腳本實…

MR 處于 WIP 狀態的WIP是什么

WIP是什么 在MR&#xff08;Merge Request 或代碼合并請求&#xff09;中&#xff0c;WIP 是"Work In Progress" 的縮寫&#xff0c;意思是“正在進行中”或“在制品”。當一個MR 被標記為WIP&#xff0c;通常表示它尚未準備好被合并&#xff0c;可能還在開發中&…

機器學習-線性回歸模型和梯度算法

1. 線性回歸模型1.1 線性回歸模型線性回歸模型&#xff1a;將數據擬合成一條直線。作用&#xff1a;預測數字作為輸出。例子&#xff1a;房子的大小與房價的估計&#xff08;圖表&#xff09;&#xff08;數據表&#xff09;1.2 訓練集訓練集&#xff1a;用于訓練模型的數據集訓…

時序預測 | Matlab代碼實現VMD-TCN-GRU-MATT變分模態分解時間卷積門控循環單元多頭注意力多變量時序預測

預測效果代碼功能 代碼主要功能 該代碼實現了一個變分模態分解時間卷積門控循環單元多頭注意力多變量時間序列預測模型&#xff0c;核心功能為&#xff1a; 使用VMD&#xff08;變分模態分解&#xff09;將原始信號分解為多個IMF分量對每個IMF分量構建TCN-GRU-MATT混合神經網絡…

HTML5 離線存儲

HTML5 離線存儲&#xff08;通常指 Application Cache&#xff09;是早期用于實現 Web 應用離線訪問的技術&#xff0c;但由于其設計缺陷已被廢棄。現代 Web 開發中&#xff0c;取而代之的是更強大的 Service Worker Cache API 方案&#xff08;屬于 Progressive Web Apps 技術…