我是Cuda编程的初学者。为我的简单问题道歉。
我读了一些文件和例子。如果我使用内核函数,我应该做如下的事情
kernelfun <<<number of block, number of thread>>>(args).
所以没有网格的编号。我们需要设置我们计划使用的网格的数量吗?
根据我的GPU,应该如何设置块数和线程数?
因为我看到每个块的最大线程数是512。所以我应该设置num的线程是512,以充分利用GPU。
另一个问题是,当我设置块和线程的数量时,是否应该计算我的项目使用的内存?否则,计算机将自动安排,我不需要关心我的项目使用的内存。
我有以下测试代码:
import tensorflow as tf
import numpy as np
def body(x):
a = tf.random_uniform(shape=[2, 2], dtype=tf.int32, maxval=100)
b = tf.constant(np.array([[1, 2], [3, 4]]), dtype=tf.int32)
c = a + b
return tf.nn.relu(x + c)
def condition(x):
return tf.reduce_sum(x) < 10