NVIDIA Performance Counters Continue To Be Reverse-Engineered
Last year Samuel Pitoiset took up a Google Summer of Code project for reverse-engineering NVIDIA's hardware performance counters on their GPUs so they could be supported by the Nouveau driver and exposed under Linux. After making much progress last year and sticking around the Nouveau camp after his summer term, Pitoiset is again working more on NVIDIA performance counters for Nouveau this year via another GSoC project.
Samuel Pitoiset is working more this summer on reverse-engineering the performance counters found on modern GPUs and with that is working towards exposing the counters to user-space via the Nouveau Gallium3D driver. Samuel says, "The main goal of this project is to help Linux developpers in identifying the performance bottleneck of OpenGL applications. At the end of this GSoC, NVIDIA’s GPU graphics counter for GeForce 8, 9 and 2XX (nv50/tesla) will (almost-all) be exposed for Nouveau. Some counters won’t be available until the compute support (ie. the ability to launch kernels) for nv50 is not implemented."
The student open-source developer has already been working on new reverse-engineering support in the past few weeks and almost has complete documentation and understanding for the performance counters, including the start of RE'ing the Fermi counters. The NV50 and NVC0 work-in-progress documentation can be found via this Git repository.
You can learn more about Samuel's work via his personal blog. His next challenge will be coming up with the Linux kernel ioctls for exposing the performance counter information.
Samuel Pitoiset is working more this summer on reverse-engineering the performance counters found on modern GPUs and with that is working towards exposing the counters to user-space via the Nouveau Gallium3D driver. Samuel says, "The main goal of this project is to help Linux developpers in identifying the performance bottleneck of OpenGL applications. At the end of this GSoC, NVIDIA’s GPU graphics counter for GeForce 8, 9 and 2XX (nv50/tesla) will (almost-all) be exposed for Nouveau. Some counters won’t be available until the compute support (ie. the ability to launch kernels) for nv50 is not implemented."
The student open-source developer has already been working on new reverse-engineering support in the past few weeks and almost has complete documentation and understanding for the performance counters, including the start of RE'ing the Fermi counters. The NV50 and NVC0 work-in-progress documentation can be found via this Git repository.
You can learn more about Samuel's work via his personal blog. His next challenge will be coming up with the Linux kernel ioctls for exposing the performance counter information.
9 Comments