Este documento fornece uma visão geral do esProc SPL, um poderoso middleware de computação de dados e data warehouse de alta eficiência, e do Mitsuba 3, um sistema de renderização orientado para pesquisa. Ele detalha seus recursos, funcionalidades e recursos de aprendizagem, oferecendo insights para usuários iniciantes e experientes. As informações incluem guias de instalação, exemplos de uso e técnicas de otimização de desempenho.
Sobre esProc SPL
Simplificando, esProc SPL é uma linguagem de programação intrigante e um poderoso middleware de computação de dados, e também pode funcionar como um data warehouse de alta eficiência: descubra mais em Entenda o SPL em três aspectos.
Diferente da linguagem de programação baseada em texto, SPL escreve código em linhas de grade: encontre mais em Uma linguagem de programação codificando em uma grade; como mecanismo de computação de dados, o SPL pode gerar alta eficiência a um custo muito menor: esProc SPL, um mecanismo de análise de dados que reduz o custo do aplicativo em N vezes.
esProc SPL é uma biblioteca de classes de computação de dados baseada em JVM: SPL: A biblioteca Java de código aberto para processar dados estruturados. Possui muito mais e melhores funcionalidades do que outras linguagens de processamento de dados baseadas em JVM (como Kotlin e Scala): Concorrência de linguagens de processamento de dados em JVM: Kotlin, Scala e SPL. Ele pode executar cálculos no estilo SQL sem bancos de dados: SPL de código aberto que pode executar SQL sem RDB, fornece capacidade de computação mista de fontes múltiplas/diversas: Qual ferramenta é ideal para cálculos mistos de fontes diversas e suporta cálculos diretos em arquivos: Computação motor em arquivos de formato aberto e na WEB: Motor de computação na WEB. Particularmente, esProc SPL permite microsserviços mais flexíveis: SPL de código aberto torna os microsserviços mais "micro" e processamento conveniente de preparação de dados para consultas de relatórios: O SPL de código aberto otimiza a aplicação de relatórios e atende às necessidades infinitas de desenvolvimento de relatórios. O esProc também pode ser incorporado em um aplicativo para atuar como um banco de dados integrado: esProc SPL, o desafiante do SQLite.
esProc SPL enriquece o conceito de middleware: DCM: um novo membro da família de middleware.
Ao trabalhar como data warehouse, o esProc SPL não adota a sintaxe SQL baseada em álgebra relacional. Em vez disso, ele inventa um sistema algébrico chamado conjunto de dados discretos: SPL: uma linguagem de banco de dados com escrita fácil e execução rápida (Documentação: Documento de conjunto de dados discretos) para resolver os problemas de SQL complexo e difícil de codificar (Por que uma instrução SQL geralmente consiste de centenas de linhas, medidas por KBs?).
O SPL torna conveniente a obtenção de algoritmos de alto desempenho e, assim, obtém um desempenho computacional muito superior ao do data warehouse relacional tradicional: como aconteceu a melhoria de desempenho em ordens de magnitude. Encontre relatórios de teste em SPL Performance Testing. Ele pode aproveitar ao máximo os recursos de hardware usando algoritmos criativos. De acordo com muitos exemplos práticos, o esProc pode atingir, até mesmo superar, o desempenho que os bancos de dados distribuídos têm em uma única máquina.
Como data warehouse, o esProc abandona o conceito de “casa”, quebra o fechamento dos bancos de dados convencionais e cria um sistema de computação aberto: Data warehouse com “sem casa” tem desempenho melhor do que aquele com “a casa”, tornando-o qualificado para substituir a maioria dos data warehouses MPP com menor custo de recursos e com estrutura mais leve: Com SPL leve disponível, quão necessário é o MPP? .
Para aprender esProc SPL
Este livro: Programação SPL é um bom começo para aprender a sintaxe SPL. O livro é destinado a iniciantes que não possuem nenhuma experiência em programação. Dê uma olhada rápida se você for um veterano, mas vale a pena estudar o entendimento do objeto explicado na seção 4.4. O Capítulo 5 também é importante. Isso explica o modo de pensar orientado a conjuntos da SPL, que é bastante diferente das outras linguagens. Mas depois de entender e dominar o SPL, você poderá escrever um código elegante. Os Capítulos 8 a 10 são a base do aprendizado de SPL. Considera os cálculos de dados estruturados em uma perspectiva diferente do SQL. Isto é significativo mesmo para os programadores profissionais! Do ponto de vista do SPL, o SQL é um pouco simples na compreensão dos dados estruturados, pois o mundo é complexo. Os conhecimentos que você obteve em vários cursos de banco de dados não são amplos e profundos o suficiente! Você precisa de uma revisão e atualização!
Encontre conceitos básicos de SPL neste post: Conceitos de SPL para iniciantes. Para iniciantes, você pode encontrar cálculos básicos característicos de SPL em Operações SPL para Iniciantes. Programadores experientes podem compreender rapidamente as diferenças entre SPL e SQL. Um arquiteto de software pode entender as diferenças entre SPL e bancos de dados tradicionais depois de ler as perguntas e respostas da esProc Architecture.
Encontre documentação abrangente sobre SPL nos materiais de aprendizagem SPL. Geralmente, um programador de aplicativos pode começar a lidar com operações básicas de conexão de banco de dados: SPL: Conectando-se a bancos de dados e leitura/gravação de banco de dados SPL: Lendo e gravando dados de banco de dados ou acesso a arquivos e computação SPL: Lendo e gravando arquivos de texto estruturado. Então você pode aprender como integrar SPL em um aplicativo Java. Como chamar um script SPL em Java. Eles formam um ciclo de aprendizagem simples.
Cálculos de alto desempenho são relativamente difíceis, mas existe um livro sistemático sobre algoritmos: Performance Optimization. Os algoritmos de otimização de desempenho não são exclusivos do SPL. Você pode implementar cálculos de alto desempenho usando outra linguagem de programação (exceto SQL) depois de aprender esses algoritmos. A chave está no algoritmo em vez da sintaxe. Ainda assim, você precisa compreender bem o conceito e a sintaxe do SPL para entender melhor os algoritmos.
As postagens de aprendizagem SPL acima também contêm aplicações dos algoritmos de otimização de desempenho.
O armazenamento constitui a base da computação de alto desempenho. A postagem a seguir apresenta o esquema de armazenamento proprietário comumente usado em SPL para iniciantes: Como usar o armazenamento SPL para iniciantes. Normalmente, a primeira etapa da otimização do desempenho é projetar um esquema de armazenamento apropriado.
Você está convidado a postar seus problemas e dificuldades ao tentar obter computação de alto desempenho e discutir conosco para encontrar uma solução: Procurado! Consulta e trabalho em lote insuportavelmente lentos.
Links úteis
Licença
esProc está sob a licença Apache 2.0. Consulte o arquivo LICENSE para obter detalhes.
Renderizador Mitsuba 3
Documentação
Vídeos tutoriais
Linux
Mac OS
Windows
PyPI
️
Aviso
️
Actualmente existe uma grande quantidade de trabalho indocumentado e instável em curso no
o ramo mestre. É altamente recomendável que você use nosso
último lançamento
até novo aviso.
Se você já deseja experimentar as próximas mudanças, dê uma olhada em
este guia de portabilidade.
Deve cobrir a maioria dos novos recursos e mudanças importantes que estão por vir.
Introdução
Mitsuba 3 é um sistema de renderização orientado para pesquisa para luz direta e inversa
simulação de transporte desenvolvida na EPFL na Suíça.
Consiste em uma biblioteca principal e um conjunto de plug-ins que implementam funcionalidades
variando de materiais e fontes de luz a algoritmos de renderização completos.
Mitsuba 3 é redirecionável: isso significa que as implementações subjacentes e
estruturas de dados podem ser transformadas para realizar várias tarefas diferentes. Para
Por exemplo, o mesmo código pode simular transporte RGB escalar (clássico de um raio por vez)
ou transporte espectral diferencial na GPU. Tudo isso se baseia
Dr.Jit, um compilador just-in-time (JIT) especializado desenvolvido especificamente para este projeto.
Principais recursos
Plataforma cruzada: Mitsuba 3 foi testado em Linux (x86_64), macOS
(aarch64, x8664) e Windows (x8664).
Alto desempenho: o compilador Dr.Jit subjacente funde o código de renderização
em kernels que alcançam desempenho de última geração usando
um back-end LLVM direcionado à CPU e um back-end CUDA/OptiX
visando GPUs NVIDIA com aceleração de hardware de rastreamento de raio.
Python primeiro: Mitsuba 3 está profundamente integrado ao Python. Materiais,
texturas e até mesmo algoritmos de renderização completos podem ser desenvolvidos em Python,
que o sistema compila JIT (e opcionalmente diferencia) em tempo real.
Isso permite a experimentação necessária para pesquisas em computação gráfica e
outras disciplinas.
Diferenciação: Mitsuba 3 é um renderizador diferenciável, o que significa que
pode calcular derivadas de toda a simulação em relação à entrada
parâmetros como pose de câmera, geometria, BSDFs, texturas e volumes. Isto
implementa algoritmos de renderização diferenciáveis recentes desenvolvidos na EPFL.
Espectral e Polarização: Mitsuba 3 pode ser usado como monocromático
renderizador, renderizador baseado em RGB ou renderizador espectral. Cada variante pode
opcionalmente, considere os efeitos da polarização, se desejado.
Vídeos tutoriais, documentação
Gravamos vários vídeos no YouTube que fornecem uma introdução gentil
Mitsuba 3 e Dr.Jit. Além disso você pode encontrar notebooks Juypter completos
cobrindo uma variedade de aplicações, guias de instruções e documentação de referência
em readthedocs.
Instalação
Fornecemos rodas binárias pré-compiladas via PyPI. Instalar o Mitsuba desta forma é tão simples quanto executar
pip instalar mitsuba
na linha de comando. O pacote Python inclui treze variantes por padrão:
escalar_rgb
escalar_espectral
escalarespectralpolarizado
llvmadrgb
llvmadmono
llvmadmono_polarizado
llvmadespectral
llvmadspectral_polarized
cudaadrgb
cudaadmono
cudaadmono_polarized
cudaadspectral
cudaadspectral_polarized
Os dois primeiros realizam simulação clássica de um raio por vez usando um RGB
ou representação espectral de cores, enquanto os dois últimos podem ser usados para representação inversa
renderização na CPU ou GPU. Para acessar variantes adicionais, você precisará
compilar uma versão personalizada do Dr.Jit usando CMake. Por favor veja o
documentação
para obter detalhes sobre isso.
Requisitos
Pitão >= 3.8
(opcional) Para computação na GPU: driver Nvidia >= 495.89
(opcional) Para computação vetorizada/paralela na CPU: LLVM >= 11.1
Uso
Aqui está um exemplo simples de "Hello World" que mostra como é simples renderizar um
cena usando Mitsuba 3 do Python:
# Importe a biblioteca usando o alias "mi"import mitsuba as mi# Defina a variante do renderermi.setvariant('scalarrgb')# Carregue uma scenecene = mi.loaddict(mi.cornellbox())# Renderize a cenaimg = mi. render(scene)# Grave a imagem renderizada em um arquivo EXRmi.Bitmap(img).write('cbox.exr')
Tutoriais e cadernos de exemplo cobrindo uma variedade de aplicações podem ser encontrados
na documentação.
Sobre
Este projeto foi criado por Wenzel Jakob.
Recursos e/ou melhorias significativas no código foram contribuídos por
Sébastien Speierer,
Nicolas Roussel,
Merlin Nimier-David,
Délio Vicini,
Tizian Zeltner,
Baptiste Nicolet,
Miguel Crespo,
Vicente Leroy e
Zi Yi Zhang.
Ao usar o Mitsuba 3 em projetos acadêmicos, cite:
@software{Mitsuba3,title = {mitsuba 3 renderer},author = {Wenzel Jakob e Sébastien Speierer e Nicolas Roussel e Merlin Nimier-David e Delio Vicini e Tizian Zeltner e Baptiste Nicolet e Miguel Crespo e Vincent Leroy e Ziyi Zhang},nota = {https://mitsuba-renderer.org},versão = {3.1.1},ano = 2022}