以数据为中心的并行程序设计框架

dace的Python项目详细描述


Dace-以数据为中心的并行编程

将域科学与性能优化分离。

dace以各种编程语言和范例(python/numpy、matlab、tensorflow)编译代码,并高效地将其映射到cpu、gpu和fpgas,具有很高的利用率,与最新技术不相上下。驱动dace的关键特性是它的有状态数据流多图(sdfg)以数据为中心的中间表示:一种基于数据移动的可转换的交互式代码表示。 通过以数据为中心的并行编程,我们可以实现性能优化的直接知识转移,而不管是科学应用程序还是目标处理器。

dace可以在python中内联编写并在命令行中转换,或者sdfgs可以使用以数据为中心的交互式优化开发环境(diode)进行交互式修改。

有关更多信息,请参见我们的paper

教程

安装和依赖项

要安装:pip install dace

运行时依赖项:

  • 一个C++ 14编译器(例如,GCC 5.3 +)
  • python 3.5或更新版本

运行二极管可能需要其他依赖项:

  • sudo apt-get install libgtksourceviewmm-3.0-dev libyaml-dev
  • sudo apt-get install python3-cairo python3-gi-cairo libgirepository1.0-dev xdot libwebkitgtk-dev libwebkitgtk-3.0-dev libwebkit2gtk-4.0-dev
  • pip install pygobject matplotlib

要在Windows上运行二极管,请使用msys2:

  • http://www.msys2.org/
  • 下载
  • 在msys2控制台中,安装所有依赖项:pacman -S mingw-w64-i686-gtk3 mingw-w64-i686-python2-gobject mingw-w64-i686-python3-gobject mingw-w64-i686-python3-cairo mingw-w64-i686-python3-pip mingw-w64-i686-gtksourceviewmm3 mingw-w64-i686-gcc mingw-w64-i686-boost mingw-w64-i686-python3-numpy mingw-w64-i686-python3-scipy mingw-w64-i686-python3-matplotlib
  • 更新msys2:pacman -Syu,关闭并重新启动msys2,然后运行pacman -Su来更新其余的包。

出版物

如果您使用DACE,请引用我们:

@article{dace,author={Ben-Nun, Tal and de Fine Licht, Johannes and Ziogas, Alexandros Nikolaos and Schneider, Timo and Hoefler, Torsten},title={Stateful Dataflow Multigraphs: A Data-Centric Model for High-Performance Parallel Programs},journal={CoRR},volume={abs/1902.10345},year={2019},url={http://arxiv.org/abs/1902.10345},archivePrefix={arXiv},eprint={1902.10345}}

配置

dace在用户的主目录中创建一个名为.dace.conf的文件。它提供了有用的设置,可以直接在文件(yaml)、二极管内修改,也可以使用以DACE_开头的环境变量逐个重写,并指定设置(其中类别由下划线分隔)。完整配置架构位于here

有用的环境变量配置包括:

  • DACE_CONFIG(默认值:~/.dace.conf):重写DACE配置文件选择。

上下文配置:

  • DACE_use_cache(默认值:false):使用DACE程序缓存,而不是重新优化和编译程序。
  • DACE_debugprint(默认值:true):打印调试信息。

CPU目标配置:

  • { }(默认值:g++):为CPU代码选择默认的C++编译器。
  • DACE_compiler_cpu_additional_args(默认值:none):其他编译器标志(用空格分隔)。

SDFG处理:

  • DACE_optimizer_interface(默认值:dace.transformation.optimizer.SDFGOptimizer):控制sdfg优化过程。如果空名称或类名无效,则跳过进程。默认情况下,使用转换命令行界面。
  • DACE_optimizer_visualize(默认值:false):通过在每次模式替换后保存.dot(graphviz)文件来可视化优化过程。

分析:

  • DACE_profiling(默认值:false):以毫秒为单位启用DACE程序运行时的分析度量。生成日志文件并打印出中值运行时。
  • DACE_treps(默认值:100):启用分析时运行dace程序的重复次数。

贡献

DACE是一个开源项目。我们很高兴接受你的贡献拉请求!

许可证

DACE是在新的BSD许可证下发布的,请参阅许可证。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
ArrayList Java中的搜索字符串   另一个web应用程序的java访问会话   另一个应用程序中的活动和服务之间的java通信   java根据Json字符串类型将Json字符串转换为对象   eclipse如何解决java中的错误异常。lang.NoSuchMethodError:'java。字符串javax。摆动JOptionPane。showInputDialog(java.lang.String)'   线程“main”java中的安卓异常。lang.NoClassDefFoundError:org/codehaus/jackson/JsonParseException   java如何在安卓 emulator上显示Mat图像?使用NDK   Java在本地读取测试源文件,但在服务器上读取失败   java dowhile循环用于计算输入数字中的数字。故障排除代码   JAva初学者在编写获取成本的方法时遇到困难   java是shell游戏。我如何让物体移动,特别是在特定的曲线上,但顺序是随机的?   java如何区分两个同名的JButton   java为什么我在Spring Boot中需要一个接口?   java将文件路径插入数据库将删除\   使用InterfaceType初始化java对象   java如何部署一个分为Angular、Spring Boot和MySQL的项目?   java如何使用Symja解决不等式?