美文网首页
数据并行化

数据并行化

作者: hello高world | 来源:发表于2017-01-25 21:20 被阅读0次

1、什么叫做并行?什么叫做并发?

  • <b>并行</b>:多个任务在同一个时刻发生。
  • <b>并发</b>:多个任务无法在同一个时刻发生,但这个时间段已经存在多个任务同时启动了。CPU给他们分配不同的时间片去运行。——并发
并发与并行

2、什么叫做数据并行化?什么叫做任务并行化?

  • <b>数据并行化</b>:将数据分块,为每块数据分配单独的处理单元上。
  • <b>任务并行化</b>:在这个模型中,每一个线程执行一个分配到的任务,而这些线程则被分配(通常是操作系统内核)到该并行计算体系的各个计算节点中去。

3、并行化代码

package com.tinygao.thread.stream;

import com.google.common.base.Stopwatch;
import lombok.extern.slf4j.Slf4j;

import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Stream;

import static com.google.common.collect.ImmutableList.of;

/**
 * Created by gsd on 2017/1/25.
 */
@Slf4j
public class ParallelStreamTest {
    public static void main(String[] args) {
        List<String> tinygao1 = new ArrayList<>();
        List<String> tinygao2 = new ArrayList<>();
        List<String> tinygao3 = new ArrayList<>();
        initList(tinygao1, tinygao2, tinygao3);

        Stopwatch s = Stopwatch.createStarted();
        int lengthNum = Stream.of(tinygao1,tinygao2,tinygao3)
                                .flatMap(x-> x.stream())
                                .mapToInt(x->x.length())
                                .sum();
        log.info("lengthNum :{} , waster : {} ms",
                    lengthNum,
                    s.elapsed(TimeUnit.MILLISECONDS));


        /*集合类都有parallelStream方法,实现并行化*/
        s.reset().start();
        int parallelLengthNum = Stream.of(tinygao1,tinygao2,tinygao3)
                                        .flatMap(x-> x.parallelStream())
                                        .mapToInt(x->x.length())
                                        .sum();
        log.info("parallelLengthNum :{} , waster : {} ms",
                    parallelLengthNum,
                    s.elapsed(TimeUnit.MILLISECONDS));
        s.stop();
    }

    private static void initList(List<String> tinygao1,
                                  List<String> tinygao2,
                                  List<String> tinygao3) {
        for(int i = 0; i < 5000000; i++) {
            tinygao1.add("tinygao1"+i);
            tinygao2.add("tinygao2"+i);
            tinygao3.add("tinygao3"+i);
        }
    }
}

4、结果

lengthNum :221666670 , waster : 341 ms
parallelLengthNum :221666670 , waster : 138 ms

相关文章

  • 数据并行化

    1、什么叫做并行?什么叫做并发? 并行 :多个任务在同一个时刻发生。 并发 :多个任务无法在同一个时刻发生,但这个...

  • 【编程技巧】shell+R双重并行化——加速分析过程

    目录 问题描述shell并行化R并行化shell+R双重并行化实现案例 问题描述 在进行宏基因组shotgun数据...

  • pytorch多GPU并行

    一、pytorch多GPU并行 (1)引用库 (2)加载模型 (3) 并行化 二、GPU数据转成list (1)引...

  • Metal - 并行计算(四)

    在GPU上并行计算处理任意计算。 在计算函数中处理纹理 通过将数据置于纹理中,对结构化数据执行并行计算 创建线程和...

  • Python数据预处理:使用Dask和Numba并行化加速

    摘要:本文是针对Python设计一种并行处理数据的解决方案——使用Dask和Numba并行化加速运算速度。案例对比...

  • spark调优

    数据序列化 内存调整 内存管理概述 确定内存消耗 调整数据结构 序列化RDD存储 垃圾收集调整 其他考虑因素 并行...

  • Spark Streaming(九):性能调优

    1、数据接收并行度调优 1、通过网络接收数据时(比如Kafka、Flume),会将数据反序列化,并存储在Spark...

  • 8251A 并行传送和串行传送远程抓娃娃

    20. 8251A 芯片中实现并行数据转换为串行数据的部件 一、数据传送 并行传送 数据在多条并行 1 位宽的传输...

  • 多GPU-TensorFlow

    首先,TensorFlow并行计算分为:模型并行,数据并行。 模型并行:根据不同模型设计不同并行方式,模型不同计算...

  • Druid 实践1-概述和架构

    概述 设计原则 快速查询:部分数据的聚合 + 内存化 + 索引 水平扩展能力:分布式数据 + 并行化处理 实时分析...

网友评论

      本文标题:数据并行化

      本文链接:https://www.haomeiwen.com/subject/poxxittx.html