• Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by hicks · Jun 17, 2015 at 05:23 PM · shaderprofilergpucompute shaderprofiling

Is it possible to profile compute shaders?

As the title says, I'm wondering if it is possible to profile compute shaders. I want to know the time each compute kernel took in one frame. The Unity Profiler does not show this as it only tracks CPU calls. Compute kernels however run in parallel so the Dispatch calls take 0 ms. Any ideas?

Comment
Add comment · Show 3
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image Dani Phye · Jun 09, 2016 at 06:33 PM 0
Share

This question is slightly relevant here.

Show more comments

2 Replies

· Add your reply
  • Sort: 
avatar image
1

Answer by Arycama · Jun 16, 2019 at 07:57 AM

Are you talking about profiling in Editor or on device?

If GPU profiling works in Editor on your machine, you can wrap the Dispatch calls in Profier.BeingSample("Some meaningful string here"), and Profiler.EndSample().

This will show the GPU time under the GPU profiler for each dispatch. I'd assume the same works for builds too, if the device supports GPU profiling.

Keep in mind, if you're reading data back from the GPU, this won't necessarily help, as doing ComputeBuffer.GetData will stall the CPU until the GPU is finished. You'll just have to yield return new WaitForSeconds() with an approximate guess of how long the compute shader will take, which will vary across devices.

AsyncGPUReadbacks introduced in 2019 help with this, however the GPU will still stutter if you're attempting to do large Compute Shaders at once, as it still interrupts the regular rendering draw calls. Async Compute helps with this but it requires using command buffers, and is apparently only supported on PS4 and XboxOne. I haven't tried it out yet in editor however.

Anyway, just some general ComputeShader optimisation tips from me. There's also a lot of good info online about aligning your data structures to be aligned to 4 bytes, etc.

Good luck, compute shaders are very fun.

Comment
Add comment · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image
0

Answer by Waffle1434 · Nov 24, 2019 at 10:16 PM

I would suggest compiling and build and profiling it with a graphics debugger like RenderDoc, Nsight, or the latest PIX, which should collect statistics on Compute kernels in a frame. I believe Nsight and PIX show GPU occupancy.

Comment
Add comment · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Welcome to Unity Answers

If you’re new to Unity Answers, please check our User Guide to help you navigate through our website and refer to our FAQ for more information.

Before posting, make sure to check out our Knowledge Base for commonly asked Unity questions.

Check our Moderator Guidelines if you’re a new moderator and want to work together in an effort to improve Unity Answers and support our users.

Follow this Question

Answers Answers and Comments

5 People are following this question.

avatar image avatar image avatar image avatar image avatar image

Related Questions

GFX.WaitForPresent for no reason 0 Answers

Compute Shader not work on older GPU with DX11 0 Answers

RenderTexture.GrabPixels slowdown - How to fix? 0 Answers

How can you detect judder in VR? 2 Answers

Compute shader dispatch large spike in CPU and GPU profiler 0 Answers


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges