小编use*_*035的帖子

17
推荐指数
3
解决办法
2万
查看次数

R Makevars文件覆盖R CMD的默认g ++选项?

我有这个独立的C++代码,我试图将其包装在R包中.

我的问题是我绝对希望它与-O3标志一起编译 .

所以在src/Makevars我放的文件中:

PKG_CPPFLAGS = -I../inst/include
PKG_CXXFLAGS = -O3  
CXX_STD = CXX11
Run Code Online (Sandbox Code Playgroud)

当我在我的机器上安装包装时,我看到:

g++ -std=c++0x -I/usr/share/R/include -DNDEBUG -I../inst/include -O3  -fpic  -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security -Werror=format-security -D_FORTIFY_SOURCE=2 -g -c mycppfunctions.cpp -o mycppfunctions.o
g++ -std=c++0x -shared -Wl,-Bsymbolic-functions -Wl,-z,relro -o mycppfunctions.so mycppfunctions.o -L/usr/lib/R/lib -lR
Run Code Online (Sandbox Code Playgroud)

(可怕的-O2旗帜出现在右边)

所以我的问题是:如何覆盖g++调用时使用的cpp标志R CMD

编辑:

最近,在另一个包中,我找到了一种方法来为F77代码(也在R包中)做类似的事情.基本上,通过将此添加到Makevars:

PKG_FFLAGS = $(FPICFLAGS) $(SHLIB_FFLAGS) 
all: $(SHLIB)
otherf77foo.o: otherf77foo.f
    $(F77) $(PGK_FFLAGS) -O3 -pipe -g -c -o otherf77foo.o otherf77foo.f …
Run Code Online (Sandbox Code Playgroud)

c++ makefile r g++

16
推荐指数
2
解决办法
8704
查看次数

如何使自定义数据类可订阅

考虑从包派生的这个数据类pydantic

from typing import List
from pydantic import BaseModel 
class Bucket(BaseModel):
    setting: List[str]
    fight_1: List[int]
    cause_1: List[str]
Run Code Online (Sandbox Code Playgroud)

my_bucket成为 的一个实例Bucket

my_bucket = Bucket(setting=['some_value'], fight_1=[0], cause_1=['other_value'])
Run Code Online (Sandbox Code Playgroud)

基本上我希望能够做到

my_bucket['setting']                                                                                                         
Run Code Online (Sandbox Code Playgroud)

然后返回['some_value'],但我得到:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-18-cacbdc1698e9> in <module>
----> 1 my_bucket['setting']

TypeError: 'Bucket' object is not subscriptable
Run Code Online (Sandbox Code Playgroud)

python-3.x pydantic

16
推荐指数
1
解决办法
1万
查看次数

多处理:仅使用物理内核?

我有一个foo消耗大量内存的功能,我希望并行运行几个实例.

假设我有一个带有4个物理内核的CPU,每个内核都有两个逻辑内核.

我的系统有足够的内存来容纳4个foo并行实例,但不是8个.而且,由于这8个内核中有4个是逻辑的,所以我也不希望使用所有8个内核可以提供超出使用4个物理内核的大量增益只要.

