Hi all
[/font][color=#282828][font=helvetica, arial, verdana, tahoma, sans-serif]
I would like to know the exact time measurement for cg shader.
[/font][color=#282828][font=helvetica, arial, verdana, tahoma, sans-serif]
Now I have a display function containing two parts : cuda part computing data, and cg shader render the scene. Like the following :
[/font][color=#444444][font=helvetica, arial, verdana, tahoma, sans-serif]
Display()
[/font][color=#444444][font=helvetica, arial, verdana, tahoma, sans-serif]
{
[/font][color=#444444][font=helvetica, arial, verdana, tahoma, sans-serif]
time1 = time();
[/font][color=#444444][font=helvetica, arial, verdana, tahoma, sans-serif]
cudaEventRecord(record1);
[/font][color=#444444][font=helvetica, arial, verdana, tahoma, sans-serif]
RunCuda();
[/font][color=#444444][font=helvetica, arial, verdana, tahoma, sans-serif]
cudaEventRecord(record2);
[/font][color=#444444][font=helvetica, arial, verdana, tahoma, sans-serif]
time2 = time();
[/font][color=#444444][font=helvetica, arial, verdana, tahoma, sans-serif]
cgRender(); //in cgRender render the scene dozens of time.
[/font][color=#444444][font=helvetica, arial, verdana, tahoma, sans-serif]
time3 = time();
[/font][color=#444444][font=helvetica, arial, verdana, tahoma, sans-serif]
}
[/font][color=#444444][font=helvetica, arial, verdana, tahoma, sans-serif]
then define:
[/font][color=#444444][font=helvetica, arial, verdana, tahoma, sans-serif]
cudaTimebyTime = time2-time1;
[/font][color=#444444][font=helvetica, arial, verdana, tahoma, sans-serif]
cudaTimebyEvent = record2-record1;
[/font][color=#444444][font=helvetica, arial, verdana, tahoma, sans-serif]
cgTime = time3-time2;
[/font][color=#282828][font=helvetica, arial, verdana, tahoma, sans-serif]
then I find this:
[/font][color=#444444][font=helvetica, arial, verdana, tahoma, sans-serif]
cudaTimebyTime != cudaTimebyEvent , which means cudaEvent's time measurement is different from the time() function.
[/font][color=#444444][font=helvetica, arial, verdana, tahoma, sans-serif]
what's more, when I change cg function in cgRender(); (cudaTimebyTime - cudaTimebyTime) changes rather than the cgTime. It seems cgTime only records the scene drawing time while cg time measurement parts records in
[/font][color=#444444][font=helvetica, arial, verdana, tahoma, sans-serif](cudaTimebyTime - cudaTimebyTime).
[/font][color=#444444][font=helvetica, arial, verdana, tahoma, sans-serif]
Can it be true and what's the reason, how should I record the cg time measurement.
[/font][color=#282828][font=helvetica, arial, verdana, tahoma, sans-serif]