void CudaModuleScene::initCudaObj(ApexCudaSurfRef& surfRef)
{
	if (getGpuDispatcher()->getCudaContextManager()->supportsArchSM20() == false)
	{
		return;
	}

	const char* surfRefName = surfRef.getName();

	for (int j = 0 ; j < numRegisteredSurfaces ; j++)
	{
		if (nvidia::strcmp(surfaceTable[j].surfRefName, surfRefName) == 0)
		{
			ApexCudaModule* cudaModule = getCudaModule(surfaceTable[j].modIndex);
			PX_ASSERT(cudaModule->isValid());

			CUsurfref cuSurfRef;
			CUT_SAFE_CALL(cuModuleGetSurfRef(&cuSurfRef, cudaModule->getCuModule(), surfRefName));

			surfRef.init(this, cuSurfRef, cudaModule);
			break;
		}
	}

}
示例#2
0
SEXP
R_auto_cuModuleGetSurfRef(SEXP r_hmod, SEXP r_name)
{
    SEXP r_ans = R_NilValue;
    CUsurfref pSurfRef;
    CUmodule hmod = (CUmodule) getRReference(r_hmod);
    const char * name = CHAR(STRING_ELT(r_name, 0));
    CUresult ans;
    ans = cuModuleGetSurfRef(& pSurfRef,  hmod,  name);
    if(ans)
       return(R_cudaErrorInfo(ans));
    r_ans = R_createRef(pSurfRef, "CUsurfref") ;
    return(r_ans);
}
示例#3
0
CUsurfref CudaModule::getSurfRef(const std::string& name)
{
  
#if (CUDA_VERSION >= 3010)
  CUsurfref surfRef;
  checkError( "cuModuleGetSurfRef", 
              cuModuleGetSurfRef(&surfRef, m_module, name.c_str()) );  
  return surfRef;
#else
  FW_UNREF(name);
  fail("CudaModule: getSurfRef() requires CUDA 3.1 or later!");
  return NULL;
#endif
}