我有两个GPU,并希望同时通过ipynb运行两个不同的网络,但第一个笔记本总是分配两个GPU.
使用CUDA_VISIBLE_DEVICES,我可以隐藏python文件的设备,但是我不确定如何在笔记本中这样做.
反正是否有不同的GPU隐藏在同一台服务器上运行的笔记本电脑?
我的环境是
我无法弄清楚为什么我的GPU因遇到"无法纠正的ECC错误"而崩溃.仅当我使用512个或更多线程时才会发生此错误.我不能发布内核,但我会尝试描述它的作用.
通常,内核负责多个参数,并产生由所述螺纹的尺寸,M和其他数定义2个复杂matricies,N.,返回的矩阵将是大小为M×N的.典型配置为512x512,但每个数字都是独立的,可以向上或向下变化.当数字为256x256时,内核可以工作.
每个线程(内核)基于线程id(即大小为999xM)从2D阵列中提取999大小的向量,然后循环通过输出矩阵的行(0 ... N-1)进行计算.计算许多中间参数,仅使用+ - * /
运算符中的pow,sin和cos .要计算其中一个输出矩阵,需要执行一个额外的循环来总结先前提取的999向量的贡献.此循环执行一些中间计算以确定允许贡献的值的范围.然后通过由计算的分数值的cos和正弦值确定的因子来缩放贡献.这是它崩溃的地方.如果我坚持使用常量值或1.0或任何其他值,内核执行没有问题.但是,当只包含一个调用(cos或sine)时,内核崩溃.
一些伪代码如下:
kernel()
{
/* Extract 999 vector from 2D array 999xM - one 999 vector for each thread. */
for (int i = 0; i < 999; i++)
{
.....
}
/* Cycle through the 2nd dimension of the output matricies */
for (int j = 0; j < N; j++)
{
/* Calculate some intermediate variables …
Run Code Online (Sandbox Code Playgroud)