标签: pipeline

在硬件中断之前如何处理分支错误预测

特定向量(未屏蔽)发生硬件中断,CPU 检查 IF 标志并将 RFLAGS、CS 和 RIP 压入堆栈,同时后端仍有指令完成,其中一条指令的分支预测结果是错误的。通常管道会被刷新,前端开始从正确的地址获取,但在这种情况下,中断正在进行中。

当中断发生时,流水线中的指令会发生什么情况?

我已经读过这篇文章,显然解决方案是立即刷新管道中的所有内容,这样就不会发生这种情况,然后生成指令将 RFLAGS、CS、RIP 推送到 TSS 中内核堆栈的位置;然而,问题出现了,它如何知道与最新架构状态关联的 (CS:)RIP,以便能够将其推送到堆栈上(假设前端 RIP 现在将领先)。这类似于 port0 上的采取分支执行单元如何知道当采取预测结果错误时应该获取的 (CS:)RIP 的问题——是编码到指令中的地址以及预言?当你想到陷阱/异常时,也会出现同样的问题,CPU需要将当前指令(故障)或下一条指令(陷阱)的地址推送到内核堆栈,但是它是如何计算出这条指令的地址的当它处于管道的中途时——这让我相信地址必须被编码到指令中并使用长度信息计算出来,这可能全部在预解码阶段完成。

pipeline intel cpu-architecture interrupt-handling branch-prediction

4
推荐指数
1
解决办法
1067
查看次数

管道中的软件中断会发生什么情况?

读完这篇文章后:

当中断发生时,流水线中的指令会发生什么情况?

关于软件中断会发生什么情况的信息并不多,但我们确实了解到以下内容:

相反,异常(例如页面错误)会标记受影响的指令。当该指令即将提交时,异常之后的所有后续指令都将被刷新,并且指令获取将被重定向。

我想知道管道中的软件中断(INT 0xX)会发生什么,首先,它们何时被检测到?它们是否可能在预解码阶段被检测到?在指令队列中?在解码阶段?或者他们到达后端并立即完成(不进入保留站),依次退休,退休阶段发现这是一条 INT 指令(看起来很浪费)。

假设它在预解码时被拾取,必须有一种方法向 IFU 发出信号以停止获取指令,或者确实对其进行时钟/电源门控,或者如果它在指令队列中被拾取,则必须有一种在队列中之前刷新指令的方法。然后必须有一种方法向某种逻辑(“控制单元”)发出信号,例如为软件中断生成微指令(索引到 IDT、检查 DPL >=CPL >=段 RPL 等),天真的建议,但如果有人更好地了解这个过程,那就太好了。

我还想知道当这个过程受到干扰时它如何处理它,即发生硬件中断(记住陷阱不会清除 EFLAGS 中的 IF),现在必须开始一个全新的中断处理和 uop 生成过程,它将如何处理之后回到处理软件中断的状态。

x86 pipeline intel interrupt-handling

4
推荐指数
1
解决办法
977
查看次数

是否可以查看谁取消了 Gitlab 管道?

我可以看到谁创建了 Gitlab 管道/作业,但是,是否可以看到谁取消了它?如果有人取消了,收到通知就更好了。

如图所示,作业被取消,但不是由我取消,并且输出日志为空。

顺便说一句,我检查了另一个作业包含日志并在运行时取消,但仍然找不到谁取消了它。

在此输入图像描述

pipeline gitlab gitlab-ci gitlab-api

4
推荐指数
1
解决办法
5829
查看次数

gitlab CI 管道检查代码格式

我希望google-java-formatter在我的几个项目中进行安装。

但是,在提交代码时,我希望CI管道首先检查格式是否已完成。

我知道我可以使用.gitlab-ci.yml根目录中的文件来完成此操作,但是我非常不确定如何实现检查所有文件格式是否正确的目标,任何人都可以帮助我解决如何执行此操作的google-java-formatter问题gitlab

pipeline pre-commit-hook githooks gitlab-ci linter

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

如何使用 GridSearchCV 比较多个模型以及 python 中的管道和超参数调整

我使用两个估计器,随机森林和 SVM

random_forest_pipeline=Pipeline([   
    ('vectorizer',CountVectorizer(stop_words='english')),
    ('random_forest',RandomForestClassifier())
])
svm_pipeline=Pipeline([
    ('vectorizer',CountVectorizer(stop_words='english')),
    ('svm',LinearSVC())
])
Run Code Online (Sandbox Code Playgroud)

我想首先对数据进行矢量化,然后使用估计器,我正在阅读这个在线教程。然后我使用超参数如下

parameters=[
    {
        'vectorizer__max_features':[500,1000,1500],
        'random_forest__min_samples_split':[50,100,250,500]
    },
    {
        'vectorizer__max_features':[500,1000,1500],
        'svm__C':[1,3,5]
    }
]
Run Code Online (Sandbox Code Playgroud)

并传递给GridSearchCV

pipelines=[random_forest_pipeline,svm_pipeline]
grid_search=GridSearchCV(pipelines,param_grid=parameters,cv=3,n_jobs=-1)
grid_search.fit(x_train,y_train)
Run Code Online (Sandbox Code Playgroud)

但是,当我运行代码时出现错误

类型错误:估计器应该是实现“fit”方法的估计器

不知道为什么我会收到此错误

python pipeline python-3.x scikit-learn gridsearchcv

4
推荐指数
1
解决办法
3708
查看次数

如何在 shell 管道中使用不同的文件描述符?

