问题标签 [offloading]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
cloud - 雾计算环境下卸载决策与任务调度的区别
在雾计算的上下文中,计算卸载决策决定在云上或雾上卸载或在本地执行它。而任务调度也决定了在雾或云上执行任务的位置。那么这两者有什么区别呢?
fortran - 声明所有 Fortran 模块变量以 OpenMP 4.5+ 为目标
我有一个fortran90 代码,它使用化学物种特性(即分子量、粘度等)进行计算。
为了轻松地交换化学物质组,我们保留将所有相关数据存储在一维数组中的模块文件。即我们有 4 个物种,粘度数组有 4 个元素长,每个物种一个条目,依此类推。
需要这些数据的相关子程序可以在use
这个模块中,化学数据根据需要提供。
我们已经使用 openMP 4.5 将大部分代码移植到 GPU 卸载,并在移植这些化学计算时进行。
我想做的只是将整个模块放在 GPU 上,以便use
这些模块变量的任何子例程都可以在目标设备上访问它们。
我最初的想法是!$omp declare target
像我们做函数或其他子例程一样只使用模块,但这似乎并没有被编译器接受。
我真的必须!$omp declare target(variable_x, y,z,a,b,c......)
为整个模块吗?
如果我这样做,那么这些变量的范围是什么?即使子例程没有use
模块,它们现在是否可以访问设备上的所有内容?或者编译器是否足够聪明,可以将它们保持在使用它们的子例程的模块范围内?
use
最后,当我只是在子例程中创建目标区域时,是否需要对作为这些模块的子例程执行任何特殊操作?例如:
谢谢参观!
networking - linux网络加速,硬件卸载
我在Linux内核中学习网络硬件加速很长时间了,但仍然有几个问题让我非常非常困惑。在深入检查内核中的源代码后,一直让我感到困惑的是:
1. 分不清Flow offload、Flow offload、Flowtable offload、Flowtable HW offload。
2.Flower offload和Flow offload有什么关系?在驱动程序实现(kenerl 版本 5.4)中,总是同时存在 TC_SETUP_BLOCK 和 TC_SETUP_CLSFLOWER。据我所知,TC_SETUP_CLSFLOWER 表示 TC 花卸载。TC_SETUP_BLOCK 是否意味着流量卸载?如果是这样,什么是流量卸载?是netfilter卸载吗?
3.flowtable offload是指内核中软件实现包处理的快速路径,flowtable HW offload是硬件实现的快速路径吗?
任何人都可以帮忙吗?非常感谢。
fortran - 在编译时使用未知大小的私有数组卸载 OpenMP
我正在尝试使用 OpenMP、XL 编译器套件卸载 fortran 中的几个嵌套 for 循环。90% 的例程是直截了当的,但少数循环涉及私有一维数组,这些数组在编译时大小未知,但总是在 ~O(10) 上,这在线程堆栈内存方面非常易于管理。这是一个示例循环
使用这种标准方法,我会遇到很多内存问题,在“内存不足错误”和“遇到非法内存访问”之间变化
如果我进去硬编码,我知道 nseq 的值将提前,即
然后我完全没有问题,所以我实际上并没有在 GPU 上耗尽内存。这显然是不好的做法,因为这些值会因情况而异,并且是运行时参数。
我已经尝试过诸如 OMP_HEAPSIZE 和 OMP_STACKSIZE 之类的 ENV 变量,但没有成功。
谢谢参观!
intel - Intel Advisor beta 卸载分析:没有执行计数
我正在尝试使用 Intel oneAPI advisor beta 进行 GPU 卸载分析(通过analyze.py
和collect.py
)。我有所有非卸载区域都显示的问题Cannot be modelled: No Execution Count
。
此外,我收到警告
我已经尝试过此处和此处描述的故障排除。此外,我尝试使用运行时间更大的程序。
我用编译器标志编译(根据this)(注意调试信息已打开):
我正在将Intel(R) Advisor 2021.1 beta07 (build 606302)和Intel(R) C Intel(R) 64 Compiler 用于在 Intel(R) 64, Version 2021.1 Beta Build 202006 上运行的应用程序。该程序使用 OpenMP。
我能做些什么来解决这个问题?
gcc - Gcc 卸载编译选项
我正在尝试使用 Ubuntu 18.04 上的 gcc-10、CUDA 11 和此 CMakeLists.txt 文件(或 OpenMP 版本)构建最简单的 OpenMP 或 OpenACC C++ 程序,并使用 GPU 卸载:
构建失败:
我怀疑缺少定义 GPU 架构的标志,但我找不到相关文档。GCC 中的卸载支持:编译选项没有 Nvidia 示例,当我尝试我的最佳猜测时-foffload="-arch=sm_75"
,-foffload=nvidia-"-arch=sm_75"
我得到:
任何线索或相关链接将不胜感激。
c++ - 我是否必须在 Ubuntu 18.04 上从源代码构建 clang-11 才能卸载 OpenMP GPU 目标?
我在 Ubuntu 18.04 上clang-11
从https://apt.llvm.org/安装,并且我的 C++ 测试项目中有 OpenMP 主机设备功能,但即使我有 Nvidia GPU 和工作 CUDA 11 工具包,也会omp_get_num_devices()
返回。0
我是否必须从源代码构建特殊版本的 Clang 才能使 OpenMP GPU 卸载工作,如此处所述:https ://hpc-wiki.info/hpc/Building_LLVM/Clang_with_OpenMP_Offloading_to_NVIDIA_GPUs ?
hash - DPDK - RSS 卸载(哈希计算):ETH_RSS_IPV6_EX - 解释
所以我目前正在研究如何在 DPDK(数据平面开发工具包)中接收侧缩放 (RSS) 卸载工作。所以基本上根据我的理解,根据您选择的卸载,它计算一个哈希值并使用它来将您的数据包放置在一个特定的队列上进行处理,该队列绑定到一个特定的 CPU 核心。
所以我有两个关于这个的查询:
当我使用 RSS 卸载时
**ETH_RSS_IPV6_EX**
,我无法获得零以外的哈希值,这意味着根据选择的 RSS 卸载,数据包被认为是无效的,即使我的 Mellanox 卡支持这种卸载。我已经发送了以下 Scapy 数据包,但哈希值仍然为 0:sendp(Ether(dst="AA:AA:BB:BB:CC:DD")/IPv6(dst="a:a:a:a:a:a:a:b",src="a:a:a:a:a:a:a:c",nh=60)/IPv6ExtHdrDestOpt(nh=43,options=HAO(hoa="a:a:a:a:a:a:a:d"))/IPv6ExtHdrRouting(nh=59,type=2,addresses=["a:a:a:a:a:a:a:e"]),iface="enp4s0f0",count=1)
。(关于要操作的数据包,我从https://docs.microsoft.com/en-us/windows-hardware/drivers/network/rss-hashing-types#ndis_hash_ipv6_ex获得了这个资源,但我相信两者之间可能存在差异这些 RSS 卸载和 DPDK 拥有的那些。)这个EX术语在 RSS 卸载中是什么意思。除此之外,有人可以指出一个资源来解释 DPDK 中的 RSS 卸载,一次一个,其中一些如下(如果您了解这些,提供其中的一个笑话也可以有帮助):
请随时进行任何澄清或详细说明。
提前致谢。
Edit_1(回应 Vipin 的评论):
我在这个结构中启用 RSS (ETH_RSS_IPV6_EX):
静态结构 rte_eth_conf port_conf = { .rxmode = { .mq_mode = ETH_MQ_RX_RSS, .max_rx_pkt_len = RTE_ETHER_MAX_LEN, .split_hdr_size = 0, .offloads = DEV_RX_OFFLOAD_CHECKSUM, }, .rx_adv_conf = { .rss_conf = { .rss_h, rss_key = ETH_NULL,IP //ETH_RSS_IP //Orignal, //AU: 改变哈希应用 }, }, .txmode = { .mq_mode = ETH_MQ_TX_NONE, }, };
我使用的 DPDK 版本是 20.08。
使用的 NIC 是 Mellanox ConnectX-5
我使用 DPDK l3fwd 应用程序作为基础并在其上进行测试。
c++ - 动态库中的 OpenMP 卸载无法编译
我想用 OpenMP 卸载编译 C 代码并创建一个动态库 libtest.so
。当我使用以下命令时:
我收到此错误:
GCC 版本是 10.2.0。我不确定我在这里做错了什么,因为-fPIC
它包含在命令中。我想知道是否有可能做我想做的事?
我的test.c
来源只是检查卸载是否有效:
c++ - GCC 无法编译 OpenMP 卸载到 GPU
我在 Ubuntu 20.04 上使用 GCC 9.3。我想使用 OpenMP 将著名的 SAXPY 示例卸载到 GPU。我安装了 GCC 的卸载功能sudo apt install gcc-9-offload-nvptx
。然后编译以下代码g++ -fopenmp main.cpp
:
但它没有编译并显示此错误:
我添加了-fno-stack-protector
但同样的错误被重现。