好吧,我有一个程序可以生成,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));
答案 0 :(得分:0)