我正在开发一个用OpenCL编写并在Fusion APU上运行的程序(一个芯片上的CPU + GPU)。我想得到一些性能指标,如指令编号,分支编号等。我手头有两个工具:AMD APP Profiler和CodeAnalyst。当我使用APP Profiler时,我发现它似乎只能为GPU提供指令计数器,不能用于CPU。然后我使用CodeAnalyst,但后来发生了三次混乱。 在App Profiler上,它可以给出ALUInsts的数量(即每个工作项执行的ALU指令的数量)大约是70000.GPU上的整个线程空间有8192个线程,所以我直觉地认为有70000 * 8192个指令由GPU。是对的吗? 当我使用CodeAnalyst来测量CPU部件上相同程序的指令时,它只给出了“Ret inst”,“Ret branch”这样的计数器,但我不确定一件事:这个程序在CPU和GPU上运行与此同时,这些柜台是为了什么?仅适用于CPU,仅适用于GPU?或者总和? 无论这些计数器是什么,我发现Ret Inst(即退役指令)的价值大约是40000,对于整个程序来说似乎太小了,我猜一个程序的指令应该是数十亿的顺序,它怎么可能只有4w?随附的图片显示了结果。 有没有人可以帮助我解决这些困惑,我只是一个tyro在这里,希望各位的帮助。谢谢!