标签: parallel-processing

Parallel :: ForkManager()模块是否支持全局变量的同步?

我对Perl中的这个Parallel :: ForkManager模块很新,它有很多学分,所以我认为它支持我需要的东西,我还没想到.

我需要做的是在每个子进程中,它根据每个子进程中计算的键值将一些更新写入全局哈希映射.但是,当我继续在for循环之外声明一个哈希映射并期望在循环之后更新哈希映射时,事实证明哈希映射保持为空.这意味着虽然循环内部的更新成功(通过打印出值),但在循环外部则不然.

有没有人知道如何编写这样一段代码来完成我想要的工作?

parallel-processing perl multithreading fork ipc

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

C#结构是否安全?

C#struct是否是线程安全的?

例如,如果有:

struct Data
{
    int _number;
    public int Number { get { return _number; } set { _number = value; } }

    public Data(int number) { _number = number; }
}
Run Code Online (Sandbox Code Playgroud)

在另一种类型:

class DadData
{
    public Data TheData { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

是属性名为TheData,线程安全吗?

c# parallel-processing concurrency struct thread-safety

8
推荐指数
2
解决办法
5411
查看次数

多线程或任务并行库

我有一个应用程序,它使用多线程同时执行30个独立任务,每个任务通过http检索数据,执行计算并将结果返回给ui线程.

我可以使用TPL执行相同的任务吗?

TPL是否创建了30个新线程并将它们分布在所有可用内核上,还是仅将任务分配到可用内核上并且每个内核使用一个线程?

在这种情况下,使用TPL而不是多线程是否会提升性能?

.net parallel-processing multithreading pfx

8
推荐指数
2
解决办法
8301
查看次数

Threaded execution speed of LOCK CMPXCHG

I wrote a multi-threaded app to benchmark the speed of running LOCK CMPXCHG (x86 ASM).

On my machine (dual Core - Core 2), with 2 threads running and accessing the same variable, I can perform about 40M ops/second.

Then I gave each thread a unique variable to operate on. Obviously this means there's no locking contention between the threads, so I expected a speed performance. However, the speed didn't change. Why?

parallel-processing performance x86 assembly locking

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

什么是Ruby相当于Python的多处理模块?

为了在Ruby或Python中获得真正的并发性,我需要创建新的进程.Python使用该multiprocessing模块非常简单,它抽象出所有的fork/wait优点,让我专注于我的代码.Ruby有类似的东西吗?现在我正在调用Process.forkProcess.wait获得我的并发性,我想要一个更清洁的解决方案.

ruby python parallel-processing concurrency

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

如何提高并行集群处理的速度

我是集群处理的新手,可以使用一些建议来更好地准备数据和/或从parallel包中调用函数.我已通过parallels包装小插图阅读,因此对于发生了什么有一个模糊的想法.

我要并行化的函数调用2-D插值工具akima::interp.我的输入由3个矩阵(或矢量 - 全部相同R)组成:一个包含x坐标,一个包含y坐标,一个包含一组采样点的"z"或数据值. interp使用它来在常规网格上产生插值数据,这样我就可以绘制字段.一旦我设置了这3个项目,我将它们切成"块"并将它们提供clusterApplyinterp大块执行块.

我正在使用Windows7,i7 CPU(8核)机器.这Rprof是输入数据集的摘要输出,输入数据集为1e6点(如果您愿意,则为1000x1000),并映射到1000x1000输出网格.

所以我的问题是:1)似乎"反序列化"占用了大部分时间.这个操作是什么,怎么可以减少?2)一般情况下,由于每个工作人员都加载了默认.Rdata文件,如果我首先保存所有输入数据.Rdata以便不需要传递给工作人员,是否有任何速度增加?3)其他任何我根本不知道我应该采取不同的做法?

注意:这些sin, atan2, cos, +, max, min功能发生在clusterApply我打电话之前.

Rgames> summaryRprof('bigprof.txt')
$by.self
                   self.time self.pct total.time total.pct
"unserialize"         329.04    99.11     329.04     99.11
"socketConnection"      1.74     0.52       1.74      0.52
"serialize"             0.96     0.29       0.96      0.29
"sin"                   0.06     0.02       0.06      0.02
"atan2"                 0.04     0.01       0.06      0.02
"cos"                   0.04     0.01       0.04      0.01
"+"                     0.02     0.01       0.02      0.01
"max" …
Run Code Online (Sandbox Code Playgroud)

parallel-processing r cluster-computing

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

了解Spark和Scala中的并行性

我对Spark和Scala中的并行性有些困惑.我正在运行一个实验,我必须从磁盘更改/处理某些列中读取许多(csv)文件,然后将其写回磁盘.

在我的实验中,如果我只使用SparkContext的parallelize方法,那么它似乎对性能没有任何影响.然而,简单地使用Scala的并行集合(通过标准杆)可将时间减少到几乎一半.

我正在localhost模式下运行我的实验,其中参数local [2]用于spark上下文.

我的问题是我什么时候应该使用scala的并行集合以及何时使用spark context的并行化?

parallel-processing scala apache-spark

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

NVidia是否支持OpenCL SPIR?

我想知道nvidia是否支持spir后端?如果是的话,我找不到任何关于它的文件和示例.但如果没有,有没有办法将spir后端工作到nvidia gpus上?提前致谢

parallel-processing gpgpu nvidia opencl

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

C#中foreach循环的性能优化

我有一个方法:

IList<string> pages = new List<string>();
foreach (var node in nodes)
{
    try
    {
        string temp = DoSomeComplicatedModificationOnNode(node);
        if (temp.ToLower().Contains(path))
        {
            pages.Add(node.Title);
        }
    }
    catch (Exception)
    {
        continue;
    }
}
Run Code Online (Sandbox Code Playgroud)

在某些情况下,DoSomeComplicatedModificationOnNode()会给出异常,这就是使用try {} catch块的原因 - 我可以跳过给出异常的项目.节点数包含数千个项目,项目具有多个属性.如何优化此循环?我在考虑Parallel.Foreach,但是下面的代码给出了一个错误"Missing current principal":

IList<string> pages = new List<string>();
Parallel.ForEach(pageNodes, node =>
{
    try
    {
        string temp = DoSomeComplicatedModificationOnNode(node);
        if (temp.ToLower().Contains(path))
        {
            pages.Add(node.Title);
        }
    }
    catch (Exception)
    {
    }
});
Run Code Online (Sandbox Code Playgroud)

c# parallel-processing performance foreach

8
推荐指数
2
解决办法
5296
查看次数

Slurm:选择sbatch Slurm中的CPU和线程数

sbatch手册页中使用的术语可能有点令人困惑.因此,我想确保我正确设置选项.假设我有一个任务在一个有N个线程的节点上运行.我是否正确地假设我会使用--nodes = 1和--ntasks = N?我习惯于考虑使用例如pthreads在单个进程中创建N个线程.他们称之为"核心"或"每个任务的cpus"的结果是什么?CPU和线程在我的脑海里并不是一回事.

parallel-processing multithreading hpc mpi slurm

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