有没有办法加速CUDA PTX JIT编译?

时间:2014-08-22 08:44:34

标签: c++ cuda jit ptx

好吧,我有一个程序可以生成,JIT编译并在GPU上运行PTX子程序。程序运行良好,运行时间非常好 - 与CPU相比,速度提高了500倍。问题是编译时间过长,擦除了所有GPU加速,使其减速:)

问题是,有更快,更有效的方法吗?我可以重用一些资源,使流程更像流吗?

编辑:每个PTX程序只运行一次,它们都非常不同,所以JIT缓存没有任何好处

这是我的代码,与nvidia提供的示例JIT应用程序几乎相同:

CHECK_ERROR(cuLinkCreate(6, linker_options, linker_option_vals, &lState));

// Load the PTX from the string myPtx32
CUresult myErr = cuLinkAddData(lState, CU_JIT_INPUT_PTX, (void*) ptxProgram.c_str(), ptxProgram.size()+1, 0, 0, 0, 0);

// Complete the linker step
CHECK_ERROR(cuLinkComplete(lState, &linker_cuOut, &linker_outSize));

// Linker walltime and info_log were requested in options above.
//printf("CUDA Link Completed in %fms. Linker Output:\n%s\n", linker_walltime, linker_info_log);

// Load resulting cuBin into module
CHECK_ERROR(cuModuleLoadData(&hModule, linker_cuOut));

// Locate the kernel entry poin
CHECK_ERROR(cuModuleGetFunction(&hKernel, hModule, "_myBigPTXKernel"));

// Destroy the linker invocation
CHECK_ERROR(cuLinkDestroy(lState));

1 个答案:

答案 0 :(得分:0)