Arrays 在cuda中添加字符数组

Arrays 在cuda中添加字符数组,arrays,cuda,char,addition,Arrays,Cuda,Char,Addition,我试图在cuda中添加2个字符数组,但没有任何效果。 我尝试使用: char temp[32]; strcpy(temp, my_array); strcat(temp, my_array_2); 当我在内核中使用它时,我得到了一个错误:不允许从一个全局函数进程调用一个主机函数strcpy 在这之后,我尝试在主机中使用这些函数,而不是在内核中-没有错误,但是在添加之后,我得到了一些奇怪的符号,比如 那么,如何在CUDA中添加两个或多个字符数组呢?正如错误消息所解释的,您正在尝试从全局内核GPU

我试图在cuda中添加2个字符数组,但没有任何效果。 我尝试使用:

char temp[32];
strcpy(temp, my_array);
strcat(temp, my_array_2);
当我在内核中使用它时,我得到了一个错误:不允许从一个全局函数进程调用一个主机函数strcpy

在这之后,我尝试在主机中使用这些函数,而不是在内核中-没有错误,但是在添加之后,我得到了一些奇怪的符号,比如


那么,如何在CUDA中添加两个或多个字符数组呢?

正如错误消息所解释的,您正在尝试从全局内核GPU函数调用主机函数CPU函数。在全局内核中,您只能访问CUDA运行时API提供的函数,该API不包括定义strcpy和strcat的C标准库

您必须根据自己的需要创建自己的str*函数。您想并行连接一个字符数组,还是在每个线程中串行连接

那么,如何在CUDA中添加两个或更多字符数组

编写自己的函数:

__device__ char * my_strcpy(char *dest, const char *src){
  int i = 0;
  do {
    dest[i] = src[i];}
  while (src[i++] != 0);
  return dest;
}

__device__ char * my_strcat(char *dest, const char *src){
  int i = 0;
  while (dest[i] != 0) i++;
  my_strcpy(dest+i, src);
  return dest;
}

当我们在做的时候,strcmp是不是可以添加2个字符数组呢?@eddwis你必须创建自己的strcat内核才能在GPU上运行。好的,一切看起来都很好,但只有一个问题-我添加了不同长度的数组,我不知道应该从哪个位置添加,数组“len”是什么。我如何解决这个问题?我已经修复了代码,所以它们或多或少复制了C++的Struts和Strucy的功能。这是非常基本的C代码。