是否值得创建我的抽象代数库的开放CL版本?

时间:2014-06-25 14:49:24

标签: python algorithm opencl gpu-programming

我在Python中创建一个抽象代数库,其中的一个功能就是使用Cayley表(将其视为一个抽象的"乘法"表,它没有' t必须遵守乘法或加法的标准规则,并用它来证明某些身份或属性是否适用于Cayley表定义的二元运算符。

任何这些程序的计算基本归结为:

  1. 使用Cayley表中的值来获取一些抽象二进制操作的结果
  2. 比较结果值以查看它们是否相等
  3. 循环执行上述所有操作。
  4. 由于需要完成大量操作,这可能会导致cpu密集,特别是如果你想对大小为n * n(O(n ^ 2!)的cayley表的所有排列执行此操作,我认为)。好处是,这是高度可分段化的,因为我有算法可以在大约O(n)时间内计算n * n cayley表的第m个排列,因此所有Cayley表排列的集合可以近似均匀分割,并且可以分配多个进程以并行处理问题的不同子集。

    这样的过程(替换查找表中的值,比较结果)适合打开CL或任何其他GPU库吗?

1 个答案:

答案 0 :(得分:0)

如果你可以改变

Compare the resulting values to see if they are equal

部分类似于

subtract one from another, save the result and check for a zero from host side.

如果结果只决定加法(+)操作,即使看起来像是

subtract one from another, multiply (1-signum(result)) with the adder value, then add.

可以比cpu更快。因为当以非随机方式读/写时,gpu内存通常比主机内存快一点。