Tile stealing glitches with adaptive sampling #82351
Closed
opened 2020-11-03 06:39:19 +01:00 by Daniel Salazar
·
78 comments
No Branch/Tag Specified
blender-v3.6-release
main
asset-shelf
brush-assets-project
temp-sculpt-dyntopo
temp-sculpt-dyntopo-hive-alloc
tmp-usd-python-mtl
asset-browser-frontend-split
node-group-operators
blender-v2.93-release
blender-v3.3-release
universal-scene-description
temp-sculpt-attr-api
blender-v3.5-release
realtime-clock
sculpt-dev
gpencil-next
bevelv2
microfacet_hair
blender-projects-basics
principled-v2
v3.3.7
v2.93.18
v3.5.1
v3.3.6
v2.93.17
v3.5.0
v2.93.16
v3.3.5
v3.3.4
v2.93.15
v2.93.14
v3.3.3
v2.93.13
v2.93.12
v3.4.1
v3.3.2
v3.4.0
v3.3.1
v2.93.11
v3.3.0
v3.2.2
v2.93.10
v3.2.1
v3.2.0
v2.83.20
v2.93.9
v3.1.2
v3.1.1
v3.1.0
v2.83.19
v2.93.8
v3.0.1
v2.93.7
v3.0.0
v2.93.6
v2.93.5
v2.83.18
v2.93.4
v2.93.3
v2.83.17
v2.93.2
v2.93.1
v2.83.16
v2.93.0
v2.83.15
v2.83.14
v2.83.13
v2.92.0
v2.83.12
v2.91.2
v2.83.10
v2.91.0
v2.83.9
v2.83.8
v2.83.7
v2.90.1
v2.83.6.1
v2.83.6
v2.90.0
v2.83.5
v2.83.4
v2.83.3
v2.83.2
v2.83.1
v2.83
v2.82a
v2.82
v2.81a
v2.81
v2.80
v2.80-rc3
v2.80-rc2
v2.80-rc1
v2.79b
v2.79a
v2.79
v2.79-rc2
v2.79-rc1
v2.78c
v2.78b
v2.78a
v2.78
v2.78-rc2
v2.78-rc1
v2.77a
v2.77
v2.77-rc2
v2.77-rc1
v2.76b
v2.76a
v2.76
v2.76-rc3
v2.76-rc2
v2.76-rc1
v2.75a
v2.75
v2.75-rc2
v2.75-rc1
v2.74
v2.74-rc4
v2.74-rc3
v2.74-rc2
v2.74-rc1
v2.73a
v2.73
v2.73-rc1
v2.72b
2.72b
v2.72a
v2.72
v2.72-rc1
v2.71
v2.71-rc2
v2.71-rc1
v2.70a
v2.70
v2.70-rc2
v2.70-rc
v2.69
v2.68a
v2.68
v2.67b
v2.67a
v2.67
v2.66a
v2.66
v2.65a
v2.65
v2.64a
v2.64
v2.63a
v2.63
v2.61
v2.60a
v2.60
v2.59
v2.58a
v2.58
v2.57b
v2.57a
v2.57
v2.56a
v2.56
v2.55
v2.54
v2.53
v2.52
v2.51
v2.50
v2.49b
v2.49a
v2.49
v2.48a
v2.48
v2.47
v2.46
v2.45
v2.44
v2.43
v2.42a
v2.42
v2.41
v2.40
v2.37a
v2.37
v2.36
v2.35a
v2.35
v2.34
v2.33a
v2.33
v2.32
v2.31a
v2.31
v2.30
v2.28c
v2.28a
v2.28
v2.27
v2.26
v2.25
Labels
Clear labels
Issues relating to security: https://wiki.blender.org/wiki/Process/Vulnerability_Reports
Apply labels
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset Browser
Interest
Asset Browser Project Overview
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
Eevee & Viewport
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest/Import
Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Virtual Reality
Interest
Vulkan
Interest: Wayland
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Issues relating to security: https://wiki.blender.org/wiki/Process/Vulnerability_Reports
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
Eevee & Viewport
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Priority
High
Priority
Low
Priority
Normal
Priority
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset Browser
Interest
Asset Browser Project Overview
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
Eevee & Viewport
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest/Import
Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Virtual Reality
Interest
Vulkan
Interest: Wayland
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
Eevee & Viewport
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Priority
High
Priority
Low
Priority
Normal
Priority
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
Milestone
Set milestone
Clear milestone
No items
No Milestone
Projects
Set Project
Clear projects
No project
Assignees
Assign users
Clear assignees
No Assignees
23 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.
No due date set.
Dependencies
No dependencies set.
Reference: blender/blender#82351
Reference in New Issue
There is no content yet.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may exist for a short time before cleaning up, in most cases it CANNOT be undone. Continue?
System Information
Operating system: Windows-10-10.0.19041-SP0 64 Bits
Graphics card: GeForce GTX 1080 with Max-Q Design/PCIe/SSE2 NVIDIA Corporation 4.5.0 NVIDIA 457.09
Blender Version
Broken: version: 2.92.0 Alpha, branch: master, commit date: 2020-11-02 14:36, hash:
7872bcafa0
Caused by
517ff40b12
Short description of error
Adaptive sampling introduces random errors on the stolen tiles
Exact steps for others to reproduce the error
Open the following file

