Questions tagged «c++»

强大的面向对象编程语言。

12
C ++与Fortran for HPC
在我的计算科学博士学位程序中,我们几乎只在C ++和Fortran中工作。似乎有些教授更喜欢另一种。我想知道哪个在某些情况下是“更好”的,还是一个在另一个方面要比另一个更好。
56 hpc  fortran  c++  languages 


9
什么是在C ++中运行参数研究的好方法
问题 我目前正在进行有限元Navier Stokes仿真,并且我想研究各种参数的影响。在输入文件中或通过命令行选项指定了一些参数。其他参数在Makefile中作为标志提供,因此每当我更改这些选项时,都必须重新编译我的代码。我很想获得一些有关系统地探索参数空间的好方法的建议。 是否有有用的C ++ / Python库/框架可以帮助解决此类问题?例如,发现boost.Program_options很有帮助,因为可以使用命令行参数来重载输入文件选项。我还看到有人使用工作文件非常有效地描述每种情况,并且一位同事建议将参数作为注释块写入vtu文件也可以工作。 也许根本不值得花很多时间在这上面吗?只是分散注意力和时间流失,最好只是通过测试过程中的蛮力和特设肌肉吗? 一些想法 我目前主要是手工做事,遇到以下问题: 命名测试用例。我尝试将结果存储在以运行参数命名的文件夹中,并用下划线将其分隔,例如Re100_dt02_BDF1...。如果缩写太多,它们很快就会变长或难以阅读/难以理解。另外,实数参数包括.尴尬/丑陋的a。 记录运行数据。有时我希望看到结果写入终端并也保存到文本文件中。例如,来自StackOverflow的答案有些帮助,但解决方案似乎有点麻烦。 根据参数绘制数据。从各种日志文件中收集相关数据需要花费一些时间,然后我可以将其绘制到一个文件中,如果使用更好的系统,这也许会变得更容易。 记录有关数据的注释。检查结果后,我在文本文件中写了一些注释,但要使其与结果文件夹保持同步有时很困难。

5
用户需要MPI C ++接口提供哪些功能?
MPI标准的3.0版本正式删除了C ++接口(先前已弃用)。尽管实现可能仍支持它,但MPI-3中的新功能没有MPI标准中定义的C ++接口。有关更多信息,请参阅http://blogs.cisco.com/performance/the-mpi-c-bindings-what-happened-and-why/。 从MPI中删除C ++接口的动机是,与C接口相比,它没有任何重要价值。除“ s / _ / :: / g”外,几乎没有区别,并且未使用C ++用户习惯的许多功能(例如,通过模板自动确定类型)。 作为参加MPI论坛并与许多实现了自己的MPI C函数C ++接口的C ++项目一起工作的人,我想知道MPI C ++接口的理想功能是什么。尽管我什么也不做,但我希望看到一个满足许多用户需求的独立MPI C ++接口的实现。 是的,我熟悉Boost :: MPI(http://www.boost.org/doc/libs/1_54_0/doc/html/mpi.html),但它仅支持MPI-1功能,并且序列化模型应为支持RMA极其困难。 我喜欢的一个MPI的C ++接口是Elemental(https://github.com/poulson/Elemental/blob/master/src/core/imports/mpi.cpp),所以也许人们可以提供一些专业知识方法。特别是,我认为MpiMap解决了一个基本问题。
28 c++  mpi 

4
在计算科学中什么时候应该使用C ++表达式模板,什么时候不应该使用它们?
假设我正在使用C ++编写科学代码。在最近与一位同事的讨论中,有人争辩说表达模板可能是一件很糟糕的事情,有可能使软件只能在某些版本的gcc上编译。据推测,这个问题影响了一些科学规范,正如《堕落》这个模仿中的字幕所提到的那样。(这些是我所知道的唯一示例,因此是链接。) 但是,其他人则认为,表达模板很有用,因为它们可以避免将中间结果存储在临时变量中,从而可以提高性能(如SIAM Journal of Scientific Computing的论文)。 我对C ++中的模板元编程一无所知,但我知道这是自动微分和区间算术中使用的一种方法,这就是我讨论表达式模板的方式。考虑到性能方面的潜在优势和维护方面的潜在劣势(即使这是正确的话),我什么时候应该在计算科学中使用C ++表达式模板,什么时候应该避免使用它们?

5
在教计算机编程本科课程时,我应该使用哪种语言?
打算教本科生一门名为“计算机编程入门”的课程。我有点困惑。在计算物理学中,科学家使用C / C ++或Python或Fortran,CUDA等。...现在是时候建立自己的基础了。我应该使用什么?我知道您可以在自己的生活中随时学习新的编程语言,但是对我来说,以后再详细介绍所有基本编程概念和OOP概念是一个明智的选择。

8
科学计算中的现代C ++?
我正在寻找书籍或文章,博客文章或任何已出版的一般材料,这些材料专门解决了科学计算中C ++现代功能(移动语义,STL,迭代器,惰性评估等)的使用。你能建议什么吗? 我认为这些新功能将使编写高效的代码更加容易,但是我还没有找到真正的例子。我阅读的大多数参考文献都是关于C ++的一般用法的,并不包含科学计算的示例。因此,我正在寻找使用C ++现代功能的科学计算代码的示例(不一定是生产代码示例,而仅是教学示例,例如在数字食谱方面)。 请注意,我并不是在问使用这些功能的库。我在询问有关文章/书籍/等的内容,以解释如何在科学计算中利用这些功能。

