NVIDIA CUDA 超大规模并行. 邓仰东 清华大学微电子学研究所

Size: px
Start display at page:

Download "NVIDIA CUDA 超大规模并行. 邓仰东 清华大学微电子学研究所"

Transcription

1 NVIDIA CUDA 超大规模并行 程序设计训练课程 邓仰东 清华大学微电子学研究所

2 日程安排 Day 1: CUDA 概论 Day 2: 编程模型 Day 3: 多线程和存储器硬件 Day 4: 性能提升 2 2

3 提纲 主要参考 Dr. Mark Harris 在 Super-Computing Conference 2007 上的讲座 基本优化原则 Coalescing memory operations Occupancy and latency hiding Using shared memory 实例 1: 矩阵转置 Coalescing and bank conflict avoidance 实例 2: efficient parallel reductions Using peak performance metrics to guide optimization Avoiding SIMD divergence & bank conflicts Loop unrolling Using template parameters to write general-yet-optimized code Algorithmic strategy: Cost efficiency 3 3

4 CUDA 优化策略 针对 GPU 优化算法 利用 shared memory 有效并行 优化存储器访问的一致性 4 4

5 针对 GPU 优化算法 最大化独立并行性 最大化算术计算密度 (math/bandwidth) 重复计算往往优于访问存储器 GPU spends its transistors on ALUs, not memory 尽量在 GPU 上计算以避免与 CPU 传递数据 即使低并行度运算也往往优于频繁的 CPU-GPU 数据传递 5 5

6 利用 Shared Memory 几百倍快于 global memory 线程之间通过 shared memory 合作 使用一个或少量线程装载和计算 thread block 内全部线程共享的数据 Use it to avoid non-coalesced access Stage loads and stores in shared memory to re-order non-coalesceable addressing 6 6

7 有效并行 划分计算使得 GPU 各个 SM 负载均衡 Many threads, many thread blocks 降低资源使用, 以便多个 thread blocks 在 SM 上运行 Registers, shared memory 7 7

8 优化存储器访问的一致性 全局存储器延时 : clock cycles 经常成为性能瓶颈 Coalesced vs. non-coalesced 优化效果明显 - 数量级性能差别 Experiment: > Kernel: read a float, increment, write back > 3M floats (12MB), Times averaged over 10K runs 12K blocks x 256 threads: > 356 s coalesced > 357 s coalesced, some threads don t participate > 3,494 s permuted/misaligned thread access 使用 texture memory 优化空间局部行为 Spatial locality 8 8

9 Coalescing 在 half warp 层次对访问 global memory 进行协调 访问连续 global memory 区域 : 64 bytes - each thread reads a word: int, float, 128 bytes - each thread reads a double-word: int2, float2, 256 bytes each thread reads a quad-word: int4, float4, 额外限制 : Global memory 区域的起始地址必须是该区域数据类型尺寸的整数倍 Warp 中第 k 个线程访问第 k 个地址 例外 : 可以有某些中间线程不参加 Predicated access, divergence within a warp 9 9

10 Coalesced Access: Reading floats 10 10

11 Uncoalesced Access: Reading floats 11 11

12 Uncoalesced float3 Code global void accessfloat3(float3 *d_in, float3 d_ out) { } int index = blockidx.x * blockdim.x + threadidx.x; float3 a = d_in[index]; a.x += 2; a.y += 2; a.z += 2; d_out[index] = a; 12 12

13 Uncoalesced float3 Code float3 需要 12 bytes: float3 f = d_in[threadidx.x]; Each thread ends up executing 3 reads sizeof(float3) 4, 8, or 16 Half-warp reads three 64B non-contiguous regions 13 13

14 Coalescing float3 Access A 3-step approach (256 threads/block) Global Memory Shared memory Shared memory 14 14

15 Coalescing float3 Access Use shared memory to allow coalescing 256 threads per block A thread block needs sizeof(float3)x256 bytes of SMEM Each thread reads 3 scalar floats: Offsets: 0, (threads/block), 2*(threads/block) These will likely l be processed by other threads, so sync Processing Each thread retrieves its float3 from SMEM array Cast the SMEM pointer to (float3*) Use thread ID as index Rest of the compute code does not change! 15 15

16 Coalescing float3 Access 代码 16 16

17 Coalescing: Structures of Size 4, 8, or 16B Use a structure of arrays instead of AoS 这样每个成员变量可以 Coalescing SOA: Struct SOA{ float x[256], y[256], z[256];}; 17 4B Bytes float3 AOS: Struct AOS{ float x, y, z;}; Struct AOS aos[256]; AO S 17

18 Coalescing: Structures of Size 4, 8, or 16B 如果 SoA 不可行 : 强制对齐 : align (X), where X = 4, 8, or 16 struct align (16) { float x, y, z; }; 浪费部分空间 float3 Un-used 使用 shared memory 18 18

19 CPU-GPU 数据传送 Device memory - host memory 带宽远低于 device memory - device 带宽 4GB/s peak (PCI-e x16) vs. 80 GB/s peak (Quadro FX 5600) 最小化 CPU-GPU 数据传送 中间数据结构在 GPU 上分配 操作 释放 不必使用 CPU memory 组合 CPU-GPU 数据传送 整块数据传送远快于多次分小块传送 19 19

20 Page-Locked Memory Transfers cudamallochost(): page-locked CPU 内存分配 Page-locked memory 不允许操作系统移动 使用特殊 DMA 机制存取 GPU 直接使用 PCI-express 访问 实现 cudamemcpy() 最高性能 3.2 GB/s+ common on PCI-express x16 ~4 GB/s measured on nforce 680i motherboards (overclocked PCI-e) See the bandwidth test CUDA SDK sample 注意 : 分配太多的 page-locked 会降低系统系能 需要系统测试来确定最佳分配 20 20

21 Occupancy 线程内部需要等待 global memory 时, 切换到其它 warp 是隐藏延时和保持 GPU 运转的有效办法 Occupancy = 实际并发运行的 warp 个数 / 最大可能并发运行的 warp 个数 最大化 occupancy 通过优化 thread block 内的线程实现 21 21

22 Occupancy!= Performance 提高 occupancy 不一定直接提高性能 还依赖于计算密度和其它方面的并行性 但是 低 occupancy 的 SM 不能有效隐藏延时 特别是对 memory-bound kernels 22 22

23 Grid/Block Size Heuristics # of blocks / # of multiprocessors > 1 每个 SM 至少有一个 thread block 可以执行 更好的选择 : # of blocks / # of multiprocessors > 2 每个 SM 有多个 thread block 可以执行 每个 thread block 占用 SM 一半以下的资源 即 shared memory and registers 资源 允许多个 thread block 在 SM 上并发运行 减小所有线程都等待 syncthreads() 的概率 # of blocks > 100 Scale to future devices 1000 blocks per grid will scale across multiple generations 23 23

24 优化 Thread Block 内的线程个数 Thread block 内的线程个数应该是 warp size 的整数倍 避免 under-populated warps 线程越多, 越容易隐藏存储器延时 线程越多, 每个线程可用的寄存器越少 甚至造成 kernel 由于寄存器不足而无法启动 Heuristics Minimum: 64 threads per block Only if multiple concurrent blocks 128 to 256 threads a better choice Usually still enough registers to compile and invoke successfully This all depends on your computation! Experiment! 24 24

25 隐藏存储器延时 Global memory access: cycle latency 线程内依赖于存储器访问的指令将被阻塞 补救之道 : 更多的线程! 提高计算密度 Coalescing memory accesses to neighboring addresses 例子 : 4 次顺序访问至少需要 4*400 = 1,600 cycles 4 个并行线程, 每线程 1 次存储器访问, 最少只需要 : = 403 cycles 25 25

26 隐藏存储器延时 一个 SM 可以并发处理 768 threads 最大 thread block 尺寸为 512 线程 Configurations with 100% occupancy: 2 blocks x 384 threads 3 blocks x 256 threads 4 blocks x 192 threads 6 blocks x 128 threads 8 blocks x 96 threads 最小存储器延时 : 50% or higher occupancy AND 128 or more threads/block 26 26

27 寄存器 (Register) 解决存储器延时的主要手段 = 增加 SM 上的线程数量 限制条件 : Number of registers per kernel 8192 per SM, partitioned among concurrent threads Amount of shared memory 16KB per SM, partitioned among concurrent threadblocks 检查.cubin file for # registers / kernel 调用 NVCC 时使用 maxrregcount=n 开关 N = desired maximum registers / kernel At some point spilling into local l memory may occur Reduces performance local memory is slow Check.cubin file for local memory usage 27 27

