我正在寻找有关如何与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) 我希望通过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天滚动总和?
取消列出data.table中的嵌套列表列.假设所有列表元素都是相同的类型.列表元素已命名,名称也必须处理.
它在某种程度上与data.table聚合到列表列的操作相反.
我认为值得在SO data.table知识库中使用它.
我目前的解决方法方法如下,我正在寻找更多的规范答案.
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 诊断消息(由 产生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
因为我的脚本会产生大量的message
s 并且很少产生真正的错误,所以我需要将这些日志存储在单独的文件中。
我正在评估多个大数据工具.其中一个当然是Impala.
我想通过手动启动集群节点上的进程来启动Impala集群.正如我目前正在为Spark,H2O,Presto和Dask做的那样,我想抓住二进制文件,复制到节点,编辑配置,并从shell启动节点上的服务.这非常有效,升级很简单,我可以在需要时轻松移动到更大/不同的集群.不幸的是,我找不到从shell启动所需服务(Catalog Server,StateStore和daemon)的正确方法的资源.
我认为这是明显的任务但是找不到合适的例子,所以我的问题是如何从shell调用Impala二进制文件启动Impala集群?
使用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/
标签或火花引擎中的错误吗?
我有羽毛格式文件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是如此时髦,也是羽毛,我希望有一些更本土化的方式,而不是通过次高效的临时解决方案.
我想创建一个接口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一起工作.
谢谢
我遇到了这个例子,我不明白这意味着什么.
(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
类似于.Last.value
有没有办法访问最后一次通话?低于预期的潜在结果.Last.call
.
sum(1, 2)
# [1] 3
str(.Last.call)
# language sum(1, 2)
Run Code Online (Sandbox Code Playgroud)
如果它不需要从文件系统解析文件,则为bests.