Python中文
首页
教程
问答
标签
搜索
登录
注册
我应该使用哪些C++库来进行大规模并行计算、数字计算项目并利用第三方应用程序?
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p><strong>简介</strong></p> <p>我想就一个新的编程项目征求很多建议,我将自己开始。我将非常精确地说明我想要完成什么,以及我的基本要求是什么。因此,这将是一个长期的问题。请容忍我。在</p> <p>我将把问题分成五个部分:</p> <ol> <li>现实世界问题</li> <li>模拟问题</li> <li>要求和偏好</li> <li>附加信息</li> <li>建议请求列表</li> </ol> <p><strong>1。现实世界问题</strong></p> <p>摩天大楼和大型桥梁承受着动态风荷载。这意味着,如果设计不当,它们可能会因风振而倒塌(这实际上发生在1940年:<a href="http://www.youtube.com/watch?v=3mclp9QmCGs">http://www.youtube.com/watch?v=3mclp9QmCGs</a>)。为了正确设计这种结构,需要高效的数字运算软件进行分析和仿真。在</p> <p><strong>2。模拟问题</strong></p> <p>有许多软件可以模拟流体流动或结构力学。其中许多已经开发了30多年,是成熟的成熟技术。因此,编写一个能够从头开始同时模拟流体流动和结构力学的多物理程序是不明智的。首先,你需要多年的开发才能成熟,而进入一个依赖特定软件超过30年的世界是非常困难的。但更重要的是…当你可以重用时,为什么要重新创建?我不追求单一的方法,而是喜欢分区的方法,这样可以重用现有的仿真软件。在</p> <p>在分区方法中,我将使用软件X来模拟流,我将使用软件Y来模拟结构。然后我将编写我自己的耦合算法,在X和Y之间建立通信,并用它们来模拟多物理问题(例如摩天大楼或桥梁的风振)。我之所以使用X和Y而不是实际的软件名是因为X和Y应该是黑盒。我的耦合算法决不依赖于X和Y的实现。算法只依赖于X和Y的输出。这样,最终用户可以选择哪个X或Y对他们可用,或者哪个X或Y能够做最终用户想要实现的事情。在</p> <p>因为我想使用黑盒分区的方法,软件X对Y一无所知,反之亦然。但是我如何在不知道周围空气流动的情况下模拟桥梁的变形,如何知道周围的空气流动是以何种方式受到结构的扰动而不知道它的变形呢?答案很简单:从猜测开始,使用迭代方法收敛到正确的解。然而,这种方法在计算上非常昂贵。为了降低计算成本,可以使用非常有效的技术以一种巧妙的方式编写耦合算法,这里不再讨论。我想说的是,一些沉重的线性代数数字运算是必要的。在</p> <p><strong>3。要求和偏好</strong></p> <p>我需要做的是:</p> <ul> <li>在第三方开源软件或专有软件之间建立通信</li> <li>执行一些繁重的数字运算(线性代数)</li> <li>可视化结果(2D/3D绘图和动画)</li> <li>提供交互式分析和开发环境</li> <li>创建直观的图形用户界面</li> </ul> <p>我希望我的软件是:</p> <ul> <li>开源</li> <li>跨平台</li> <li>可通过脚本和/或共享库进行扩展</li> </ul> <p>我要用的是:</p> <ul> <RI> C++用于重数压缩< /LI> <li>用于编程逻辑的CPython</li> <li>在CPython中进行数字运算的NumPy/SciPy</li> <li>CPython中结果可视化的Matplotlib</li> </ul> <p><strong>4。附加信息</strong></p> <p>事实:</p> <ul> <li>一个人的项目开始,如果成功的话成长为公司</li> <li>主操作系统是基于KDE的Linux发行版</li> </ul> <p>商业模式:</p> <ul> <li>免费软件和基本文档。在</li> <li>付费服务和详细的文档。在</li> </ul> <p><strong>5。建议请求列表</strong></p> 我想通过编写许多单独执行一个微小任务的函数来完成C++中的所有数字压缩。程序逻辑包含在一个CPython程序包中,它执行整个模拟,同时依赖C++函数来执行数字压缩。将C++和CPython算法扩展到用Cpththon编写的脚本(使用NoMPY、SciPy、Simuly和Matplotlib)生成和可视化原始数字数据的结果。我想能够做并行计算,我需要与几个第三方的开源和专有软件通信。在</p> <p>为了完成所有这些,我需要一大堆现有的库/包/技术等等。对于所有相关的问题,我知道我可以使用什么,但是我不知道我应该使用什么。最好的解决办法是一如既往地尝试一切,看看什么最有效。但是,如果任何有经验的用户可以排除一些不太可能的候选人,我很乐意收到他或她的建议,建议,赞成/反对的名单:</p> <ol> <Li >粘接C++和CPython(如cType、SIP、SWIG等)</LI> <LI> C++线性代数数列库(如犰狳、本征、PETSc etc.)< /LI> <li>图形界面开发库(例如Qt、GTK、wxWidgets等)</li> <li>软件通信和并行计算(如MPICH、OpenMPI、OpenMP等)</li> <li>CPython 2.7.x或CPython 3.x</li> </ol> <p>注:我总结了以上的一些选项,但这些只是示范性的,而不是限制。我对所有事物都开放,只要它是用C、C++、FORTRAN或Python编写的。同时,我也不期望在以上五个类别中都能从一个人那里得到答案。让社区的集体知识来解决这个问题。在</p> <p>我感谢所有的贡献者,并祝你们在自己的努力中一切顺利。在</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>可能,gmp。您可以在此处找到更多详细信息:<a href="http://gmplib.org/" rel="nofollow">http://gmplib.org/</a></p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
将Pandas数据帧转换为PyTorch张量?
10 回答
将Pandas数据帧转换为scipy稀疏矩阵
10 回答
将Pandas数据帧转换为Spark Datafram时出现问题
3 回答
将pandas数据帧转换为spark DataFram时出错
9 回答
将Pandas数据帧转换为spark datafram时收到错误
7 回答
将Pandas数据帧转换为Spark数据帧
2 回答
将Pandas数据帧转换为Tensorflow数据
3 回答
将Pandas数据帧转换为tkinter obj
4 回答
将pandas数据帧转换为XML
10 回答
将Pandas数据帧转换为值sql语句
9 回答
将pandas数据帧转换为元组
10 回答
将pandas数据帧转换为元组列表
4 回答
将pandas数据帧转换为元组列表并删除所有pandas数据类型
8 回答
将pandas数据帧转换为具有头和数据类型的numpy数组
5 回答
将pandas数据帧转换为内存中的拼花地板,并将其加载到Python中的Hadoop中
3 回答
将pandas数据帧转换为内存中类似文件的对象?
1 回答
将Pandas数据帧转换为内存功能(&F)
7 回答
将pandas数据帧转换为列表列表
5 回答
将pandas数据帧转换为列表列表以输入到RNN
3 回答
将Pandas数据帧转换为单行DataFram
4 回答