所以,我想运行foo在4个物理内核.换句话说,我想确保执行multiprocessing.Pool(4)(4是由于内存限制而在此计算机上可以容纳的函数的最大并发运行次数)将作业调度到四个物理内核(例如,不是两个物理核心及其两个逻辑后代的组合.

如何在python中做到这一点?

编辑:

我之前使用过代码示例,multiprocessing但我与库无关,所以为了避免混淆,我删除了它.

python linux parallel-processing python-multiprocessing

15
推荐指数
3
解决办法
9855
查看次数

在特征中写矩阵到文件?

我正在尝试使用Eigen库学习C++.

int main(){
    MatrixXf m = MatrixXf::Random(30,3);
    cout << "Here is the matrix m:\n" << m << endl;
    cout << "m" << endl <<  colm(m) << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

如何导出m到文本文件(我搜索过文档但没有找到写入功能)?

c++ eigen

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

在Linux中替代R的`memory.size()`?

Rmemory.size()仅仅是一个窗口.对于其他功能(例如windows()),帮助页面提供指向非Windows对应项的指针.但是因为memory.size()我找不到这样的指针.所以这是我的问题:是否有一个函数可以做同样memory.size()但在linux中?

linux memory r

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

按升序排序特征向量Xf

我正在尝试Eigen VectorXf x按升序排序.

这按降序排序:

std::sort(x.data(),x.data()+x.size());
Run Code Online (Sandbox Code Playgroud)

这不起作用:

bool myfunction (int i,int j) { return (i<j); }
std::sort(x.data(),x.data()+x.size(),myfunction);
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

c++ eigen

10
推荐指数
1
解决办法
9214
查看次数

用于计算排序数组的pariwise绝对和的中值的高效算法

我试图想出一个快速算法计算量b[i]= med |y_i+y_j|, 1<=j!=i<=n时,y_1,...,y_n已经排序(所以b[]是相同长度的向量y[]).我将假设所有元素y[]都是唯一的,并且n是偶数.

所以,下面的代码计算了b[i]天真的(O(n**2))方式:(为方便起见,我在R中写了这个,但我是语言不可知的)

n<-30
a_fast<-b_slow<-rep(NA,n)
y<-sort(rnorm(n,100,1))
z<-y
for(i in 1:n){
    b_slow[i]<-median(abs(y[-i]+y[i]))
}   
Run Code Online (Sandbox Code Playgroud)

我有一个暂定的建议 - 下面 - 为了做到这一点O(n).但只有y[]包含正数才有效.

我的问题是:当y[]包含正数和负数时,我应该如何更改快速算法?这甚至可能吗?

编辑:

以及(暂定)O(n)方式下面的代码(为方便起见,我在R中写了这个代码,但我是语言不可知的)

tryA<-floor(1+(n-1)/2+1)
tryB<-floor(1+(n-1)/2)
medA<-y[tryA]
medB<-y[tryB]
for(i in 1:(tryA-1)){
        a_fast[i]<-medA+y[i]
}
for(i in tryA:n){
        a_fast[i]<-medB+y[i]
}
Run Code Online (Sandbox Code Playgroud)

简单的例子:

简单,说明性的例子.如果我们有一个长度为4的向量

-3, -1, 2, 4
Run Code Online (Sandbox Code Playgroud)

然后,例如对于i = 1,3个绝对成对和是

  4 1 1
Run Code Online (Sandbox Code Playgroud)

他们的中位数是1.

然后,例如对于i = 2,3个绝对成对和是

  4 1 3
Run Code Online (Sandbox Code Playgroud)

他们的中位数是3.

这是一个有正面和负面的较长的例子y[] …

c c++ language-agnostic algorithm

9
推荐指数
1
解决办法
329
查看次数

git clone:我收到一个奇怪的身份验证错误

我是一个私人 github 仓库的管理员。从今天早上开始,当我尝试克隆该 repo 时,我得到:

git clone https://github.com/myblabla/blabla.git
Cloning into 'blabla'...
Missing or invalid credentials.
Error: connect ENOENT /run/user/1000/vscode-git-fa9d1b661a.sock
    at PipeConnectWrap.afterConnect [as oncomplete] (net.js:1056:14) {
  errno: 'ENOENT',
  code: 'ENOENT',

  syscall: 'connect',
  address: '/run/user/1000/vscode-git-fa9d1b661a.sock'
}
Missing or invalid credentials.
Error: connect ENOENT /run/user/1000/vscode-git-fa9d1b661a.sock
    at PipeConnectWrap.afterConnect [as oncomplete] (net.js:1056:14) {
  errno: 'ENOENT',
  code: 'ENOENT',
  syscall: 'connect',
  address: '/run/user/1000/vscode-git-fa9d1b661a.sock'
}
remote: Repository not found.
fatal: Authentication failed for 
Run Code Online (Sandbox Code Playgroud)

我以前从来没有过。有什么解决办法?

当我做:

ssh -T git@github.com
Run Code Online (Sandbox Code Playgroud)

我得到:

git@github.com: Permission denied (publickey).
Run Code Online (Sandbox Code Playgroud)

git github

8
推荐指数
2
解决办法
2954
查看次数

在特征中将矩阵的列设置为0

有点奇怪:

我正在尝试将矩阵的整行设置为0,并且eigen中的四个明显构造都不会编译:

//U is a p by p matrix. I wanna set its last column to 0.0f
U=solved.eigenvectors();   

U.row(p-1).array()=0;              //don't compile
U.row(p-1).setZero(1,p);           //don't compile
U.row(p-1).array().setZero(p);     //don't compile
U.bottomRows(1).setZero(p);        //don't compile
Run Code Online (Sandbox Code Playgroud)

我还尝试了这些主题的其他变体,但都没有通过编译器

c++ eigen

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