JCUDA thread context 测试

Posted 杏子肥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JCUDA thread context 测试相关的知识,希望对你有一定的参考价值。

在C++中,可以使用runtime api 创建一个primary context,从而多个线程多享,避免了使用drive api 创建多个 standard context的时间开销。

在Java中也试图尝试 使用runtime api 创建一个primary context,但问题是,发现对于Java不适用,在一个thread创建的primary context ,在另外一个线程中无法使用。 

所以,最后还是使用driver api 创建的多个standard context

 

 

注意:

在Jcuda给出的例子中都是使用 driver API进行Java到 CUDA的接口。我是怎么找到 runtime api? 

看Jcuda的源代码 https://github.com/jcuda/jcuda/blob/master/JCudaRuntimeJNI/src/JCudaRuntime.cpp

根据源代码找出相应的 java port function

 

实际上:Jcuda是在JNI的基础上实现了 java 和 cuda 之间的联系的

因为,每个java port function 都是会调用一个JNI function,在该JNI function中调用cuda。

Java (程序)  ->  Java (接口类,它的函数成员是接口) ->   JNI function (JNI接口) ->  C++(调用cuda)

看Jcuda的源代码就明白了。

 

以上是关于JCUDA thread context 测试的主要内容,如果未能解决你的问题,请参考以下文章

获取模拟 Cairo::Context 以测试路径上的条件

使用Thread Context ClassLoader从类路径读取WSDL

线程上下文切换(Thread Context Switch)

Flask的Context(上下文)学习记录

ensure that AopContext.currentProxy() is invoked in the same thread as the AOP invocation context(示例

Unity Android 错误 call to OpenGL ES API with no current context (logged once per thread) 解决办法