小编en4*_*4bz的帖子

Java 8默认接口中`this`的静态类型是什么?

我正在实现一个项目的访问者模式,并意识到我可以通过接受的默认实现来保存一些输入.

public interface Visitable {
    default public void accept(Visitor v) {
        v.visit(this);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,如果静态类型this解析为Visitable,则此实现将不起作用,因此this在这种情况下静态类型是什么?

java java-8

9
推荐指数
1
解决办法
165
查看次数

在GPU上使用popcnt

我需要计算

(a & b).count()

在大集合(> 10000)位向量(std::bitset<N>)中,其中N在2 ^ 10到2 ^ 16之间.

const size_t N = 2048;
std::vector<std::vector<char>> distances;
std::vector<std::bitset<N>> bits(100000);
load_from_file(bits);
for(int i = 0; i < bits.size(); i++){
    for(int j = 0; j < bits.size(); j++){
        distance[i][j] = (bits[i] & bits[j]).count();
    }
}
Run Code Online (Sandbox Code Playgroud)

目前我依靠分块多线程和SSE/AVX来计算distances.幸运的是,我可以使用vpandAVX来计算&但我的代码仍在使用popcnt (%rax)并且循环来计算位数.

有没有办法(a & b).count()在GPU(nVidia 760m)上计算功能?理想情况下,我只会传递2块内存N.我正在寻找使用推力,但我找不到popcnt功能.

编辑:

当前的CPU实现.

double validate_pooled(const size_t K) const{                           
    int right = 0;                                                          
    const size_t num_examples = …
Run Code Online (Sandbox Code Playgroud)

c++ cuda gpu opencl thrust

3
推荐指数
1
解决办法
3846
查看次数

JVM可以内联本机方法吗?

我写了一个小的静态JNI函数,它只有5个指令长.JVM是否可以将此代码内联到一个经常调用它的方法体中,或者它总是call在JITed方法中生成一条指令?

例如:

public class SomeClass {
    private static native long func();

    public void doLoop() {
        for(int i = 0; i < 0xFFFFFF; i++) {
             func();
        }
    }  

    public static void main(String[] args) {
        for(int i = 0; i < 0xFFFFFF; i++) {
            doLoop();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

是否有可能为JVM内联的代码func进入doLoop,否则将只是其编译为call func

java x86 jit jvm

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

标签 统计

java ×2

c++ ×1

cuda ×1

gpu ×1

java-8 ×1

jit ×1

jvm ×1

opencl ×1

thrust ×1

x86 ×1