OpenCL-如何在每个核心上生成单独的数学过程

OpenCL-如何在每个核心上生成单独的数学过程,opencl,gpu,Opencl,Gpu,我是OpenCL的新手,正在编写一个RSA factoring应用程序。理想情况下,该应用程序应能跨NV和AMD GPU目标工作,但我没有找到一种简单的方法来确定每个GPU上的内核/流进程总数 有没有一种简单的方法来确定任何硬件平台上总共有多少个内核/流进程,然后在每个可用的内核上生成一个分解线程?目标RSA模将位于共享内存中,并且每个分解线程都使用针对该模的Rho分解攻击 另外,OpenCL是否支持类似于GNUMP的多精度数学库来存储大的半素数 提前感谢您在GPU上,您不会像在CPU上那样为每

我是OpenCL的新手,正在编写一个RSA factoring应用程序。理想情况下,该应用程序应能跨NV和AMD GPU目标工作,但我没有找到一种简单的方法来确定每个GPU上的内核/流进程总数

有没有一种简单的方法来确定任何硬件平台上总共有多少个内核/流进程,然后在每个可用的内核上生成一个分解线程?目标RSA模将位于共享内存中,并且每个分解线程都使用针对该模的Rho分解攻击

另外,OpenCL是否支持类似于GNUMP的多精度数学库来存储大的半素数


提前感谢您在GPU上,您不会像在CPU上那样为每个核心生成一个线程。相反,您希望启动的线程比内核多得多。我不会担心给定目标平台上可用的内核的确切数量。相反,不要关注什么最适合您的问题。

在GPU上,您不会像在CPU上那样为每个核心生成一个线程。相反,您希望启动的线程比内核多得多。我不会担心给定目标平台上可用的内核的确切数量。相反,不要关注什么最适合你的问题。

为了补充Roger的答案,你想要拥有比内核多得多的线程的原因是因为GPU实现了非常高效的隐藏。通常,就处理器接收请求数据所需的时间而言,每次内存访问都是非常昂贵的操作。但是,如果一个线程正在等待一个内存事务,它可以被“暂停”,同时另一个线程可以被激活来进行计算(或其他内存访问)。因此,如果你有足够的线程,你基本上可以隐藏内存访问延迟,并且你的软件可以在硬件的全部计算能力下运行(否则这种情况很少发生)


我本想在Roger的帖子中发表评论,但它的大小超出了限制。

为了补充Roger的答案,您希望拥有比内核多得多的线程的原因是因为GPU实现非常高效的隐藏。通常,就处理器接收请求数据所需的时间而言,每次内存访问都是非常昂贵的操作。但是,如果一个线程正在等待一个内存事务,它可以被“暂停”,同时另一个线程可以被激活来进行计算(或其他内存访问)。因此,如果你有足够的线程,你基本上可以隐藏内存访问延迟,并且你的软件可以在硬件的全部计算能力下运行(否则这种情况很少发生)


我本想在罗杰的帖子上发表评论,但篇幅超出了限制。

我建议你将第二个问题改为单独的问题。我建议你将第二个问题改为单独的问题。