Sie können etwas tun:
__global__ void kernelSample(int *runtime)
{
// ....
clock_t start_time = clock();
//some code here
clock_t stop_time = clock();
// ....
runtime[tidx] = (int)(stop_time - start_time);
}
die die Anzahl der Taktzyklen zwischen den beiden Anrufen gibt. Seien Sie ein wenig vorsichtig, aber der Timer wird nach ein paar Sekunden überlaufen, so dass Sie sicher sein sollten, dass die Dauer des Codes zwischen aufeinanderfolgenden Aufrufen ziemlich kurz ist. Sie sollten sich auch darüber im Klaren sein, dass der Compiler und der Assembler eine Neuordnung der Befehle durchführen, damit Sie überprüfen können, ob die Uhraufrufe nicht in der SASS-Ausgabe nebeneinander platziert werden (überprüfen Sie dies anhand von cudaobjdump
).
Amin, (vor ein paar Jahren) haben Sie eine Antwort akzeptiert, die nützliche Informationen ist, aber Ihre eigentliche Frage nicht beantwortet. Würde es Ihnen etwas ausmachen, die Frage entweder abzulehnen oder zu bearbeiten, um die Antwort zu reflektieren? – einpoklum