10
快速,轻量级的C ++张量库,可用于尺寸无关的代码
我正在寻找一个支持维度无关代码的C ++张量库。具体来说,我需要沿每个维度(最多3个)执行操作,例如,计算加权和。尺寸是模板参数(因此是编译时常数)。另一个限制是该库应该相对轻量级,因此本征/ Boost样式要比Trilinos / PETSc轻。 有什么建议么? 注意:我查看了Eigen,并认为它几乎完全符合轮廓,如果它不限于2D张量。如果我对此感到误解,请纠正我。
20 c++  libraries  tensor 

6
分析C ++函数中的数值错误
假设我有一个函数,将多个浮点值(单或双)作为输入,进行一些计算,然后生成输出浮点值(也为单或双)。我主要使用MSVC 2008,但还计划使用MinGW / GCC。我在用C ++编程。 以编程方式测量结果中有多少错误的典型方法是什么?假设我需要使用任意精度库:如果我不关心速度,那么最好的此类库是什么?

5
并行科学计算软件开发语言?
我想从头开始开发并行科学计算软件。我想开始使用哪种语言。该程序涉及将数据读/写到txt文件中,并并行进行大量计算,并具有许多LU分解和使用稀疏线性求解器的功能。我在考虑的候选解决方案是带有OpenMP或协同阵列的Fortran 2003/2008,带有openmp cilk +或TBB的C ++,python。任何其他有文件记录的建议,我们都欢迎!我非常了解C,Fortran和Java(按此顺序)。我已经在python中完成了一些脚本编写工作,但是基本的东西。 我知道fortran很快,但是很难维护和并行化。据说C ++运行缓慢,除非您使用外部库等我喜欢的Python,但是在其上编写全面的工业级软件是否现实? 该软件需要能够处理大量数据并通过科学计算有效。性能至关重要。 对于背景,我已经有一个用Fortran编写的工作软件。许多人参与了很多年的开发,并且代码真的很脏。维护和并行化代码被证明是一场噩梦,我正在考虑其他选择。 佩特罗斯

3
处理科学代码中许多常量,变量的C ++最佳实践
我正在开发代码,以使用流体中存在的生物物质来模拟流体流动。这涉及到标准的Navier-Stokes方程以及一些其他的生物学模型。有许多参数/常量。 我已经编写了处理主要计算的函数,但是我遇到的一个问题是这些计算所依赖的大量常量/参数。将10-20个参数传递给一个函数似乎很麻烦。 一种替代方法是使所有常量成为全局变量,但是我知道这在C ++中是不受欢迎的。 处理一个功能的许多输入的标准方法是什么?我应该构造一个结构并通过它吗? 谢谢
17 c++ 

6
使用C ++模板的泛型和元编程在计算科学上有多大用处?
C ++语言通过模板提供通用的编程和元编程。这些技术已进入许多大型科学计算程序包(例如MPQC,LAMMPS,CGAL,Trilinos)。但是,它们在整体开发时间和可用性上是否具有相等或充分的效率,它们实际上对科学计算做出了哪些贡献,这些价值超出了诸如C或Fortran之类的非通用,非元语言。 给定科学计算任务,通过C ++模板进行的通用和元编程是否已证明通过任何易于理解的基准(代码行,人工工作等)衡量的生产率,表达力或可用性方面的改进?相应地,将C ++模板用于通用编程和元编程会带来哪些风险?

2
Boost :: mpi或C MPI用于高性能科学应用?
我最不喜欢MPI的一点是处理数据类型(即数据映射/掩码),因为它们与面向对象的C ++不太吻合。boost::mpi仅在其网站上支持MPI 1.1: boost :: mpi是标准消息传递接口的C ++友好接口……Boost.MPI可以使用Boost.Serialization库为用户定义的类型构建MPI数据类型。 有没有人boost::mpi对严肃的科学计算有任何经验?你会推荐吗?您是否遇到了任何问题(扩展问题,编译器问题,错误,未实现的功能,需要某些mpi 2.2功能)? 您能否评论使用boost::mpi而不是使用C ++中的MPI C实现?可以同时使用两者吗(可以的话,使用boost :: mpi,在其他地方使用C-MPI)? 您知道使用的任何大型科学代码boost::mpi吗?
16 hpc  c++  mpi 

2
为什么计算科学家需要实现自己的std :: complex版本?
许多计算科学较为著名的C ++库如征,Trilinos和deal.II使用标准的C ++模板库头对象std::complex<>,表示复杂的浮点数。 在Jack Poulson 回答有关默认构造函数的问题时,他指出,“出于多种原因” 他std::complex在Elemental中具有自己的实现。那是什么原因 这种方法的优点和缺点是什么?

5
计算
函数具有靠近奇点X = 0。但是,可以提高奇点:对于x = 1,应该使f (x )= 1,因为 e x = ∑ k = 0 x kf:x↦(ex−1)/xf:x↦(ex−1)/xf \colon x \mapsto (e^x-1)/xx=0x=0x = 0x=1x=1x = 1f(x)=1f(x)=1f(x) = 1 因此 (ex−1)/x=∑k=1x k − 1ex=∑k=0xkk!ex=∑k=0xkk! e^x = \sum_{k=0} \frac{x^k}{k!} 然而,形式(ëX-1)/X不仅在没有定义X=0,它也是在该点附近的数值不稳定; 为了在数值上评估非常小的x的f(x),可以使用泰勒展开,即上述幂级数的截断。(ex−1)/x=∑k=1xk−1k!(ex−1)/x=∑k=1xk−1k! (e^x - 1)/x = \sum_{k=1} \frac{x^{k-1}}{k!} (ex−1)/x(ex−1)/x(e^x-1)/xx=0x=0x = 0f(x)f(x)f(x)xxx 问:函数是否有名称?换句话说,这是一个普遍的问题吗?fff 问:是否有人知道可以很好地处理这种情况的C / …
13 c++  c 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.