O CV-CUDA é um projeto de código aberto que permite a criação de aplicativos de imagem e visão computacional (CV) eficientes em escala de nuvem. Ele usa a aceleração da Unidade de Processamento de Gráficos (GPU) para ajudar os desenvolvedores a criar pipelines de pré e pós-processamento altamente eficientes. O CV-CUDA se originou como um esforço colaborativo entre Nvidia e Bytedance.
Consulte nosso Guia do desenvolvedor para obter mais informações sobre os operadores disponíveis.
Para colocar uma cópia local em funcionamento, siga estas etapas.
| CV-CUDA Build | Plataforma | Versão CUDA | Capacidade de computação CUDA | Arquiteturas de hardware | Motorista nvidia | Versões Python | Compiladores suportados (Build From Source) | Compatibilidade da API com binários pré -construídos | Distribuições OS/Linux testadas com pacotes pré -construídos |
|---|---|---|---|---|---|---|---|---|---|
| x86_64_cu11 | x86_64 | 11.7 ou mais tarde | Sm7 e mais tarde | Volta, Turing, Ampere, Hopper, Ada Lovelace | R525 ou mais tarde *** | 3.8, 3.9, 3.10, 3.11 | gcc> = 9* gcc> = 11 ** | GCC> = 9 | Ubuntu> = 20,04 Wsl2/ubuntu> = 20.04 |
| x86_64_cu12 | x86_64 | 12.2 ou mais tarde | Sm7 e mais tarde | Volta, Turing, Ampere, Hopper, Ada Lovelace | R525 ou mais tarde *** | 3.8, 3.9, 3.10, 3.11 | gcc> = 9* gcc> = 11 ** | GCC> = 9 | Ubuntu> = 20,04 Wsl2/ubuntu> = 20.04 |
| AARCH64_CU11 | AARCH64 | 11.4 | Sm7 e mais tarde | Jetson Agx Orin | Jetpack 5.1 | 3.8 | gcc> = 9* gcc> = 11 ** | GCC> = 9 | Jetson Linux 35.x |
| AARCH64_CU12 | AARCH64 | 12.2 | Sm7 e mais tarde | Jetson Agx Orin, igx orin + ampere rtx6000, igx orin + Ada rtx6000 | Jetpack 6.0 DP, R535 (IGX OS V0.6) | 3.10 | gcc> = 9* gcc> = 11 ** | GCC> = 9 | Jetson Linux 36.2 IGX OS V0.6 |
* Construção parcial, sem módulo de teste (ver limitações conhecidas)
** Construção completa, incluindo módulo de teste
*** As amostras requerem o motorista R535 ou posterior para funcionar e são apenas apoiadas oficialmente com o CUDA 12.
-DBUILD_TESTS=0pip install --upgrade sphinx ), além de analisar explicitamente a versão Python padrão do sistema ./ci/build_docs path/to/build -DPYTHON_VERSIONS="<py_ver>" .Por conveniência, fornecemos pacotes pré-criados para várias combinações de versões CUDA, versões e arquiteturas Python aqui. As etapas a seguir descrevem como instalar o CV-CUDA a partir desses pacotes pré-construídos.
Apoiamos duas vias alternativas principais:
Escolha o método de instalação que atenda às suas necessidades de ambiente.
Faça o download do arquivo .Whl apropriado para sua versão de arquitetura de computador, Python e CUDA dos ativos de liberação da versão atual do CV-CUDA. As informações de liberação de todos os lançamentos do CV-CUDA podem ser encontrados aqui. Depois de baixado, execute o comando pip install para instalar a roda Python. Por exemplo:
pip install cvcuda_ < cu_ver > - < x.x.x > -cp < py_ver > -cp < py_ver > -linux_ < arch > .whl Onde <cu_ver> é a versão CUDA desejada, <xxx> é a versão de lançamento do CV-CUDA, <py_ver> é a versão Python desejada e <arch> é a arquitetura desejada.
Observe que as rodas Python são independentes, elas incluem as bibliotecas C ++/CUDA e as ligações do Python.
Instale as bibliotecas C ++/CUDA (CVCUDA-LIB*) e os cabeçalhos de desenvolvimento (cvcuda-dev*) usando apt :
sudo apt install -y ./cvcuda-lib- < x.x.x > - < cu_ver > - < arch > -linux.deb ./cvcuda-dev- < x.x.x > - < cu_ver > - < arch > -linux.deb Instale as ligações do Python (Cvcuda-python*) usando apt :
sudo apt install -y ./cvcuda-python < py_ver > - < x.x.x > - < cu_ver > - < arch > -linux.deb Onde <cu_ver> é a versão CUDA desejada, <py_ver> é a versão desejada do Python e <arch> é a arquitetura desejada.
Instale as bibliotecas C ++/CUDA (CVCUDA-LIB*) e os cabeçalhos de desenvolvimento (cvcuda-dev*):
tar -xvf cvcuda-lib- < x.x.x > - < cu_ver > - < arch > -linux.tar.xz
tar -xvf cvcuda-dev- < x.x.x > - < cu_ver > - < arch > -linux.tar.xzInstale as ligações do Python (Cvcuda-python*)
tar -xvf cvcuda-python < py_ver > - < x.x.x > - < cu_ver > - < arch > -linux.tar.xz Onde <cu_ver> é a versão CUDA desejada, <py_ver> é a versão desejada do Python e <arch> é a arquitetura desejada.
Siga estas instruções para construir CV-CUDA a partir da fonte:
Instale as dependências necessárias para configurar o repositório:
No Ubuntu> = 20.04, instale os seguintes pacotes usando apt :
sudo apt install -y git git-lfsClone o repositório
git clone https://github.com/CVCUDA/CV-CUDA.git Supondo que o repositório tenha sido clonado em ~/cvcuda , ele precisa ser configurado corretamente executando o script init_repo.sh apenas uma vez.
cd ~ /cvcuda
./init_repo.shInstale as dependências necessárias para criar CV-CUDA:
No Ubuntu> = 20.04, instale os seguintes pacotes usando apt :
sudo apt install -y g++-11 cmake ninja-build python3-dev libssl-dev patchelfQualquer versão do kit de ferramentas 11.x ou 12.x CUDA deve funcionar. O CV-CUDA foi testado com 11,7 e 12.2, essas versões são recomendadas.
sudo apt install -y cuda-11-7
# or
sudo apt install -y cuda-12-2Construa o projeto:
ci/build.sh [release | debug] [output build tree path] [-DBUILD_TESTS = 1 | 0] [-DPYTHON_VERSIONS = ' 3.8;3.9;3.10;3.11 ' ] [-DPUBLIC_API_COMPILERS = ' gcc-9;gcc-11;clang-11;clang-14 ' ]build-rel para compilações de liberação e build-deb para depuração.build-rel/lib e executáveis (testes, etc ...) estão em build-rel/bin .-DBUILD_TESTS pode ser usada para desativar/ativar a criação dos testes (ativado por padrão, consulte limitações conhecidas).-DPYTHON_VERSIONS pode ser usada para selecionar versões Python para criar ligações e rodas. Por padrão, apenas a versão Python3 do sistema padrão será selecionada.-DPUBLIC_API_COMPILERS pode ser usada para selecionar os compiladores usados para verificar a compatibilidade da API pública. Por padrão, GCC-11, GCC-9, CLANG-11 e CLANG-14 é tentado ser selecionado e verificado. Limitação conhecida: a documentação construída no Ubuntu 20.04 precisa de uma versão atualizada do SPHINX ( pip install --upgrade sphinx ), além de analisar explicitamente a versão Python padrão do sistema ./ci/build_docs path/to/build -DPYTHON_VERSIONS="<py_ver>" .
Instale as dependências necessárias para construir a documentação:
No Ubuntu, instale os seguintes pacotes usando apt e pip :
sudo apt install -y doxygen graphviz python3 python3-pip sphinx
python3 -m pip install breathe recommonmark graphviz sphinx-rtd-themeConstrua a documentação:
ci/build_docs.sh [build folder]A pasta de construção padrão é 'build'.
Para obter instruções sobre como criar amostras da fonte e executá -las, consulte a documentação da amostras.
Instale as dependências necessárias para a execução dos testes:
No Ubuntu> = 20.04, instale os seguintes pacotes usando apt e pip :
sudo apt install -y python3 python3-pip
python3 -m pip install pytest torch numpy==1.26 Os testes estão em <buildtree>/bin . Você pode executar o script abaixo para executar todos os testes de uma só vez. Aqui está um exemplo quando a árvore de construção é criada no build-rel :
build-rel/bin/run_tests.shInstaladores de pacotes
Os instaladores podem ser gerados usando o seguinte comando cpack depois de criar o projeto com sucesso:
cd build-rel
cpack .Isso gerará no diretório Build Directory, ambos os instaladores do Debian e Tarballs (*.tar.xz), necessários para a integração em outras distritos.
Para uma opção de granulação fina de quais instaladores gerar, a sintaxe completa é:
cpack . -G [DEB | TXZ]Rodas Python
Por padrão, durante a construção release , as ligações e rodas do Python são criadas para a versão CUDA disponível e as versão (s) do (s) Python especificada. As rodas agora são emitidas para a pasta build-rel/python3/repaired_wheels (depois de serem processadas pelo comando auditwheel repair no caso do ManyLinux). A roda Python gerada única é compatível com todas as versões do Python especificado durante a etapa de construção do CMake. Aqui, build-rel é o diretório de compilação usado para criar a construção de liberação.
As novas rodas Python para conformidade com Pypi devem ser construídas dentro do ambiente Docker ManTinUx 2014. As imagens do Docker podem ser geradas usando o script docker/manylinux/docker_buildx.sh . Essas imagens garantem que as rodas atendam aos padrões ManTlinex 2014 e Pypi.
As rodas construídas ainda podem ser instaladas usando pip . Por exemplo, para instalar a roda Python construída para CUDA 12.x, Python 3.10 e 3.11 nos sistemas Linux x86_64:
pip install cvcuda_cu12- < x.x.x > -cp310.cp311-cp310.cp311-linux_x86_64.whlCV-CUDA é um projeto de código aberto. Como parte da comunidade de código aberto, estamos comprometidos com o ciclo de aprendizado, melhoria e atualização que faz essa comunidade prosperar. No entanto, o CV-CUDA ainda não está pronto para contribuições externas.
Para entender o processo para contribuir com o CV-CUDA, consulte nossa página contribuinte. Para entender nosso compromisso com a comunidade de código aberto e fornecer um ambiente que apóie e respeite os esforços de todos os colaboradores, leia nosso código de conduta.
O script mkop.sh é uma ferramenta poderosa para criar um andaime para novos operadores na biblioteca CV-CUDA. Ele automatiza várias tarefas, garantindo consistência e economizando tempo.
mkop.sh :Criação do stub do operador : gera modelos de operador não-OP (sem operação), que servem como ponto de partida para implementar novas funcionalidades.
Personalização de arquivos : modifica os arquivos de modelo para incluir o nome do novo operador, garantindo convenções de nomeação consistente na base de código.
Integração do CMake : adiciona os novos arquivos do operador aos cmakelistas apropriados, facilitando a compilação e a integração perfeitas no sistema de construção.
Python Bindings : cria stubs de invólucro Python para o novo operador, permitindo que ele seja usado em ambientes Python.
Configuração de teste : gera arquivos de teste para C ++ e Python, permitindo o desenvolvimento imediato de testes de unidade para o novo operador.
mkop.sh : Execute o script com o nome do operador desejado. O script assume que está localizado em ~/cvcuda/tools/mkop .
./mkop.sh [Operator Name]Se o script for executado de um local diferente, forneça o caminho para o diretório raiz CV-CUDA.
./mkop.sh [Operator Name] [CV-CUDA root]NOTA : A primeira letra do novo nome do operador é capitalizada, quando necessário, para corresponder ao restante das estruturas de arquivo.
Configuração inicial : o script começa validando a entrada e configurando as variáveis necessárias. Em seguida, capitaliza a primeira letra do nome do operador para aderir às convenções de nomeação.
Modificação do modelo : ele processa vários arquivos de modelo ( Public.h , PrivateImpl.cpp , etc.), substituindo os espaços reservados pelo novo nome do operador. Isso inclui o ajuste de cabeçalhos de arquivo, namespaces e assinaturas de funções.
Integração CMake e Python : o script atualiza arquivos CMakeLists.txt e arquivos do módulo Python para incluir o novo operador, garantindo que seja reconhecido pelo sistema de construção e interface Python.
Estrutura de teste : Finalmente, configura arquivos de teste para C ++ e Python, permitindo que os desenvolvedores iniciem imediatamente os testes para o novo operador.
O CV-CUDA opera sob a licença Apache-2.0.
O CV-CUDA, como um programa da NVIDIA, está comprometido em garantir práticas de desenvolvimento. Leia nossa página de segurança para saber mais.
O CV-CUDA é desenvolvido em conjunto por Nvidia e Bytedance.