小编MSa*_*ich的帖子

调用序列化R函数时出错

我将以下包装入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)

parallel-processing r snow

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

使用CUDA减少矩阵行

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 …

c cuda matrix

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

使用.Call从C到R Lanugage获取整数向量

我第一次使用.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)

c r

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

HHVM或PHP5 Zend是否正在运行?

经过一番努力,我终于在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 …

php apache zend-framework hhvm

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

找不到JPype类

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)

python java jvm jpype

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

标签 统计

c ×2

r ×2

apache ×1

cuda ×1

hhvm ×1

java ×1

jpype ×1

jvm ×1

matrix ×1

parallel-processing ×1

php ×1

python ×1

snow ×1

zend-framework ×1