-
Notifications
You must be signed in to change notification settings - Fork 64
Expand file tree
/
Copy pathgarbage_collection.py
More file actions
64 lines (49 loc) · 1.33 KB
/
garbage_collection.py
File metadata and controls
64 lines (49 loc) · 1.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import numpy as np
from rendercanvas.auto import RenderCanvas, loop
import pygfx as gfx
import subprocess
canvas = RenderCanvas()
renderer = gfx.WgpuRenderer(canvas)
scene = gfx.Scene()
camera = gfx.OrthographicCamera(5000, 5000)
camera.position.x = 2048
camera.position.y = 2048
def make_image():
data = np.random.rand(4096, 4096).astype(np.float32)
return gfx.Image(
gfx.Geometry(grid=gfx.Texture(data, dim=2)),
gfx.ImageBasicMaterial(clim=(0, 1)),
)
def draw():
renderer.render(scene, camera)
canvas.request_draw()
def print_nvidia(msg=""):
print(msg)
print(
subprocess.check_output(
["nvidia-smi", "--format=csv", "--query-gpu=memory.used"]
)
.decode()
.split("\n")[1]
)
print()
def add_img(*args):
print_nvidia("Before creating image")
img = make_image()
print_nvidia("After creating image")
scene.add(img)
img.add_event_handler(remove_img, "click")
draw()
print_nvidia("After add image to scene")
def remove_img(*args):
img = scene.children[0]
scene.remove(img)
draw()
print_nvidia("After remove image from scene")
del img
draw()
print_nvidia("After del image")
renderer.add_event_handler(print_nvidia, "pointer_move")
renderer.add_event_handler(add_img, "double_click")
draw()
loop.run()