StealThis.blend
Enable GPU+CPU mode in the preferences
Hit F12
If it's not very visible the first time, try again
Added subscriber: @zanqdo
#84544 was marked as duplicate of this issue
#84115 was marked as duplicate of this issue
#83763 was marked as duplicate of this issue
#83741 was marked as duplicate of this issue
#83332 was marked as duplicate of this issue
#83149 was marked as duplicate of this issue
#82717 was marked as duplicate of this issue
#82632 was marked as duplicate of this issue
#82498 was marked as duplicate of this issue
#82497 was marked as duplicate of this issue
#82474 was marked as duplicate of this issue
#82394 was marked as duplicate of this issue
Tile stealing doesn't play nice with adaptive samplingto Tile stealing glitches with adaptive samplingAdded subscribers: @LukasStockner, @lichtwerk
Changed status from 'Needs Triage' to: 'Confirmed'
@LukasStockner: mind checking?
Added subscriber: @juang3d
Adaptive sampling never worked completely fine with CPU + GPU, Stefan can give the explanation better than me
It’s a matter of when the CPU and the GPU computation can be stopped
Added subscriber: @Jan-PhilipBusse
Added subscriber: @Adam-Burke
Added subscribers: @Renderbicks, @Alaska, @rboxman
Added subscribers: @Unreleased75, @olhapi
Added subscribers: @Slowwkidd, @schampions
Added subscriber: @strangerman
Added subscriber: @leiserfg
Added subscriber: @the_avg_guy
Added subscriber: @dfelinto
Tagging as 2.92 so it doesn't get on the way of the 2.91 release coordination.
@dfelinto Seeing the amount of reports this has generated, maybe we should disable the feature automatically in case of collision. For example, if hybrid is enabled, disable adaptive for now.
This might be a useful option because when rendering on a farm with Afanasy (in our case) we have to load Blender and disable the CPU to save the settings. It would anyway a good idea to add a simple button in the Render Settings to disable/enable CPU for hybrid rendering saved in the scene.
No more options needed. Just a temporary check that disables something that is BROKEN. Until it gets fixed.
Added subscriber: @SteffenD
I applied Lukas' patch and it works perfectly. It just needs to get reviewed and accepted.
From a production pov it should be an option to decide to render on a farm with or without CPU. I would recommend to add a feature in the Render Setting and not Preferences only to disable the hybrid mode. Because setting to GPU will take the Preferences settings only locally. And this is not really useful eg. when you do distributed rendering on machines with GPU turned on but some use CPU and some not.
Summary: A button below the CPU/GPU menu will override the local System settings and set it to GPU only. Turned off will enable the local System settings as usual.
Added subscriber: @rjg
@Renderbicks Please don't post feature requests on the bug tracker. Besides, you can already configure this via Python and/or the render farm should provide a proper setup with their preferences.
Understood! I just responded to Daniel. Where can I post a feature request being reviewed by the dev team?
This page lists where you can leave feedback or make feature proposals.
This is wrong. The renderfarm itself should configure the rendering units based on each virtual machine´s capabilities. This does not belong to the blend file since the same blend file could end up being rendered in different hardware.
I see. Yes, makes sense. My bad. Thanks for the time.
Added subscriber: @MichaelHermann
Added subscriber: @lateasusual
Added subscriber: @nacioss
Added subscriber: @machieb
Added subscriber: @eklein
Added subscriber: @JasonClarke
Added subscriber: @kursadk
Please do not disable adaptive sampling, it would be much better if the tile stealing is disabled instead, given it improves render times barely in certain tile sizes assuming that the combo is the culprit.
Also this might create undesirable situations on render farms.
You're right it's better to disable tile stealing. Although there's supposedly a proper fix in the way?
According to user Alaska who replied to my missing tile report, this is the fix https://developer.blender.org/D9445
I am wondering why the fix isn't implemented in 2.92 yet? It's an important fix because actually Adaptive Sampling with hybrid rendering is some kind of useless but a very important and powerful feature.
Removed subscriber: @lateasusual
Added subscriber: @BuyMyMojo
Added subscriber: @homeworker
This issue was referenced by blender/cycles@63b16ca64a
This issue was referenced by
688e5c6d38
Changed status from 'Confirmed' to: 'Resolved'
Added subscriber: @platerytter
Forgive my noobness but if they were commited two days ago should the experimental builds not have picked up the patch already ?
These glitches are still visible in today's experimental build. On linux using 2x NVIDIA cards and a threadripper.
I tested yesterday with the experimental build and also today. In my case the problem with the tile stealing is solved when using adaptive sampling with optix GPU +CPU rendering.
I´m on windows and have a Geforce RTX 3090.
Also works for me on Windows, TR1950x and 2080.
In my case it breaks using OPTIX but actually works on CUDA.
@LukasStockner worth reopening this report?
Added subscriber: @pmoursnv
Not sure - if the remaining issue can be confirmed to be Optix-specific, @pmoursnv might know more.
I double checked on Windows 10 (Latest) and Linux (Ubuntu 20.04) with Nvidia 460.x on both Optix and CUDA now. I also tried with multiple files. Seems to work. Someone else can confirm an Optix Issue here?
Work for me with an Asus laptop GeForce GTX 950M + Intel Core i7 integrated GPU. Both CUDA and OptiX Win 10 - driver 461.09 01/07/2021
This comment was removed by @Renderbicks
My latest test showed up that the bug seems to be related to the type of GPU (and maybe the type of CPU?).
Laptop with RTX 2070 Super and i7-10875H
Result: No broken tiles anymore in all versions. Not driver related. I made all tests with the latest Studio and Game driver.
My second test was running on a Win 10 system with GTX 1080Ti and Ryzen Threadripper 1950X. All versions will render broken tiles. The latest 2.92 Beta has fixed the issue.
Added subscriber: @ChristophWerner
Excuse my question, but which version is needed to test the tile stealing feature?
I've a nvidia RTX 3090 here and an AMD 3970X CPU with 32 cores. In my tests the "Candidate" version of Blender 2.92 has nearly no difference in rendering speed, or just marginal better.
Is the tile stealing feature implemented in the current 2.92 Candidate version or do I expect too much of this option?
From what I watch here 2.92 RC is using tile stealing. When the GPU has finished it will definitely take over the CPU tiles. From my logic it should be like this: If you have a slow CPU but a very fast GPU there is maybe not much of a difference between GPU only and hybrid mode. Because the GPU might solve the whole render while the CPU is still working on the first tiles. But if you have a very fast CPU there should be a difference. How fast is the AMD 3970X compared to the RTX 3090? I have a 16 core Threadripper and GTX 1080Ti which are equal in speed. I will do a test.
My AMD Ryzen Threadripper 3790X is slower then the RTX 3090. I guess there is no "consumer" CPU, that renders tiles faster than a nvidia RTX 3090 currently...
I have an old workstation with a 1080Ti and will make some tests there, soon. Currently my old machine is not ready to go.
I use a laptop here with an 8 core i7-10875H and RTX 2070 Super. My test scene renders like this: The GPU will finish their part while the 16 CPU tiles are still rendering. The speed advantage is finally the difference between the 16 CPU tiles and 16 GPU tiles. Not really much. I will update this in a few minutes with results.
Render times
GPU only: 6m 59s
Hybrid: 6m 33s
27s difference by adding the 8 core CPU. The 16 CPU tiles were finished by the GPU at the end.
Now I will do a test on my Threadripper with GTX 1080Ti.
@ChristophWerner I made an extreme test with tiles of 512x512. This gives me the suspicion that the GPU takes over the tiles but renders them from scratch because the render time in this case with different Adaptive Sampling settings for a faster result was nearly the same.
GPU only: 1m 45s
Hybrid: 1m 49s
This means: As long as the CPU will not finish the initial tiles it will not have an effect on the overall render time.
Maybe a dev can give us a precise answer about how tile stealing works.
@ChristophWerner The test with the AMD 1950X 16 core and GTX 1080Ti shows the following result:
GPU only: 12m 57s
Hybrid: 10m 45s
Here the 32 tiles are nearly as fast as the GPU. The speed advantage comes from the fact that the Threadripper finishes a couple of tiles before the GPU starts to take the remaining ones over.
But this will not answer why the first test is 27s faster?
Removed subscriber: @nacioss