小编Pie*_*oid的帖子

在存在递归绑定器的情况下,单独出现PHOAS变量的正面和负面事件

参数高阶抽象语法(PHOAS)中的结构化图形编码

我在读纸通过奥利韦拉和Cook"与结构化图形函数式编程"(幻灯片, 纸草案.)提出一种优雅的解决方案来编码在使用递归绑定在PHOAS图状结构共享和周期.

AST(流程示例)

例如,具有后沿的流可以编码为:

-- 'x' is the element type, 'b' is the PHOAS's abstract variable:
data PS0 x b = Var0 b
             | Mu0 (b -> PS0 x b) -- recursive binder
             | Cons0 x  (PS0 x b)
-- Closed terms:
newtype Stream0 x = Stream0 { runS0 :: forall b. PS0 x b }

-- Example : [0, 1, 2, 1, 2, 1, 2, ...
exPS0 = Stream0 $ Cons0 0 (Mu0 $ \x …
Run Code Online (Sandbox Code Playgroud)

dsl haskell graph abstract-syntax-tree

7
推荐指数
1
解决办法
441
查看次数

与aio_context关联的资源

Linux的异步文件IO(AIO)的语义在io_setup(2),io_submit(2)io_getevents(2)的手册页中有详细描述.

但是,如果没有在块IO子系统中潜水,实施的操作方面就不那么清楚了.aio_context分配一个队列,用于将io_events发送回用户空间中的特定客户端.但还有更多吗?

  • 让一个文件按块顺序读取块.是否可以整理请求,尤其是直接IO(DIO)中的请求?如果两个文件的请求交错到一个aio_context怎么办?如果将一个文件的请求发送到两个不同的aio_contexts怎么办?
  • 在上述情况下如何优先处理和安排请求,具有一个或多个aio_contexts?
  • 来自两个aio_contexts的请求是否可能在某个时刻交错?(偶尔会出现超出预期的延迟.)
  • 调用io_submit的线程或CPU会影响它的调度方式吗?是否考虑了包含目标缓冲区的NUMA节点?

更广泛地说,应该为哪些硬件资源(NUMA节点,CPU核心,物理驱动器,文件系统和文件)分配aio_contexts,以及粒度级别?

也许它并不重要,aio_contexts只不过是用户空间程序的抽象.我问,因为我在同时读取多个文件时观察到性能下降,每个文件都有自己的aio_context,而手动循环序列化块请求到单个aio_context.

c linux multithreading asynchronous aio

7
推荐指数
1
解决办法
161
查看次数

子项目的CMake覆盖策略

我的CMake项目编译了一个与大型静态库链接的Python .so / .dylib扩展模块。我想用对符号隐藏的可见性来编译子项目的静态库:它将允许链接器(或LTO优化器)丢弃我的python模块未使用的符号。

最好的方法是CXX_VISIBILITY_PRESET在子项目的静态库目标上使用和朋友。但是,子项目使用3.1.0版中的策略,方法是声明:

cmake_minimum_required (VERSION 3.1.0)
Run Code Online (Sandbox Code Playgroud)

该策略CMP0063 NEW: Honor visibility properties for all target types.仅从版本3.3开始引入,因此set_target_properties不起作用。

我的项目需要CMake 3.3,但是我无法控制子项目。

我想避免打补丁子项目CMakeLists.txt,但目前看不到其他方法。

任何的想法 ?

c++ python visibility cmake

2
推荐指数
1
解决办法
621
查看次数