java.util.concurrent.atomic.DoubleAdder#sum()源码实例Demo

下面列出了java.util.concurrent.atomic.DoubleAdder#sum() 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: openjdk-jdk9   文件: DoubleAdderTest.java
/**
 * adds by multiple threads produce correct sum
 */
public void testAddAndSumMT() throws Throwable {
    final int incs = 1000000;
    final int nthreads = 4;
    final ExecutorService pool = Executors.newCachedThreadPool();
    DoubleAdder a = new DoubleAdder();
    CyclicBarrier barrier = new CyclicBarrier(nthreads + 1);
    for (int i = 0; i < nthreads; ++i)
        pool.execute(new AdderTask(a, barrier, incs));
    barrier.await();
    barrier.await();
    double total = (long)nthreads * incs;
    double sum = a.sum();
    assertEquals(sum, total);
    pool.shutdown();
}
 
源代码2 项目: JSAT   文件: LinearBatch.java
@Override
public double f(Vec w, boolean parallel)
{
    DoubleAdder sum = new DoubleAdder();
    DoubleAdder weightSum = new DoubleAdder();
    
    ParallelUtils.run(parallel, D.size(), (start, end)->
    {
        for(int i = start; i < end; i++)
        {
            DataPoint dp = D.getDataPoint(i);
            Vec x = dp.getNumericalValues();
            double y = getTargetY(D, i);
            sum.add(loss.getLoss(w.dot(x), y)*D.getWeight(i));
            weightSum.add(D.getWeight(i));
        }
    });
    
    if(lambda0 > 0)
        return sum.sum()/weightSum.sum() + lambda0*w.dot(w);
    else
        return sum.sum()/weightSum.sum();
}
 
源代码3 项目: j2objc   文件: DoubleAdderTest.java
/**
 * adds by multiple threads produce correct sum
 */
public void testAddAndSumMT() throws Throwable {
    final int incs = 1000000;
    final int nthreads = 4;
    final ExecutorService pool = Executors.newCachedThreadPool();
    DoubleAdder a = new DoubleAdder();
    CyclicBarrier barrier = new CyclicBarrier(nthreads + 1);
    for (int i = 0; i < nthreads; ++i)
        pool.execute(new AdderTask(a, barrier, incs));
    barrier.await();
    barrier.await();
    double total = (long)nthreads * incs;
    double sum = a.sum();
    assertEquals(sum, total);
    pool.shutdown();
}
 
源代码4 项目: dragonwell8_jdk   文件: DoubleAdderDemo.java
public void run() {
    phaser.arriveAndAwaitAdvance();
    phaser.arriveAndAwaitAdvance();
    DoubleAdder a = adder;
    for (int i = 0; i < incs; ++i)
        a.add(1.0);
    result = a.sum();
    phaser.arrive();
}
 
源代码5 项目: TencentKona-8   文件: DoubleAdderDemo.java
public void run() {
    phaser.arriveAndAwaitAdvance();
    phaser.arriveAndAwaitAdvance();
    DoubleAdder a = adder;
    for (int i = 0; i < incs; ++i)
        a.add(1.0);
    result = a.sum();
    phaser.arrive();
}
 
源代码6 项目: native-obfuscator   文件: DoubleAdderDemo.java
public void run() {
    phaser.arriveAndAwaitAdvance();
    phaser.arriveAndAwaitAdvance();
    DoubleAdder a = adder;
    for (int i = 0; i < incs; ++i)
        a.add(1.0);
    result = a.sum();
    phaser.arrive();
}
 
源代码7 项目: jdk8u60   文件: DoubleAdderDemo.java
public void run() {
    phaser.arriveAndAwaitAdvance();
    phaser.arriveAndAwaitAdvance();
    DoubleAdder a = adder;
    for (int i = 0; i < incs; ++i)
        a.add(1.0);
    result = a.sum();
    phaser.arrive();
}
 
源代码8 项目: openjdk-jdk8u   文件: DoubleAdderDemo.java
public void run() {
    phaser.arriveAndAwaitAdvance();
    phaser.arriveAndAwaitAdvance();
    DoubleAdder a = adder;
    for (int i = 0; i < incs; ++i)
        a.add(1.0);
    result = a.sum();
    phaser.arrive();
}
 
源代码9 项目: openjdk-jdk8u-backup   文件: DoubleAdderDemo.java
public void run() {
    phaser.arriveAndAwaitAdvance();
    phaser.arriveAndAwaitAdvance();
    DoubleAdder a = adder;
    for (int i = 0; i < incs; ++i)
        a.add(1.0);
    result = a.sum();
    phaser.arrive();
}
 
