小编jan*_*cki的帖子

与SSE并行的前缀(累计)总和

我正在寻找有关如何与SSE进行并行前缀和的一些建议.我有兴趣在一系列整数,浮点数或双精度数上执行此操作.

我想出了两个解决方案.一个特例和一般情况.在这两种情况下,解决方案在与OpenMP并行的两次传递中在阵列上运行.对于特殊情况,我在两次传球时使用SSE.对于一般情况,我只在第二遍使用它.

我的主要问题是如何在一般案例的第一遍中使用SSE? 以下链接simd-prefix-sum-on-intel-cpu显示字节的改进,但不是32位数据类型.

特殊情况称为特殊情况的原因是它要求数组采用特殊格式.例如,假设a浮点数组中只有16个元素.然后,如果数组像这样重新排列(结构数组结构):

a[0] a[1] ...a[15] -> a[0] a[4] a[8] a[12] a[1] a[5] a[9] a[13]...a[3] a[7] a[11] a[15]
Run Code Online (Sandbox Code Playgroud)

SSE垂直总和可用于两个通道.但是,只有当数组已经采用特殊格式并且输出可以以特殊格式使用时,这才有效.否则,必须在输入和输出上进行昂贵的重新排列,这将使其比一般情况慢得多.

也许我应该考虑一个不同的前缀和算法(例如二叉树)?

一般情况的代码:

