AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / user-14720380

Tom McLean's questions

Martin Hope
Tom McLean
Asked: 2025-04-25 22:51:29 +0800 CST

Por que meu benchmark usando __mm_prefetch é mais lento?

  • 7

Estou tentando aprender algumas otimizações em C++ e tentei usar __mm_prefetchpara somar um array. Os testes de benchmark para o meu código são:

#include <benchmark/benchmark.h>
#include <vector>


#if defined(__GNUC__) || defined(__clang__)
    #define PREFETCH(addr, hint) __builtin_prefetch(addr, 0, hint)
#elif defined(_MSC_VER)
    #include <xmmintrin.h>
    #define PREFETCH(addr, hint) _mm_prefetch(reinterpret_cast<const char*>(addr), hint)
#else
    #define PREFETCH(addr, hint)
#endif


class PrefetchBenchmark : public benchmark::Fixture {
public:
    static constexpr size_t data_size = 1 << 20;

    void SetUp(const benchmark::State& state) override {
        data.resize(data_size, 1);
    }

    void TearDown(const benchmark::State& state) override {

    }

    std::vector<int> data;
};


BENCHMARK_F(PrefetchBenchmark, NoPrefetch)(benchmark::State& state) {
    for (auto _ : state) {
        long sum = 0;
        for (const auto& i : data) {
            sum += i;
        }
        benchmark::DoNotOptimize(sum);
    }
}


BENCHMARK_F(PrefetchBenchmark, WithPrefetch)(benchmark::State& state) {
    int prefetch_distance = 10;
    for (auto _ : state) {
        long sum = 0;
        for (int i = 0; i < data.size(); i++) {
            if (i + prefetch_distance < data.size()) {
                PREFETCH(&data[i + prefetch_distance], 3);
            }
            sum += data[i];
        }
        benchmark::DoNotOptimize(sum);
    }
}

No entanto, o benchmark é executado consistentemente lento com a pré-busca

PrefetchBenchmark/NoPrefetch       348484 ns       344905 ns         1948
PrefetchBenchmark/WithPrefetch     595119 ns       585938 ns         1120

Por que isso acontece e como eu poderia fazer um teste que aumentasse o desempenho usando __mm_prefetch?

Meu repositório git para meus benchmarks para um exemplo completo está aqui

c++
  • 1 respostas
  • 83 Views
Martin Hope
Tom McLean
Asked: 2025-02-11 05:22:07 +0800 CST

O agente de compilação do Azure Devops auto-hospedado não está obtendo a ferramenta de $PATH

  • 5

Tenho um agente de build auto-hospedado, que tem dotnet tools e nerdbank git versioning instalados. Se eu usar SSH no agente e executar nbgv, ele existe:

agent@ip-172-18-0-30:~$ which nbgv
/home/agent/.dotnet/tools/nbgv

E eu posso executá-lo:

agent@ip-172-18-0-30:~$ nbgv -h
Description:
  nbgv v3.7.115+d31f50f4d1

No início do meu pipeline, estou verificando o usuário do agente de compilação, a $HOMEvariável de ambiente e $PATHa variável de ambiente e, em seguida, tentando executar nbgv:

steps:
  - checkout: self
    fetchDepth: 0
    persistCredentials: true
  
  - script: |
      echo "Current user: $(whoami)"
      echo "HOME: $HOME"
      echo "PATH: $PATH"
      ls -la $HOME/.dotnet/tools
      dotnet tool list --global
      nbgv get-version

No entanto, está falhando com nbgv: command not found:

/usr/bin/bash --noprofile --norc /home/agent/myagent/_work/_temp/976f3776-1157-4b41-a83c-b9a2e0d5e1da.sh
Current user: agent
HOME: /home/agent
PATH: $HOME/.local/bin:/opt/pipx_bin:$HOME/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
total 84
drwxr-xr-x 3 agent agent  4096 Feb 10 13:36 .
drwxr-xr-x 3 agent agent  4096 Feb 10 13:36 ..
drwxr-xr-x 4 agent agent  4096 Feb 10 13:36 .store
-rwxr-xr-x 1 agent agent 72352 Feb 10 13:36 nbgv

Welcome to .NET 8.0!
---------------------
SDK Version: 8.0.405

Telemetry
---------
The .NET tools collect usage data in order to help us improve your experience. It is collected by Microsoft and shared with the community. You can opt-out of telemetry by setting the DOTNET_CLI_TELEMETRY_OPTOUT environment variable to '1' or 'true' using your favorite shell.

Read more about .NET CLI Tools telemetry: https://aka.ms/dotnet-cli-telemetry

----------------
Installed an ASP.NET Core HTTPS development certificate.

To trust the certificate, view the instructions: https://aka.ms/dotnet-https-linux

----------------
Write your first app: https://aka.ms/dotnet-hello-world
Find out what's new: https://aka.ms/dotnet-whats-new
Explore documentation: https://aka.ms/dotnet-docs
Report issues and find source on GitHub: https://github.com/dotnet/core
Use 'dotnet --help' to see available commands or visit: https://aka.ms/dotnet-cli
--------------------------------------------------------------------------------------
Package Id      Version      Commands
-------------------------------------
nbgv            3.7.115      nbgv    
/home/agent/myagent/_work/_temp/976f3776-1157-4b41-a83c-b9a2e0d5e1da.sh: line 6: nbgv: command not found

Então, apesar de $HOMEser /home/agente $PATH ter $HOME/.dotnet/toolse nbgvestar em /home/agent/.dotnet/tools/nbgv, ele está falhando dizendo que não consegue encontrar nbgv. Por que isso acontece e como eu conserto?