源代码10 项目: openjdk-jdk9   文件: DoubleAdderDemo.java
public void run() {
    phaser.arriveAndAwaitAdvance();
    phaser.arriveAndAwaitAdvance();
    DoubleAdder a = adder;
    for (int i = 0; i < incs; ++i)
        a.add(1.0);
    result = a.sum();
    phaser.arrive();
}
 
源代码11 项目: openjdk-jdk9   文件: DoubleAdderTest.java
public void run() {
    try {
        barrier.await();
        DoubleAdder a = adder;
        for (int i = 0; i < incs; ++i)
            a.add(1.0);
        result = a.sum();
        barrier.await();
    } catch (Throwable t) { throw new Error(t); }
}
 
源代码12 项目: jdk8u-jdk   文件: DoubleAdderDemo.java
public void run() {
    phaser.arriveAndAwaitAdvance();
    phaser.arriveAndAwaitAdvance();
    DoubleAdder a = adder;
    for (int i = 0; i < incs; ++i)
        a.add(1.0);
    result = a.sum();
    phaser.arrive();
}
 
源代码13 项目: hottub   文件: DoubleAdderDemo.java
public void run() {
    phaser.arriveAndAwaitAdvance();
    phaser.arriveAndAwaitAdvance();
    DoubleAdder a = adder;
    for (int i = 0; i < incs; ++i)
        a.add(1.0);
    result = a.sum();
    phaser.arrive();
}
 
源代码14 项目: openjdk-8-source   文件: DoubleAdderDemo.java
public void run() {
    phaser.arriveAndAwaitAdvance();
    phaser.arriveAndAwaitAdvance();
    DoubleAdder a = adder;
    for (int i = 0; i < incs; ++i)
        a.add(1.0);
    result = a.sum();
    phaser.arrive();
}
 
源代码15 项目: openjdk-8   文件: DoubleAdderDemo.java
public void run() {
    phaser.arriveAndAwaitAdvance();
    phaser.arriveAndAwaitAdvance();
    DoubleAdder a = adder;
    for (int i = 0; i < incs; ++i)
        a.add(1.0);
    result = a.sum();
    phaser.arrive();
}
 
源代码16 项目: jdk8u_jdk   文件: DoubleAdderDemo.java
public void run() {
    phaser.arriveAndAwaitAdvance();
    phaser.arriveAndAwaitAdvance();
    DoubleAdder a = adder;
    for (int i = 0; i < incs; ++i)
        a.add(1.0);
    result = a.sum();
    phaser.arrive();
}
 
源代码17 项目: JSAT   文件: LinearBatch.java
@Override
public double f(Vec w, boolean parallel)
{
    DoubleAdder sum = new DoubleAdder();
    Vec pred = new DenseVector(D.getClassSize());//store the predictions in
    //bias terms are at the end, treat them seperate and special
    final int subWSize = (w.length() - (useBiasTerm ? bs.length : 0) )/D.getClassSize();
    DoubleAdder weightSum = new DoubleAdder();
    ParallelUtils.run(parallel, D.size(), (start, end)->
    {
        Vec pred_local = pred.clone();
        for (int i = start; i < end; i++)
        {
            DataPoint dp = D.getDataPoint(i);
            Vec x = dp.getNumericalValues();
            for(int k = 0; k < pred_local.length(); k++)
                pred_local.set(k, new SubVector(k*subWSize, subWSize, w).dot(x));
            if(useBiasTerm)
                pred_local.mutableAdd(new SubVector(w.length()-bs.length, bs.length, w));
            loss.process(pred_local, pred_local);
            int y = D.getDataPointCategory(i);
            sum.add(loss.getLoss(pred_local, y)*D.getWeight(i));
            weightSum.add(D.getWeight(i));
        }
    });
    if(lambda0 > 0 )
        return sum.sum()/weightSum.sum() + lambda0*w.dot(w);
    return sum.sum();
}
 
源代码18 项目: jdk8u-jdk   文件: DoubleAdderDemo.java
public void run() {
    phaser.arriveAndAwaitAdvance();
    phaser.arriveAndAwaitAdvance();
    DoubleAdder a = adder;
    for (int i = 0; i < incs; ++i)
        a.add(1.0);
    result = a.sum();
    phaser.arrive();
}
 
源代码19 项目: jdk8u-dev-jdk   文件: DoubleAdderDemo.java
public void run() {
    phaser.arriveAndAwaitAdvance();
    phaser.arriveAndAwaitAdvance();
    DoubleAdder a = adder;
    for (int i = 0; i < incs; ++i)
        a.add(1.0);
    result = a.sum();
    phaser.arrive();
}
 
源代码20 项目: j2objc   文件: DoubleAdderTest.java
public void run() {
    try {
        barrier.await();
        DoubleAdder a = adder;
        for (int i = 0; i < incs; ++i)
            a.add(1.0);
        result = a.sum();
        barrier.await();
    } catch (Throwable t) { throw new Error(t); }
}