void prefix_sum_omp_sse(double a[], double s[], int n) {
    double *suma;
    #pragma omp parallel
    {
        const int ithread = omp_get_thread_num();
        const int nthreads = omp_get_num_threads();
        #pragma omp single
        {
            suma = new double[nthreads + 1];
            suma[0] = 0;
        }
        double sum = 0;
        #pragma omp for schedule(static) nowait //first parallel pass
        for (int i …
Run Code Online (Sandbox Code Playgroud)

c sse sum openmp

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

R中另一个变量的滚动和

我希望通过ID获得7天的滚动金额.假设我的数据如下所示:

data<-as.data.frame(matrix(NA,42,3))
data$V1<-seq(as.Date("2014-05-01"),as.Date("2014-09-01"),by=3)
data$V2<-rep(1:6,7)
data$V3<-rep(c(1,2),21)
colnames(data)<-c("Date","USD","ID")

         Date USD ID
1  2014-05-01   1  1
2  2014-05-04   2  2
3  2014-05-07   3  1
4  2014-05-10   4  2
5  2014-05-13   5  1
6  2014-05-16   6  2
7  2014-05-19   1  1
8  2014-05-22   2  2
9  2014-05-25   3  1
10 2014-05-28   4  2
Run Code Online (Sandbox Code Playgroud)

如何添加一个新列,其中包含按ID划分的7天滚动总和?

r xts data.table

9
推荐指数
3
解决办法
4386
查看次数

取消列出data.table中的嵌套列表列

取消列出data.table中的嵌套列表列.假设所有列表元素都是相同的类型.列表元素已命名,名称也必须处理.
它在某种程度上与data.table聚合到列表列的操作相反.
我认为值得在SO 知识库中使用它.
我目前的解决方法方法如下,我正在寻找更多的规范答案.

library(data.table)
dt <- data.table(
    a = letters[1:3], 
    l = list(list(c1=6L, c2=4L), list(x=2L, y=4L, z=3L), list())
)
dt[]
#    a      l
# 1: a <list>
# 2: b <list>
# 3: c <list>
dt[,.(a = rep(a,length(l)),
      nm = names(unlist(l)),
      ul = unlist(l)),
   .(id = seq_along(a))
   ][, id := NULL
     ][]
#    a nm ul
# 1: a c1  6
# 2: a c2  4
# 3: b  x  2
# 4: b  y …
Run Code Online (Sandbox Code Playgroud)

r data.table

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

将 R 诊断消息发送到 stdout 而不是 stderr

寻找一个选项,让我将 R 诊断消息(由 产生message())重定向到stdout,而不是stderr默认情况下。

message 手册指出:

默认处理程序将消息发送到 stderr() 连接。

所以问题是我怎样才能改变这个默认行为?仍然保持重定向warning()stop()完好无损。

已经尝试过 sinktype='message'但它重定向了所有(消息、警告、错误)。

如果有人愿意测试,这是示例脚本exec_test.R

print("using print")
cat("using cat\n")
message("using message")
warning("using warning")
stop("using stop")
q("no")
Run Code Online (Sandbox Code Playgroud)

然后将通过以下方式执行:

Rscript exec_test.R 1>> exec_test.Rout 2>> exec_test_error.Rout

我不知道要使用什么,2>&1因为我的脚本会产生大量的messages 并且很少产生真正的错误,所以我需要将这些日志存储在单独的文件中。

message r stdout stderr

8
推荐指数
3
解决办法
4400
查看次数

从便携式二进制文件运行impala集群

我正在评估多个大数据工具.其中一个当然是Impala.
我想通过手动启动集群节点上的进程来启动Impala集群.正如我目前正在为Spark,H2O,Presto和Dask做的那样,我想抓住二进制文件,复制到节点,编辑配置,并从shell启动节点上的服务.这非常有效,升级很简单,我可以在需要时轻松移动到更大/不同的集群.不幸的是,我找不到从shell启动所需服务(Catalog Server,StateStore和daemon)的正确方法的资源.
我认为这是明显的任务但是找不到合适的例子,所以我的问题是如何从shell调用Impala二进制文件启动Impala集群?

bigdata impala cloudera-cdh

8
推荐指数
1
解决办法
165
查看次数

Spark未使用所有已配置的内存

使用Spark-2.1.0-SNAPSHOT在10个节点集群上以独立客户端模式启动spark.
9个节点是工人,第10个是主人和司机.每个256GB的内存.我很难充分利用我的集群.

我使用以下参数为spark-shell设置执行程序和驱动程序的内存限制为200GB:

spark-shell --executor-memory 200g --driver-memory 200g --conf spark.driver.maxResultSize=200g
Run Code Online (Sandbox Code Playgroud)

当我的应用程序启动时,我可以在控制台和spark web UI /environment/选项卡中看到这些值按预期设置.
但是当我去/executors/tab时,我发现我的节点只分配了114.3GB的存储空间,请看下面的屏幕.

在此输入图像描述

这里显示的总内存是1.1TB,而我预计会有2TB.我仔细检查了其他进程没有使用内存.
不知道这种差异的根源是什么?我错过了一些设置吗?这是/executors/标签或火花引擎中的错误吗?

scala bigdata apache-spark

8
推荐指数
1
解决办法
1444
查看次数

如何原生阅读羽毛文件?

我有羽毛格式文件sales.fea,我用它来交换python和R 之间的数据.

在RI中使用以下命令:

df = as.data.frame(feather::read_feather("sales.fea"))
Run Code Online (Sandbox Code Playgroud)

在python我用过:

df = feather.read_dataframe("sales.fea")
Run Code Online (Sandbox Code Playgroud)

将数据从该文件加载到内存到Spark实例的最快/最佳方法是什么pyspark

我不想使用pandas来加载数据,因为它是我的19GB羽毛文件的段错误,由45GB csv创建.

我的想法是,Spark是如此时髦,也是羽毛,我希望有一些更本土化的方式,而不是通过次高效的临时解决方案.

apache-spark pyspark feather pyarrow

8
推荐指数
1
解决办法
891
查看次数

来自剪贴板的R data.table fread

我想创建一个接口excel-R :: data.table.我想问一下如何在剪贴板中使用fread功能.以下代码运行良好,但我更喜欢使用fread而不是read.table(重现复制excel文件中的某些表并在R中运行上面的命令):

data.table(read.table("clipboard",sep="\t",header=TRUE))
Run Code Online (Sandbox Code Playgroud)

我尝试声明连接到剪贴板,但到目前为止无法使其工作.另外正如fread函数文档中所述,它会发生变化,有些东西可能会被弃用,因此有一个不会在不久的将来被弃用的解决方案可能会很好.剪贴板/ fread有限制吗?像65000行,或其他一些内存限制?

我还建议扩展data.table :: fread函数以默认接受'clipboard'连接,因为它当前与read.table一起工作.

谢谢

excel clipboard r fread data.table

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

试图理解sql查询中的"除了所有"

我遇到了这个例子,我不明白这意味着什么.

(SELECT drinker FROM Frequents)
     EXCEPT ALL
(SELECT drinker FROM Likes);
Run Code Online (Sandbox Code Playgroud)

关系:频繁(饮酒者,酒吧),喜欢(饮酒者,啤酒)

在这种情况下,ALL会做什么?结果与下面的查询有何不同?

(SELECT drinker FROM Frequents)
     EXCEPT
(SELECT drinker FROM Likes);
Run Code Online (Sandbox Code Playgroud)

sql set-difference set-operations intersect set-intersection

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

R.Last.call功能 - 类似于.Last.value

类似于.Last.value有没有办法访问最后一次通话?低于预期的潜在结果.Last.call.

sum(1, 2)
# [1] 3
str(.Last.call)
#  language sum(1, 2)
Run Code Online (Sandbox Code Playgroud)

如果它不需要从文件系统解析文件,则为bests.

r

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