Skip to main content
QUICK REVIEW

[论文解读] A C++ interface to QCDNUM

Valerio Bertone, M. Botje|arXiv (Cornell University)|Dec 21, 2017
Particle physics theoretical and experimental studies参考文献 5被引用 3
一句话总结

本文提出了一种C++接口,用于基于FORTRAN的QCDNUM程序,使QCD部分子密度演化能够无缝集成到现代C++高能物理软件中。通过使用C++兼容函数包装遗留的FORTRAN例程,该接口在保持QCDNUM高性能的同时,支持面向对象编程、动态内存管理和类型安全,并通过验证示例展示了NNLO演化和结构函数计算的准确性。

ABSTRACT

In this document we report on the recent development of a C++ interface to the FORTRAN-based evolution program QCDNUM. A short description of the interface is given with a few basic examples of its usage.

研究动机与目标

  • 弥合基于FORTRAN的QCDNUM与现代C++高能物理软件框架之间的差距。
  • 在面向对象C++应用程序中使用的同时,保持QCDNUM的高性能计算能力。
  • 使用autotools和命名空间封装,提供可移植、符合标准的C++接口。
  • 支持QCDNUM的关键功能,如NNLO PDF演化、结构函数计算和动态内存访问。
  • 通过支持C++原生调用QCDNUM例程,促进与xfitter和Alpos等现代工具的集成。

提出的方法

  • 将现有的FORTRAN子程序封装为名称相同但全小写、并置于QCDNUM命名空间中的C++函数,以避免命名冲突。
  • 将隐式FORTRAN类型声明转换为显式的C++变量声明,包括对整型和双精度类型的处理。
  • 通过索引偏移调整,将FORTRAN数组索引(1-based,反夸克使用负索引)映射为C++的0-based数组。
  • 实现二维数组映射函数k(i,j,n),将FORTRAN的A(n,m)数组转换为C++中的一维数组,以实现高效的内存访问。
  • 通过将函数参数作为指向C++函数的指针传递,处理函数指针,从而在演化例程中支持用户定义的PDF输入函数。
  • 使用autotools构建库,确保C++与FORTRAN之间互操作的正确链接和名称修饰支持。

实验结果

研究问题

  • RQ1如何有效地将高性能的基于FORTRAN的QCD演化程序暴露给现代C++ HEP应用程序?
  • RQ2在类型安全、内存管理与命名约定方面,接口遗留的FORTRAN代码与C++时面临哪些关键挑战?
  • RQ3C++接口是否能够在保持QCDNUM计算速度的同时,支持面向对象编程实践?
  • RQ4如何以稳健且可维护的方式正确处理FORTRAN与C++之间数组索引的差异?
  • RQ5使用autotools和命名空间封装对接口的可移植性和可用性有何影响?

主要发现

  • C++接口成功实现了从C++代码中直接调用QCDNUM的NNLO PDF演化和结构函数计算例程,具备完整的类型安全与模块化特性。
  • 通过重用原始FORTRAN代码库而无需重新实现,接口保持了QCDNUM的高性能,避免了性能下降。
  • 使用autotools确保了跨平台兼容性与正确链接,该接口自qcdnum发布17-01/14起可用。
  • 示例代码展示了在可变味数方案下,无极化PDF的准确演化,结果在x = 1e-3且μ² = 1000 GeV²时,顶夸克海夸克的值为1.8708。
  • 通过接口正确计算出强耦合常数αs(mZ²)为0.11807,确认了与底层FORTRAN实现的一致性。
  • 该接口支持关键功能,如网格设置、权重计算、LO、NLO和NNLO阶的演化,以及在任意x和μ²处对PDF进行插值。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。