相关疑难解决方法(0)

多个进程并行启动CUDA内核

我知道具有2.x或更高计算能力的NVIDIA gpus可以同时执行16个内核.但是,我的应用程序产生7个"进程",这7个进程中的每个进程都会启动CUDA内核.

我的第一个问题是这些内核的预期行为是什么.它们是否会同时执行,或者由于它们由不同的进程启动,它们将按顺序执行.

我很困惑,因为CUDA C编程指南说:

"来自一个CUDA上下文的内核无法与来自另一个CUDA上下文的内核同时执行." 这让我想到了第二个问题,什么是CUDA"背景"?

谢谢!

cuda gpu

13
推荐指数
1
解决办法
5820
查看次数

如何使用Nvidia多进程服务(MPS)运行多个非MPI CUDA应用程序?

我可以在带有MPS的NVIDIA Kepler GPU上同时运行非MPI CUDA应用程序吗?我想这样做是因为我的应用程序无法充分利用GPU,所以我希望它们能够共同运行.有没有代码示例呢?

cuda gpu gpgpu nvidia kepler

5
推荐指数
1
解决办法
9489
查看次数

Ray:如何在一个 GPU 上运行多个 Actor?

我只有一个 GPU,我想在该 GPU 上运行许多 Actor。这是我使用的ray,遵循https://ray.readthedocs.io/en/latest/actors.html

  1. 首先在GPU上定义网络
class Network():
    def __init__(self, ***some args here***):
        self._graph = tf.Graph()
        os.environ['CUDA_VISIBLE_DIVICES'] = ','.join([str(i) for i in ray.get_gpu_ids()])
        with self._graph.as_default():
            with tf.device('/gpu:0'):
                # network, loss, and optimizer are defined here

        sess_config = tf.ConfigProto(allow_soft_placement=True)
        sess_config.gpu_options.allow_growth=True
        self.sess = tf.Session(graph=self._graph, config=sess_config)
        self.sess.run(tf.global_variables_initializer())
        atexit.register(self.sess.close)

        self.variables = ray.experimental.TensorFlowVariables(self.loss, self.sess)
Run Code Online (Sandbox Code Playgroud)
  1. 然后定义工人阶级
@ray.remote(num_gpus=1)
class Worker(Network):
    # do something
Run Code Online (Sandbox Code Playgroud)
  1. 定义学习者类别
@ray.remote(num_gpus=1)
class Learner(Network):
    # do something
Run Code Online (Sandbox Code Playgroud)
  1. 训练功能
def train():
    ray.init(num_gpus=1)
    leaner = Learner.remote(...)
    workers = [Worker.remote(...) for i in range(10)] …
Run Code Online (Sandbox Code Playgroud)

python ray tensorflow

4
推荐指数
1
解决办法
3771
查看次数

标签 统计

cuda ×2

gpu ×2

gpgpu ×1

kepler ×1

nvidia ×1

python ×1

ray ×1

tensorflow ×1