stdout我正在处理一个脚本,它首先调用一个嘈杂的(对和)程序进行大量诊断stderr,然后使用其他工具处理其输出。

该程序的冗长使得不可能简单地将其标准输出发送到管道,因此目前我们使用临时文件——我想结束这种做法。

我们可以/tmp/foo要求程序将数据写入,而不是写入 - 它会,没有问题(例如,/dev/fd/N它不需要文件)。seek

stdout它当前发送到和的噪音stderr可以继续到那里——操作员已经习惯了看到它,并且如果它消失就会感到震惊......

但是我如何安排描述符N存在并发送到下一个程序中stdin

noisy -o /dev/fd/N ?????| filter -i /dev/stdin
Run Code Online (Sandbox Code Playgroud)

如果这需要bash,那就这样吧,但当然,我更喜欢适合整个 sh 系列的解决方案。

unix bash pipeline file-descriptor sh

4
推荐指数
1
解决办法
1834
查看次数

UseSpa() 从 API 返回 index.html 而不是 404

默认情况下,startup.cs 中的 .UseSpa() 捕获到达管道点的每个请求,并尝试将其作为对 SPA 主页的请求进行处理

我想在路由 /api/* 处为我的 API 调用保留 404,以防万一 api url 中出现拼写错误时,我的记录器会记录 404,而不是像“错误代码:200 消息:解析 https 期间 Http 失败: //localhost:5001/api/non-existing-api-should-give-404"(因为它得到了index.html作为响应)

已经花了一天的时间在这上面,我找不到解决方案:( UseSpa() 似乎覆盖了任何不匹配的端点。有什么想法如何解决它吗?

这是 Startup.cs 的基本配置,问题出在生产环境中。

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            app.UseHttpsRedirection();
            if (!env.IsDevelopment())
            {
                app.UseSpaStaticFiles();
            }

            app.UseRouting();
            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
            });

            app.UseSpa(spa =>
            {
                if (env.IsDevelopment())
                {
                    spa.UseProxyToSpaDevelopmentServer("http://127.0.0.1:4200");
                }
            });
        }
Run Code Online (Sandbox Code Playgroud)

pipeline routes single-page-application asp.net-core angular

4
推荐指数
1
解决办法
3467
查看次数

有没有办法让 sklearn pipeline 在网格搜索期间进行有步骤和无步骤的训练?我可以删除步骤,但如何将其传递给 GridSearchCV?

我第一次问这个问题时就关闭了,因为这个问题提出了类似的问题。然而,尽管答案显示了如何从管道中添加/删除步骤,但没有一个答案显示这是如何工作的,GridSearchCV我想知道如何处理已从中删除步骤的管道。

我想使用网格搜索来训练模型,并测试首先执行 PCA 和省略 PCA 时的性能。有没有办法做到这一点?我正在寻找的不仅仅是简单地设置n_components输入变量的数量。

目前我这样定义我的管道:

pca = PCA()
gbc = GradientBoostingClassifier()
steps = [('pca', pca), ('gbc', gbc)]
pipeline = Pipeline(steps=steps)

param_grid = {
    'pca__n_components': [3, 5, 7],
    'gbc__n_estimators': [50, 100]
    }

search = GridSearchCV(pipeline, param_grid, n_jobs=-1, cv=5, scoring='roc_auc')
Run Code Online (Sandbox Code Playgroud)

pipeline machine-learning scikit-learn hyperparameters grid-search

4
推荐指数
1
解决办法
369
查看次数

Azure Pipelines:多行参数

在天蓝色管道中是否可以传递多行参数?如果type是 a string,你甚至不能用换行符编写。另一方面,如果typeis object,您可以输入多行,但变量中的所有 EOL 将被删除。

parameters:
- name: Multiline
  type: object
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

如果我将参数保存到文本文件,结果是一行

- bash: |
    echo ${{ parameters.Multiline }} >> script.txt
    cat script.txt
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

parameters pipeline multiline azure-devops azure-pipelines

4
推荐指数
1
解决办法
7595
查看次数

如何让 ansible 重用 SSH 会话,而不是为每项任务创建一个新会话?

我的公司防火墙策略仅允许同一源和目标之间每分钟 60 秒 20 个连接。

因此,ansible 播放一段时间后就会挂起。

我希望多个任务使用相同的 ssh 会话而不是创建新会话。为此,我pipelining = True在本地文件夹ansible.cfg和命令行中设置了以下内容。

cat /opt/automation/startservices/ansible.cfg

[defaults]
host_key_checking = False
gathering = smart
[ssh_connection]
ssh_args = -o ControlMaster=auto -o ControlPersist=600s
control_path = %(directory)s/%%h-%%r
pipelining = True

ANSIBLE_SSH_PIPELINING=0 ansible-playbook -i /opt/automation/startservices/finalallmw.hosts /opt/automation/startservices/va_action.yml -e '{ dest_host: myremotehost7 }' -e dest_user=oracle
Run Code Online (Sandbox Code Playgroud)

该剧本太大,无法在此处共享,但正是该任务循环,并且由于 60 秒内超过 20 个 ssh 连接而挂起。

cat /opt/automation/startservices/ansible.cfg

[defaults]
host_key_checking = False
gathering = smart
[ssh_connection]
ssh_args = -o ControlMaster=auto -o ControlPersist=600s
control_path = %(directory)s/%%h-%%r
pipelining = True

ANSIBLE_SSH_PIPELINING=0 …
Run Code Online (Sandbox Code Playgroud)

ssh pipeline ansible session-reuse

4
推荐指数
1
解决办法
1万
查看次数