422 lines
18 KiB
XML
422 lines
18 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!--
|
|
~ /* ******************************************************************************
|
|
~ *
|
|
~ *
|
|
~ * This program and the accompanying materials are made available under the
|
|
~ * terms of the Apache License, Version 2.0 which is available at
|
|
~ * https://www.apache.org/licenses/LICENSE-2.0.
|
|
~ *
|
|
~ * See the NOTICE file distributed with this work for additional
|
|
~ * information regarding copyright ownership.
|
|
~ * Unless required by applicable law or agreed to in writing, software
|
|
~ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
~ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
~ * License for the specific language governing permissions and limitations
|
|
~ * under the License.
|
|
~ *
|
|
~ * SPDX-License-Identifier: Apache-2.0
|
|
~ ******************************************************************************/
|
|
-->
|
|
|
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
|
|
|
<modelVersion>4.0.0</modelVersion>
|
|
|
|
<parent>
|
|
<groupId>org.deeplearning4j</groupId>
|
|
<artifactId>deeplearning4j</artifactId>
|
|
<version>1.0.0-SNAPSHOT</version>
|
|
</parent>
|
|
|
|
<groupId>org.nd4j</groupId>
|
|
<artifactId>libnd4j</artifactId>
|
|
<packaging>pom</packaging>
|
|
|
|
<name>libnd4j</name>
|
|
<description>The C++ engine that powers the scientific computing library ND4J - n-dimensional
|
|
arrays for Java
|
|
</description>
|
|
|
|
|
|
<properties>
|
|
<!-- CUDA version is linked with the artifact name so cannot move to parent pom.xml -->
|
|
<cuda.version>11.0</cuda.version>
|
|
<cudnn.version>8.0</cudnn.version>
|
|
<libnd4j.build>release</libnd4j.build>
|
|
<libnd4j.chip>cpu</libnd4j.chip>
|
|
<libnd4j.platform>${javacpp.platform}</libnd4j.platform>
|
|
<libnd4j.extension></libnd4j.extension>
|
|
<libnd4j.cuda></libnd4j.cuda>
|
|
<libnd4j.compute></libnd4j.compute>
|
|
<libnd4j.classifier>${libnd4j.platform}</libnd4j.classifier>
|
|
<libnd4j.buildthreads></libnd4j.buildthreads>
|
|
<libnd4j.helper></libnd4j.helper>
|
|
<libnd4j.buildprogram>bash</libnd4j.buildprogram>
|
|
</properties>
|
|
|
|
<build>
|
|
<extensions>
|
|
<extension>
|
|
<groupId>org.kuali.maven.wagons</groupId>
|
|
<artifactId>maven-s3-wagon</artifactId>
|
|
<version>1.2.1</version>
|
|
</extension>
|
|
</extensions>
|
|
|
|
<plugins>
|
|
<!-- Infer the number of CPU cores and put it in the cpu.core.count property -->
|
|
<plugin>
|
|
<groupId>org.codehaus.mojo</groupId>
|
|
<artifactId>build-helper-maven-plugin</artifactId>
|
|
<version>${maven-build-helper-plugin.version}</version>
|
|
<executions>
|
|
<execution>
|
|
<id>get-cpu-count</id>
|
|
<goals>
|
|
<goal>cpu-count</goal>
|
|
</goals>
|
|
<configuration>
|
|
<cpuCount>cpu.core.count</cpuCount>
|
|
</configuration>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
<plugin>
|
|
<groupId>org.bytedeco</groupId>
|
|
<artifactId>javacpp</artifactId>
|
|
<version>${javacpp.version}</version>
|
|
<dependencies>
|
|
<dependency>
|
|
<groupId>org.bytedeco</groupId>
|
|
<artifactId>openblas-platform</artifactId>
|
|
<version>${openblas.version}-${javacpp-presets.version}</version>
|
|
</dependency>
|
|
</dependencies>
|
|
<configuration>
|
|
<properties>${libnd4j.platform}</properties>
|
|
<buildResources>
|
|
<buildResource>/${javacpp.platform.library.path}/</buildResource>
|
|
<buildResource>/org/bytedeco/openblas/${libnd4j.platform}/</buildResource>
|
|
</buildResources>
|
|
<includeResources>
|
|
<includeResource>/${javacpp.platform.library.path}/include/
|
|
</includeResource>
|
|
<includeResource>/org/bytedeco/openblas/${libnd4j.platform}/include/
|
|
</includeResource>
|
|
</includeResources>
|
|
<linkResources>
|
|
<linkResource>/${javacpp.platform.library.path}/</linkResource>
|
|
<linkResource>/${javacpp.platform.library.path}/lib/</linkResource>
|
|
<linkResource>/org/bytedeco/openblas/${libnd4j.platform}/</linkResource>
|
|
<linkResource>/org/bytedeco/openblas/${libnd4j.platform}/lib/</linkResource>
|
|
</linkResources>
|
|
</configuration>
|
|
<executions>
|
|
<execution>
|
|
<id>javacpp-cppbuild-validate</id>
|
|
<phase>validate</phase>
|
|
<goals>
|
|
<goal>build</goal>
|
|
</goals>
|
|
</execution>
|
|
<execution>
|
|
<id>javacpp-cppbuild-compile</id>
|
|
<phase>compile</phase>
|
|
<goals>
|
|
<goal>build</goal>
|
|
</goals>
|
|
<configuration>
|
|
<skip>${libnd4j.cpu.compile.skip}</skip>
|
|
<buildCommand>
|
|
<program>${libnd4j.buildprogram}</program>
|
|
<argument>buildnativeoperations.sh</argument>
|
|
<argument>--build-type</argument>
|
|
<argument>${libnd4j.build}</argument>
|
|
<argument>--chip</argument>
|
|
<argument>${libnd4j.chip}</argument>
|
|
<argument>--platform</argument>
|
|
<argument>${libnd4j.platform}</argument>
|
|
<argument>--chip-extension</argument>
|
|
<argument>${libnd4j.extension}</argument>
|
|
<argument>--chip-version</argument>
|
|
<argument>${cuda.version}</argument>
|
|
<argument>--compute</argument>
|
|
<argument>${libnd4j.compute}</argument>
|
|
<argument>${libnd4j.tests}</argument>
|
|
<argument>-j</argument>
|
|
<argument>${libnd4j.buildthreads}</argument>
|
|
<argument>-h</argument>
|
|
<argument>${libnd4j.helper}</argument>
|
|
</buildCommand>
|
|
<workingDirectory>${project.basedir}</workingDirectory>
|
|
</configuration>
|
|
</execution>
|
|
<execution>
|
|
<id>libnd4j-test-run</id>
|
|
<phase>test</phase>
|
|
<goals>
|
|
<goal>build</goal>
|
|
</goals>
|
|
<configuration>
|
|
<skip>${libnd4j.test.skip}</skip>
|
|
<workingDirectory>${basedir}/tests_cpu</workingDirectory>
|
|
<buildCommand>
|
|
<program>bash</program>
|
|
<argument>run_tests.sh</argument>
|
|
<argument>--chip</argument>
|
|
<argument>${libnd4j.chip}</argument>
|
|
</buildCommand>
|
|
</configuration>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
<plugin>
|
|
<artifactId>maven-clean-plugin</artifactId>
|
|
<version>2.6</version>
|
|
<executions>
|
|
<execution>
|
|
<id>javacpp-cppbuild-clean</id>
|
|
<phase>clean</phase>
|
|
<goals>
|
|
<goal>clean</goal>
|
|
</goals>
|
|
<configuration>
|
|
<filesets>
|
|
<fileset>
|
|
<directory>blasbuild</directory>
|
|
</fileset>
|
|
</filesets>
|
|
</configuration>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
<plugin>
|
|
<artifactId>maven-assembly-plugin</artifactId>
|
|
<version>3.0.0</version>
|
|
<configuration>
|
|
<descriptors>
|
|
<descriptor>assembly.xml</descriptor>
|
|
</descriptors>
|
|
</configuration>
|
|
<executions>
|
|
<execution>
|
|
<phase>package</phase>
|
|
<goals>
|
|
<goal>single</goal>
|
|
</goals>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
</plugins>
|
|
</build>
|
|
|
|
<profiles>
|
|
<!-- Build on windows can use sh rather than bash due to WSL clashing with msys2 -->
|
|
<profile>
|
|
<id>build-windows</id>
|
|
<activation>
|
|
<os>
|
|
<family>Windows</family>
|
|
</os>
|
|
</activation>
|
|
<properties>
|
|
<libnd4j.buildprogram>sh</libnd4j.buildprogram>
|
|
</properties>
|
|
</profile>
|
|
<!-- Default build program should be bash on non windows platforms -->
|
|
<profile>
|
|
<id>build-unix</id>
|
|
<activation>
|
|
<activeByDefault>true</activeByDefault>
|
|
</activation>
|
|
<properties>
|
|
<libnd4j.buildprogram>bash</libnd4j.buildprogram>
|
|
</properties>
|
|
</profile>
|
|
<!-- Use -Dlibnd4j.singlethread to use single threaded build (multi-threaded by default) -->
|
|
<profile>
|
|
<id>libnd4j-single-thread</id>
|
|
<activation>
|
|
<property>
|
|
<name>libnd4j.singlethread</name>
|
|
</property>
|
|
</activation>
|
|
<properties>
|
|
<libnd4j.buildthreads>1</libnd4j.buildthreads>
|
|
</properties>
|
|
</profile>
|
|
<profile>
|
|
<id>libnd4-multi-thread</id>
|
|
<activation>
|
|
<property>
|
|
<name>!libnd4j.singlethread</name>
|
|
</property>
|
|
</activation>
|
|
<properties>
|
|
<!-- Note: CPU core count is from build helper plugin -->
|
|
<libnd4j.buildthreads>${cpu.core.count}</libnd4j.buildthreads>
|
|
</properties>
|
|
</profile>
|
|
<profile>
|
|
<id>chip</id>
|
|
<activation>
|
|
<property>
|
|
<name>libnd4j.chip</name>
|
|
</property>
|
|
</activation>
|
|
<properties>
|
|
<libnd4j.classifier>${libnd4j.platform}-${libnd4j.chip}-${cuda.version}
|
|
</libnd4j.classifier>
|
|
</properties>
|
|
</profile>
|
|
<profile>
|
|
<id>extension</id>
|
|
<activation>
|
|
<property>
|
|
<name>libnd4j.extension</name>
|
|
</property>
|
|
</activation>
|
|
<properties>
|
|
<libnd4j.classifier>${libnd4j.platform}-${libnd4j.extension}</libnd4j.classifier>
|
|
</properties>
|
|
</profile>
|
|
<profile>
|
|
<id>cuda</id>
|
|
<activation>
|
|
<property>
|
|
<name>libnd4j.cuda</name>
|
|
</property>
|
|
</activation>
|
|
<properties>
|
|
<!-- Leave libnd4j.chip and libnd4j.classifier as is to build CPU version as well. -->
|
|
<!-- <libnd4j.chip>cuda</libnd4j.chip> -->
|
|
<!-- <libnd4j.classifier>${libnd4j.platform}-cuda-${cuda.version}</libnd4j.classifier> -->
|
|
</properties>
|
|
<build>
|
|
<plugins>
|
|
<plugin>
|
|
<groupId>org.bytedeco</groupId>
|
|
<artifactId>javacpp</artifactId>
|
|
<version>${javacpp.version}</version>
|
|
<configuration>
|
|
<properties>${libnd4j.platform}</properties>
|
|
</configuration>
|
|
<executions>
|
|
<execution>
|
|
<id>javacpp-cppbuild-compile-cuda</id>
|
|
<phase>compile</phase>
|
|
<goals>
|
|
<goal>build</goal>
|
|
</goals>
|
|
<configuration>
|
|
<skip>${libnd4j.cuda.compile.skip}</skip>
|
|
<buildCommand>
|
|
<program>${libnd4j.buildprogram}</program>
|
|
<argument>buildnativeoperations.sh
|
|
</argument>
|
|
<argument>--build-type</argument>
|
|
<argument>${libnd4j.build}</argument>
|
|
<argument>--chip</argument>
|
|
<argument>cuda</argument>
|
|
<argument>--platform</argument>
|
|
<argument>${libnd4j.platform}</argument>
|
|
<argument>--chip-extension</argument>
|
|
<argument>${libnd4j.extension}</argument>
|
|
<argument>--chip-version</argument>
|
|
<argument>${cuda.version}</argument>
|
|
<argument>--compute</argument>
|
|
<argument>${libnd4j.compute}</argument>
|
|
<argument>${libnd4j.tests}</argument>
|
|
<argument>-j</argument>
|
|
<argument>${libnd4j.buildthreads}</argument>
|
|
</buildCommand>
|
|
<workingDirectory>${project.basedir}</workingDirectory>
|
|
</configuration>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
<plugin>
|
|
<artifactId>maven-assembly-plugin</artifactId>
|
|
<version>3.0.0</version>
|
|
<executions>
|
|
<execution>
|
|
<id>libnd4j-package-cuda</id>
|
|
<phase>package</phase>
|
|
<goals>
|
|
<goal>single</goal>
|
|
</goals>
|
|
<configuration>
|
|
<descriptors>
|
|
<descriptor>assembly-cuda.xml</descriptor>
|
|
</descriptors>
|
|
</configuration>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
</plugins>
|
|
</build>
|
|
</profile>
|
|
<profile>
|
|
<id>clean-tests</id>
|
|
<activation>
|
|
<file>
|
|
<exists>${basedir}/tests_cpu/Makefile</exists>
|
|
</file>
|
|
</activation>
|
|
<build>
|
|
<plugins>
|
|
<plugin>
|
|
<groupId>org.codehaus.mojo</groupId>
|
|
<artifactId>exec-maven-plugin</artifactId>
|
|
<version>1.6.0</version>
|
|
<executions>
|
|
<execution>
|
|
<id>libnd4j-test-clean</id>
|
|
<phase>clean</phase>
|
|
<goals>
|
|
<goal>exec</goal>
|
|
</goals>
|
|
<configuration>
|
|
<executable>make</executable>
|
|
<workingDirectory>${basedir}/tests_cpu</workingDirectory>
|
|
<arguments>
|
|
<argument>clean</argument>
|
|
</arguments>
|
|
</configuration>
|
|
</execution>
|
|
</executions>
|
|
</plugin>
|
|
</plugins>
|
|
</build>
|
|
</profile>
|
|
<!-- Profiles to set the default libnd4j.helper property, example: mkdnn -->
|
|
<profile>
|
|
<id>libnd4j-helper-avx2</id>
|
|
<activation>
|
|
<property>
|
|
<name>libnd4j.extension</name>
|
|
<value>avx2</value>
|
|
</property>
|
|
</activation>
|
|
<properties>
|
|
<libnd4j.helper>mkldnn</libnd4j.helper>
|
|
</properties>
|
|
</profile>
|
|
<profile>
|
|
<id>libnd4j-helper-avx512</id>
|
|
<activation>
|
|
<property>
|
|
<name>libnd4j.extension</name>
|
|
<value>avx512</value>
|
|
</property>
|
|
</activation>
|
|
<properties>
|
|
<libnd4j.helper>mkldnn</libnd4j.helper>
|
|
</properties>
|
|
</profile>
|
|
</profiles>
|
|
</project>
|