我正在为 CUDA 程序编写主机代码,因此我无法使用标准 C 函数。我在使用该memset
函数初始化整数数组的元素时遇到问题。我的印象是你可以用它memset
来初始化一个整数数组,例如,像这样的所有 4:
int num_elements = 10;
int* array_example = (int*)malloc(num_elements * sizeof(int));
memset(array_example, 4, sizeof(array_example));
但是当我这样做时,它会将每个字节而不是每个字节设置int
为 4。如果我说:
memset(array_example, 4, 1);
我在第一个整数中得到 4,如果我说:
memset(array_example, 4, 2);
我在第一个整数中得到 1024,在第二个整数中得到 0。我了解该memset
函数将第三个参数中指定的字节数设置为 4,但是有没有办法使用 memset 将每个整数设置为 4 而不是每个字节?否则,我是否会使用 for 循环?我的 GPU 的计算能力很低,因此我无法访问一些更好的 CUDA 附加功能,这些附加功能允许更多的 C++ 使用。