Thursday 24 August 2017

Média Móvel Exponencial C


Eu perfilei isso usando o perfil do Visual C, e isso representa cerca de 35 do tempo de execução. Essa média móvel exponencial é chamada mais do que um trilhão de vezes, porque é usada repetidamente no processamento de mais de 400 gigabytes de dados. Os dados estão saindo de uma matriz de disco de estado sólido Raid Level 0, portanto, lê as contas de dados por menos de 5 do tempo. O tamanho do preço é de cerca de 100. Eu, originalmente, acelerado por um fator de 4, precalculando a maior parte dos dados possível. Então eu pude aumentá-lo novamente por um fator de ndash PaeneInsula 30 de outubro 11 às 20:41 Eu consegui aumentar a velocidade novamente por um fator de 12 por multithreading (a natureza dos dados é tal que pode ser multithreaded em De tal forma que a carga está perfeitamente equilibrada.) E eu funciono em um i7 990x (que tem 6 núcleos, hipertensos de um total de 12), overclocked. Ndash PaeneInsula 30 de outubro 11 às 20:51 Claro, multithreading pode ajudar. Mas você quase certamente pode melhorar o desempenho em uma única máquina roscada. Primeiro, você está calculando isso na direção errada. Somente as máquinas mais modernas podem fazer pré-busca de strings negativos. Quase todos os machihnes são mais rápidos para os passos da unidade. Isto é, Mudar a direção da matriz para que você digitalize de baixo a alto, em vez de alto a baixo, é quase sempre melhor. Em seguida, reescrevendo um pouco - permita-me encurtar os nomes das variáveis ​​para facilitar o tipo: Por sinal, vou começar a usar shorthands p por preço e s para suavizar, para salvar a digitação. Sou preguiçosa. Mas provavelmente é mais rápido. A latência entre avgi e avgi-2 é então 1 multiplicar e adicionar, em vez de subtrair e multiplicar entre avgi e avgi-1. Isto é, Mais do que duas vezes mais rápido. Em geral, você deseja reescrever a recorrência para que o avgi seja calculado em termos de avgj para j, tanto quanto possível, sem preencher a máquina, unidades de execução ou registradores. Você basicamente faz mais multiplicações em geral, para obter menos cadeias de múltiplos (e subtrai) no caminho crítico. Saltar de avgi-2 para avgi é fácil, você provavelmente pode fazer três e quatro. Exatamente em que medida depende do que é a sua máquina e de quantos registros você possui. E a latência do sumador e multiplicador de ponto flutuante. Ou, melhor ainda, o sabor das instruções de multiplicação múltiplas combinadas que você tem - todas as máquinas modernas as possuem. Por exemplo. Se o MADD ou o MSUB tiverem 7 ciclos de duração, você pode fazer até 6 outros cálculos na sua sombra, mesmo se você tiver apenas uma única unidade de ponto flutuante. Totalmente pipelined. E assim por diante. Menos se pipelined em todos os outros ciclos, como é comum para a dupla precisão em chips anteriores e GPUs. O código de montagem deve ser o software pipelined para que diferentes iterações de loop se sobrepõem. Um bom compilador deve fazer isso para você, mas talvez seja necessário reescrever o código C para obter o melhor desempenho. By the way: NÃO QUERO sugerir que você esteja criando uma série de valores médios. Em vez disso, você precisaria de duas médias se avgi for calculado em termos de avgi-2, e assim por diante. Você pode usar uma série de avgi se quiser, mas acho que você só precisa ter 2 ou 4 avgs, chamado, criativamente, avg0 e avg1 (2, 3.), e gire-os. Este tipo de truque, dividindo um acumulador ou média em dois ou mais, combinando múltiplos estágios da recorrência, é comum no código de alto desempenho. Oh, sim: precalcular ss, etc. Se eu fiz isso direito, em uma precisão infinita isso seria idêntico. (Verifique-me, por favor.) No entanto, em precisão finita FP, seus resultados podem diferir, espero que apenas um pouco, devido a diferentes arredondamentos. Se o desenrolar estiver correto e as respostas forem significativamente diferentes, você provavelmente possui um algoritmo numericamente instável. Você é quem sabe. Nota: os erros de arredondamento de ponto flutuante mudarão os bits baixos da sua resposta. Ambos por reorganizar o código e usar o MADD. Eu acho que provavelmente está bem, mas você tem que decidir. Nota: os cálculos para avgi e avgi-1 agora são independentes. Então você pode usar um conjunto de instruções SIMD, como Intel SSE2, que permite a operação em dois valores de 64 bits em um registro de 128 bit de largura de cada vez. Isso será bom para quase 2X, em uma máquina que tenha ALUs suficientes. Se você tiver registros suficientes para reescrever avgi em termos de avgi-4 (e tenho certeza que você faz no iA64), então você pode ir 4X de largura, se você tiver acesso a uma máquina como AVX de 256 bits. Num GPU. Você pode recorrer a recorrências mais profundas, reescrever avgi em termos de avgi-8, e assim por diante. Algumas GPUs têm instruções que calculam AXB ou mesmo AXBY como uma única instrução. Embora isso seja mais comum para 32 bits do que para precisão de 64 bits. Em algum momento, eu provavelmente começaria a perguntar: você quer fazer isso em vários preços por vez. Nem isso isso ajuda você a multithreading, ele também irá se adequar a isso em uma GPU. E usando o SIMD largo. Adição tardia menor Estou um pouco envergonhada por não ter aplicado a regra Horners para expressões como um pouco mais eficiente. Resultados ligeiramente diferentes com o arredondamento. Na minha defesa, qualquer compilador decente deve fazer isso por você. Mas a regra de Hrners torna a cadeia de dependência mais profunda em termos de multiplica. Você pode precisar desenrolar e pipelined o loop algumas vezes mais. Ou você pode fazer onde você precalcula. Adicionar uma linha de tendência ou média móvel a um gráfico Aplica-se a: Excel 2016 Word 2016 PowerPoint 2016 Excel 2013 Word 2013 Outlook 2013 PowerPoint 2013 Mais. Menos Para mostrar tendências de dados ou médias móveis em um gráfico que você criou. Você pode adicionar uma linha de tendência. Você também pode ampliar uma linha de tendência além de seus dados reais para ajudar a prever os valores futuros. Por exemplo, a seguinte linha de tendência linear prevê dois trimestres à frente e mostra claramente uma tendência ascendente que parece promissora para futuras vendas. Você pode adicionar uma linha de tendência a um gráfico 2-D que não está empilhado, incluindo área, barra, coluna, linha, estoque, dispersão e bolha. Você não pode adicionar uma linha de tendência a um gráfico empilhado, 3-D, radar, torta, superfície ou filhós. Adicione uma linha de tendência No seu gráfico, clique na série de dados para a qual deseja adicionar uma linha de tendência ou média móvel. A linha de tendência começará no primeiro ponto de dados da série de dados que você escolher. Verifique a caixa Trendline. Para escolher um tipo diferente de linha de tendência, clique na seta ao lado de Trendline. E depois clique em Exponencial. Previsão linear. Ou a média móvel de dois períodos. Para linhas de tendência adicionais, clique em Mais opções. Se você escolher Mais opções. Clique na opção desejada no painel Format Trendline em Trendline Options. Se você selecionar Polinômio. Insira a maior potência para a variável independente na caixa Ordem. Se você selecionar Moeda em Movimento. Insira o número de períodos a serem usados ​​para calcular a média móvel na caixa Período. Dica: uma linha de tendência é mais precisa quando seu valor R-quadrado (um número de 0 a 1 que revela quão íntimo os valores estimados para a linha de tendência correspondem aos seus dados reais) é em ou próximo de 1. Quando você adiciona uma linha de tendência aos seus dados , O Excel calcula automaticamente o valor R-squared. Você pode exibir esse valor em seu gráfico, verificando o valor Exibir R-quadrado na caixa de gráfico (Formato do painel Trendline, Opções da Tendência). Você pode aprender mais sobre todas as opções de linha de tendência nas seções abaixo. Linha de tendência linear Use este tipo de linha de tendência para criar uma linha reta de melhor ajuste para conjuntos de dados lineares simples. Seus dados são lineares se o padrão em seus pontos de dados parecer uma linha. Uma linha de tendência linear geralmente mostra que algo está aumentando ou diminuindo a uma taxa constante. Uma linha de tendência linear usa essa equação para calcular os mínimos quadrados adequados para uma linha: onde m é a inclinação e b é a intercepção. A linha de tendência linear a seguir mostra que as vendas de refrigeradores aumentaram consistentemente ao longo de um período de 8 anos. Observe que o valor do R-quadrado (um número de 0 a 1 que revela o quão próximo os valores estimados para a linha de tendência correspondem aos seus dados reais) é 0.9792, o que é um bom ajuste da linha para os dados. Mostrando uma linha curvada de melhor ajuste, esta linha de tendência é útil quando a taxa de alteração nos dados aumenta ou diminui rapidamente e depois desacelera. Uma linha de tendência logarítmica pode usar valores negativos e positivos. Uma linha de tendência logarítmica usa essa equação para calcular os mínimos quadrados que se encaixam nos pontos: onde c e b são constantes e ln é a função de logaritmo natural. A seguinte linha de tendência logarítmica mostra o crescimento populacional previsto de animais em uma área de espaço fixo, onde a população se estabilizou à medida que o espaço para os animais diminuiu. Observe que o valor R-quadrado é 0.933, que é um ajuste relativamente bom da linha para os dados. Esta linha de tendência é útil quando seus dados flutuam. Por exemplo, quando você analisa ganhos e perdas em um grande conjunto de dados. A ordem do polinômio pode ser determinada pelo número de flutuações nos dados ou por quantas curvas (colinas e vales) aparecem na curva. Normalmente, uma linha de tendência polinomial da Ordem 2 tem apenas uma colina ou vale, uma Ordem 3 tem uma ou duas colinas ou vales, e uma Ordem 4 tem até três colinas ou vales. Uma linha de tendência polinomial ou curvilínea usa esta equação para calcular os mínimos quadrados que se encaixam nos pontos: onde b e são constantes. A linha de tendência polinomial da ordem 2 (uma colina) mostra a relação entre velocidade de condução e consumo de combustível. Observe que o valor R-squared é 0.979, que é próximo de 1, de modo que as linhas são adequadas aos dados. Mostrando uma linha curva, esta linha de tendência é útil para conjuntos de dados que comparam medidas que aumentam a uma taxa específica. Por exemplo, a aceleração de um carro de corrida em intervalos de 1 segundo. Você não pode criar uma linha de tendência de energia se seus dados contiverem valores zero ou negativos. Uma linha de tendência de energia usa essa equação para calcular os mínimos quadrados que se encaixam nos pontos: onde c e b são constantes. Nota: Esta opção não está disponível quando os dados incluem valores negativos ou nulos. O gráfico de medidas de distância a seguir mostra a distância em metros por segundos. A linha de tendência de energia demonstra claramente a crescente aceleração. Observe que o valor R-squared é 0.986, que é um ajuste quase perfeito da linha para os dados. Mostrando uma linha curva, esta linha de tendência é útil quando os valores de dados aumentam ou caem a taxas cada vez maiores. Você não pode criar uma linha de tendência exponencial se seus dados contiverem valores zero ou negativos. Uma linha de tendência exponencial usa esta equação para calcular os mínimos quadrados que se encaixam nos pontos: onde c e b são constantes e e é a base do logaritmo natural. A seguinte linha de tendência exponencial mostra a quantidade decrescente de carbono 14 em um objeto à medida que envelhece. Observe que o valor R-quadrado é 0.990, o que significa que a linha se encaixa perfeitamente nos dados. Tendência média média Esta linha de tendência eleva as flutuações nos dados para mostrar um padrão ou tendência com mais clareza. Uma média móvel usa um número específico de pontos de dados (definido pela opção Período), os em média e usa o valor médio como um ponto na linha. Por exemplo, se o Período for definido como 2, a média dos dois primeiros pontos de dados é usada como o primeiro ponto na linha de tendência média móvel. A média do segundo e terceiro pontos de dados é usada como o segundo ponto na linha de tendência, etc. Uma linha de tendência média móvel usa essa equação: O número de pontos em uma linha de tendência média móvel é igual ao número total de pontos da série, menos a Número que você especificou para o período. Em um gráfico de dispersão, a linha de tendência é baseada na ordem dos valores de x no gráfico. Para obter um resultado melhor, classifique os valores x antes de adicionar uma média móvel. A seguinte linha de tendência média móvel mostra um padrão no número de casas vendidas ao longo de um período de 26 semanas. Adicione uma linha de tendência ou média móvel a um gráfico Aplica-se a: Excel 2016 Word 2016 PowerPoint 2016 Excel 2013 Word 2013 Outlook 2013 PowerPoint 2013 Mais. Menos Para mostrar tendências de dados ou médias móveis em um gráfico que você criou. Você pode adicionar uma linha de tendência. Você também pode ampliar uma linha de tendência além de seus dados reais para ajudar a prever os valores futuros. Por exemplo, a seguinte linha de tendência linear prevê dois trimestres à frente e mostra claramente uma tendência ascendente que parece promissora para futuras vendas. Você pode adicionar uma linha de tendência a um gráfico 2-D que não está empilhado, incluindo área, barra, coluna, linha, estoque, dispersão e bolha. Você não pode adicionar uma linha de tendência a um gráfico empilhado, 3-D, radar, torta, superfície ou filhós. Adicione uma linha de tendência No seu gráfico, clique na série de dados para a qual deseja adicionar uma linha de tendência ou média móvel. A linha de tendência começará no primeiro ponto de dados da série de dados que você escolher. Verifique a caixa Trendline. Para escolher um tipo diferente de linha de tendência, clique na seta ao lado de Trendline. E depois clique em Exponencial. Previsão linear. Ou a média móvel de dois períodos. Para linhas de tendência adicionais, clique em Mais opções. Se você escolher Mais opções. Clique na opção desejada no painel Format Trendline em Trendline Options. Se você selecionar Polinômio. Insira a maior potência para a variável independente na caixa Ordem. Se você selecionar Moeda em Movimento. Insira o número de períodos a serem usados ​​para calcular a média móvel na caixa Período. Dica: uma linha de tendência é mais precisa quando seu valor R-quadrado (um número de 0 a 1 que revela quão íntimo os valores estimados para a linha de tendência correspondem aos seus dados reais) é em ou próximo de 1. Quando você adiciona uma linha de tendência aos seus dados , O Excel calcula automaticamente o valor R-squared. Você pode exibir esse valor em seu gráfico, verificando o valor Exibir R-quadrado na caixa de gráfico (Formato do painel Trendline, Opções da Tendência). Você pode aprender mais sobre todas as opções de linha de tendência nas seções abaixo. Linha de tendência linear Use este tipo de linha de tendência para criar uma linha reta de melhor ajuste para conjuntos de dados lineares simples. Seus dados são lineares se o padrão em seus pontos de dados parecer uma linha. Uma linha de tendência linear geralmente mostra que algo está aumentando ou diminuindo a uma taxa constante. Uma linha de tendência linear usa essa equação para calcular os mínimos quadrados adequados para uma linha: onde m é a inclinação e b é a intercepção. A linha de tendência linear a seguir mostra que as vendas de refrigeradores aumentaram consistentemente ao longo de um período de 8 anos. Observe que o valor do R-quadrado (um número de 0 a 1 que revela o quão próximo os valores estimados para a linha de tendência correspondem aos seus dados reais) é 0.9792, o que é um bom ajuste da linha para os dados. Mostrando uma linha curvada de melhor ajuste, esta linha de tendência é útil quando a taxa de alteração nos dados aumenta ou diminui rapidamente e depois desacelera. Uma linha de tendência logarítmica pode usar valores negativos e positivos. Uma linha de tendência logarítmica usa essa equação para calcular os mínimos quadrados que se encaixam nos pontos: onde c e b são constantes e ln é a função de logaritmo natural. A seguinte linha de tendência logarítmica mostra o crescimento populacional previsto de animais em uma área de espaço fixo, onde a população se estabilizou à medida que o espaço para os animais diminuiu. Observe que o valor R-quadrado é 0.933, que é um ajuste relativamente bom da linha para os dados. Esta linha de tendência é útil quando seus dados flutuam. Por exemplo, quando você analisa ganhos e perdas em um grande conjunto de dados. A ordem do polinômio pode ser determinada pelo número de flutuações nos dados ou por quantas curvas (colinas e vales) aparecem na curva. Normalmente, uma linha de tendência polinomial da Ordem 2 tem apenas uma colina ou vale, uma Ordem 3 tem uma ou duas colinas ou vales, e uma Ordem 4 tem até três colinas ou vales. Uma linha de tendência polinomial ou curvilínea usa esta equação para calcular os mínimos quadrados que se encaixam nos pontos: onde b e são constantes. A linha de tendência polinomial da ordem 2 (uma colina) mostra a relação entre velocidade de condução e consumo de combustível. Observe que o valor R-squared é 0.979, que é próximo de 1, de modo que as linhas são adequadas aos dados. Mostrando uma linha curva, esta linha de tendência é útil para conjuntos de dados que comparam medidas que aumentam a uma taxa específica. Por exemplo, a aceleração de um carro de corrida em intervalos de 1 segundo. Você não pode criar uma linha de tendência de energia se seus dados contiverem valores zero ou negativos. Uma linha de tendência de energia usa essa equação para calcular os mínimos quadrados que se encaixam nos pontos: onde c e b são constantes. Nota: Esta opção não está disponível quando os dados incluem valores negativos ou nulos. O gráfico de medidas de distância a seguir mostra a distância em metros por segundos. A linha de tendência de energia demonstra claramente a crescente aceleração. Observe que o valor R-squared é 0.986, que é um ajuste quase perfeito da linha para os dados. Mostrando uma linha curva, esta linha de tendência é útil quando os valores de dados aumentam ou caem a taxas cada vez maiores. Você não pode criar uma linha de tendência exponencial se seus dados contiverem valores zero ou negativos. Uma linha de tendência exponencial usa esta equação para calcular os mínimos quadrados que se encaixam nos pontos: onde c e b são constantes e e é a base do logaritmo natural. A seguinte linha de tendência exponencial mostra a quantidade decrescente de carbono 14 em um objeto à medida que envelhece. Observe que o valor R-quadrado é 0.990, o que significa que a linha se encaixa perfeitamente nos dados. Tendência média média Esta linha de tendência eleva as flutuações nos dados para mostrar um padrão ou tendência com mais clareza. Uma média móvel usa um número específico de pontos de dados (definido pela opção Período), os em média e usa o valor médio como um ponto na linha. Por exemplo, se o Período for definido como 2, a média dos dois primeiros pontos de dados é usada como o primeiro ponto na linha de tendência média móvel. A média do segundo e terceiro pontos de dados é usada como o segundo ponto na linha de tendência, etc. Uma linha de tendência média móvel usa essa equação: O número de pontos em uma linha de tendência média móvel é igual ao número total de pontos da série, menos a Número que você especificou para o período. Em um gráfico de dispersão, a linha de tendência é baseada na ordem dos valores de x no gráfico. Para obter um resultado melhor, classifique os valores x antes de adicionar uma média móvel. A seguinte linha de tendência média móvel mostra um padrão no número de casas vendidas ao longo de um período de 26 semanas.

No comments:

Post a Comment