小编use*_*972的帖子

OpenMP 矩阵乘法嵌套循环

这是一个矩阵乘法代码,其中一个i循环并行化,另一个j循环并行化。对于这两个版本,C数组的值都是正确的(我已经用小矩阵大小进行了测试)。两者之间也没有性能提升。

谁能告诉我这两个版本有什么区别?C无论矩阵的大小如何,数组在两个版本中都准确吗?提前致谢

void mat_multiply ( void )
{
    int t;
    int i, j, k;    
    #pragma omp parallel for private(k) // parallelize i loop
    for(i = 0; i < dimension; i++)
    {
        for(j = 0; j < dimension; j++) 
        {
            for(k = 0; k < dimension; k++)
            {
                C[dimension*i+j] += A[dimension*i+k] *  B[dimension*k+j];       
            }
        }
    }
 }
Run Code Online (Sandbox Code Playgroud)
 void mat_multiply ( void )
 {
     int t;
     int i, j, k;   

     for(i = 0; i …
Run Code Online (Sandbox Code Playgroud)

c c++ parallel-processing multithreading openmp

3
推荐指数
1
解决办法
4551
查看次数

AWS ECS 无法运行超过 10 个任务

我有一个 ECS 集群,其中有 20 个注册实例。

我有 3 个任务定义来解决一个大数据问题。

任务 1:拆分任务 - 这将启动一个 docker 容器,并且该容器定义有一个入口点来运行名为 HPC-Split 的脚本。该脚本将大数据分成安装的 EFS 中的 5 个部分。该任务的任务数量(计数)为 1。

任务 2:运行任务:这将启动另一个 docker 容器,并且该 docker 容器有一个入口点来运行名为 HPC-script 的脚本,该脚本处理每个拆分部分。为此选择的任务数量为 5,以便并行处理。

任务 3:合并任务:这会启动第三个 docker 容器,该容器有一个入口点来运行名为 HPC-Merge 的脚本,并合并所有部分的不同输出。同样,我们需要为此运行的任务数(计数)为 1。

现在AWS服务限制说:https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service_limits.html 我们可以运行的最大任务(计数)是10个。所以我们目前只能运行10个并行处理。含义是,拆分文件(1 个任务在 1 个实例上运行)、运行进程(任务在 10 个实例上运行)、合并文件(任务在 1 个实例上运行)。

10 的限制限制了我们可以并行处理的级别,我不知道如何绕过。我对这个限制感到惊讶,因为肯定需要在集群中超过 10 个实例上运行长时间运行的进程。

你们能给我一些关于如何绕过这个限制或如何最佳地使用 ECS 并行运行 20 个任务的指示吗?我使用的分散放置是“每个主机一个任务”,因为该进程使用一台主机中的所有核心。

如何使用 ECS 更好地构建这一点?

amazon-web-services amazon-ecs

2
推荐指数
1
解决办法
5116
查看次数