我刚刚用Rcpp编写了一个新版本的ABCoptim包.大约30倍的加速,我对新版本的性能(与旧版本)非常满意,但我仍然有一些担心,如果我有空间来提高性能而不需要修改太多的代码.
在ABCoptim的主要功能(用C++编写)中,我传递一个包含"蜜蜂位置"(NumericMatrix)的Rcpp :: List对象和一些带有算法本身重要信息的NumericVectors.我的问题是,当我将Rcpp :: List对象传递给其他函数时,例如
#include <Rcpp.h>
using namespace Rcpp;
List ABCinit([some input]){[some code here]};
void ABCfun2(List x){[some code here]};
void ABCfun3(List x){[some code here]};
List ABCmain([some input])
{
List x = ABCinit([some input]);
while ([some statement])
{
ABCfun2(x);
ABCfun3(x);
}
...
return List::create(x["results"]);
}
Run Code Online (Sandbox Code Playgroud)
Rcpp在while循环中做了什么?请问x对象是通过引用或深拷贝的功能传递ABCfun2和ABCfun3?我已经看到'const List&x'的用法,它告诉我可以使用指针传递Rcpp对象,但问题是我需要这个列表是可变的(并且没有常量),无论如何要改进它吗?我担心这个x List的迭代拷贝可能会减慢我的代码速度.
PS:我还是C++的新手,而且我正在使用Rcpp来学习C++.
我有以下txt文件表示边缘列表格式的网络.
前两列代表通常的:哪个节点连接到哪个其他节点
第三列表示权重,表示每个节点与另一个节点联系的次数.
我搜索了igraph文档,但没有提到在导入标准文件格式(如txt)时如何包含权重参数.
可以从这里访问该文件,这是我一直在使用的代码:
read.graph("Irvine/OClinks_w.txt", format="edgelist")
Run Code Online (Sandbox Code Playgroud)
此代码将第三列视为除权重之外的其他内容.
有谁知道解决方案?
我找到了对srun --pty bash -i(请参阅https://slurm.schedmd.com/faq.html#prompt)的引用,但是当我在集群上运行它时,它会立即退出。
$ srun --pty bash -i
$ squeue
JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON)
1 team bash schmmd R 0:02 1 team-server1
Run Code Online (Sandbox Code Playgroud)
我可以通过 获得交互式会话srun bash,但我没有 shell 提示符(例如$),并且我的会话如下所示:
$ srun bash
ls
miniconda3
Miniconda3-latest-Linux-x86_64.sh
test
Run Code Online (Sandbox Code Playgroud)
我的安装是否配置错误,或者我应该运行不同的命令?
$ srun --version
slurm 19.05.0
Run Code Online (Sandbox Code Playgroud)