目前服务器上有两张3090,程序把一张3090的内存跑满了。请问有什么办法使用多显卡,或者是可以开双进程指定在两张显卡上各自运行吗?
此外,计算结果是一个300,000x1的向量,用field+ti.template()在程序中传递,请问有什么办法可以加快向量从显卡取回cpu吗,目前需要80s左右。
谢谢大佬!
抱歉打扰,根据文档,环境变量我设置如下:
export CUDA_VISIBLE_DEVICES=[(UUIDa), (UUIDb)]
export TI_VISIBLE_DEVICE=[(UUIDa), (UUIDb)]
结果还是只能在UUIDa上运行。
请问这样设置完,是否应该在后端上调整。
设置为ti.vulkan之后,nvidia-smi显示为C+G运行该程序。
欸我们暂时还不支持用GPU多卡跑Taichi,你可能需要开两个process,分别在UDA_VISIBLE_DEVICES=UUIDa和UDA_VISIBLE_DEVICES=UUIDb上面跑
1 Like
感谢大佬!我查一查怎么开两个process。
抱歉打扰啦,没有查到如何在开两个process的情况下,如何分别设置环境变量,能否请您赐教?
Taichi现在没有原生支持单机多卡,所以如果数据在一张卡跑不下,你可能需要自己做一下数据分割,然后分别跑两段程序:
import os
import subprocess
# Prepare the base environment variables
base_env = os.environ.copy()
# Define the environment variables for the first process
env1 = base_env.copy()
env1['VAR_NAME1'] = 'value1'
# Define the environment variables for the second process
env2 = base_env.copy()
env2['VAR_NAME2'] = 'value2'
# Start the first Python process with its environment variables
process1 = subprocess.Popen(['python', 'script1.py'], env=env1)
# Start the second Python process with its environment variables
process2 = subprocess.Popen(['python', 'script2.py'], env=env2)
# Wait for both processes to complete
process1.wait()
process2.wait()
1 Like
成功实现!感谢大佬!
1 Like