我将以下包装入R:
library(foreach)
library(doParallel)
library(iterators)
Run Code Online (Sandbox Code Playgroud)
我将代码"并行化"了很长时间,但最近我在代码运行时遇到INTERMITTENT停止.错误是:
Error in serialize(data, node$con) : error writing to connection
Run Code Online (Sandbox Code Playgroud)
我有根据的猜测是,我使用下面的命令打开的连接可能已过期:
## Register Cluster
##
cores<-8
cl <- makeCluster(cores)
registerDoParallel(cl)
Run Code Online (Sandbox Code Playgroud)
查看makeCluster手册页,我发现默认情况下,连接仅在30天后到期!我可以设置选项(错误=恢复),以便在代码停止时动态检查连接是否打开,但我之前决定发布这个一般性问题.
重要:
1)错误实际上是间歇性的,有时我重新运行相同的代码并且没有错误.2)我在同一台多核机器(Intel/8内核)上运行所有内容.因此,它不是群集中的通信(网络)问题.3)我是笔记本电脑和台式机(64核心)上CPU和GPU并行化的重要用户.不幸的是,这是我第一次遇到这种类型的错误.
是否有人有相同类型的错误?
根据要求,我提供了sessionInfo():
> sessionInfo()
R version 2.15.3 (2013-03-01)
Platform: x86_64-w64-mingw32/x64 (64-bit)
locale:
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252 LC_MONETARY=English_United States.1252 LC_NUMERIC=C
[5] LC_TIME=English_United States.1252
attached base packages:
[1] parallel stats graphics grDevices utils datasets methods base
other attached packages:
[1] TTR_0.22-0 xts_0.9-3 doParallel_1.0.1 iterators_1.0.6 foreach_1.4.0 zoo_1.7-9 Revobase_6.2.0 RevoMods_6.2.0
loaded via a namespace (and not …Run Code Online (Sandbox Code Playgroud) Windows 7, NVidia GeForce 425M.
Run Code Online (Sandbox Code Playgroud)
我写了一个简单的CUDA代码来计算矩阵的行和.矩阵具有单维表示(指向浮点的指针).
代码的串行版本如下(它有2循环,如预期的那样):
void serial_rowSum (float* m, float* output, int nrow, int ncol) {
float sum;
for (int i = 0 ; i < nrow ; i++) {
sum = 0;
for (int j = 0 ; j < ncol ; j++)
sum += m[i*ncol+j];
output[i] = sum;
}
}
Run Code Online (Sandbox Code Playgroud)
在CUDA代码中,我调用内核函数按行扫描矩阵.下面是内核调用片段:
dim3 threadsPerBlock((unsigned int) nThreadsPerBlock); // has to be multiple of 32
dim3 blocksPerGrid((unsigned int) ceil(nrow/(float) nThreadsPerBlock));
kernel_rowSum<<<blocksPerGrid, threadsPerBlock>>>(d_m, d_output, nrow, ncol);
Run Code Online (Sandbox Code Playgroud)
以及执行行的并行求和的内核函数(仍有1 …
我第一次使用.Call.我写了下面的简单代码,我传递一个整数并返回一个SEXP(到R):
#include <R.h>
#include <Rdefines.h>
SEXP setInt(int *a) {
SEXP myint;
int *p_myint;
int len = 5;
PROTECT(myint = NEW_INTEGER(len)); // Allocating storage space
p_myint = INTEGER_POINTER(myint); // ponit to SEXP object
p_myint[0] = *a;
UNPROTECT(1);
return myint;
}
Run Code Online (Sandbox Code Playgroud)
因此,我调用R CMD SHLIB来创建dll(这里没问题).
当运行下面的代码(在R中)时,我得到的答案不同于 c(100,0,0,0,0):
> dyn.load(file.path(path.dll,paste0("useC", .Platform$dynlib.ext)))
> a<-100
> out<- .Call("setInt",as.integer(a))
> out
[1] 536870925 0 0 0 0
Run Code Online (Sandbox Code Playgroud)
PS:可能我得到的是指针变量"a"的地址值,而不是它的值.但我不知道我在这里失踪了什么.
编辑:
使用@JoshuaUlrich的答案我修复了代码并添加了更多功能.固定代码是:
SEXP setInt(SEXP a,SEXP pos) {
SEXP myint;
int *p_a;
int *p_myint;
int len = 5;
PROTECT(myint …Run Code Online (Sandbox Code Playgroud) 经过一番努力,我终于在Ubuntu中安装了Facebook HipHop虚拟机.它在FastCGI(Apache 2.22)下运行.下面是服务状态:
marcelo@marcelo-VirtualBox:~$ service apache2 status
Apache2 is running (pid 3330).
marcelo@marcelo-VirtualBox:~$ service hhvm status
* hhvm is running
marcelo@marcelo-VirtualBox:~$ sudo service hhvm restart
* Restarting HHVM FastCGI Daemon hhvm [ OK ]
marcelo@marcelo-VirtualBox:~$
Run Code Online (Sandbox Code Playgroud)
同一台机器在Apache中启用并配置了PHP5模块.
我想确保我真的PHP使用HHVM和不使用代码Zend Framework.
我的所有PHP脚本都在Web服务器上运行.但是,当我禁用PHP5模块时,使用sudo a2dismod php5Web服务器开始渲染Internal Server Error.
HHVM是否需要启用PHP5模块才能运行?据说,由于我使用的是FastCGI,我的答案是否定的.另一方面,我认为我的页面是由Zend而不是HHVM呈现的.
我在这里错过了什么?我怎样才能确保我真的在运行HHVM?(在我看来,一个明确的测试是禁用PHP5模块,但是,正如我所说,当我禁用时,php停止在Web浏览器中工作).
如果.php未运行且已PHP5 module禁用,是否意味着我的HHVM配置不正确?
PS:我正在测试的脚本是默认的Hello World示例:<?php echo 'Hello World.'; ?>.
并且,当我从命令行运行时它可以工作:
marcelo@marcelo-VirtualBox:/var/www$ sudo hhvm hello_world.php
Hello World.
marcelo@marcelo-VirtualBox:/var/www$
Run Code Online (Sandbox Code Playgroud)
编辑
Apache …
JPype是一个了不起的项目,因为我允许JVM直接实例化Python.
不幸的是,我陷入了第一个婴儿步骤.
我A.java有源代码(located in C:\tmp folder):
class A {
public A() {
super();
}
public String sayHi() {
return("Hello");
}
}
Run Code Online (Sandbox Code Playgroud)
哪个被编译成一个类,使用: javac A.java
因此,A.class位于C:\tmp文件夹中.
我有以下Python源代码:
import os
import jpype
jpype.startJVM(jpype.getDefaultJVMPath(), '-ea', '-Djava.class.path=c:\\tmp')
A = jpype.JClass("A")
a = A()
print a.sayHi()
jpype.shutdownJVM()
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我得到以下错误:
C:\tmp>jpype_test.py
Traceback (most recent call last):
File "C:\tmp\jpype_test.py", line 10, in <module>
A = jpype.JClass("A")
File "C:\Python27\lib\site-packages\jpype\_jclass.py", line 54, in JClass
raise _RUNTIMEEXCEPTION.PYEXC("Class %s not …Run Code Online (Sandbox Code Playgroud)