Para referência, meu script de dados do usuário é:

#!/bin/bash

AGENT_USER="agent"
AGENT_HOME="/home/$AGENT_USER"
useradd -m -s /bin/bash $AGENT_USER

export VSTS_AGENT_INPUT_URL=${url}
export VSTS_AGENT_INPUT_AUTH=pat
export VSTS_AGENT_INPUT_TOKEN=${token}
export VSTS_AGENT_INPUT_POOL=${pool}

echo "export VSTS_AGENT_INPUT_URL=${url}" >> $AGENT_HOME/.bashrc
echo "export VSTS_AGENT_INPUT_AUTH=pat" >> $AGENT_HOME/.bashrc
echo "export VSTS_AGENT_INPUT_TOKEN=${token}" >> $AGENT_HOME/.bashrc
echo "export VSTS_AGENT_INPUT_POOL=${pool}" >> $AGENT_HOME/.bashrc

chown -R $AGENT_USER:$AGENT_USER $AGENT_HOME

cd $AGENT_HOME

wget https://vstsagentpackage.azureedge.net/agent/4.248.0/vsts-agent-linux-x64-4.248.0.tar.gz
mkdir myagent && cd myagent
tar zxvf ../vsts-agent-linux-x64-4.248.0.tar.gz
./bin/installdependencies.sh
chown -R $AGENT_USER:$AGENT_USER .
su $AGENT_USER -c './config.sh --unattended'
echo "HOME=$AGENT_HOME" >> .env
./svc.sh install $AGENT_USER

usermod -aG docker $AGENT_USER

./svc.sh start

mkdir -p $AGENT_HOME/myagent/_work
chown -R $AGENT_USER:$AGENT_USER $AGENT_HOME/myagent/_work
  • 1 respostas
  • 44 Views
Martin Hope
Tom McLean
Asked: 2025-02-07 20:57:34 +0800 CST

Não é possível adicionar registro de alias no Route 53 para domínio personalizado do AWS Cognito: destino de alias do CloudFront ausente

  • 5

Estou tentando configurar um domínio personalizado para login no AWS Cognito. Criei um certificado curinga ( *.mydomain.com) na us-east-1região e então configurei um domínio personalizado para auth.mydomain.com. Logo depois, o Cognito confirma a criação do domínio personalizado, e seu status é marcado como "Ativo". Para o destino do alias, ele mostra d3gcpc0qbh736q.cloudfront.net.

Quando vou para o Route 53 para criar um registro A para auth.mydomain.com, aliasando-o para uma distribuição do CloudFront, o endpoint do CloudFront não aparece. Também verifiquei as distribuições do CloudFront na us-east-1região, e não há nada listado lá.

Como posso resolver esse problema?

  • 1 respostas
  • 23 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Reformatar números, inserindo separadores em posições fixas

    • 6 respostas
  • Marko Smith

    Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não?

    • 2 respostas
  • Marko Smith

    Problema com extensão desinstalada automaticamente do VScode (tema Material)

    • 2 respostas
  • Marko Smith

    Vue 3: Erro na criação "Identificador esperado, mas encontrado 'import'" [duplicado]

    • 1 respostas
  • Marko Smith

    Qual é o propósito de `enum class` com um tipo subjacente especificado, mas sem enumeradores?

    • 1 respostas
  • Marko Smith

    Como faço para corrigir um erro MODULE_NOT_FOUND para um módulo que não importei manualmente?

    • 6 respostas
  • Marko Smith

    `(expression, lvalue) = rvalue` é uma atribuição válida em C ou C++? Por que alguns compiladores aceitam/rejeitam isso?

    • 3 respostas
  • Marko Smith

    Um programa vazio que não faz nada em C++ precisa de um heap de 204 KB, mas não em C

    • 1 respostas
  • Marko Smith

    PowerBI atualmente quebrado com BigQuery: problema de driver Simba com atualização do Windows

    • 2 respostas
  • Marko Smith

    AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos

    • 1 respostas
  • Martin Hope
    Fantastic Mr Fox Somente o tipo copiável não é aceito na implementação std::vector do MSVC 2025-04-23 06:40:49 +0800 CST
  • Martin Hope
    Howard Hinnant Encontre o próximo dia da semana usando o cronógrafo 2025-04-21 08:30:25 +0800 CST
  • Martin Hope
    Fedor O inicializador de membro do construtor pode incluir a inicialização de outro membro? 2025-04-15 01:01:44 +0800 CST
  • Martin Hope
    Petr Filipský Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não? 2025-03-23 21:39:40 +0800 CST
  • Martin Hope
    Catskul O C++20 mudou para permitir a conversão de `type(&)[N]` de matriz de limites conhecidos para `type(&)[]` de matriz de limites desconhecidos? 2025-03-04 06:57:53 +0800 CST
  • Martin Hope
    Stefan Pochmann Como/por que {2,3,10} e {x,3,10} com x=2 são ordenados de forma diferente? 2025-01-13 23:24:07 +0800 CST
  • Martin Hope
    Chad Feller O ponto e vírgula agora é opcional em condicionais bash com [[ .. ]] na versão 5.2? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench Por que um traço duplo (--) faz com que esta cláusula MariaDB seja avaliada como verdadeira? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng Por que `dict(id=1, **{'id': 2})` às vezes gera `KeyError: 'id'` em vez de um TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos 2024-03-20 03:12:31 +0800 CST

Hot tag

python javascript c++ c# java typescript sql reactjs html

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve