Tag:

如何将四面体树结构复制到CUDA设备内存?

如果我想将以下结构TetrahedronStruct移动到CUDA设备内存,我该怎么办? struct TetrahedronStruct { int index; int region; TriangleFaces Faces[4]; Vertex Vertices[4]; struct TetrahedronStruct *adjTetrahedrons[4]; }; typedef struct { long double Nx, Ny, Nz; long double d; Vertex V[3]; } TriangleFaces; typedef struct { long double x, y, z; } Vertex; 细节: 提供网格细节(节点数,四面体,坐标和区域)。 树的创建是在for循环中完成的。 基本上,每个面都以其坐标和邻接相应地定位和布置在树中。 在CUDA设备中,我需要使用此结构在媒体上叠加,以模拟粒子如何穿过该媒体。 百万粒子中的每一粒都从四面体移动到四面体(每个四面体具有它所在的介质的特性)。

用于查找2个字符串之间任意长度的所有共享子串的算法,然后计算字符串2中的出现次数?

我遇到了一个不同寻常的挑战,到目前为止,我无法确定最有效的攻击方法。 给定以下2个字符串作为示例,查找任意长度的2个字符串之间的所有共享子字符串,并计算字符串2中所有这些共享子字符串的出现次数。您的算法还需要能够计算之间的共享子字符串包含最大100MB或更大的字符串的文件。 例: 字符串1:ABCDE512ABC361EG51D 字符串2:ADE5AHDW4131EG1DG5C 给定这2个字符串,该算法将找到以下共享子串:A,C,D,E,5,1,3,G,DE,E5,EG,G5,1D,DE5,1EG 然后从这些共享的子串中,我们可以发现字符串2中每个子串的出现次数。 答:字符串2中出现2次 C:字符串2中出现1次 D:字符串2中出现3次 等等.. 我用来解决这个问题的第一种方法是粗暴地强迫我使用2个嵌套for循环来计算公共共享子串 – 显然效率最低但是这是一种快速而肮脏的方式来了解预期的输出应该使用较小的测试输入和最慢的运行时间,大约2分钟来计算包含ascii字符串,大小为50kb的2个文件之间的所有常见共享子字符串。 将大小增加到1mb会导致这种情况急剧下降,因为计算此事件时必须进行大量的嵌套迭代。 下一个方法是使用树 – 看看我可以用多少内存来优化计算时间。 这种方法要快得多。 使用蛮力方法花费2分钟的两个50kb文件几乎是即时的。 对1mb文件运行速度非常快(秒)但是当我继续测试越来越大的文件大小时,由于树的大小,我很快就开始遇到内存问题。 注意:字符串文件只包含ASCII字符! 编辑: 我正在进一步升级,请看: https://gist.github.com/braydo25/f7a9ce7ce7ad7c5fb11ec511887789bc

C是否有任何添加字符串的工具?

我正在创建一个函数,它返回一个表示为树的函数的导数 / + \ * ^ / \ / \ x 5 3.14 x 与表单的节点 typedef struct node { char * fx; // function struct node * gx; // left-hand side char * op; // operator struct node * hx; // right-hand side } node; 如果节点没有子节点,例如上例中的x , 3.14 ,则其op , gx和hx为NULL ,否则其fx为NULL 。 我计算导数的函数看起来像 char […]