28 检查资源使用 使用 -cubin flag 编译开关 检查.cubin 文件的 code 部分 architecture {sm_10} abiversion {0} modname {cubin} code { name = BlackScholesGPU lmem = 0 smem = 68 reg = 20 bar = 0 per thread local memory per thread block shared memory per thread registers bincode { 0xa x x40024c09 0x

29 参数化代码 使用 C++ 模版机制 (template) 有助于适应不同 GPU GPU 的配置变化很大 > # of multiprocessors > Memory bandwidth > Shared memory size > Register file size > Threads per block 甚至自动 self-tuning (like FFTW and ATLAS) 现场实验找到最佳配置 29 29

30 提纲 基本优化原则 Coalescing memory operations Occupancy and latency hiding Using shared memory 实例 1: 矩阵转置 Coalescing and bank conflict avoidance 实例 2: efficient parallel reductions Using peak performance metrics to guide optimization Avoiding SIMD divergence & bank conflicts Loop unrolling Using template parameters to write general-yet-optimized code Algorithmic strategy: Cost efficiency 30 30

31 Matrix Transpose SDK Sample ( transpose ) 解释通过 shared memory 实现 coalescing 在小尺度数据即可显示优化的明显效果 31 31

32 Uncoalesced Transpose global void transpose_naive(float *odata, float *idata, int width, int height) { unsigned int xindex = blockdim.x * blockidx.x + threadidx.x; unsigned int yindex = blockdim.y * blockidx.y + threadidx.y; if (xindex < width && yindex < height) { unsigned int index_in = xindex + width * yindex; unsigned int index_out = yindex + height * xindex; odata[index_out] = idata[index_in]; } tx, ty } Height Width 32 Width Height 32

33 Uncoalesced Transpose 33 33

34 Coalesced Transpose 假设 : 矩阵已被分解为方块 (tile) Thread block (bx, by): Read the (bx, by) input tile, store into SMEM Write the SMEM data to (by, bx) output tile Thread (tx, ty): Reads element (tx, ty) from input tile Writes element (tx, ty) into output tile Coalescing is achieved if: Block/tile dimensions are multiples of

35 Coalesced Transpose 35 35

36 Coalesced Transpose global void transpose(float *odata, float *idata, int width, int height) { } shared float block[block_dim*block_dim]; unsigned int xblock = blockdim.x * blockidx.x; unsigned int yblock = blockdim.y * blockidx.y; unsigned int xindex = xblock + threadidx.x; unsigned int yindex = yblock + threadidx.y; unsigned int it id index_out, id index_transpose; if (xindex < width && yindex < height) { unsigned int index_in = width * yindex + xindex; unsigned int index_block = threadidx.y * BLOCK_DIM + threadidx.x; x; block[index_block] = idata[index_in]; index_transpose = threadidx.x * BLOCK_DIM + threadidx.y; index_out = height * (xblock + threadidx.y) + yblock + threadidx.x; } syncthreads(); if (xindex < width && yindex < height) odata[index_out] = block[index_transpose]; 36 36

37 Shared Memory 优化 Threads read SMEM with stride = 16 Bank conflicts Solution Allocate an extra column Read stride = 17 Threads read from consecutive banks 37 37

38 38 Coalesced Transpose with Shared Memory Optimization global void transpose_exp(float *odata, float *idata, int width, int height){ shared float block[block_dim][block_dim+1]; unsigned int xindex = blockidx.x * BLOCK_DIM + threadidx.x; unsigned int yindex = blockidx.y * BLOCK_DIM + threadidx.y; if( (xindex < width)&&(yindex < height) { unsigned int index_in = xindex + yindex * width; block[threadidx.y][threadidx.x] = idata[index_in]; } syncthreads(); xindex = blockidx.y * BLOCK_DIM + threadidx.x; yindex = blockidx.x * BLOCK_DIM + threadidx.y; if( (xindex < height)&&(yindex < width) ){ unsigned int index_out = yindex * height + xindex; odata[index_out] = block[threadidx.x][threadidx.y]; } } 38

39 Transpose Timings Speedups with coalescing 128x128: 0.011ms 011ms vs ms 022ms (2.0X speedup) 512x512: 0.07ms vs. 0.33ms (4.5X speedup) 1024x1024: 0.30ms vs. 1.92ms (6.4X speedup) 1024x2048: 0.79ms vs. 6.6ms (8.4X speedup) ( 注意 : 优化 shared memory bank conflicts 带来 ~10% 的 speedup) 39 39

40 提纲 基本优化原则 Coalescing memory operations Occupancy and latency hiding Using shared memory 实例 1: 矩阵转置 Coalescing and bank conflict avoidance 实例 2: efficient parallel reductions Using peak performance metrics to guide optimization Avoiding SIMD divergence & bank conflicts Loop unrolling Using template parameters to write general-yet-optimized code Algorithmic strategy: Cost efficiency 40 40

41 Parallel Reduction Common and important data parallel primitive Easy to implement in CUDA Harder to get it right Serves as a great optimization example Step by step through 7 different versions Demonstrates several important optimization strategies =? 41 41

42 Parallel Reduction Tree-based approach used within each thread block 需要使用多个 thread blocks 超大数组处理 每个 thread block 负责一部分 怎样在 thread blocks 间通信? 42 42

43 问题 : 全局同步 如果能够对所有 thread blocks 进行同步, parallel reduction 很容易实现 : 每个 thread block 计算结束后全局同步 所有线程到达同步点后, 继续以递归方式计算 syncthreads() syncthreads() syncthreads() 43 43

44 问题 : 全局同步 但是 CUDA 不支持全局同步 : 内核个数越多, 同步硬件成本越高 避免 dead-lock 解决办法 : 分割为多个内核 启动 kernel 作为全局同步点 Kernel 启动的硬件成本可以忽略, 软件成本极低 44 44

45 Parallel Reduction: Decomposition 实现全局同步 分割为多个内核 对于 parallel reduction, 额外的好处是每一层的代码可以完全相同 递归式激活 kernel 45 45

46 46 优化目标 向 GPU 峰值性能迈进! 选择正确的标准 : GFLOP/s: for compute-bound kernels 例如 : QR factorization, convolution, FIR filter, Bandwidth: for memory-bound kernels 例如 : Database, video playback, Both 例如 : Pattern matching, singular value decomposition, Reduction 的计算密度很低 每一数组元素只需要一次浮点运算 因此需要争取峰值带宽! G80 GPU 384-bit memory interface, 900 MHz DDR 384 * 900 * 2 / 8 = 86.4 GB/s 46

47 Parallel Reduction: Interleaved Addressing 47 47

48 Reduction #1: Interleaved Addressing global l void reduce0(int *g_idata, int *g_odata) { extern shared int sdata[]; // each thread loads one element from global to shared mem unsigned int tid = threadidx.x; x; unsigned int i = blockidx.x*blockdim.x + threadidx.x; sdata[tid] = g_idata[i]; syncthreads(); // do reduction in shared mem for(unsigned int s=1; s < blockdim.x; s *= 2) { if (tid % (2*s) == 0) sdata[tid] += sdata[tid + s]; syncthreads(); } 48 } // write result for this block to global mem if (tid == 0) g_odata[blockidx.x] = sdata[0]; 48

49 Parallel Reduction: Interleaved Addressing syn c syn c syn c syn c 49 49

50 Reduction #1: Interleaved Addressing global void reduce0(int *g_idata, int *g_odata) { extern shared int sdata[]; // each thread loads one element from global to shared mem unsigned int tid = threadidx.x; unsigned int i = blockidx.x*blockdim.x + threadidx.x; sdata[tid] = g_idata[i]; syncthreads(); // do reduction in shared mem for(unsigned int s=1; s < blockdim.x; s *= 2) { Problem: highly divergent branching results in very poor performance! } if (tid % (2*s) == 0) { sdata[tid] += sdata[tid + s]; } syncthreads(); } // write result for this block to global mem if (tid == 0) g_odata[blockidx.x] = sdata[0]; 50 50

51 Performance for 4M Element Reduction 51 51

52 52 Reduction #2: Interleaved Addressing 修改内循环中的分支语句 : 为 : for (unsigned int s=1; s < blockdim.x; s *= 2) { if (tid % (2*s) == 0) { sdata[tid] += sdata[tid + s]; } syncthreads(); } for (unsigned int s=1; s < blockdim.x; s *= 2) { int index = 2 * s * tid; if (index < blockdim.x) { sdata[index] += sdata[index + s]; } syncthreads(); } 52

53 Reduction #2: Interleaved Addressing 53 for (unsigned int s=1; s < blockdim.x; s *= 2) { int index = 2 * s * tid; if (index < blockdim.x) { sdata[index] += sdata[index + s]; } syncthreads(); } 53

54 Performance for 4M Element Reduction 54 54

55 Reduction #2: Interleaved Addressing Bank conflict! s=2 Thread 0 Bank 0 Thread 1 Bank 1 Thread 2 Bank 2 Thread 3 Bank 3 Thread 4 Bank 4 Thread 5 Bank 5 for (unsigned int s=1; s < blockdim.x; s *= 2) { int index = 2 * s * tid; if (index < blockdim.x) { Thread 6 Bank 6 Thread 7 Bank 7 sdata[index] += sdata[index + s]; Thread 8 Bank 8 } Thread 9 Bank 9 Thread 10 syncthreads(); Thread 11 } Thread 12 Thread 14 Thread 14 Thread 15 Bank 10 Bank 11 Bank 12 Bank 13 Bank 14 Bank k

56 Parallel Reduction: Sequential Addressing Bank conflict free 56 56

57 57 Reduction #3: Sequential Addressing Just replace strided indexing in inner loop: for (unsigned int s=1; s < blockdim.x; s *= 2) { int index = 2 * s * tid; if (index < blockdim.x) { sdata[index] += sdata[index + s]; } syncthreads(); } With reversed loop and threadid-based indexing: for (unsigned int s=blockdim.x/2; s>0; s>>=1) { if (tid < s) { sdata[tid] += sdata[tid + s]; } syncthreads(); } 57

58 Performance for 4M Element Reduction 58 58

59 观察 : 空闲线程 问题 : for (unsigned int s=blockdim.x/2; s>0; s>>=1) { if (tid < s) { sdata[tid] += sdata[tid + s]; } syncthreads(); } 第一次循环有一半线程处于空闲状态! 浪费一半资源 59 59

60 60 Reduction #4: First Add During Load 减少 block 线程个数为原来一半, 替换 load 语句 : // each thread loads one element from global to shared mem unsigned int tid = threadidx.x; unsigned int i = blockidx.x*blockdim.x + threadidx.x; x; sdata[tid] = g_idata[i]; syncthreads(); 变为两个 load 语句并完成第一次加法 : // perform first level of reduction, // reading from global memory, writing to shared memory unsigned int tid = threadidx.x; unsigned int i = blockidx.x*(blockdim.x*2) + threadidx.x; sdata[tid] = g_idata[i] + g_idata[i+blockdim.x]; syncthreads(); 60

61 Reduction #4: First Add During Load Reduction #3 Global Memory t 0 t 1 t blockdim-1 Reduction #4 t 0 t 1 t blockdim-1 Global Memory 61 61

62 Performance for 4M Element Reduction 62 62

63 性能瓶颈 17 GB/s 仍然远离峰值带宽 80 GB/s 已知 reduction 操作计算密度很低 因此辅助指令开销可能造成性能瓶颈 辅助指令即 loads, stores, 和 arithmetic ti 之外的指令 策略 地址算术和循环开销 循环展开 63 63

64 展开最后一次循环 随着 reduction 进展, 活动线程个数逐渐减少 当线程数少于 32 时, 只剩下第一个 warp 其余 warp 已经完成计算 Warp 内指令是自动同步的 Why? Scoreboarding automatically maintain synchronization 当线程数少于 32 时 : 不需要 syncthreads() 不需要 if (tid < s) 展开内循环中的最后 6 次 64 64

65 Reduction #5: Unroll the Last Warp for (unsigned int s=blockdim.x/2; s>0; s>>=1) { if (tid < s) { sdata[tid] += sdata[tid + s]; } syncthreads(); } 65 for (unsigned int s=blockdim.x/2; s>32; s>>=1){ if (tid < s) sdata[tid] += sdata[tid + s]; syncthreads(); } if (tid < 32){ sdata[tid] += sdata[tid + 32]; sdata[tid] += sdata[tid + 16]; sdata[tid] += sdata[tid + 8]; sdata[tid] += sdata[tid + 4]; sdata[tid] += sdata[tid + 2]; sdata[tid] += sdata[tid 65 +1];

66 Reduction #5: Unroll the Last Warp for (unsigned int s=blockdim.x/2; s>32; s>>=1){ if (tid < s) //To save work! sdata[tid] += sdata[tid + s]; syncthreads(); } if (tid < 32){ sdata[tid] += sdata[tid + 32]; sdata[tid] += sdata[tid + 16]; sdata[tid] += sdata[tid + 8]; sdata[tid] += sdata[tid +4]; sdata[tid] += sdata[tid + 2]; sdata[tid] += sdata[tid + 1]; } 66 66

67 Performance for 4M Element Reduction 67 67

68 Completely Unrolled 如果编译时就知道迭代次数, 就可以全面展开循环 幸运的是 GPU 的 thread block 内至多有 512 个线程 而且我们一般在 thread block 内使用 2 的幂次个数的线程 所以对任意确定线程个数的 thread block 都可以做循环展开 怎样保持代码通用 (generic)? 编译时不知道 thread block 内的线程个数, 怎样循环展开? 即 kernel 函数以不同配置方式被启动 摸版 (template)! CUDA 支持 C++ template 参数 Device 和 host 函数 68 68

69 Unrolling with Templates Specify block size as a function template parameter: template <unsigned int blocksize> global void reduce5(int *g_idata, int *g_odata) 69 69

70 70 Reduction #6: Completely Unrolled if (blocksize >= 512) { if (tid < 256) { sdata[tid] += sdata[tid + 256]; } syncthreads(); } if (blocksize >= 256) { if (tid < 128) { sdata[tid] += sdata[tid + 128]; } syncthreads(); } if (blocksize >= 128) { if (tid < 64) { sdata[tid] += sdata[tid + 64]; } syncthreads(); } if (tid < 32) { if (blocksize >= 64) sdata[tid] += sdata[tid + 32]; if (blocksize >= 32) sdata[tid] += sdata[tid + 16]; if (blocksize >= 16) sdata[tid] += sdata[tid + 8]; if (blocksize >= 8) sdata[tid] += sdata[tid + 4]; if (blocksize >= 4) sdata[tid] += sdata[tid + 2]; if (blocksize >= 2) sdata[tid] += sdata[tid + 1]; } All code in RED will be evaluated at compile time. 70

71 调用模版 Kernel 71 还需要在编译时指定 block size 吗? 不必! 只需要处理 10 种可能 block size 的 switch 语句 switch (threads){ case 512: reduce5<512><<< dimgrid, dimblock, smemsize >>>(d_idata, d_odata); break; } case 256: reduce5<256><<< dimgrid, dimblock, smemsize >>>(d_idata, d_odata); break; case 128: reduce5<128><<< dimgrid, dimblock, smemsize >>>(d_idata, d_odata); break; case 64: reduce5< 64><<< dimgrid, dimblock, smemsize >>>(d_idata, d_odata); break; case 32: reduce5< 32><<< dimgrid, dimblock, smemsize >>>(d_idata, d_odata); break; case 16: reduce5< 16><<< dimgrid, dimblock, smemsize >>>(d_idata, d_odata); break; case 8: reduce5< 8><<< dimgrid, dimblock, smemsize >>>(d_idata, d_odata); break; case 4: reduce5< 4><<< dimgrid, dimblock, smemsize >>>(d_idata, d_odata); break; case 2: reduce5< 2><<< dimgrid, dimblock, smemsize >>>(d_idata, d_odata); break; case 1: reduce5< 1><<< dimgrid, dimblock, smemsize >>>(d_idata, d_odata); break; 71

72 Performance for 4M Element Reduction 72 72

73 Brent 定理 令 W(N) 是某并行算法 A 在运行时间 T(N) 内所执行的运算量, 则 A 使用 p 台处理器可在 t(n)=o(w(n)/p(n)+t(n)) 时间内执行完毕 并行算法的几个复杂性度量指标 运行时间 t(n): 包含计算时间和通讯时间 处理器数 P(N) 并行算法成本 c(n): c(n)=t(n)p(n) 总运算量 W(N): 并行算法求解问题时所完成的总的操作步数 73 73

74 Parallel Reduction Complexity 处理器数 P(N) P 个线程 parallel executing (P processors) 总运算量 W(N): 并行算法求解问题时所完成的总的操作步数 在 log(n) 个并行步骤上完成, 步骤 S 需要 N/2S 次独立操作 T(N) = logn 如果 N=2D, 共需要 W(N)=Σ S [1..D] 2 D-S = N-1 次操作 整体复杂度 O(N) work-efficient > i.e. 不需要比顺序执行更多的工作 运行时间 t(n): 包含计算时间和通讯时间 t(n) = O(W(N)/P+T(N)) = O(N/P+logN) CUDA 模型考虑线程,O(N) 线程, 一个 thread block 内, N=P t(n) = O(logN) 并行算法成本 c(n): c(n) = t(n)p(n) = NlogN 74 74

75 算法成本 并行算法的成本定义为 #processors x time complexity 并行算法成本 c(n): c(n) = t(n)p(n) = NlogN O(NlogN): Not cost efficient! Brent s theorem 建议 O(N/logN) threads 每一线程负责 O(logN) 顺序工作 线程数量减少为 1/logN 每一线程负责 logn more 工作 则所有 O(N/logN) threads 线程合作 O(logN) 个步骤 成本为 O((N/logN) * logn) = O(N) 也称为 algorithm cascading 实际工作中经常可以带来显著性能提升 75 75

76 Algorithm Cascading 76 结合 sequential and parallel reduction 每一线程装载并加和若干元素于 shared memory Tree-based reduction in shared memory Brent s theorem 指出一个线程应该加和 O(logN) 个元素 即 1024 或 2048 元素每 block, 而不是 256 根据实际经验, 可以更多 可能线程内工作越多, 有助于隐藏存储器延时 Thread block 内更多线程可以减少递归调用内核的次数 > 递归最后阶段, thread block 数量较小, 则启动内核的相对开销更大 G80 平台上最高性能在 blocks of 128 threads 即 元素每 block 8-32 元素每线程 76

77 77 Reduction #7: Multiple Adds / Thread 把装载和加和两个元素 : unsigned int tid = threadidx.x; x; unsigned int i = blockidx.x*(blockdim.x*2) + threadidx.x; sdata[tid] = g_idata[i] + g_idata[i+blockdim.x]; syncthreads(); 替换为一个 while 循环做必要次数之加法 unsigned int tid = threadidx.x; unsigned int i = blockidx.x*(blocksize*2) + threadidx.x; unsigned int gridsize = blocksize*2*griddim.x; sdata[tid] = 0; while (i < n) { sdata[tid] += g_idata[i] + g_idata[i+blocksize]; i += gridsize; } syncthreads(); 77

78 Reduction #7: Multiple Adds / Thread 每次循环 global memory 地址增量 : gridsize gridsize 应该是 16 的整数倍 以 gridsize 增量后下一个 global memory 满足对齐条件 保证 coalescing! unsigned int tid = threadidx.x; unsigned int i = blockidx.x*(blocksize*2) + threadidx.x; unsigned int gridsize = blocksize*2*griddim griddim.x; sdata[tid] = 0; while (i < n) { sdata[tid] += g_idata[i] + g_idata[i+blocksize]; i += gridsize; } syncthreads(); 78 78

79 Performance for 4M Element Reduction 79 79

80 template <unsigned int blocksize> global void reduce6(int *g_idata, int *g_odata, unsigned int n) { extern shared int sdata[]; unsigned int tid = threadidx.x; x; unsigned int i = blockidx.x*(blocksize*2) + tid; unsigned int gridsize = blocksize*2*griddim.x; sdata[tid] = 0; do { sdata[tid] += g_idata[i] + g_idata[i+blocksize]; i += gridsize; } while (i < n); syncthreads(); if (blocksize >= 512) { if (tid < 256) { sdata[tid] += sdata[tid + 256]; } syncthreads(); } if (blocksize >= 256) { if (tid < 128) { sdata[tid] += sdata[tid + 128]; } syncthreads(); } if (blocksize >= 128) { if (tid < 64) { sdata[tid] += sdata[tid + 64]; } syncthreads(); } if (tid < 32) { if (blocksize >= 64) sdata[tid] += sdata[tid + 32]; if (blocksize >= 32) sdata[tid] += sdata[tid + 16]; if (blocksize >= 16) sdata[tid] += sdata[tid + 8]; if (blocksize >= 8) sdata[tid] += sdata[tid + 4]; } if (blocksize >= 4) sdata[tid] += sdata[tid + 2]; if (blocksize >= 2) sdata[tid] += sdata[tid + 1]; } if (tid == 0) g_odata[blockidx.x] = sdata[0]; 最终优化代码 80 80

81 Performance Comparison 81 81

82 Parallel Reduction 总结 算法优化 Changes to addressing, algorithm cascading 11.84x speedup, combined! 代码优化 循环展开 2.54x speedup, combined 82 82

83 优化技术总结 影响 CUDA 性能的主要方面 Memory coalescing Divergent branching Bank conflicts Latency hiding 用峰值性能导引优化 理解并行算法复杂度理论 了解怎样发现性能瓶颈 例如 memory, core computation, or instruction overhead 优化算法, 然后展开循环 使用模版参数优化代码 83 83

84 Final Notes People who are really serious about software should make their own hardware. Alan Kay 84 84

85 Final Notes 知者不惑, 仁者不忧, 勇者不惧 - 孔子 85 85

Understanding IO patterns of SSDs

Understanding IO patterns of SSDs 固态硬盘 I/O 特性测试 周大 众所周知, 固态硬盘是一种由闪存作为存储介质的数据库存储设备 由于闪存和磁盘之间物理特性的巨大差异, 现有的各种软件系统无法直接使用闪存芯片 为了提供对现有软件系统的支持, 往往在闪存之上添加一个闪存转换层来实现此目的 固态硬盘就是在闪存上附加了闪存转换层从而提供和磁盘相同的访问接口的存储设备 一方面, 闪存本身具有独特的访问特性 另外一方面, 闪存转换层内置大量的算法来实现闪存和磁盘访问接口之间的转换

More information

Previous on Computer Networks Class 18. ICMP: Internet Control Message Protocol IP Protocol Actually a IP packet

Previous on Computer Networks Class 18. ICMP: Internet Control Message Protocol IP Protocol Actually a IP packet ICMP: Internet Control Message Protocol IP Protocol Actually a IP packet 前 4 个字节都是一样的 0 8 16 31 类型代码检验和 ( 这 4 个字节取决于 ICMP 报文的类型 ) ICMP 的数据部分 ( 长度取决于类型 ) ICMP 报文 首部 数据部分 IP 数据报 ICMP: Internet Control Message

More information

计算机组成原理第二讲 第二章 : 运算方法和运算器 数据与文字的表示方法 (1) 整数的表示方法. 授课老师 : 王浩宇

计算机组成原理第二讲 第二章 : 运算方法和运算器 数据与文字的表示方法 (1) 整数的表示方法. 授课老师 : 王浩宇 计算机组成原理第二讲 第二章 : 运算方法和运算器 数据与文字的表示方法 (1) 整数的表示方法 授课老师 : 王浩宇 haoyuwang@bupt.edu.cn 1 Today: Bits, Bytes, and Integers Representing information as bits Bit-level manipulations Integers Representation: unsigned

More information

ICP Enablon User Manual Factory ICP Enablon 用户手册 工厂 Version th Jul 2012 版本 年 7 月 16 日. Content 内容

ICP Enablon User Manual Factory ICP Enablon 用户手册 工厂 Version th Jul 2012 版本 年 7 月 16 日. Content 内容 Content 内容 A1 A2 A3 A4 A5 A6 A7 A8 A9 Login via ICTI CARE Website 通过 ICTI 关爱网站登录 Completing the Application Form 填写申请表 Application Form Created 创建的申请表 Receive Acknowledgement Email 接收确认电子邮件 Receive User

More information

AvalonMiner Raspberry Pi Configuration Guide. AvalonMiner 树莓派配置教程 AvalonMiner Raspberry Pi Configuration Guide

AvalonMiner Raspberry Pi Configuration Guide. AvalonMiner 树莓派配置教程 AvalonMiner Raspberry Pi Configuration Guide AvalonMiner 树莓派配置教程 AvalonMiner Raspberry Pi Configuration Guide 简介 我们通过使用烧录有 AvalonMiner 设备管理程序的树莓派作为控制器 使 用户能够通过控制器中管理程序的图形界面 来同时对多台 AvalonMiner 6.0 或 AvalonMiner 6.01 进行管理和调试 本教程将简要的说明 如何把 AvalonMiner

More information

PCU50 的整盘备份. 本文只针对操作系统为 Windows XP 版本的 PCU50 PCU50 启动硬件自检完后, 出现下面文字时, 按向下光标键 光标条停在 SINUMERIK 下方的空白处, 如下图, 按回车键 PCU50 会进入到服务画面, 如下图

PCU50 的整盘备份. 本文只针对操作系统为 Windows XP 版本的 PCU50 PCU50 启动硬件自检完后, 出现下面文字时, 按向下光标键 光标条停在 SINUMERIK 下方的空白处, 如下图, 按回车键 PCU50 会进入到服务画面, 如下图 PCU50 的整盘备份 本文只针对操作系统为 Windows XP 版本的 PCU50 PCU50 启动硬件自检完后, 出现下面文字时, 按向下光标键 OS Loader V4.00 Please select the operating system to start: SINUMERIK Use and to move the highlight to your choice. Press Enter

More information

实验三十三 DEIGRP 的配置 一 实验目的 二 应用环境 三 实验设备 四 实验拓扑 五 实验要求 六 实验步骤 1. 掌握 DEIGRP 的配置方法 2. 理解 DEIGRP 协议的工作过程

实验三十三 DEIGRP 的配置 一 实验目的 二 应用环境 三 实验设备 四 实验拓扑 五 实验要求 六 实验步骤 1. 掌握 DEIGRP 的配置方法 2. 理解 DEIGRP 协议的工作过程 实验三十三 DEIGRP 的配置 一 实验目的 1. 掌握 DEIGRP 的配置方法 2. 理解 DEIGRP 协议的工作过程 二 应用环境 由于 RIP 协议的诸多问题, 神州数码开发了与 EIGRP 完全兼容的 DEIGRP, 支持变长子网 掩码 路由选择参考更多因素, 如带宽等等 三 实验设备 1. DCR-1751 三台 2. CR-V35FC 一条 3. CR-V35MT 一条 四 实验拓扑

More information

Chapter 1 (Part 2) Introduction to Operating System

Chapter 1 (Part 2) Introduction to Operating System Chapter 1 (Part 2) Introduction to Operating System 张竞慧办公室 : 计算机楼 366 室电邮 :jhzhang@seu.edu.cn 主页 :http://cse.seu.edu.cn/personalpage/zjh/ 电话 :025-52091017 1.1 Computer System Components 1. Hardware provides

More information

Logitech G302 Daedalus Prime Setup Guide 设置指南

Logitech G302 Daedalus Prime Setup Guide 设置指南 Logitech G302 Daedalus Prime Setup Guide 设置指南 Logitech G302 Daedalus Prime Contents / 目录 English................. 3 简体中文................. 6 2 Logitech G302 Daedalus Prime 1 On 2 USB Your Daedalus Prime

More information

如何查看 Cache Engine 缓存中有哪些网站 /URL

如何查看 Cache Engine 缓存中有哪些网站 /URL 如何查看 Cache Engine 缓存中有哪些网站 /URL 目录 简介 硬件与软件版本 处理日志 验证配置 相关信息 简介 本文解释如何设置处理日志记录什么网站 /URL 在 Cache Engine 被缓存 硬件与软件版本 使用这些硬件和软件版本, 此配置开发并且测试了 : Hardware:Cisco 缓存引擎 500 系列和 73xx 软件 :Cisco Cache 软件版本 2.3.0

More information

Chapter 7: Deadlocks. Operating System Concepts 9 th Edition

Chapter 7: Deadlocks. Operating System Concepts 9 th Edition Chapter 7: Deadlocks Silberschatz, Galvin and Gagne 2013 Chapter Objectives To develop a description of deadlocks, which prevent sets of concurrent processes from completing their tasks To present a number

More information

三 依赖注入 (dependency injection) 的学习

三 依赖注入 (dependency injection) 的学习 三 依赖注入 (dependency injection) 的学习 EJB 3.0, 提供了一个简单的和优雅的方法来解藕服务对象和资源 使用 @EJB 注释, 可以将 EJB 存根对象注入到任何 EJB 3.0 容器管理的 POJO 中 如果注释用在一个属性变量上, 容器将会在它被第一次访问之前赋值给它 在 Jboss 下一版本中 @EJB 注释从 javax.annotation 包移到了 javax.ejb

More information

组播路由 - MSDP 和 PIM 通过走

组播路由 - MSDP 和 PIM 通过走 组播路由 - MSDP 和 PIM 通过走 Contents Introduction 拓扑控制 - 飞机来源注册 ( 步骤 1-3) 接受器参加组 ( 第 4 步 - 第 11 步 ) R4 PIM RP 修剪 (S, G) 步骤 12 摘要 Related Information Introduction 本文描述独立于协议的组播 (PIM) 和多播源发现协议 (MSDP) 的操作与使用一简单的组播拓扑

More information

学习沉淀成长分享 EIGRP. 红茶三杯 ( 朱 SIR) 微博 : Latest update:

学习沉淀成长分享 EIGRP. 红茶三杯 ( 朱 SIR) 微博 :  Latest update: 学习沉淀成长分享 EIGRP 红茶三杯 ( 朱 SIR) 微博 :http://t.sina.com/vinsoney Latest update: 2012-06-01 课程目标 EIGRP 协议基础 EIGRP 基础配置 EIGRP 协议基础 EIGRP 的协议特点 EIGRP 的三张表 EIGRP 数据包 初始路由发现 EIGRP metric DUAL 算法 EIGRP 的协议特点 CISCO

More information

Optimizing Parallel Reduction in CUDA. Mark Harris NVIDIA Developer Technology

Optimizing Parallel Reduction in CUDA. Mark Harris NVIDIA Developer Technology Optimizing Parallel Reduction in CUDA Mark Harris NVIDIA Developer Technology Parallel Reduction Common and important data parallel primitive Easy to implement in CUDA Harder to get it right Serves as

More information

Build a Key Value Flash Disk Based Storage System. Flash Memory Summit 2017 Santa Clara, CA 1

Build a Key Value Flash Disk Based Storage System. Flash Memory Summit 2017 Santa Clara, CA 1 Build a Key Value Flash Disk Based Storage System Flash Memory Summit 2017 Santa Clara, CA 1 Outline Ø Introduction,What s Key Value Disk Ø A Evolution to Key Value Flash Disk Based Storage System Ø Three

More information

<properties> <jdk.version>1.8</jdk.version> <project.build.sourceencoding>utf-8</project.build.sourceencoding> </properties>

<properties> <jdk.version>1.8</jdk.version> <project.build.sourceencoding>utf-8</project.build.sourceencoding> </properties> SpringBoot 的基本操作 一 基本概念在 spring 没有出现的时候, 我们更多的是使用的 Spring,SpringMVC,Mybatis 等开发框架, 但是要将这些框架整合到 web 项目中需要做大量的配置,applicationContext.xml 以及 servlet- MVC.xml 文件等等, 但是这些文件还还不够, 还需要配置 web.xml 文件进行一系列的配置 以上操作是比较麻烦的,

More information

Microsoft RemoteFX: USB 和设备重定向 姓名 : 张天民 职务 : 高级讲师 公司 : 东方瑞通 ( 北京 ) 咨询服务有限公司

Microsoft RemoteFX: USB 和设备重定向 姓名 : 张天民 职务 : 高级讲师 公司 : 东方瑞通 ( 北京 ) 咨询服务有限公司 Microsoft RemoteFX: USB 和设备重定向 姓名 : 张天民 职务 : 高级讲师 公司 : 东方瑞通 ( 北京 ) 咨询服务有限公司 RemoteFX 中新的 USB 重定向特性 在 RDS 中所有设备重定向机制 VDI 部署场景讨论 : 瘦客户端和胖客户端 (Thin&Rich). 用户体验 : 演示使用新的 USB 重定向功能 81% 4 本地和远程的一致的体验 (Close

More information

Command Dictionary CUSTOM

Command Dictionary CUSTOM 命令模式 CUSTOM [(filename)] [parameters] Executes a "custom-designed" command which has been provided by special programming using the GHS Programming Interface. 通过 GHS 程序接口, 执行一个 用户设计 的命令, 该命令由其他特殊程序提供 参数说明

More information

Optimizing Parallel Reduction in CUDA. Mark Harris NVIDIA Developer Technology

Optimizing Parallel Reduction in CUDA. Mark Harris NVIDIA Developer Technology Optimizing Parallel Reduction in CUDA Mark Harris NVIDIA Developer Technology Parallel Reduction Common and important data parallel primitive Easy to implement in CUDA Harder to get it right Serves as

More information

密级 : 博士学位论文. 论文题目基于 ScratchPad Memory 的嵌入式系统优化研究

密级 : 博士学位论文. 论文题目基于 ScratchPad Memory 的嵌入式系统优化研究 密级 : 博士学位论文 论文题目基于 ScratchPad Memory 的嵌入式系统优化研究 作者姓名指导教师学科 ( 专业 ) 所在学院提交日期 胡威陈天洲教授计算机科学与技术计算机学院二零零八年三月 A Dissertation Submitted to Zhejiang University for the Degree of Doctor of Philosophy TITLE: The

More information

Safe Memory-Leak Fixing for C Programs

Safe Memory-Leak Fixing for C Programs Safe Memory-Leak Fixing for C Programs Qing Gao, Yingfei Xiong, Yaqing Mi, Lu Zhang, Weikun Yang, Zhaoing Zhou, Bing Xie, Hong Mei Institute of Software, Peking Unversity 内存管理 安全攸关软件的开发必然涉及内存管理问题 软件工程经典问题,

More information

OTAD Application Note

OTAD Application Note OTAD Application Note Document Title: OTAD Application Note Version: 1.0 Date: 2011-08-30 Status: Document Control ID: Release _OTAD_Application_Note_CN_V1.0 Copyright Shanghai SIMCom Wireless Solutions

More information

Wireless Presentation Pod

Wireless Presentation Pod Wireless Presentation Pod WPP20 www.yealink.com Quick Start Guide (V10.1) Package Contents If you find anything missing, contact your system administrator. WPP20 Wireless Presentation Pod Quick Start Guide

More information

Oracle 一体化创新云技术 助力智慧政府信息化战略. Copyright* *2014*Oracle*and/or*its*affiliates.*All*rights*reserved.** *

Oracle 一体化创新云技术 助力智慧政府信息化战略. Copyright* *2014*Oracle*and/or*its*affiliates.*All*rights*reserved.** * Oracle 一体化创新云技术 助力智慧政府信息化战略 ?* x * Exadata Exadata* * * Exadata* InfiniBand 0Gbits/S 5?10 * Exadata* * Exadata& & Oracle exadata! " 4 " 240 12! "!! " " " Exadata* Exadata & Single?Instance*Database*

More information

Triangle - Delaunay Triangulator

Triangle - Delaunay Triangulator Triangle - Delaunay Triangulator eryar@163.com Abstract. Triangle is a 2D quality mesh generator and Delaunay triangulator. Triangle was created as part of the Quake project in the school of Computer Science

More information

Apache Kafka 源码编译 Spark 大数据博客 -

Apache Kafka 源码编译 Spark 大数据博客 - 经过近一个月时间, 终于差不多将之前在 Flume 0.9.4 上面编写的 source sink 等插件迁移到 Flume-ng 1.5.0, 包括了将 Flume 0.9.4 上面的 TailSou rce TailDirSource 等插件的迁移 ( 当然, 我们加入了许多新的功能, 比如故障恢复 日志的断点续传 按块发送日志以及每个一定的时间轮询发送日志而不是等一个日志发送完才发送另外一个日志

More information

libde265 HEVC 性能测试报告

libde265 HEVC 性能测试报告 libde265 HEVC www.libde265.org libde265 HEVC 高效率视频编码 (HEVC) 是新的视频压缩标准, 是 H.264/MPEG-4 AVC (Advanced Video Coding) 的后继者 HEVC 是由 ISO/IEC Moving Picture Experts Group (MPEG) 和 ITU-T Video Coding Experts Group

More information

2. Introduction to Digital Media Format

2. Introduction to Digital Media Format Digital Asset Management 数字媒体资源管理 2. Introduction to Digital Media Format 任课 老师 : 张宏鑫 2014-09-30 Outline Image format and coding methods Audio format and coding methods Video format and coding methods

More information

Computer Networks. Wenzhong Li. Nanjing University

Computer Networks. Wenzhong Li. Nanjing University Computer Networks Wenzhong Li Nanjing University 1 Chapter 4. Internetworking The Internet Protocol IP Address ARP and DHCP ICMP IPv6 Mobile IP Internet Routing IP Multicasting Multiprotocol Label Switching

More information

Chapter 11 SHANDONG UNIVERSITY 1

Chapter 11 SHANDONG UNIVERSITY 1 Chapter 11 File System Implementation ti SHANDONG UNIVERSITY 1 Contents File-System Structure File-System Implementation Directory Implementation Allocation Methods Free-Space Management Efficiency and

More information

Declaration of Conformity STANDARD 100 by OEKO TEX

Declaration of Conformity STANDARD 100 by OEKO TEX Declaration of Conformity STANDARD 100 by OEKO TEX OEKO-TEX - International Association for Research and Testing in the Field of Textile and Leather Ecology OEKO-TEX - 国际纺织和皮革生态学研究和检测协会 Declaration of

More information

Presentation Title. By Author The MathWorks, Inc. 1

Presentation Title. By Author The MathWorks, Inc. 1 Presentation Title By Author 2014 The MathWorks, Inc. 1 4G LTE 轻松入门 陈建平 MathWorks 中国 2014 The MathWorks, Inc. 2 大纲 4G 综述 LTE 系统工具箱的应用 黄金参考模型 点到点链路级仿真 信号发生和分析 信号信息恢复 4G 系统的并行仿真加速 3 无线标准的演化 * *Although ETSI

More information

第二小题 : 逻辑隔离 (10 分 ) OpenFlow Switch1 (PC-A/Netfpga) OpenFlow Switch2 (PC-B/Netfpga) ServerB PC-2. Switching Hub

第二小题 : 逻辑隔离 (10 分 ) OpenFlow Switch1 (PC-A/Netfpga) OpenFlow Switch2 (PC-B/Netfpga) ServerB PC-2. Switching Hub 第二小题 : 逻辑隔离 (10 分 ) 一 实验背景云平台服务器上的不同虚拟服务器, 分属于不同的用户 用户远程登录自己的虚拟服务器之后, 安全上不允许直接访问同一局域网的其他虚拟服务器 二 实验目的搭建简单网络, 通过逻辑隔离的方法, 实现用户能远程登录局域网内自己的虚拟内服务器, 同时不允许直接访问同一局域网的其他虚拟服务器 三 实验环境搭建如图 1-1 所示, 我们会创建一个基于 OpenFlow

More information

新一代 ODA X5-2 低调 奢华 有内涵

新一代 ODA X5-2 低调 奢华 有内涵 新一代 ODA X5-2 低调 奢华 有内涵 李昊首席销售顾问甲骨文公司系统事业部 内容预览 1 2 3 4 ODA 概述 ODA X5-2 新功能 / 特性介绍 ODA X5-2 市场定位 & 竞争分析总结 & 讨论 内容预览 1 2 3 4 ODA 概述 ODA X5-2 新功能 / 特性介绍 ODA X5-2 市场定位 & 竞争分析总结 & 讨论 什么是 ODA ODA: 五年四代, 稳中求变

More information

Software Engineering. Zheng Li( 李征 ) Jing Wan( 万静 )

Software Engineering. Zheng Li( 李征 ) Jing Wan( 万静 ) Software Engineering Zheng Li( 李征 ) Jing Wan( 万静 ) 作业 Automatically test generation 1. 编写一个三角形程序, 任意输入三个整数, 判断三个整形边长能否构成三角形, 如果是三角形, 则判断它是一般三角形 等腰三角形或等边三角形, 并输出三角形的类型 2. 画出程序的 CFG, 计算圈复杂度 3. 设计一组测试用例满足测试准则

More information

Parallel Programming Principle and Practice Lecture 7

Parallel Programming Principle and Practice Lecture 7 Parallel Programming Principle and Practice Lecture 7 Threads programming with TBB Outline Intel Threading Building Blocks Task-based programming Task Scheduler Scalable Memory Allocators Concurrent Containers

More information

Packaging 10Apr2012 Rev V Specification MBXL HSG 1. PURPOSE 目的 2. APPLICABLE PRODUCT 适用范围

Packaging 10Apr2012 Rev V Specification MBXL HSG 1. PURPOSE 目的 2. APPLICABLE PRODUCT 适用范围 107-68703 Packaging 10Apr2012 Rev V Specification MBXL HSG 1. PURPOSE 目的 Define the packaging specifiction and packaging method of MBXL HSG. 订定 MBXL HSG 产品之包装规格及包装方式 2. APPLICABLE PRODUCT 适用范围 PKG TYPE

More information

我们应该做什么? 告知性分析 未来会发生什么? 预测性分析 为什么会发生 诊断性分析 过去发生了什么? 描述性分析 高级分析 传统 BI. Source: Gartner

我们应该做什么? 告知性分析 未来会发生什么? 预测性分析 为什么会发生 诊断性分析 过去发生了什么? 描述性分析 高级分析 传统 BI. Source: Gartner 价值 我们应该做什么? 告知性分析 未来会发生什么? 预测性分析 为什么会发生 诊断性分析 过去发生了什么? 描述性分析 传统 BI 高级分析 Source: Gartner 困难 常见方案 Cortana 高级分析套件 SQL Server 2016 或者 Microsoft R Server Machine Learning 或者 Microsoft R Server 1. 业务理解 2. 数据理解

More information

#MDCC Swift 链式语法应 用 陈乘

#MDCC Swift 链式语法应 用 陈乘 #MDCC 2016 Swift 链式语法应 用 陈乘 方 @ENJOY 关于我 Swift 开发者 ENJOY ios 客户端负责 人 两年年 Swift 实际项 目开发经验 微博 ID: webfrogs Twitter: nswebfrog Writing code is always easy, the hard part is reading it. 链式语法? 链式语法 可以连续不不断地进

More information

NyearBluetoothPrint SDK. Development Document--Android

NyearBluetoothPrint SDK. Development Document--Android NyearBluetoothPrint SDK Development Document--Android (v0.98) 2018/09/03 --Continuous update-- I Catalogue 1. Introduction:... 3 2. Relevant knowledge... 4 3. Direction for use... 4 3.1 SDK Import... 4

More information

Multiprotocol Label Switching The future of IP Backbone Technology

Multiprotocol Label Switching The future of IP Backbone Technology Multiprotocol Label Switching The future of IP Backbone Technology Computer Network Architecture For Postgraduates Chen Zhenxiang School of Information Science and Technology. University of Jinan (c) Chen

More information

VAS 5054A FAQ ( 所有 5054A 整合, 中英对照 )

VAS 5054A FAQ ( 所有 5054A 整合, 中英对照 ) VAS 5054A FAQ ( 所有 5054A 整合, 中英对照 ) About Computer Windows System Requirements ( 电脑系统要求方面 ) 问 :VAS 5054A 安装过程中出现错误提示 :code 4 (corrupt cabinet) 答 : 客户电脑系统有问题, 换 XP 系统安装 Q: When vas5054 install, an error

More information

Congestion Control Mechanisms for Ad-hoc Social Networks 自组织社会网络中的拥塞控制机制

Congestion Control Mechanisms for Ad-hoc Social Networks 自组织社会网络中的拥塞控制机制 Congestion Control Mechanisms for Ad-hoc Social Networks 自组织社会网络中的拥塞控制机制 by Hannan-Bin-Liaqat (11117018) to School of Software in partial fulfillment of the requirements for the degree of Doctor of Philosophy

More information

Optimizing Parallel Reduction in CUDA

Optimizing Parallel Reduction in CUDA Optimizing Parallel Reduction in CUDA Mark Harris NVIDIA Developer Technology http://developer.download.nvidia.com/assets/cuda/files/reduction.pdf Parallel Reduction Tree-based approach used within each

More information

Air Speaker. Getting started with Logitech UE Air Speaker. 快速入门罗技 UE Air Speaker. Wireless speaker with AirPlay. 无线音箱 (AirPlay 技术 )

Air Speaker. Getting started with Logitech UE Air Speaker. 快速入门罗技 UE Air Speaker. Wireless speaker with AirPlay. 无线音箱 (AirPlay 技术 ) Air Speaker Getting started with Logitech UE Air Speaker Wireless speaker with AirPlay 快速入门罗技 UE Air Speaker 无线音箱 (AirPlay 技术 ) for ipad, iphone, ipod touch and itunes ipad, iphone, ipod touch itunes Logitech

More information

Chapter2 Instruction Sets

Chapter2 Instruction Sets Coputer Architecture Chapter Instruction Sets Zheng Qinghua CS Departent of XJTU 05.3 Introduction to Instruction Set Architecture ISA is the structure of a coputer that a achine language prograer ust

More information

1. DWR 1.1 DWR 基础 概念 使用使用 DWR 的步骤. 1 什么是 DWR? Direct Web Remote, 直接 Web 远程 是一个 Ajax 的框架

1. DWR 1.1 DWR 基础 概念 使用使用 DWR 的步骤. 1 什么是 DWR? Direct Web Remote, 直接 Web 远程 是一个 Ajax 的框架 1. DWR 1.1 DWR 基础 1.1.1 概念 1 什么是 DWR? Direct Web Remote, 直接 Web 远程 是一个 Ajax 的框架 2 作用 使用 DWR, 可以直接在 html 网页中调用 Java 对象的方法 ( 通过 JS 和 Ajax) 3 基本原理主要技术基础是 :AJAX+ 反射 1) JS 通过 AJAX 发出请求, 目标地址为 /dwr/*, 被 DWRServlet(

More information

Ganglia 是 UC Berkeley 发起的一个开源集群监视项目, 主要是用来监控系统性能, 如 :cpu mem 硬盘利用率, I/O 负载 网络流量情况等, 通过曲线很容易见到每个节点的工作状态, 对合理调整 分配系统资源, 提高系统整体性能起到重要作用

Ganglia 是 UC Berkeley 发起的一个开源集群监视项目, 主要是用来监控系统性能, 如 :cpu mem 硬盘利用率, I/O 负载 网络流量情况等, 通过曲线很容易见到每个节点的工作状态, 对合理调整 分配系统资源, 提高系统整体性能起到重要作用 在本博客的 Spark Metrics 配置详解 文章中介绍了 Spark Metrics 的配置, 其中我们就介绍了 Spark 监控支持 Ganglia Sink Ganglia 是 UC Berkeley 发起的一个开源集群监视项目, 主要是用来监控系统性能, 如 :cpu mem 硬盘利用率, I/O 负载 网络流量情况等, 通过曲线很容易见到每个节点的工作状态, 对合理调整 分配系统资源,

More information

绝佳的并行处理 - FPGA 加速的根本基石

绝佳的并行处理 - FPGA 加速的根本基石 赛灵思技术日 XILINX TECHNOLOGY DAY 绝佳的并行处理 - 加速的根本基石 朱勇赛灵思大中华区业务拓展总监 2019 年 3 月 19 日 加速 : 大幅提升应用的性能 Without acceleration CPU func1 func2 func3 func4 With acceleration CPU func1 func3 func4 func2 handles compute-intensive,

More information

测试基础架构 演进之路. 茹炳晟 (Robin Ru) ebay 中国研发中心

测试基础架构 演进之路. 茹炳晟 (Robin Ru) ebay 中国研发中心 测试基础架构 演进之路 茹炳晟 (Robin Ru) ebay 中国研发中心 茹炳晟 (Robin Ru) 主要工作经历 : ebay 中国研发中心 -- 测试基础架构技术主管 Hewlett-Packard 惠普软件 ( 中国 ) 研发中心 -- 测试架构师 资深测试专家 Alcatel-Lucent 阿尔卡特朗讯 ( 上海 ) 研发中心 -- 测试技术主管 Cisco 思科 ( 中国 ) 研发中心

More information

XML allows your content to be created in one workflow, at one cost, to reach all your readers XML 的优势 : 只需一次加工和投入, 到达所有读者的手中

XML allows your content to be created in one workflow, at one cost, to reach all your readers XML 的优势 : 只需一次加工和投入, 到达所有读者的手中 XML allows your content to be created in one workflow, at one cost, to reach all your readers XML 的优势 : 只需一次加工和投入, 到达所有读者的手中 We can format your materials to be read.. in print 印刷 XML Conversions online

More information

Command Dictionary -- DAMSTAB

Command Dictionary -- DAMSTAB 命令模式 DAMSTAB [(divlist)] /SDIC /SDIHC /SDIHR /SDI194C[SP] /SDI194P[SP] /SDI216C[SP] /SDI216P[SP] /SDIPtype [/L:l1,l2] [/B:b1[,b2]] [/N:n1,n2] [/STOP[AT][:n]] [/DLL:draftloadline] [/LIMITHEEL:angle] [/WRITE:runfile]

More information

EqualLogic Best Practices for SQL Server Deployments

EqualLogic Best Practices for SQL Server Deployments EqualLogic Best Practices for SQL Server Deployments 李光明 Goldman_Li@dell.com Storage Solution Specialist Dell Storage Forum: EqualLogic User Conference Xiamen, Jan 15-16, 2011 Notices & Disclaimers Copyright

More information

The Design of Everyday Things

The Design of Everyday Things The Design of Everyday Things Byron Li Copyright 2009 Trend Micro Inc. It's Not Your Fault Donald A. Norman & His Book Classification 03/17/11 3 Norman Door Why Learn to think from different aspects Contribute

More information

DEV Office 客户端开发增强

DEV Office 客户端开发增强 DEV261 2007 Office 客户端开发增强 课程内容概述 在 Office 2007 客户端众多新特性中, 和使用者关系最为密切的应该是在 UI 方面的增强 例如, Office 2007 摒弃了传统以计算机命令作为功能组织单位的菜单, 而替换为以用户命令为组织单位的 Ribbon,, 这使得用户可以根据当前正在操作的文档内容, 快速定位到想要执行的操作 对于每一个信息工作者而言,UI,

More information

Technology: Anti-social Networking 科技 : 反社交网络

Technology: Anti-social Networking 科技 : 反社交网络 Technology: Anti-social Networking 科技 : 反社交网络 1 Technology: Anti-social Networking 科技 : 反社交网络 The Growth of Online Communities 社交网络使用的增长 Read the text below and do the activity that follows. 阅读下面的短文, 然后完成练习

More information

Spark Standalone 模式应用程序开发 Spark 大数据博客 -

Spark Standalone 模式应用程序开发 Spark 大数据博客 - 在本博客的 Spark 快速入门指南 (Quick Start Spark) 文章中简单地介绍了如何通过 Spark s hell 来快速地运用 API 本文将介绍如何快速地利用 Spark 提供的 API 开发 Standalone 模式的应用程序 Spark 支持三种程序语言的开发 :Scala ( 利用 SBT 进行编译 ), Java ( 利用 Maven 进行编译 ) 以及 Python

More information

Epetra_Matrix. August 14, Department of Science and Engineering Computing School of Mathematics School Peking University

Epetra_Matrix. August 14, Department of Science and Engineering Computing School of Mathematics School Peking University _Matrix Department of Science and Engineering Computing School of Mathematics School Peking University August 14, 2007 _Matrix Department of Science and Engineering Computing School of Mathematics School

More information

测试 SFTP 的 问题在归档配置页的 MediaSense

测试 SFTP 的 问题在归档配置页的 MediaSense 测试 SFTP 的 问题在归档配置页的 MediaSense Contents Introduction Prerequisites Requirements Components Used 问题 : 测试 SFTP 按钮发生故障由于 SSH 算法协商故障解决方案 Bug Reled Informion Introduction 本文描述如何解决可能发生的安全壳 SSH 算法协商故障, 当您配置一个安全文件传输协议

More information

Murrelektronik Connectivity Interface Part I Product range MSDD, cable entry panels MSDD 系列, 电缆穿线板

Murrelektronik Connectivity Interface Part I Product range MSDD, cable entry panels MSDD 系列, 电缆穿线板 Murrelektronik Connectivity Interface Part I Product range MSDD, cable entry panels MSDD 系列, 电缆穿线板 INTERFACE PORTFOLIO PG 03 Relays 继电器 Intelligent Interface Technology 智能转换技术 Passive Interface Technology

More information

OpenCascade 的曲面.

OpenCascade 的曲面. 在 OpenSceneGraph 中绘制 OpenCascade 的曲面 eryar@163.com 摘要 Abstract : 本文对 OpenCascade 中的几何曲面数据进行简要说明, 并结合 OpenSceneGraph 将这些曲面显示 关键字 Key Words:OpenCascade OpenSceneGraph Geometry Surface NURBS 一 引言 Introduction

More information

上汽通用汽车供应商门户网站项目 (SGMSP) User Guide 用户手册 上汽通用汽车有限公司 2014 上汽通用汽车有限公司未经授权, 不得以任何形式使用本文档所包括的任何部分

上汽通用汽车供应商门户网站项目 (SGMSP) User Guide 用户手册 上汽通用汽车有限公司 2014 上汽通用汽车有限公司未经授权, 不得以任何形式使用本文档所包括的任何部分 上汽通用汽车供应商门户网站项目 (SGMSP) User Guide 用户手册 上汽通用汽车有限公司 2014 上汽通用汽车有限公司未经授权, 不得以任何形式使用本文档所包括的任何部分 SGM IT < 上汽通用汽车供应商门户网站项目 (SGMSP)> 工作产品名称 :< User Guide 用户手册 > Current Version: Owner: < 曹昌晔 > Date Created:

More information

Virtual Memory Management for Main-Memory KV Database Using Solid State Disk *

Virtual Memory Management for Main-Memory KV Database Using Solid State Disk * ISSN 1673-9418 CODEN JKYTA8 E-mail: fcst@vip.163.com Journal of Frontiers of Computer Science and Technology http://www.ceaj.org 1673-9418/2011/05(08)-0686-09 Tel: +86-10-51616056 DOI: 10.3778/j.issn.1673-9418.2011.08.002

More information

A Benchmark For Stroke Extraction of Chinese Characters

A Benchmark For Stroke Extraction of Chinese Characters 2015-09-29 13:04:51 http://www.cnki.net/kcms/detail/11.2442.n.20150929.1304.006.html 北京大学学报 ( 自然科学版 ) Acta Scientiarum Naturalium Universitatis Pekinensis doi: 10.13209/j.0479-8023.2016.025 A Benchmark

More information

IPC 的 Proxy-Stub 设计模式 ( c)

IPC 的 Proxy-Stub 设计模式 ( c) B05_c 基於軟硬整合觀點 IPC 的 Proxy-Stub 设计模式 ( c) By 高煥堂 天子 曹操 地头蛇? 3 包裝 IBinder 接口基於軟硬整合觀點 -- 使用 Proxy-Stub 设计模式 采用 Proxy-Stub 设计模式将 IBinder 接口包装起来, 让 App 与 IBinder 接口不再产生高度相依性 應用程序 (App) 其将 IBinder 接口包装起来, 转换出更好用的新接口

More information

PTZ PRO 2. Setup Guide 设置指南

PTZ PRO 2. Setup Guide 设置指南 PTZ PRO 2 Setup Guide 设置指南 3 ENGLISH 8 简体中文 2 KNOW YOUR PRODUCT 1 4 9 5 10 6 7 11 8 2 13 14 3 12 15 Camera 1. 10X lossless zoom 2. Camera LED 3. Kensington Security Slot Remote 4. Mirror 5. Zoom in 6.

More information

U-CONTROL UMX610/UMX490/UMX250. The Ultimate Studio in a Box: 61/49/25-Key USB/MIDI Controller Keyboard with Separate USB/Audio Interface

U-CONTROL UMX610/UMX490/UMX250. The Ultimate Studio in a Box: 61/49/25-Key USB/MIDI Controller Keyboard with Separate USB/Audio Interface U-CONTROL UMX610/UMX490/UMX250 The Ultimate Studio in a Box: 61/49/25-Key USB/MIDI Controller Keyboard with Separate USB/Audio Interface 2 U-CONTROL UMX610/UMX490/UMX250 快速启动向导 3 其他的重要信息 ¼'' TS 1. 2. 3.

More information

EBD EBD. end

EBD EBD. end EBD end 1. 2. 3. 4. us-ms ms-s s+ 5. 6. 7. 8. 9. 10. 11. EBD / 1. 2. 3. 4. 1. 2. 3. 4. TCP/IP + = IC PCB IP intellectual Property IC CPU DSP RAM ROM ASIC IP CPU GPRS linux OS RTOS TCP/IP H.323 MCU MCUvsCPU

More information

梁永健. W K Leung. 华为企业业务 BG 解决方案销售部 CTO Chief Technology Officer, Solution Sales, Huawei

梁永健. W K Leung. 华为企业业务 BG 解决方案销售部 CTO Chief Technology Officer, Solution Sales, Huawei 梁永健 W K Leung 华为企业业务 BG 解决方案销售部 CTO Chief Technology Officer, Solution Sales, Huawei Network Threats ICT 移动化云计算社交化大数据 Mobile Cloud Social Big Data 网络威胁 APT Mobile threats Web threats Worms Trojans Botnet

More information

TDS - 3. Battery Compartment. LCD Screen. Power Button. Hold Button. Body. Sensor. HM Digital, Inc.

TDS - 3. Battery Compartment. LCD Screen. Power Button. Hold Button. Body. Sensor. HM Digital, Inc. TDS - 3 Battery Compartment LCD Screen Power Button Hold Button Body Sensor Dual Range Measures from 0~999ppm, with a resolution of 1 ppm. From 1,000 to 9,990ppm, the resolution is 10 ppm, indicated by

More information

CloudStack 4.3 API 开发指南!

CloudStack 4.3 API 开发指南! CloudStack 4.3 API 开发指南 CloudStack4.3 离发布也不远了, 自从 CloudStack4.1 以后, 其耦合度 一步步下降, 这使开发变得更加容易, 今天我们就以 CloudStack4.3 版本为基础, 来感受 一下如何添加 一个新的 API 首先,CloudStack4.3 里所有的 API 都可认为是 一个插件提供的服务, 诸如 ACL, 网络, 主机以及管理服务器

More information

Operating Systems. Chapter 4 Threads. Lei Duan

Operating Systems. Chapter 4 Threads. Lei Duan Operating Systems Chapter 4 Threads Lei Duan leiduan@scu.edu.cn 2015.2 Agenda 4.1 Processes and Threads 4.2 Types of Threads 4.3 Multicore and Multithreading 4.4 Summary 2015-04-01 2/49 Agenda 4.1 Processes

More information

S 1.6V 3.3V. S Windows 2000 Windows XP Windows Vista S USB S RGB LED (PORT1 PORT2 PORT3) S I 2 C. + 表示无铅 (Pb) 并符合 RoHS 标准 JU10 JU14, JU24, JU25

S 1.6V 3.3V. S Windows 2000 Windows XP Windows Vista S USB S RGB LED (PORT1 PORT2 PORT3) S I 2 C. + 表示无铅 (Pb) 并符合 RoHS 标准 JU10 JU14, JU24, JU25 19-4694; Rev 0; 6/09 MAX7360 评估板 (EV kit) 提供经过验证的设计, 用于评估 MAX7360 集成 ESD 保护电路的 I 2 C 接口 低 EMI 按键开关控制器和 8 路 LED 驱动器 /GPIO 评估板还包含 Windows 2000 Windows XP 和 Windows Vista 兼容软件, 提供简易的图形用户接口 (GUI) 来验证 MAX7360

More information

Support for Title 21 CFR Part 11 and Annex 11 compliance: Agilent OpenLAB CDS version 2.1

Support for Title 21 CFR Part 11 and Annex 11 compliance: Agilent OpenLAB CDS version 2.1 Support for Title 21 CFR and compliance: Agilent OpenLAB CDS version 2.1 Whitepaper Overview US FDA in Title 21 of the Code of Federal Regulations (CFR), and its EU analog, Eudralex Chapter 4,, describe

More information

ngx_openresty: an Nginx ecosystem glued by Lua

ngx_openresty: an Nginx ecosystem glued by Lua ngx_openresty: an Nginx ecosystem glued by Lua ngx_openresty: an Nginx ecosystem glued by Lua 由 Lua 粘合的 Nginx 生态环境 agentzh@gmail.com 章亦春 (agentzh) 2012.02 I've been hacking in the Fuzhou city in the last

More information

Supplementary Materials on Semaphores

Supplementary Materials on Semaphores Supplementary Materials on Semaphores Contents Semaphores Basic synchronization patterns Producers-Consumers (Bounded Buffer) Readers-Writers The Dining Philosophers More Exercises for You Dijkstra Edsger

More information

计算机科学与技术专业本科培养计划. Undergraduate Program for Specialty in Computer Science & Technology

计算机科学与技术专业本科培养计划. Undergraduate Program for Specialty in Computer Science & Technology 计算机科学与技术学院 计算机科学与技术学院下设 6 个研究所 : 计算科学理论研究所 数据工程研究所 并行分布式计算研究所 数据存储研究所 数字媒体研究所 信息安全研究所 ;2 个中心 : 嵌入式软件与系统工程中心和教学中心 外存储系统国家专业实验室 教育部信息存储系统重点实验室 中国教育科研网格主结点 国家高性能计算中心 ( 武汉 ) 服务计算技术与系统教育部重点实验室 湖北省数据库工程技术研究中心

More information

Microsemi - Leading Innovation for China s Hyperscale Data Centers

Microsemi - Leading Innovation for China s Hyperscale Data Centers Power Matters. TM Microsemi - Leading Innovation for China s Hyperscale Data Centers Andrew Dieckmann Sr. Director, Scalable Storage Product Marketing 1 议程 China A Storage Growth Engine Data Center Storage

More information

操作系统原理与设计. 第 13 章 IO Systems(IO 管理 ) 陈香兰 2009 年 09 月 01 日 中国科学技术大学计算机学院

操作系统原理与设计. 第 13 章 IO Systems(IO 管理 ) 陈香兰 2009 年 09 月 01 日 中国科学技术大学计算机学院 第 13 章 IO Systems(IO 管理 ) 中国科学技术大学计算机学院 2009 年 09 月 01 日 提纲 I/O Hardware 1 I/O Hardware Polling Interrupts Direct Memory Access (DMA) I/O hardware summary 2 Block and Character Devices Network Devices

More information

Keygen Codes For Photoshop Cs6 ->>> DOWNLOAD

Keygen Codes For Photoshop Cs6 ->>> DOWNLOAD Keygen Codes For Photoshop Cs6 ->>> DOWNLOAD 1 / 5 2 / 5 Photoshop Cs6 Crack Serial Ke....op_sp_fanyi{font-size:1em;word-break:normal;}.op_sp_fanyi.op_sp_fanyi_read{display: inline-block;*display: inline;*zoom:1;marginleft:4px;*position:relative;*top:-2px;}.op_sp_fanyi_how_read,.op_sp_fanyi_mp3_play{display:block;w

More information

Color LaserJet Pro MFP M477 入门指南

Color LaserJet Pro MFP M477 入门指南 Color LaserJet Pro MFP M477 入门指南 Getting Started Guide 2 www.hp.com/support/colorljm477mfp www.register.hp.com ZHCN 4. 在控制面板上进行初始设置...2 5. 选择一种连接方式并准备安装软件...2 6. 找到或下载软件安装文件...3 7. 安装软件...3 8. 移动和无线打印

More information

nbns-list netbios-type network next-server option reset dhcp server conflict 1-34

nbns-list netbios-type network next-server option reset dhcp server conflict 1-34 目录 1 DHCP 1-1 1.1 DHCP 公共命令 1-1 1.1.1 dhcp dscp 1-1 1.1.2 dhcp enable 1-1 1.1.3 dhcp select 1-2 1.2 DHCP 服务器配置命令 1-3 1.2.1 address range 1-3 1.2.2 bims-server 1-4 1.2.3 bootfile-name 1-5 1.2.4 class 1-6

More information

NetScreen 概念与范例. ScreenOS 参考指南 第 7 卷 : 虚拟系统. ScreenOS 编号 SC 修订本 E

NetScreen 概念与范例. ScreenOS 参考指南 第 7 卷 : 虚拟系统. ScreenOS 编号 SC 修订本 E NetScreen 概念与范例 ScreenOS 参考指南 第 7 卷 : 虚拟系统 ScreenOS 5.0.0 编号 093-0930-000-SC 修订本 E Copyright Notice Copyright 2004 NetScreen Technologies, Inc. All rights reserved. NetScreen, NetScreen Technologies, GigaScreen,

More information

Machine Vision Market Analysis of 2015 Isabel Yang

Machine Vision Market Analysis of 2015 Isabel Yang Machine Vision Market Analysis of 2015 Isabel Yang CHINA Machine Vision Union Content 1 1.Machine Vision Market Analysis of 2015 Revenue of Machine Vision Industry in China 4,000 3,500 2012-2015 (Unit:

More information

SNMP Web Manager. User s Manual

SNMP Web Manager. User s Manual SNMP Web Manager User s Manual Table of Contents 1. Introduction... 2 2. SNMP Web Manager Install, Quick Start and Uninstall... 2 2.1. Software Installation... 3 2.2. Software Quick Start... 6 2.3. Software

More information

Skill-building Courses Business Analysis Lesson 3 Problem Solving

Skill-building Courses Business Analysis Lesson 3 Problem Solving Skill-building Courses Business Analysis Lesson 3 Problem Solving Review Software Development Life Cycle/Agile/Scrum Learn best practices for collecting and cleaning data in Excel to ensure accurate analysis

More information

Chapter 2: Java OO II. Yang Wang wyang AT njnet.edu.cn

Chapter 2: Java OO II. Yang Wang wyang AT njnet.edu.cn Chapter 2: Java OO II Yang Wang wyang AT njnet.edu.cn Outline Abstraction Abstract Class Interface Inheritance Polymorphism Abstraction Abstraction What is Abstraction? An abstraction is a general idea

More information

: Operating System 计算机原理与设计

: Operating System 计算机原理与设计 11741: Operating System 计算机原理与设计 Chapter 9: Virtual Memory( 虚存 ) 陈香兰 xlanchen@ustceducn http://staffustceducn/~xlanchen Computer Application Laboratory, CS, USTC @ Hefei Embedded System Laboratory, CS,

More information

TW5.0 如何使用 SSL 认证. 先使用 openssl 工具 1 生成 CA 私钥和自签名根证书 (1) 生成 CA 私钥 openssl genrsa -out ca-key.pem 1024

TW5.0 如何使用 SSL 认证. 先使用 openssl 工具 1 生成 CA 私钥和自签名根证书 (1) 生成 CA 私钥 openssl genrsa -out ca-key.pem 1024 TW5.0 如何使用 SSL 认证 先使用 openssl 工具 1 生成 CA 私钥和自签名根证书 (1) 生成 CA 私钥 openssl genrsa -out ca-key.pem 1024 Generating RSA private key, 1024 bit long modulus.++++++...++++++ e is 65537 (0x10001) (2) 生成待签名证书 openssl

More information

H3C CAS 虚拟机支持的操作系统列表. Copyright 2016 杭州华三通信技术有限公司版权所有, 保留一切权利 非经本公司书面许可, 任何单位和个人不得擅自摘抄 复制本文档内容的部分或全部, 并不得以任何形式传播 本文档中的信息可能变动, 恕不另行通知

H3C CAS 虚拟机支持的操作系统列表. Copyright 2016 杭州华三通信技术有限公司版权所有, 保留一切权利 非经本公司书面许可, 任何单位和个人不得擅自摘抄 复制本文档内容的部分或全部, 并不得以任何形式传播 本文档中的信息可能变动, 恕不另行通知 H3C CAS 虚拟机支持的操作系统列表 Copyright 2016 杭州华三通信技术有限公司版权所有, 保留一切权利 非经本公司书面许可, 任何单位和个人不得擅自摘抄 复制本文档内容的部分或全部, 并不得以任何形式传播 本文档中的信息可能变动, 恕不另行通知 目录 1 Windows 1 2 Linux 1 2.1 CentOS 1 2.2 Fedora 2 2.3 RedHat Enterprise

More information

Autodesk Backburner 2011 安装手册

Autodesk Backburner 2011 安装手册 Autodesk Backburner 2011 安装手册 Autodesk Backburner 2011 2010 Autodesk, Inc. All rights reserved. Except as otherwise permitted by Autodesk, Inc., this publication, or parts thereof, may not be reproduced

More information

Windows Batch VS Linux Shell. Jason Zhu

Windows Batch VS Linux Shell. Jason Zhu Windows Batch VS Linux Shell Jason Zhu Agenda System and Shell Windows batch and Linux Shell Dos and Linux Shell internal Commands Windows and Linux external commands Batch and Shell variable and special

More information

朱晔和你聊 Spring 系列 S1E2: SpringBoot 并不神秘

朱晔和你聊 Spring 系列 S1E2: SpringBoot 并不神秘 朱晔和你聊 Spring 系列 S1E2: SpringBoot 并不神秘 文本我们会一步一步做一个例子来看看 SpringBoot 的自动配置是如何实现的, 然后来看一 些 SpringBoot 留给我们的扩展点 自己制作一个 SpringBoot Starter 我们知道 SpringBoot 提供了非常多的启动器, 引入了启动器依赖即可直接享受到自动依赖 配置和自动属性配置 : https://github.com/spring-projects/spring-boot/tree/master/spring-boot-project/springboot-starters

More information

CA Application Performance Management

CA Application Performance Management CA Application Performance Management for IBM WebSphere Portal 指南 版本 9.5 本文档包括内嵌帮助系统和以电子形式分发的材料 ( 以下简称 文档 ), 其仅供参考,CA 随时可对其进行更改或撤销 未经 CA 事先书面同意, 不得擅自复制 转让 翻印 透露 修改或转录本文档的全部或部分内容 本文档属于 CA 的机密和专有信息, 不得擅自透露,

More information

Apache OpenWhisk + Kubernetes:

Apache OpenWhisk + Kubernetes: Apache OpenWhisk + Kubernetes: A Perfect Match for Your Serverless Platform Ying Chun Guo guoyingc@cn.ibm.com Zhou Xing xingzhou@qiyi.com Agenda What is serverless? Kubernetes + Apache OpenWhisk Technical

More information

漂亮的测试. By Alberto Savoia 代码之美 第七章 史际帆

漂亮的测试. By Alberto Savoia 代码之美 第七章 史际帆 漂亮的测试 代码之美 第七章 By Alberto Savoia 史际帆 作者简介 :Alberto Savoia Alberto Savoia is co-founder and CTO of Agitar Software. Before Agitar, he was Senior Director of Engineering at Google; prior to that he was the

More information

Logitech ConferenceCam CC3000e Camera 罗技 ConferenceCam CC3000e Camera Setup Guide 设置指南

Logitech ConferenceCam CC3000e Camera 罗技 ConferenceCam CC3000e Camera Setup Guide 设置指南 Logitech ConferenceCam CC3000e Camera 罗技 ConferenceCam CC3000e Camera Setup Guide 设置指南 Logitech ConferenceCam CC3000e Camera English................. 4 简体中文................ 9 www.logitech.com/support............................

More information

Outline. Motivations (1/3) Distributed File Systems. Motivations (3/3) Motivations (2/3)

Outline. Motivations (1/3) Distributed File Systems. Motivations (3/3) Motivations (2/3) Outline TFS: Tianwang File System -Performance Gain with Variable Chunk Size in GFS-like File Systems Authors: Zhifeng Yang, Qichen Tu, Kai Fan, Lei Zhu, Rishan Chen, Bo Peng Introduction (what s it all

More information

NX70 Controllers Installation Instructions

NX70 Controllers Installation Instructions Maximum Value for OEMs SM NX70 Controllers Installation Instructions Contents English... 3 Chinese... 21 English Contents Important User Information...4 Safety Instructions...5 Installation... 6 Installation

More information