<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~ Copyright (c) 2015-2018 Skymind, Inc. ~ ~ 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. ~ ~ 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"> <parent> <artifactId>nd4j-backend-impls</artifactId> <groupId>org.nd4j</groupId> <version>1.0.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>nd4j-cuda-10.1</artifactId> <name>nd4j-cuda</name> <properties> <!-- CUDA version is linked with the artifact name so cannot move to parent pom.xml --> <cuda.version>10.1</cuda.version> <cudnn.version>7.6</cudnn.version> <javacpp-presets.cuda.version>1.5.1</javacpp-presets.cuda.version> </properties> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <dependencies> <dependency> <groupId>org.apache.maven.surefire</groupId> <artifactId>surefire-junit47</artifactId> <version>2.19.1</version> </dependency> </dependencies> <configuration> <environmentVariables> <LD_LIBRARY_PATH>${env.LD_LIBRARY_PATH}:${user.dir}:${libnd4jhome}/blasbuild/cuda/blas/</LD_LIBRARY_PATH> </environmentVariables> <testSourceDirectory>src/test/java</testSourceDirectory> <includes> <include>*.java</include> </includes> <systemPropertyVariables> <org.nd4j.linalg.defaultbackend>org.nd4j.linalg.jcublas.JCublasBackend</org.nd4j.linalg.defaultbackend> <org.nd4j.linalg.tests.backendstorun>org.nd4j.linalg.jcublas.JCublasBackend</org.nd4j.linalg.tests.backendstorun> </systemPropertyVariables> <!-- Maximum heap size was set to 6g, as a minimum required value for tests run. Depending on a build machine, default value is not always enough. --> <argLine>-Ddtype=float -Xmx8g</argLine> </configuration> </plugin> <plugin> <artifactId>maven-compiler-plugin</artifactId> <executions> <execution> <id>javacpp-parser</id> <phase>generate-sources</phase> <goals> <goal>compile</goal> </goals> <configuration> <skipMain>${javacpp.parser.skip}</skipMain> <includes> <include>org/nd4j/nativeblas/Nd4jCudaPresets.java</include> </includes> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> </plugin> <plugin> <groupId>org.bytedeco</groupId> <artifactId>javacpp</artifactId> <version>${javacpp.version}</version> <dependencies> <dependency> <groupId>org.nd4j</groupId> <artifactId>nd4j-native-api</artifactId> <version>${project.version}</version> </dependency> </dependencies> <configuration> <properties>${javacpp.platform}</properties> <propertyKeysAndValues> <property> <name>platform.root</name> <value>${javacpp.platform.root}</value> </property> <property> <name>platform.compiler</name> <value>${javacpp.platform.compiler}</value> </property> <property> <name>platform.sysroot</name> <value>${javacpp.platform.sysroot}</value> </property> </propertyKeysAndValues> <classPaths> <classPath>${project.build.outputDirectory}</classPath> </classPaths> <includePaths> <includePath>${libnd4jhome}/blasbuild/cuda/include</includePath> <includePath>${libnd4jhome}/blasbuild/cuda/flatbuffers-src/include/</includePath> <includePath>${libnd4jhome}/blas</includePath> <includePath>${libnd4jhome}/include</includePath> <includePath>${libnd4jhome}/include/helpers</includePath> <includePath>${libnd4jhome}/include/array</includePath> <includePath>${libnd4jhome}/include/cnpy</includePath> <includePath>${libnd4jhome}/include/execution</includePath> <includePath>${libnd4jhome}/include/exceptions</includePath> <includePath>${libnd4jhome}/include/graph</includePath> <includePath>${libnd4jhome}/include/indexing</includePath> <includePath>${libnd4jhome}/include/memory</includePath> <includePath>${libnd4jhome}/include/performance</includePath> </includePaths> <linkPaths> <linkPath>${libnd4jhome}/blasbuild/cuda/blas</linkPath> </linkPaths> </configuration> <executions> <execution> <id>javacpp-parser</id> <phase>generate-sources</phase> <goals> <goal>build</goal> </goals> <configuration> <skip>${javacpp.parser.skip}</skip> <outputDirectory>${project.build.sourceDirectory}</outputDirectory> <classOrPackageName>org.nd4j.nativeblas.Nd4jCudaPresets</classOrPackageName> </configuration> </execution> <execution> <id>javacpp-compiler</id> <phase>process-classes</phase> <goals> <goal>build</goal> </goals> <configuration> <skip>${javacpp.compiler.skip}</skip> <classOrPackageName>org.nd4j.nativeblas.Nd4jCuda</classOrPackageName> <copyLibs>true</copyLibs> </configuration> </execution> </executions> </plugin> <plugin> <artifactId>maven-jar-plugin</artifactId> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-enforcer-plugin</artifactId> <executions> <execution> <id>libnd4j-checks</id> <goals> <goal>enforce</goal> </goals> <configuration> <rules> <requireProperty> <property>libnd4jhome</property> <message>You must set the LIBND4J_HOME environment variable!</message> <regex>.*/.*</regex> <regexMessage>!!! LIBND4J_HOME must be a valid unix path!</regexMessage> </requireProperty> <requireFilesExist> <files> <file>${libnd4jhome}/blas/NativeOps.h</file> <file>${libnd4jhome}/blasbuild/cuda/blas</file> </files> <message>!!! You have to compile libnd4j with cuda support first!</message> </requireFilesExist> </rules> <fail>true</fail> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>8</source> <target>8</target> </configuration> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>${dependency.groupId}</groupId> <artifactId>${dependency.artifactId}</artifactId> <version>${dependency.version}</version> <type>${dependency.packaging}</type> <classifier>${dependency.classifier}</classifier> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>5.0.2.RELEASE</version> <scope>test</scope> </dependency> <dependency> <groupId>org.bytedeco</groupId> <artifactId>javacpp</artifactId> <version>${javacpp.version}</version> </dependency> <dependency> <groupId>org.bytedeco</groupId> <artifactId>cuda</artifactId> <version>${cuda.version}-${cudnn.version}-${javacpp-presets.cuda.version}</version> </dependency> <dependency> <groupId>org.bytedeco</groupId> <artifactId>cuda</artifactId> <version>${cuda.version}-${cudnn.version}-${javacpp-presets.cuda.version}</version> <classifier>${dependency.platform}</classifier> </dependency> <dependency> <groupId>org.nd4j</groupId> <artifactId>libnd4j</artifactId> <version>${project.version}</version> <type>zip</type> <classifier>${javacpp.platform}-cuda-${cuda.version}</classifier> <scope>provided</scope> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.nd4j</groupId> <artifactId>nd4j-jackson</artifactId> <version>${project.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.nd4j</groupId> <artifactId>nd4j-api</artifactId> <version>${project.version}</version> </dependency> <dependency> <groupId>org.nd4j</groupId> <artifactId>nd4j-native-api</artifactId> <version>${project.version}</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>${logback.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> <version>${logback.version}</version> <scope>test</scope> </dependency> <!-- Reflections: required in one of the tests --> <dependency> <groupId>org.reflections</groupId> <artifactId>reflections</artifactId> <version>${reflections.version}</version> <scope>test</scope> <exclusions> <exclusion> <groupId>com.google.code.findbugs</groupId> <artifactId>*</artifactId> </exclusion> </exclusions> </dependency> </dependencies> <profiles> <profile> <id>testresources</id> </profile> <profile> <id>msvc</id> <activation> <os><family>windows</family></os> </activation> <build> <plugins> <plugin> <groupId>org.bytedeco</groupId> <artifactId>javacpp</artifactId> <configuration> <properties>${javacpp.platform}</properties> <compilerOptions> <compilerOption>/MT</compilerOption> </compilerOptions> </configuration> </plugin> </plugins> </build> </profile> <profile> <id>libnd4j-assembly</id> <activation> <property> <name>libnd4j-assembly</name> </property> </activation> <properties> <libnd4jhome>${project.build.directory}/libnd4j/</libnd4jhome> </properties> <dependencies> <dependency> <groupId>org.nd4j</groupId> <artifactId>libnd4j</artifactId> <version>${project.version}</version> <type>zip</type> <classifier>${javacpp.platform}-cuda-${cuda.version}</classifier> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-enforcer-plugin</artifactId> <executions> <execution> <id>libnd4j-checks</id> <goals> <goal>enforce</goal> </goals> <configuration> <skip>true</skip> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>3.0.2</version> <executions> <execution> <id>unpack</id> <phase>initialize</phase> <goals> <goal>unpack</goal> </goals> <configuration> <artifactItems> <artifactItem> <groupId>org.nd4j</groupId> <artifactId>libnd4j</artifactId> <version>${project.version}</version> <type>zip</type> <classifier>${javacpp.platform}-cuda-${cuda.version}</classifier> <overWrite>true</overWrite> <outputDirectory>${project.build.directory}</outputDirectory> </artifactItem> </artifactItems> </configuration> </execution> </executions> </plugin> </plugins> </build> </profile> </profiles> </project>