标签: parallel-processing

R中的并行化:如何在每个节点上“来源”?

我使用以下方法创建了并行工作程序(所有工作程序都在同一台计算机上运行):

MyCluster = makeCluster(8)
Run Code Online (Sandbox Code Playgroud)

如何使这8个节点中的每一个源都成为我编写的R文件?我试过了:

clusterCall(MyCluster, source, "myFile.R")
clusterCall(MyCluster, 'source("myFile.R")')
Run Code Online (Sandbox Code Playgroud)

和几个类似的版本。但是没有一个有效。您能帮我发现错误吗?

非常感谢你!

parallel-processing r

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

嵌套锁和简单锁之间的区别

我无法弄清楚omp_nest_lock_t和omp_lock_t lck之间的区别; 这段代码完美地同步了longtask(),但在执行时无法弄清楚它们之间的区别;

  omp_nest_lock_t lck_n;          //omp_lock_t lck;
    int t_id;
    omp_init_nest_lock(&lck_n);    //omp_init_lock(&lck);
    omp_set_num_threads(6);

    #pragma omp parallel private(t_id) shared(lck_n) 
    {
    t_id = omp_get_thread_num();
    omp_set_nest_lock(&lck_n);      //omp_set_lock(&lck);
    printf("\nhi by %d\n",t_id);
    long_task();
    printf("My thread id is %d.\n", id);
   omp_unset_nest_lock(&lck_n);      //omp_unset_lock(&lck);
    }
    omp_destroy_nest_lock(&lck_n);    //omp_destroy_lock(&lck);
Run Code Online (Sandbox Code Playgroud)

c c++ parallel-processing multithreading openmp

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

openMP的目标数据和目标数据之间的区别?

目标构造将代码区域从主机卸载到目标设备。变量pv1v2,明确地映射到使用在地图子句目标设备。目标数据也一样,

那么,这意味着:

  • “该构造创建的变量将在整个目标数据区域中持续存在”
  • “创建新设备数据环境”

关于“目标数据”结构,

我的意思是这些代码之间的卸载机制有什么区别:

void vec_mult1(float *p, float *v1, float *v2, int N)
{
    int i;
    init(v1, v2, N);
#pragma omp target map(to: v1[0:N], v2[:N]) map(from: p[0:N])
#pragma omp parallel for
    for (i=0; i<N; i++)
        p[i] = v1[i] * v2[i];
    output(p, N);
}


void vec_mult2(float *p, float *v1, float *v2, int N)
{
    int i;
    init(v1, v2, N);
#pragma omp target device(mic0) data map(to: v1[0:N], v2[:N]) map(from: p[0:N])
    {
    //this code runs …
Run Code Online (Sandbox Code Playgroud)

c c++ parallel-processing multithreading openmp

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

如何在多台计算机上使用GNU并行

我想在我的两台计算机上使用GNU parallel.我成功地在一台计算机上运行并行,但我无法在远程计算机上并行运行.

版本:本地:parallel-20140222,Remote:parallel-20130522.我已经启用了密码少ssh登录.

parallel -j+0 --eta 'muscle -in {} -out {.}.aln -quiet' < list

但当我尝试使用以下命令"并行"在远程计算机上运行时,

1)时间并行-j + 0 --eta -Svaramesh@10.117.173.5,: - 转移, - 返回{.}.aln --cleanup'muscle -in {} -out {.}.aln -quiet'<名单

2)时间并行-j + 0 - eta -S10.117.173.5,: - 转移, - 返回{.}.aln --cleanup'muscle -in {} -out {.}.aln -quiet'<名单

3)时间并行-j + 0 - eta -S:,10.117.10.5 -transfer, - return {.}.aln --cleanup'muscle -in {} -out {.}.aln -quiet'<list

所有这些都给出了以下错误

