开发人员区

使用MATLAB先进的软件开发

来到全圈

CI服务在云中。他们好美。您需要做的就是在存储库中删除一点点y'yaml,全球自动构建和测试基础架构开始与您的提交创建一些好的清洁乐趣。实际使您的代码清洁器的那种良好的清洁乐趣。您无需设置计算机,您无需担心CI服务器上的电源按钮(或您的代理商)。这一切都是为了你,它很可爱。

不久前,我们展示了MATLAB、Simulink和大多数工具箱现在如何在公共项目的金宝app各种云CI服务上得到支持。金宝app今天,我想强调其中一项服务,CircleCI,更详细的细节。Circleci是一个顶级CI平台,支持Github和Bitbucke金宝appt上的存储库。

要向您展示如何与Matlab和Simulink代码合作,请让我提醒您我们的深度学习存储库使用金宝app多任务级联卷积神经网络(MTCNN)突出面对面检测。这是一个很好的项目,我们可以用来展示像Circleci这样平台的一些好处。

首先,让我们看看我们运行测试是多么容易,这个Repo指定运行。这个回购使用MATLAB项目标记要运行的所有测试。假设存储库已经存在设置要使用circleci构建,然后,您可以立即从中获益我们已经开发出用于简化MATLAB和SIMULINK构建的ORB金宝app。你说的是什么?它们是CI Config的可共享金块。在我们的情况下,它可以帮助您定义如何将MATLAB获取到Circleci云代理,您如何运行任意MATLAB命令,以及如何使用一些最常见的选项轻松运行测试。

例如,让我们说我们首先运行我们的测试并产生一对流行的工件,junit风格的XML输出和PDF测试报告,前者,用于与Circleci测试结果视图和后者集成存档目的和丰富的Matlab和Simulink金宝appspecific reporting information (e.g. like we see在这里在这里, 和在这里)。首先,我们首先将Circleci Yaml配置文件添加一些版本信息,这都是我们正在使用的Circleci配置规范的什么版本信息以及我们将使用的是我们的ORB版本。我们将使用规范和ORB的最新版本。

然后,您设置了executor类型,它是您将使用的计算机或图像来运行构建。在这种情况下,我们将使用最近版本的Ubuntu。注意,如果您在公共项目中使用Linux云代理机器映像,可以快速轻松地设置MATLAB安装你从球体上得到的元素。

一旦MATLAB被平方,您就可以定义一个可以在工作流中引用的作业,以通过使用测试运行来生成我们的JUnit和PDF工件运行测试元素简单地告诉ORB在其中创建工件。

然后,我们作为相同作业的一部分,使用内置存储这些伪像store_test_results元素(处理JUnit-Squest XML输出),以及store_artifacts要节省PDF报告和XML的元素以保存保存。这是什么样子:

最后,我们引用了我们在工作流中定义的这项工作,我们都很好。

版本:2.1 ORBS:MATLAB:MATHWORKS/MATLAB@0.4.0作业:RUN-ALL-DEM-MAGINICING-MATLAB-TESTS:MACHIN:图片:Ubuntu-2004:202101-01步骤: - 结帐 -  MATLAB /安装 -  MATLAB /运行测试: test-results-junit: artifacts/junit/testResults.xml test-results-pdf: artifacts/pdf/testResults.pdf - store_test_results: path: artifacts/junit - store_artifacts: path: artifacts workflows: test: jobs: - run-all-dem-magnificient-matlab-tests

好吧,现在让我们用它来搭建一个版本,看看我们看起来像什么:

注意我加快了这种构建的视频,以便简洁起来。但是,您可以看到,Circleci旋转构建代理,Matlab在此代理上设置,并在几分钟内运行和传递测试运行和传递。更重要的是,它为我们节省了一些文物!让我们查看PDF报告:

好吧,这里有几个酷东西:

  1. 我们可以说是藏物吗?很容易获得一种简化的方式来存储像pdf结果这样的记录保存工件
  2. 这些报告可以包含额外的丰富内容,如图像、图形和可视化、屏幕截图,如果您正在使用Simulink Test,还可以包含信号级别比较和可视化。金宝app涂料。在本例中,我们包含了从示例文档代码生成的图像,这是经过测试的,以确保示例没有错误地执行,并使用FigureDiagnostic(类似于我们在这篇文章)。
  3. 看看'dem过滤测试!好吧,虽然我们没有超级酷,但我们有一些过滤器的测试,它至少很好,我们能够从报告中完美地看到这一点。挖掘诊断我们看到这些测试被过滤出来的原因是因为它们需要GPU运行。

啊好,最后一点,我们无法过于挑剔吗?毕竟我们正在利用云服务,该服务正在为我们处理我们所有的机器配置,因此我们不应该希望能够在云中运行需要GPU的测试。我猜我们只需要记得从我们自己的机器脱机时从我们的GPU脱机运行这些测试。

错误的!

事实证明,Circleci有一个计划金宝app支持使用GPU硬件的机器!那不是很好吗?在我们的构建上尝试这仅仅意味着改变我们的yaml代码片段:

机:形象:ubuntu-2004:202101-01

......到这样的东西:

Resource_class:gpu.nvidia.small机器:图片:Ubuntu-1604-CUDA-11.1:202012-01

现在,如果您的Circleci计划启用了GPU,那么使用那个小片段,您可以看到我们的构建现在使用带有GPU的机器:

但是,我们有问题!

看来有些测试失败了。这是出乎意料的(真的,这是出乎意料的,因为我正在写这个博客!)事实证明,当您不进行自动化测试时,测试失败就会悄然而至。这就是为什么在CI下自动化所有测试是必须的。在这种情况下,随着gpuArray支持的引入,这个深度学习存储库在R2020b开始失败金宝appSelectstrontestBbox.从计算机视觉工具箱。长话短说,这很简单,我们只是需要转移一个收集呼叫GPUArray以解释早期版本中的这些差异。但是,只需早日检测到我们在GPU硬件上运行的错误,所以这是Circleci平台的一个很好的特征。此外,注意到清洁测试结果失败显示我们看到的,因为我们上传了我们的JUnit XML工件。好奖金。

我似乎记得一次或两次我听说GPU可以在深度学习应用中有用吗?这听起来对吗?立即想象你可以用Matlab&Circleci的力量做些什么自动化的工作流程。




发布与MATLAB®R2021A

|

评论

要发表评论,请点击在这里登录您的MathWorks帐户或创建新的。