我是CUDA的新手.我试图并行化以下代码.现在它坐在内核上但根本没有使用线程,因此很慢.我尝试使用这个答案但到目前为止无济于事.
内核应该生成前n个素数,将它们放入device_primes数组中,稍后从主机访问该数组.代码是正确的,在串行版本中工作正常,但我需要加快速度,也许使用共享内存.
//CUDA kernel code
__global__ void generatePrimes(int* device_primes, int n)
{
//int i = blockIdx.x * blockDim.x + threadIdx.x;
//int j = blockIdx.y * blockDim.y + threadIdx.y;
int counter = 0;
int c = 0;
for (int num = 2; counter < n; num++)
{
for (c = 2; c <= num - 1; c++)
{
if (num % c == 0) //not prime
{
break;
}
}
if (c == num) //prime
{
device_primes[counter] = num; …Run Code Online (Sandbox Code Playgroud) 我需要找到两个地点之间的最短路线.详细说明:
我得到一个包含3列的excel文件:city1,city2,它们之间的距离.条件是如果city1和city2之间有一条路线,那么city2和city1之间就有一条路线.
该文件有多行,任务是读取它并根据城市X和城市Y之间的距离确定最短路径.但是,在表格中,路径可能如下所示:
...
X,N,100
X,M,200
你,Y,50
X,U,20
...
I. e.没有从X到Y的直接路径,问题的答案是X - > U - > Y = 20 + 50 = 70,这是最短的距离.在这种形式中,在要求出发和到达点之间可能存在许多位置.
UI要求离开,目的地并输出它们之间的最短路径.
我希望我能够很好地解释它以获得这个想法.我试图在C#中解决这个问题,但我更希望找到一种通用的方法,一种解决这个问题的算法.我意识到它可能与旅行推销员问题有些相关,但我无法应用它.
任何方向/帮助/代码样本赞赏.