parallel: Error: Cannot open input file `nsfer,': No such file or directory.
Run Code Online (Sandbox Code Playgroud)

parallel-processing gnu-parallel

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

如何使用多线程并行运行两个类?

我正在开发一个项目,其中我有多个接口和两个实现类,需要实现这两个接口.

假设我的第一个接口是 -

public Interface interfaceA {
    public String abc() throws Exception;
}
Run Code Online (Sandbox Code Playgroud)

它的实施是 -

public class TestA implements interfaceA {

    // abc method
}
Run Code Online (Sandbox Code Playgroud)

我这样称呼它 -

TestA testA = new TestA();
testA.abc();
Run Code Online (Sandbox Code Playgroud)

现在我的第二个界面是 -

public Interface interfaceB {
    public String xyz() throws Exception;
}
Run Code Online (Sandbox Code Playgroud)

它的实施是 -

public class TestB implements interfaceB {

    // xyz method   
}
Run Code Online (Sandbox Code Playgroud)

我这样称呼它 -

TestB testB = new TestB();
testB.xyz();
Run Code Online (Sandbox Code Playgroud)

问题陈述:-

现在我的问题是 - 有什么办法,我可以并行执行这两个实现类吗?我不想按顺序运行它.

意思是,我想并行运行TestATestB实现?这可能吗?

java parallel-processing multithreading callable executorservice

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

java8中的parallel sort返回无效结果

当我在Java 8中使用流应用并行排序时,我得到一个无效的结果:

List<String> list = new ArrayList<>();
list.add("A");
list.add("C");
list.add("B");

list.stream().sorted().forEach(System.out::println);

System.out.println("-");

list.stream().parallel().sorted().forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)

结果:

A
B
C
-
B  <----- Invalid order
C
A
Run Code Online (Sandbox Code Playgroud)

为什么并行排序会返回未排序的结果?

java parallel-processing java-8 java-stream

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

如何使用parRF方法使随机林运行得更快

我想在大型数据集上运行随机森林:100k*400.当我使用随机森林时需要花费很多时间.我可以使用插入包中的parRF方法来减少运行时间吗?什么是正确的语法?这是一个示例数据帧:

dat <- read.table(text = " TargetVar  Var1    Var2       Var3
 0        0        0         7
 0        0        1         1
 0        1        0         3
 0        1        1         7
 1        0        0         5
 1        0        1         1
 1        1        0         0
 1        1        1         6
 0        0        0         8
 0        0        1         5
 1        1        1         4
 0        0        1         2
 1        0        0         9
 1        1        1         2  ", header = TRUE)
Run Code Online (Sandbox Code Playgroud)

我试过了:

library('caret')
m<-randomForest(TargetVar ~ Var1 + Var2 + Var3, data …
Run Code Online (Sandbox Code Playgroud)

parallel-processing r random-forest r-caret

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

在Swift中并行循环

什么是最接近的Swift等效的以下C&OpenMP代码(假设这n是巨大的,f很简单):

#openmp parallel for
for (int i = 0; i < n; ++i) {
    a[i] = f(b[i]);
}
Run Code Online (Sandbox Code Playgroud)

并行化一个for循环,dispatch_apply对于这样的例行任务来说似乎很多工作.有没有聪明的捷径?

parallel-processing swift

4
推荐指数
2
解决办法
2718
查看次数

多线程C#拆分循环

我有一个任务,该任务本质上循环遍历一个集合,并成对地对它们进行操作(对于int i = 0; i <limit; i + = 2等),因此,我在线程循环上看到的大多数建议都使用某种foreach机制。但这对我来说似乎有点棘手,因为我是如何使用这种成对操作的方法的。

所以我想做的基本上是替换:

DoOperation(list.Take(numberToProcess));
Run Code Online (Sandbox Code Playgroud)

Thread lowerHalf = new Thread(() => => DoOperation(list.Take(numberToProcess/2)));

Thread lowerHalf = new Thread(() => => DoOperation(list.getRange(numberToProcess/2, numberToProcess));

lowerHalf.Start();
upperHalf.Start();
Run Code Online (Sandbox Code Playgroud)

这似乎可以完成工作,但是非常慢。每次迭代都比上一次慢,并且在我调试时,“线程”视图显示越来越多的“线程”列表。

但是我给人的印象是线程在完成时就终止了?是的,线程确实完成了。DoOperation()方法几乎只是一个for循环。

那我在这里不明白什么呢?

c# parallel-processing multithreading

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

将函数从R包导出到集群(并行处理)

我试图再次使用parLapply(现在在此上下文中成功使用它)但这次并行化的函数包含mc2d包中的一些函数(即.deeprt,ppert).我在代码的并行部分之前安装并加载了包.

我使用群集导出成功将变量导出到群集,

clusterExport(C1, "variable")
...
Run Code Online (Sandbox Code Playgroud)

但是我尝试使用dpert和ppert导出函数

clusterEvalQ(C1,dpert)
Run Code Online (Sandbox Code Playgroud)

我得到了错误

object C1 not found
Run Code Online (Sandbox Code Playgroud)

怎么没找到C1?是否有另一种方法将R-packages函数导出到集群以进行并行处理?

parallel-processing r

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