小编gve*_*yon的帖子

在C++函数中,Rcpp对象如何传递给其他函数(通过引用或通过复制)?

我刚刚用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对象是通过引用或深拷贝的功能传递ABCfun2ABCfun3?我已经看到'const List&x'的用法,它告诉我可以使用指针传递Rcpp对象,但问题是我需要这个列表是可变的(并且没有常量),无论如何要改进它吗?我担心这个x List的迭代拷贝可能会减慢我的代码速度.

PS:我还是C++的新手,而且我正在使用Rcpp来学习C++.

performance pointers r rcpp

12
推荐指数
2
解决办法
4100
查看次数

使用igraph导入加权边缘列表

我有以下txt文件表示边缘列表格式的网络.

前两列代表通常的:哪个节点连接到哪个其他节点

第三列表示权重,表示每个节点与另一个节点联系的次数.

我搜索了igraph文档,但没有提到在导入标准文件格式(如txt)时如何包含权重参数.

可以从这里访问该文件,这是我一直在使用的代码:

read.graph("Irvine/OClinks_w.txt", format="edgelist")
Run Code Online (Sandbox Code Playgroud)

此代码将第三列视为除权重之外的其他内容.

有谁知道解决方案?

python r igraph edge-list

11
推荐指数
1
解决办法
8034
查看次数

如何使用 Slurm 获得交互式会话?

我找到了对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)

slurm

5
推荐指数
1
解决办法
8263
查看次数

标签 统计

r ×2

edge-list ×1

igraph ×1

performance ×1

pointers ×1

python ×1

rcpp ×1

slurm ×1