我想在我的Kubernetes集群上运行MPI作业.上下文是我实际上运行的是一个现代的,包装良好的容器化应用程序,但部分工作量是一个传统的MPI工作,不会很快重写,我想把它变成一个kubernetes"世界观"尽可能地.
最初的一个问题:是否有人在kube集群上运行MPI作业有任何成功?我见过Christian Kniep的工作是让MPI工作在Docker容器中运行,但是他正在沿着docker swarm路径(使用每个容器中运行的consul发现同行)并且我想坚持kubernetes(已经知道了所有同行)并从外部将此信息注入容器中.我完全可以控制应用程序的所有部分,例如,我可以选择使用哪个MPI实现.
关于如何继续,我有几个想法:
包含slurm和应用程序代码的胖容器 - >在容器启动时使用适当的信息填充slurm.conf - >使用srun作为容器入口点来启动作业
仅使用OpenMPI(无淤泥)的更轻薄的容器 - >使用外部信息(由kubernetes提供)在容器中填充rankfile - >使用mpirun作为容器入口点
更简洁的方法,我基本上通过设置一些环境变量(例如OpenMPI ORTE)来"伪造"MPI运行时 - >直接运行mpicc'd二进制文件(通过env vars可以找到它的同行) )
一些其他选择
绝望地放弃
我知道尝试将"已建立"的工作流程(如MPI)与kubernetes和容器的"新热点"混合起来有点阻抗不匹配,但我只是在寻找指针/陷阱之前我走得太远了.如果什么都不存在,我很乐意破解一些东西并将其推回上游.
我正在用cmake构建一个跨平台的库,它有一些(非常常见的)依赖项,例如PCRE.这些代表可以通过常用的包管理器(Ubuntu/Debian上的APT,OSX上的Homebrew)以及Windows上的NuGet获得.在我CMakeLists.txt,我使用"模块"版本find_pacakge来定位这些代表并设置正确的包含/库标志.
这个问题提供了一种集成cmake + nuget的方法,但也暗示cmake和NuGet不太可能在一起玩得很好,我似乎无法找到find_package找到已安装的deps的方法.有没有办法让cmake读取nuget配置文件(ala的方式pkg_check_modules适用于系统pkg-config)并从那里填充适当的cmake变量?或者我必须手动推出自己的解决方案FindPCRE.cmake?
我正在尝试在Emacs中实现一个键盘记录器(为了我自己的,非邪恶的目的).
看来,我可以可靠地通过拍摄的最后一个命令real-last-command的pre-command-hook
所以,我可以这样做:
(setq keylog-list nil)
(defun my-keylogger-function ()
(setq keylog-list (cons real-last-command keylog-list)))
(add-hook 'pre-command-hook 'my-keylogger-function)
Run Code Online (Sandbox Code Playgroud)
经过一些运动命令后,我们得到了
keylog-list's value is
(describe-variable left-char left-char previous-line previous-line left-char eval-last-sexp)
Run Code Online (Sandbox Code Playgroud)
但是,我也有兴趣捕获这些命令的参数(例如,参数left-char,默认情况下,1如果使用前缀参数,可能会有所不同).
有没有办法访问args?有点像real-last-command-arglist?
我正在尝试根据分组因子计算"滚动"摘要统计数据.有没有一种很好的方法来处理(重叠)基于(比如说)有序因子?
举个例子,假设我想val按组计算总和
df <- data.frame(grp = c("a", "a", "b", "b", "c", "c", "c"),
val = rnorm(7))
Run Code Online (Sandbox Code Playgroud)
对于基于的群组grp,很容易:
df %>% group_by(grp) %>% summarise(total = sum(val))
# result:
grp total
1 a 1.6388
2 b 0.7421
3 c 1.1707
Run Code Online (Sandbox Code Playgroud)
但是,我想要做的是计算连续组的"滚动"总和("a"和"b",然后"b"和"c"等).期望的输出将是这样的:
grp1 grp2 total
1 a b 1.6388
2 b c 0.7421
Run Code Online (Sandbox Code Playgroud)
我在dplyr中无法做到这一点.特别是,我似乎无法弄清楚如何得到"重叠"的群体-在上面的例子中的"B"行应该在结束2个输出组.
有时,如果我在 ashell或oneshell缓冲区中工作ansi-color-for-comint-mode,并运行一个提供彩色输出的程序,然后在打印彩色文本时崩溃,则颜色会“卡住”,并且该缓冲区中的所有后续文本都是该颜色。我能够修复它的唯一方法是关闭ansi-color-for-comint-mode或终止 shell 缓冲区。
有没有更好的方法来告诉 comint 派生的 shell 缓冲区“重置”ansi 颜色代码?