小编Elv*_*vis的帖子

多线程向量和的可伸缩性

这是一个用于多线程向量和的C++ 11代码.

#include <thread>

template<typename ITER>
void sum_partial(ITER a, ITER b, double & result) {
  result = std::accumulate(a, b, 0.0);
}

template<typename ITER>
double sum(ITER begin, ITER end, unsigned int nb_threads) {
  size_t len = std::distance(begin, end);
  size_t size = len/nb_threads;

  std::vector<std::thread> thr(nb_threads-1);
  std::vector<double> r(nb_threads);
  size_t be = 0;
  for(size_t i = 0; i < nb_threads-1; i++) {
    size_t en = be + size;
    thr[i] = std::thread(sum_partial<ITER>, begin + be, begin + en, std::ref(r[i]));
    be = en;
  }
  sum_partial(begin + …
Run Code Online (Sandbox Code Playgroud)

c++ multithreading scalability

6
推荐指数
1
解决办法
242
查看次数

连接内存(R)

我必须反复序列化(大)R对象.为了避免重复垃圾收集生成的原始向量(在分析之后,事实证明我的脚本运行时间的一半花费在gc!)我想让R直接写入内存缓冲区 - 总是相同的,如同在每次序列化之后,我会调用一个C函数,.C它可以直接在这个内存缓冲区上工作; 这个C函数的结果让我感兴趣.

那可能吗?这有多不合理?

提前致谢.

connection r

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

RcppArmadillo和RcppParallel的同居

下面的玩具示例parallelFor工作正常(f2是并行版本f1):

// [[Rcpp::depends(RcppParallel)]]
// [[Rcpp::depends(RcppArmadillo)]]
#include <RcppArmadillo.h>
#include <RcppParallel.h>
#include <iostream>
#define vector NumericVector

using namespace Rcpp;
using namespace RcppParallel;


// compute values i/i+1 for i = 0 to n-1
// [[Rcpp::export]]
vector f1(int n) {
  vector x(n);
  for(int i = 0; i < n; i++) x[i] = (double) i/ (i+1);
  return x;
}

struct mytry : public Worker {
  vector output;

  mytry(vector out) : output(out) {}

  void operator()(std::size_t begin, std::size_t end) {
    for(int …
Run Code Online (Sandbox Code Playgroud)

rcpp

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

"翻译可读"打印(在R中)

我想知道是否有一种方法以"解释器可读"的方式打印对象,这将做类似这样的事情:

> x <- c(1:5,8)
> print.ir(x)
 c(1,2,3,4,5,8)
> x <- matrix(1:4, ncol=2)
> print.ir(x)
 matrix(c(1,2,3,4), ncol=2, nrow=2)
Run Code Online (Sandbox Code Playgroud)

这样结果可以在R脚本或另一个R会话中进行复制粘贴.

printing r

4
推荐指数
1
解决办法
57
查看次数

标签 统计

r ×2

c++ ×1

connection ×1

multithreading ×1

printing ×1

rcpp ×1

scalability ×1