如何在Python中并行化GPU上的嵌套for循环? 问题:

如何在Python中并行化GPU上的嵌套for循环? 问题:,python,parallel-processing,gpu,Python,Parallel Processing,Gpu,我有三个嵌套for循环,希望使用python3.6在我的(支持CUDA的)GPU上并行运行它们。评估顺序无关紧要,但必须存储输出。我该怎么做?请注意,每个for循环的范围是不同的 代码 定义f(i,j,k): 如果i

我有三个嵌套for循环,希望使用python3.6在我的(支持CUDA的)GPU上并行运行它们。评估顺序无关紧要,但必须存储输出。我该怎么做?请注意,每个for循环的范围是不同的

代码 定义f(i,j,k): 如果i 额外细节 这甚至可以在GPU上并行化吗?我可以使用哪些软件包?如何在不必等待其他循环编译的情况下存储输出?我是否应该将
[I,j,k,f(I,j,k)]
添加到一个列表中,然后将它们放入一个有组织的数组中?如果
f
的输出为
float16
,则输出量很容易失控。我怎样才能克服这一点?上面的函数是由混合形式的参数(if语句)组成的,它调用NumPy函数纯粹是出于教育目的。 如果使用for循环不是正确的方法,请告诉我。我是否应该创建一个包含所有可能的
(I,j,k)
的列表,并向GPU发送几千个以进行评估?请考虑内存限制。即使在内存中存储100x200x300整数也很昂贵

开箱即用
如何将这个问题转化为线性代数问题,以便利用Numpy或Numba?

没有多少算法是立方的。你想实现什么?@cᴏʟᴅsᴘᴇᴇᴅ, 我只需要计算一个复杂的函数,它需要很多I,j和k。现在我不关心底层问题,我想学习如何在嵌套for循环上调用函数并存储它们。欢迎来到StackOverflow。祝贺你赢得[同时提出的问题最多]。。。我从来没见过在一个帖子下有这么多问题。调用
f(p1,p2,p3)
在计算上有多昂贵?发布
f(p1,p2,p3)
,因为
[时间]
-域和
[空间]
-域成本都很重要-+否则您可能会有一些更严格的成员声称该代码不是MCVE制定的问题定义。。。因此,最好在这个方向上查看您的帖子。您正在寻找的软件包(以及其他几个答案)可以通过搜索找到。@user3666197,这是一种荣誉!呵呵!我更新了代码,我问这么多问题的原因是为了让事情开始。我关心的是复杂函数嵌套循环的通用解决方案。我也会把我的想法说出来,这样人们就可以对不同的方法发表评论。一旦这个问题得到了回答,我会把这个问题修改得更合理一些。
def f(i, j, k):
    if i < j < k:
        return np.log(1 + i + j + k)
    else:
        return (i, j, k)

for i in range(1000):
    for j in range(2000):
        for k in range(3000):
            f(i, j, k) # Save the output???