Wednesday 8 November 2017

Moving average ipp no Brasil


Brian C. Becker Análise das Velocidades de Decodificação JPEG Postado por: Brian C. Becker em 8 de janeiro de 2010 Como um visionário de monitoramento de computador em CMU, muitas vezes trabalho com conjuntos de dados de imagens muito grandes. Meu último projeto envolve um terabyte ou mais de dados de imagem 8211 todos compactados em formato JPEG para economizar espaço. Normalmente, analiso os dados em lotes e estou interessado na velocidade máxima para uso mínimo de CPU. Os últimos recursos de 1 TB possuem velocidades de leitura linear de 50-100 MB. Com um processador quad-core ou superior, muitas vezes o gargalo não é a CPU. Isto é especialmente verdadeiro se você quiser fazer um processamento de imagem simples (redimensionamento de imagem, correções, conversão, detecção de rosto, etc.) que possam sustentar uma transferência significativa. O gargalo geralmente está decodificando os dados. No meu caso, eu quero o decodificador JPEG mais rápido que pode tirar uma imagem JPEG na memória e descompactá-la em uma matriz de pixels RGB. Não encontrei muito no modo de benchmarks JPEG, então eu decidi avaliar alguns dos mais promissores que encontrei. Aqui está o resumo: Mini JPEG Decoder. Uma simples porta C de NanoJPEG que é um único cabeçalho de arquivo e muito fácil de usar. STBI JPEG Decompression. Outro simples algoritmo de descompressão JPEG do arquivo C. Libjpeg. Provavelmente o padrão ouro para a codificação de codificação JPEG, mas desenvolvido há bastante tempo (1997) e não totalmente trival para usar. O Libjpeg tem o aborrecimento adicional de que o código-fonte original didn8217t suporta a descodificação da memória, então usei a classe wrapper TerraLib e sua extensão libjpeg que adiciona suporte de leitura de JPEGs diretamente de e para um buffer na memória. Matlab (comercial): Embora não seja um decodificador JPEG, ele contém um e é um pacote amplamente utilizado para pesquisadores, por isso é útil comparar. Intel IPP (comercial): talvez uma das bibliotecas 8220optimized8221 mais conhecidas para as plataformas Intel. Contém um decodificador UIC JPEG que é altamente otimizado para a maioria das variedades de CPUs Intel (possui um código separado especificamente otimizado para cada tipo de CPU Intel). Libjpeg SIMD (página em japonês): uma porta do popular libjpeg para usar as instruções modernas do processador SSE, otimizando as rotinas principais no idioma de montagem. A interface deve ser compatível com libjpeg. Atualmente, apenas em 32 bits. Eu usei as mesmas bibliotecas TerraLib para usar os buffers de memória com libjpeg como antes. Comparação das velocidades de decodificação JPEG Para comparar esses 6 decodificadores JPEG, desenvolvi uma experiência: carregue 2.000 pequenas imagens (cada imagem tinha 50 KB de tamanho para 100 MB de dados JPEG compactados) e decodificá-los. A compressão foi de 102 MB comprimida expandida para 1526 MB sem compressão, ou uma proporção de 6,7. Essa bastante boa compressão lá. Todos os 100 MB foram carregados na memória para evitar desaceleração do disco rígido (4 GB de RAM sem arquivo de paginação) e cada algoritmo foi executado 3 ou mais vezes para obter uma média. Os dados JPEG foram descodificados diretamente da memória, exceto no caso do Matlab, onde os arquivos JPEG foram lidos de um disco rígido virtual com suporte de memória usando o ImDisk Virtual Disk Driver. Então, todos os resultados devem ser muito comparáveis. Abaixo está um gráfico detalhando as velocidades de descompressão em MBs no meu Intel 2.4 GHz Core2 Duo laptop. Eu compilei tudo com o Visual Studio 2008 Professional com todas as otimizações, incluindo instruções SSE2 na esperança de que o compilador pudesse otimizar o código C ou C simples. Os resultados realmente me surpreenderam de algumas maneiras. Estando focado na simplicidade, o desempenho do STBI e do NanoJPEG8217s era fraco. Além disso, a Matlab tenta tornar as rotinas básicas bastante rápidas. No entanto, eu sei que a Matlab usa as bibliotecas de matemática Intel MKL, então me surpreendeu que o Matlab não utilizasse as bibliotecas IPP da Intel para uma descompressão JPEG mais rápida. Claro, eu estava usando o Matlab 2008, então talvez as versões mais recentes tenham adicionado esse recurso. O que mais me surpreendeu foi que o Libjpeg SIMD superou o IPP da Intel. A Intel colocou muito esforço em fornecer bibliotecas que espreitam o máximo de seus processadores, então foi um choque definitivo vê-los superados. Os resultados foram bastante encorajadores em geral, especialmente com o Libjpeg SIMD executando mais de 3 vezes mais rápido que o Matlab e mais de 4X melhor do que o padrão padrão libjpeg. É lamentável que seja apenas de 32 bits. Acelerar a decomposição JPEG em sistemas multi-core Dado que a velocidade do desempenho superior na decodificação JPEG ainda é 2-5 X mais lenta que o que os harddrives atuais podem bombear, faz sentido que os sistemas de processador multi-core usem múltiplos threads para paralelizar a decodificação. Para testar como cada algoritmo escala com vários tópicos, tentei o mesmo teste, exceto dividir as 2.000 imagens em 1, 2 ou 4 threads para decodificação. Eu testei em um sistema de 2 núcleos, então, de forma realista, não deveria ver nenhuma melhoria com a decodificação de 4 threads. O Matlab e o IPP da Intel tinham opções integradas para usar vários núcleos ao executar operações, então usei essas opções em vez de dividir os arquivos em threads diferentes. Os resultados desses testes são mostrados abaixo. Os resultados em geral fazem sentido: 2 threads são aproximadamente duas vezes melhores que o uso de 1 thread, mas usando 4 threads didn8217t ajuda e, em alguns casos, dói o desempenho. Os dois grandes interruptores de tendências foram o Matlab eo IPP da Intel. Parece que a Matlab não adicionou nenhum recurso de multi-threading às suas rotinas de decodificação JPEG, uma vez que a diferença de desempenho foi insignificante. No entanto, o desempenho do Intel IPP piora quanto mais tópicos você adiciona. Isso não tem sentido, a menos que você dê uma olhada sob o capô. Enquanto estou dividindo meus 2.000 arquivos em vários segmentos (digamos 1.000 imagens para Thread 1 para decodificar e 1,000 para Thread 2) para o resto dos algoritmos, o pacote Intel IPP está tentando usar múltiplos segmentos para decodificar cada imagem (então, parte de Uma imagem é decodificada pelo Thread 1 e a outra parte pelo Thread 2). Isso funciona bem se você precisar carregar imagens grandes, mas para imagens pequenas, a sobrecarga de criar e destruir threads para cada imagem é tanto que não só contrariar os ganhos, mas também provoca um desempenho pior à medida que os segmentos adicionais são usados. Embora eu não tenha testado a execução do IPP da Intel da mesma forma que fiz o resto dos algoritmos, suspeito que os resultados melhorariam: 2 threads quase duplicariam o desempenho e a mudança de 2 para 4 threads teria muito pouco efeito. Efeitos do nível de compressão JPEG e da resolução da imagem Finalmente, fiquei curioso sobre como o nível de compressão JPEG (geralmente especificado 1-100) e a resolução da imagem efetuaram a velocidade de descompressão. Isso é importante se você estiver examinando o comércio de velocidade de armazenamento versus descompactação. Let8217s dizem que você tem 800 MB de imagens não compactadas (BMP, PPM, RAW, etc.) e deseja salvá-las para a velocidade máxima de descompressão mais tarde. Qual a compressão é melhor Qual tamanho você deve armazená-los em Para analisar isso, tirei imagens grandes típicas da minha câmera de 7 megapixels e as imagens menores do tamanho da web em 14 megapixels e comparou a velocidade de descompressão enquanto eu variava o nível de compressão JPEG. NOTA . Eu mudei como eu mando a velocidade de descompressão aqui de MBs compactados JPEG para MBs JPEG descompactado. Em outras palavras, estou medindo o quão rápido eu posso decodificar os 800 MB desde que os JPEGs compactados mudam o tamanho conforme eu altero a taxa de compressão. Para essas experiências, usei apenas o decodificador JPEG com melhor desempenho, o Libjpeg SIMD. No começo, os resultados me surpreenderam. Esperava que as percentagens de compressão mais baixas demorassem para decodificar à medida que mais trabalho estava sendo feito para a compressão. No entanto, suponho que quando você pensa sobre isso, a melhor compactação possível seria reduzir cada imagem em um pixel com a média RGB 8211 e descomprimir que você apenas preencha todos os pixels na imagem com o RGB médio que seria muito rápido . Portanto, maiores porcentagens de compressão não conseguem aumentar a velocidade, o que é interessante. Além disso, é interessante ver que as imagens maiores decodificam muito mais rápido do que imagens menores, provavelmente devido ao armazenamento em cache de imagens e à redução da configuração do decodificador JPEG para cada imagem (cabeçalhos de leitura, alocação de alocação, etc., etc.). A partir desses resultados, podemos concluir que as bibliotecas otimizadas para processadores modernos são várias vezes mais rápidas do que suas equivalências CC simples. Além disso, a decodificação JPEG geralmente escala muito bem com o número de threads, desde que cada imagem seja independente da outra. Tentando usar vários segmentos para decodificar uma única imagem é contraproducente para pequenas imagens JPEG, e apenas um pouco útil para imagens maiores (testei o IPP da Intel com as imagens de 7 megapixels e descobri que 2 threads eram apenas 1,3 vezes mais rápidos do que usando 1 thread Comparado com 1.7 mais rápido para usar threads em imagens separadas. Ao escolher uma configuração de compressão, menor é melhor tanto para conservar o espaço de armazenamento quanto para a velocidade de compressão). Além disso, a descompressão de imagens menores é visivelmente mais lenta que a descompressão de imagens maiores. Então, let8217s falam sobre a mensagem de levar para casa. Qual é o melhor decodificador JPEG para você Depende das suas necessidades: Descompressão simples, fácil e de lazer. NanoJPEG ou STBI. Eu acho o NanoJPEG mais fácil, basta incluir um arquivo. h e você está pronto. It8217s tem uma boa classe e tudo. Decodificação mais rápida possível de imagens grandes. O IPP da Intel é seu amigo porque você pode usar vários segmentos por imagem. Decodificação rápida de imagens, só precisa de 32 bits. Libjpeg SIMD é realmente incrível, mas atualmente é apenas 32 bits e leva algum trabalho para compilar (o site possui binários pré-compilados que eu não tentei). Para obter instruções sobre a compilação, confira a publicação por sfranzyshen (as instruções exatas estão um pouco na página, procure SIMD). Bastante rápido, estável, decodificação de 64 bits. Libjpeg é o padrão-ouro e é bastante bom para o que faz. Então, você tem, uma breve análise da decodificação JPEG. Sair e desfrutar de alguns tipos de descompressão JPEG Relato: Iowas custo de vida superando os salários 5 de abril de 2017 às 14h07 Print View Um novo relatório mostra que o custo de vida para Iowans continua a superar os salários. O relatório, divulgado na terça-feira pelo Projeto de Política de Iowa sem fins lucrativos, afirma que um único residente do Iowa deve fazer pelo menos 13,16 horas x2017 quase o dobro do salário mínimo estadual de 7,25 por hora x2017 para atender às despesas básicas de vida. O salário de necessidades básicas salta para 21,52 por hora para um único pai com uma criança. O relatório define o seu orçamento de necessidades básicas como o que é necessário para x201survive em vez de prosperar. X201d x201cWex2019re tentando criar o que é preciso para as famílias x2017 de diferentes tamanhos e tipos x2017 apenas para chegar ao fim, apenas para obter o dia a dia , X201d disse o diretor de pesquisa do IPP, Peter Fisher, autor do relatório. O orçamento de necessidades básicas inclui aluguel, utilidades, alimentos preparados em casa, cuidados infantis, cuidados de saúde e outras necessidades domésticas. As despesas não incluídas no orçamento são poupança, pagamentos de empréstimos, despesas de educação e qualquer viagem de entretenimento, férias ou sociais e recreativas e refeições fora do lar. O relatório é a quinta edição do IPP, mas Fisher disse que a metodologia foi atualizada com o relatório de 2017, por isso é difícil comparar com o ano passado2020. O relatório também encontrou a região de custo mais alto em Iowa para ser o canto sudeste do estado nos 20 condados de Henry, Louisa, Des Moines e Lee. Os condados de Johnson e Polk também têm alguns dos maiores custos no estado. As quatro áreas metropolitanas do leste de Iowa, WaterlooCedar Falls, Davenport, Dubuque e Cedar Rapids, apresentaram o menor custo total de vida, de acordo com o relatório. Fisher disse que o seguro de saúde privado eo transporte eram geralmente menos dispendiosos em áreas metropolitanas maiores. Johnson County e a área metropolitana de Des Moines foram outliers para essa regra, com alguns dos maiores custos de assistência à infância no estado. Muitos custos continuam a subir. Os custos médios de habitação em Iowa, de acordo com os dados de Habitação e Desenvolvimento Urbano, subiram 6,8 por cento entre 2017 e 2017 para um apartamento de um quarto e 8,2 por cento para um quarto de dois quartos. O seguro de saúde no mercado individual subiu 17% e 23% para famílias com filhos, de acordo com o relatório. O relatório também descobriu que, mesmo com seguro de saúde pública ou subsídios, Iowans precisa fazer mais do que o salário mínimo para atingir um padrão básico de vida. Sem esses programas de apoio, Iowans precisa estar mais próximo do salário médio de 15,91 por hora para atingir esses padrões, de acordo com o relatório. Fisher argumentou que esses números ajudam a mostrar a necessidade de um aumento no salário mínimo estadual, que permaneceu inalterado por oito anos. Penso que isso faz o caso para se mover para um salário mais auto-sustentável, disse x201d. X201c A única maneira pela qual as pessoas podem obter um salário mais baixo é com suporte substancial. X201d

No comments:

Post a Comment