From 1233acf2ab53b273e6054f6cc2863c57342c43b8 Mon Sep 17 00:00:00 2001 From: Serhii Shepel <9946053+sshepel@users.noreply.github.com> Date: Fri, 29 May 2020 11:01:02 +0300 Subject: [PATCH] Fix formatting, remove obsolete files (#439) * Update/remove obsolete files * Fix nd4j-parameter-server-parent folder and module name * Fix formatting for libnd4j pom * Remove LICENSE file check for libnd4j build * Temp revert removing encoding and version for nd4j-parameter-server-model, nd4j-parameter-server-node, nd4j-parameter-server-client --- arbiter/.travis.yml | 24 -- arbiter/ci/build-linux-x86_64.sh | 28 -- arbiter/ci/settings.xml | 28 -- {arbiter/contrib => contrib}/formatter.xml | 0 datavec/.travis.yml | 28 -- datavec/LICENSE | 201 ---------- datavec/ci/build-linux-x86_64.sh | 29 -- datavec/ci/settings.xml | 28 -- datavec/contrib/formatter.xml | 353 ------------------ deeplearning4j/.travis.yml | 32 -- deeplearning4j/LICENSE.txt | 202 ---------- deeplearning4j/ci/build-linux-x86_64.sh | 30 -- deeplearning4j/ci/settings.xml | 28 -- deeplearning4j/contrib/formatter.xml | 353 ------------------ jumpy/.travis.yml | 25 -- jumpy/LICENSE | 201 ---------- libnd4j/CMakeLists.txt | 1 - libnd4j/LICENSE | 202 ---------- libnd4j/pom.xml | 35 +- nd4j/.appveyor.yml | 45 --- nd4j/.codeclimate.yml | 32 -- nd4j/.travis.yml | 96 ----- nd4j/LICENSE | 201 ---------- nd4j/VERSION | 1 - nd4j/buildAllversions.sh | 23 -- nd4j/ci/build-android.sh | 47 --- nd4j/ci/build-ios.sh | 49 --- nd4j/ci/build-linux-x86_64.sh | 77 ---- nd4j/ci/build-macosx-x86_64.sh | 71 ---- nd4j/ci/build-windows-x86_64.cmd | 49 --- nd4j/ci/settings.xml | 28 -- nd4j/contrib/formatter.xml | 353 ------------------ .../nd4j-parameter-server-client/pom.xml | 28 +- .../pom.xml | 21 +- .../model/MasterConnectionInfo.java | 0 .../parameterserver/model/MasterStatus.java | 0 .../parameterserver/model/ServerState.java | 0 .../parameterserver/model/ServerType.java | 0 .../parameterserver/model/ServerTypeJson.java | 0 .../model/SlaveConnectionInfo.java | 0 .../parameterserver/model/SlaveStatus.java | 0 .../model/SubscriberState.java | 0 .../nd4j-parameter-server-node/pom.xml | 40 +- .../pom.xml | 26 +- .../nd4j-parameter-server-status/pom.xml | 28 +- .../nd4j-parameter-server/pom.xml | 35 +- nd4j/nd4j-parameter-server-parent/pom.xml | 65 ++-- nd4j/nd4j-remote/README.md | 0 nd4j/nd4j-serde/nd4j-aeron/LICENSE | 201 ---------- nd4j/nd4j-serde/nd4j-aeron/README.md | 1 - nd4s/.travis.yml | 17 - nd4s/LICENSE | 202 ---------- perform-release.sh | 6 +- pydatavec/.travis.yml | 25 -- pydatavec/LICENSE | 201 ---------- pydatavec/README.md | 1 - pydl4j/LICENSE | 201 ---------- pydl4j/README.md | 1 - rl4j/LICENSE.txt | 201 ---------- rl4j/README.md | 8 +- rl4j/contrib/formatter.xml | 353 ------------------ rl4j/{ => docs/images}/cartpole.gif | Bin rl4j/{ => docs/images}/doom.gif | Bin rl4j/{ => docs/images}/malmo.gif | Bin rl4j/scoregraph.png | Bin 90128 -> 0 bytes scalnet/.travis.yml | 11 - 66 files changed, 125 insertions(+), 4447 deletions(-) delete mode 100644 arbiter/.travis.yml delete mode 100755 arbiter/ci/build-linux-x86_64.sh delete mode 100644 arbiter/ci/settings.xml rename {arbiter/contrib => contrib}/formatter.xml (100%) delete mode 100644 datavec/.travis.yml delete mode 100644 datavec/LICENSE delete mode 100755 datavec/ci/build-linux-x86_64.sh delete mode 100644 datavec/ci/settings.xml delete mode 100644 datavec/contrib/formatter.xml delete mode 100644 deeplearning4j/.travis.yml delete mode 100755 deeplearning4j/LICENSE.txt delete mode 100755 deeplearning4j/ci/build-linux-x86_64.sh delete mode 100644 deeplearning4j/ci/settings.xml delete mode 100644 deeplearning4j/contrib/formatter.xml delete mode 100644 jumpy/.travis.yml delete mode 100644 jumpy/LICENSE delete mode 100755 libnd4j/LICENSE delete mode 100644 nd4j/.appveyor.yml delete mode 100644 nd4j/.codeclimate.yml delete mode 100644 nd4j/.travis.yml delete mode 100644 nd4j/LICENSE delete mode 100644 nd4j/VERSION delete mode 100755 nd4j/buildAllversions.sh delete mode 100755 nd4j/ci/build-android.sh delete mode 100755 nd4j/ci/build-ios.sh delete mode 100755 nd4j/ci/build-linux-x86_64.sh delete mode 100755 nd4j/ci/build-macosx-x86_64.sh delete mode 100644 nd4j/ci/build-windows-x86_64.cmd delete mode 100644 nd4j/ci/settings.xml delete mode 100644 nd4j/contrib/formatter.xml rename nd4j/nd4j-parameter-server-parent/{nd4j-parameterserver-model => nd4j-parameter-server-model}/pom.xml (78%) rename nd4j/nd4j-parameter-server-parent/{nd4j-parameterserver-model => nd4j-parameter-server-model}/src/main/java/org/nd4j/parameterserver/model/MasterConnectionInfo.java (100%) rename nd4j/nd4j-parameter-server-parent/{nd4j-parameterserver-model => nd4j-parameter-server-model}/src/main/java/org/nd4j/parameterserver/model/MasterStatus.java (100%) rename nd4j/nd4j-parameter-server-parent/{nd4j-parameterserver-model => nd4j-parameter-server-model}/src/main/java/org/nd4j/parameterserver/model/ServerState.java (100%) rename nd4j/nd4j-parameter-server-parent/{nd4j-parameterserver-model => nd4j-parameter-server-model}/src/main/java/org/nd4j/parameterserver/model/ServerType.java (100%) rename nd4j/nd4j-parameter-server-parent/{nd4j-parameterserver-model => nd4j-parameter-server-model}/src/main/java/org/nd4j/parameterserver/model/ServerTypeJson.java (100%) rename nd4j/nd4j-parameter-server-parent/{nd4j-parameterserver-model => nd4j-parameter-server-model}/src/main/java/org/nd4j/parameterserver/model/SlaveConnectionInfo.java (100%) rename nd4j/nd4j-parameter-server-parent/{nd4j-parameterserver-model => nd4j-parameter-server-model}/src/main/java/org/nd4j/parameterserver/model/SlaveStatus.java (100%) rename nd4j/nd4j-parameter-server-parent/{nd4j-parameterserver-model => nd4j-parameter-server-model}/src/main/java/org/nd4j/parameterserver/model/SubscriberState.java (100%) delete mode 100644 nd4j/nd4j-remote/README.md delete mode 100644 nd4j/nd4j-serde/nd4j-aeron/LICENSE delete mode 100644 nd4j/nd4j-serde/nd4j-aeron/README.md delete mode 100644 nd4s/.travis.yml delete mode 100644 nd4s/LICENSE delete mode 100644 pydatavec/.travis.yml delete mode 100644 pydatavec/LICENSE delete mode 100644 pydl4j/LICENSE delete mode 100644 rl4j/LICENSE.txt delete mode 100644 rl4j/contrib/formatter.xml rename rl4j/{ => docs/images}/cartpole.gif (100%) rename rl4j/{ => docs/images}/doom.gif (100%) rename rl4j/{ => docs/images}/malmo.gif (100%) delete mode 100644 rl4j/scoregraph.png delete mode 100644 scalnet/.travis.yml diff --git a/arbiter/.travis.yml b/arbiter/.travis.yml deleted file mode 100644 index 30638a6a9..000000000 --- a/arbiter/.travis.yml +++ /dev/null @@ -1,24 +0,0 @@ -branches: - only: - - master -notifications: - email: false -dist: trusty -sudo: false -cache: - directories: - - $HOME/.m2 -language: java -jdk: - - openjdk8 -matrix: - include: - - os: linux - env: OS=linux-x86_64 SCALA=2.10 - install: true - script: bash ./ci/build-linux-x86_64.sh - - os: linux - env: OS=linux-x86_64 SCALA=2.11 - install: true - script: bash ./ci/build-linux-x86_64.sh - diff --git a/arbiter/ci/build-linux-x86_64.sh b/arbiter/ci/build-linux-x86_64.sh deleted file mode 100755 index 7b230df6f..000000000 --- a/arbiter/ci/build-linux-x86_64.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/bash -################################################################################ -# 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 -################################################################################ - -set -evx - -if [[ $TRAVIS_PULL_REQUEST == "false" ]]; then - MAVEN_PHASE="deploy" -else - MAVEN_PHASE="install" -fi - -bash change-scala-versions.sh $SCALA -mvn clean $MAVEN_PHASE -B -U --settings ./ci/settings.xml -Dmaven.test.skip=true -Dlocal.software.repository=sonatype - diff --git a/arbiter/ci/settings.xml b/arbiter/ci/settings.xml deleted file mode 100644 index e6fd58339..000000000 --- a/arbiter/ci/settings.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - sonatype-nexus-snapshots - ${env.SONATYPE_USERNAME} - ${env.SONATYPE_PASSWORD} - - - diff --git a/arbiter/contrib/formatter.xml b/contrib/formatter.xml similarity index 100% rename from arbiter/contrib/formatter.xml rename to contrib/formatter.xml diff --git a/datavec/.travis.yml b/datavec/.travis.yml deleted file mode 100644 index 96c7989e8..000000000 --- a/datavec/.travis.yml +++ /dev/null @@ -1,28 +0,0 @@ -branches: - only: - - master -notifications: - email: false -dist: trusty -sudo: false -cache: - directories: - - $HOME/.m2 -language: java -jdk: - - openjdk8 -matrix: - include: - - os: linux - env: OS=linux-x86_64 SCALA=2.10 SPARK=1 - install: true - script: bash ./ci/build-linux-x86_64.sh - - os: linux - env: OS=linux-x86_64 SCALA=2.11 SPARK=1 - install: true - script: bash ./ci/build-linux-x86_64.sh - - os: linux - env: OS=linux-x86_64 SCALA=2.11 SPARK=2 - install: true - script: bash ./ci/build-linux-x86_64.sh - diff --git a/datavec/LICENSE b/datavec/LICENSE deleted file mode 100644 index ad410e113..000000000 --- a/datavec/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ -Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright {yyyy} {name of copyright owner} - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://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. \ No newline at end of file diff --git a/datavec/ci/build-linux-x86_64.sh b/datavec/ci/build-linux-x86_64.sh deleted file mode 100755 index d28bc32ad..000000000 --- a/datavec/ci/build-linux-x86_64.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/bash -################################################################################ -# 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 -################################################################################ - -set -evx - -if [[ $TRAVIS_PULL_REQUEST == "false" ]]; then - MAVEN_PHASE="deploy" -else - MAVEN_PHASE="install" -fi - -bash change-scala-versions.sh $SCALA -bash change-spark-versions.sh $SPARK -mvn clean $MAVEN_PHASE -B -U --settings ./ci/settings.xml -Dmaven.test.skip=true -Dlocal.software.repository=sonatype - diff --git a/datavec/ci/settings.xml b/datavec/ci/settings.xml deleted file mode 100644 index e6fd58339..000000000 --- a/datavec/ci/settings.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - sonatype-nexus-snapshots - ${env.SONATYPE_USERNAME} - ${env.SONATYPE_PASSWORD} - - - diff --git a/datavec/contrib/formatter.xml b/datavec/contrib/formatter.xml deleted file mode 100644 index d6cc96bf6..000000000 --- a/datavec/contrib/formatter.xml +++ /dev/null @@ -1,353 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/deeplearning4j/.travis.yml b/deeplearning4j/.travis.yml deleted file mode 100644 index 1df95a97f..000000000 --- a/deeplearning4j/.travis.yml +++ /dev/null @@ -1,32 +0,0 @@ -branches: - only: - - master -notifications: - email: false -dist: trusty -sudo: false -cache: - directories: - - $HOME/.m2 -language: java -jdk: - - openjdk8 -matrix: - include: - - os: linux - env: OS=linux-x86_64 CUDA=8.0 CUDNN=6 SCALA=2.10 SPARK=1 - install: true - script: bash ./ci/build-linux-x86_64.sh - - os: linux - env: OS=linux-x86_64 CUDA=9.0 CUDNN=7 SCALA=2.11 SPARK=1 - install: true - script: bash ./ci/build-linux-x86_64.sh - - os: linux - env: OS=linux-x86_64 CUDA=9.0 CUDNN=7 SCALA=2.11 SPARK=2 - install: true - script: bash ./ci/build-linux-x86_64.sh - - os: linux - env: OS=linux-x86_64 CUDA=9.1 CUDNN=7 SCALA=2.11 SPARK=2 - install: true - script: bash ./ci/build-linux-x86_64.sh - diff --git a/deeplearning4j/LICENSE.txt b/deeplearning4j/LICENSE.txt deleted file mode 100755 index f0d9c68a3..000000000 --- a/deeplearning4j/LICENSE.txt +++ /dev/null @@ -1,202 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://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. - diff --git a/deeplearning4j/ci/build-linux-x86_64.sh b/deeplearning4j/ci/build-linux-x86_64.sh deleted file mode 100755 index b8474a793..000000000 --- a/deeplearning4j/ci/build-linux-x86_64.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/bash -################################################################################ -# 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 -################################################################################ - -set -evx - -if [[ $TRAVIS_PULL_REQUEST == "false" ]]; then - MAVEN_PHASE="deploy" -else - MAVEN_PHASE="install" -fi - -bash change-cuda-versions.sh $CUDA -bash change-scala-versions.sh $SCALA -bash change-spark-versions.sh $SPARK -mvn clean $MAVEN_PHASE -B -U --settings ./ci/settings.xml -Dmaven.test.skip=true -Dlocal.software.repository=sonatype - diff --git a/deeplearning4j/ci/settings.xml b/deeplearning4j/ci/settings.xml deleted file mode 100644 index e6fd58339..000000000 --- a/deeplearning4j/ci/settings.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - sonatype-nexus-snapshots - ${env.SONATYPE_USERNAME} - ${env.SONATYPE_PASSWORD} - - - diff --git a/deeplearning4j/contrib/formatter.xml b/deeplearning4j/contrib/formatter.xml deleted file mode 100644 index d6cc96bf6..000000000 --- a/deeplearning4j/contrib/formatter.xml +++ /dev/null @@ -1,353 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jumpy/.travis.yml b/jumpy/.travis.yml deleted file mode 100644 index 42fb54b1a..000000000 --- a/jumpy/.travis.yml +++ /dev/null @@ -1,25 +0,0 @@ -sudo: required -dist: trusty -language: python -python: - - "2.7" - - "3.6" -before_install: - - sudo apt-get install -y python-dev python-pip python-virtualenv pkg-config -install: - - if [[ "$TRAVIS_PYTHON_VERSION" == "2.7" ]]; then - wget https://repo.continuum.io/miniconda/Miniconda-latest-Linux-x86_64.sh -O miniconda.sh; - else - wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh; - fi - - bash miniconda.sh -b -p $HOME/miniconda - - export PATH="$HOME/miniconda/bin:$PATH" - - hash -r - - conda config --set always_yes yes --set changeps1 no - - conda update -q conda - - conda info -a - - travis_retry conda create -q -n test-environment python=$TRAVIS_PYTHON_VERSION nose - - source activate test-environment - - pip install Cython --install-option="--no-cython-compile" - - pip install -e .[tests] -script: py.test --pep8 -m pep8 \ No newline at end of file diff --git a/jumpy/LICENSE b/jumpy/LICENSE deleted file mode 100644 index 8dada3eda..000000000 --- a/jumpy/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright {yyyy} {name of copyright owner} - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://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. diff --git a/libnd4j/CMakeLists.txt b/libnd4j/CMakeLists.txt index 9610d2890..3376bd6b6 100755 --- a/libnd4j/CMakeLists.txt +++ b/libnd4j/CMakeLists.txt @@ -251,7 +251,6 @@ set(CPACK_PACKAGE_VERSION_MINOR "8") set(CPACK_PACKAGE_VERSION_PATCH "0") set(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") set(CPACK_PACKAGE_INSTALL_DIRECTORY "libnd4j") -set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE") set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README.md") # Determine distribution and release — may require redhat-lsb-core installed on CentOS / RH diff --git a/libnd4j/LICENSE b/libnd4j/LICENSE deleted file mode 100755 index 8f71f43fe..000000000 --- a/libnd4j/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright {yyyy} {name of copyright owner} - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://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. - diff --git a/libnd4j/pom.xml b/libnd4j/pom.xml index d682da24c..d1d9944fa 100644 --- a/libnd4j/pom.xml +++ b/libnd4j/pom.xml @@ -1,5 +1,4 @@ - + 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"> + + 4.0.0 org.deeplearning4j @@ -26,8 +27,6 @@ 1.0.0-SNAPSHOT - 4.0.0 - org.nd4j libnd4j pom @@ -38,14 +37,6 @@ http://nd4j.org/ - - - Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - repo - - - agibsonccc @@ -105,7 +96,6 @@ - org.bytedeco javacpp @@ -124,8 +114,10 @@ /org/bytedeco/openblas/${libnd4j.platform}/ - /${javacpp.platform.library.path}/include/ - /org/bytedeco/openblas/${libnd4j.platform}/include/ + /${javacpp.platform.library.path}/include/ + + /org/bytedeco/openblas/${libnd4j.platform}/include/ + /${javacpp.platform.library.path}/ @@ -234,7 +226,6 @@ - build-windows @@ -247,7 +238,6 @@ sh - build-unix @@ -258,8 +248,6 @@ bash - - libnd4j-single-thread @@ -292,7 +280,8 @@ - ${libnd4j.platform}-${libnd4j.chip}-${cuda.version} + ${libnd4j.platform}-${libnd4j.chip}-${cuda.version} + @@ -395,7 +384,6 @@ org.codehaus.mojo exec-maven-plugin 1.6.0 - libnd4j-test-clean @@ -416,9 +404,6 @@ - - - libnd4j-helper-avx2 diff --git a/nd4j/.appveyor.yml b/nd4j/.appveyor.yml deleted file mode 100644 index 28eb2bd76..000000000 --- a/nd4j/.appveyor.yml +++ /dev/null @@ -1,45 +0,0 @@ -branches: - only: - - master -version: '{build}' -image: Visual Studio 2015 -cache: - - '%USERPROFILE%\.m2' -clone_depth: 50 -environment: - matrix: - - EXT: - SCALA: 2.10 - - EXT: avx2 - SCALA: 2.11 -# - EXT: avx512 -# SCALA: 2.11 - - CUDA: 8.0 - SCALA: 2.10 - - CUDA: 9.0 - SCALA: 2.11 - - CUDA: 9.1 - SCALA: 2.11 - -init: - - wmic computersystem set AutomaticManagedPagefile=False - - wmic pagefile list /format:list -# - wmic pagefileset create name="C:\pagefile.sys" - - wmic pagefileset where name="C:\\pagefile.sys" set InitialSize=8192,MaximumSize=8192 - - wmic pagefileset list /format:list - - ps: write-host "Restarting..." - - ps: sleep 5 - - ps: restart-computer -f - - ps: sleep 5 - - ps: write-host "Restarted." - - wmic pagefile list /format:list - -install: - -build_script: - - '%APPVEYOR_BUILD_FOLDER%\ci\build-windows-x86_64.cmd' - -test_script: - -on_finish: - diff --git a/nd4j/.codeclimate.yml b/nd4j/.codeclimate.yml deleted file mode 100644 index 5ce6e83a5..000000000 --- a/nd4j/.codeclimate.yml +++ /dev/null @@ -1,32 +0,0 @@ -version: "2" # required to adjust maintainability checks -checks: - argument-count: - config: - threshold: 4 - complex-logic: - config: - threshold: 4 - file-lines: - config: - threshold: 5000 - method-complexity: - config: - threshold: 10 - method-count: - config: - threshold: 500 - method-lines: - config: - threshold: 50 - nested-control-flow: - config: - threshold: 4 - return-statements: - config: - threshold: 20 - similar-code: - config: - threshold: # language-specific defaults. an override will affect all languages. - identical-code: - config: - threshold: # language-specific defaults. an override will affect all languages. diff --git a/nd4j/.travis.yml b/nd4j/.travis.yml deleted file mode 100644 index f74ab9ba0..000000000 --- a/nd4j/.travis.yml +++ /dev/null @@ -1,96 +0,0 @@ -branches: - only: - - master -notifications: - email: false -dist: trusty -sudo: required -cache: - directories: - - $HOME/.m2 -language: java -services: - - docker -matrix: - include: - - os: linux - env: OS=android-arm SCALA=2.10 - install: true - script: bash ./ci/build-android.sh - - os: linux - env: OS=android-arm64 SCALA=2.11 - install: true - script: bash ./ci/build-android.sh - - os: linux - env: OS=android-x86 SCALA=2.10 - install: true - script: bash ./ci/build-android.sh - - os: linux - env: OS=android-x86_64 SCALA=2.11 - install: true - script: bash ./ci/build-android.sh - - os: osx - osx_image: xcode7.3 - env: OS=ios-arm64 SCALA=2.10 - install: true - script: bash ./ci/build-ios.sh - - os: osx - osx_image: xcode7.3 - env: OS=ios-x86_64 SCALA=2.11 - install: true - script: bash ./ci/build-ios.sh - - os: linux - env: OS=linux-x86_64 SCALA=2.10 - install: true - script: bash ./ci/build-linux-x86_64.sh - - os: linux - env: OS=linux-x86_64 EXT=avx2 SCALA=2.11 - install: true - script: bash ./ci/build-linux-x86_64.sh - - os: linux - env: OS=linux-x86_64 EXT=avx512 SCALA=2.11 - install: true - script: bash ./ci/build-linux-x86_64.sh - - os: linux - env: OS=linux-x86_64 CUDA=8.0 SCALA=2.10 - install: true - script: bash ./ci/build-linux-x86_64.sh - - os: linux - env: OS=linux-x86_64 CUDA=9.0 SCALA=2.11 - install: true - script: bash ./ci/build-linux-x86_64.sh - - os: linux - env: OS=linux-x86_64 CUDA=9.1 SCALA=2.11 - install: true - script: bash ./ci/build-linux-x86_64.sh - - os: osx - osx_image: xcode7.3 - env: OS=macosx-x86_64 SCALA=2.10 - install: true - script: bash ./ci/build-macosx-x86_64.sh - - os: osx - osx_image: xcode7.3 - env: OS=macosx-x86_64 EXT=avx2 SCALA=2.11 - install: true - script: bash ./ci/build-macosx-x86_64.sh - - os: osx - osx_image: xcode9.2 - env: OS=macosx-x86_64 EXT=avx512 SCALA=2.11 - install: true - script: bash ./ci/build-macosx-x86_64.sh - - os: osx - osx_image: xcode7.3 - env: OS=macosx-x86_64 CUDA=8.0 SCALA=2.10 - install: true - script: bash ./ci/build-macosx-x86_64.sh - - os: osx - osx_image: xcode8.3 - env: OS=macosx-x86_64 CUDA=9.0 SCALA=2.11 - install: true - script: bash ./ci/build-macosx-x86_64.sh - - os: osx - osx_image: xcode8.3 - env: OS=macosx-x86_64 CUDA=9.1 SCALA=2.11 - install: true - script: bash ./ci/build-macosx-x86_64.sh - diff --git a/nd4j/LICENSE b/nd4j/LICENSE deleted file mode 100644 index 5c304d1a4..000000000 --- a/nd4j/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ -Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright {yyyy} {name of copyright owner} - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://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. diff --git a/nd4j/VERSION b/nd4j/VERSION deleted file mode 100644 index a1a513826..000000000 --- a/nd4j/VERSION +++ /dev/null @@ -1 +0,0 @@ -0.4-rc3.9-SNAPSHOT diff --git a/nd4j/buildAllversions.sh b/nd4j/buildAllversions.sh deleted file mode 100755 index 4a99b8f74..000000000 --- a/nd4j/buildAllversions.sh +++ /dev/null @@ -1,23 +0,0 @@ -#! /bin/bash -################################################################################ -# 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 -################################################################################ - -set -eu -./change-cuda-versions.sh 9.0 # should be idempotent, this is the default -./buildmultiplescalaversions.sh "$@" -./change-cuda-versions.sh 8.0 -./buildmultiplescalaversions.sh "$@" -./change-cuda-versions.sh 9.0 #back to default diff --git a/nd4j/ci/build-android.sh b/nd4j/ci/build-android.sh deleted file mode 100755 index e31c4f4bb..000000000 --- a/nd4j/ci/build-android.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/bin/bash -################################################################################ -# 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 -################################################################################ - -set -evx - -while true; do echo .; sleep 60; done & - -if [[ $TRAVIS_PULL_REQUEST == "false" ]]; then - BRANCH=$TRAVIS_BRANCH - MAVEN_PHASE="deploy" -else - BRANCH=$TRAVIS_PULL_REQUEST_BRANCH - MAVEN_PHASE="install" -fi - -if ! git -C $TRAVIS_BUILD_DIR/.. clone https://github.com/deeplearning4j/libnd4j/ --depth=50 --branch=$BRANCH; then - git -C $TRAVIS_BUILD_DIR/.. clone https://github.com/deeplearning4j/libnd4j/ --depth=50 -fi - -mkdir $HOME/Android/ -curl --retry 10 -L https://dl.google.com/android/repository/android-ndk-r16b-linux-x86_64.zip -o $HOME/Android/android-ndk.zip -unzip -qq $HOME/Android/android-ndk.zip -d $HOME/Android/ -ln -s $HOME/Android/android-ndk-r16b $HOME/Android/android-ndk -export ANDROID_NDK=$HOME/Android/android-ndk - -cd $TRAVIS_BUILD_DIR/../libnd4j/ -sed -i /cmake_minimum_required/d CMakeLists.txt -MAKEJ=2 bash buildnativeoperations.sh -platform $OS -cd $TRAVIS_BUILD_DIR/ -bash change-scala-versions.sh $SCALA -mvn clean $MAVEN_PHASE -B -U --settings ./ci/settings.xml -Dmaven.javadoc.skip=true -Dmaven.test.skip=true -Dlocal.software.repository=sonatype \ - -Djavacpp.platform=$OS -pl '!nd4j-uberjar,!nd4j-backends/nd4j-backend-impls/nd4j-cuda,!nd4j-backends/nd4j-backend-impls/nd4j-cuda-platform,!nd4j-backends/nd4j-tests' - diff --git a/nd4j/ci/build-ios.sh b/nd4j/ci/build-ios.sh deleted file mode 100755 index aff29566c..000000000 --- a/nd4j/ci/build-ios.sh +++ /dev/null @@ -1,49 +0,0 @@ -#!/bin/bash -################################################################################ -# 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 -################################################################################ - -set -evx - -while true; do echo .; sleep 60; done & - -if [[ $TRAVIS_PULL_REQUEST == "false" ]]; then - BRANCH=$TRAVIS_BRANCH - MAVEN_PHASE="deploy" -else - BRANCH=$TRAVIS_PULL_REQUEST_BRANCH - MAVEN_PHASE="install" -fi - -if ! git -C $TRAVIS_BUILD_DIR/.. clone https://github.com/deeplearning4j/libnd4j/ --depth=50 --branch=$BRANCH; then - git -C $TRAVIS_BUILD_DIR/.. clone https://github.com/deeplearning4j/libnd4j/ --depth=50 -fi - -brew update -brew upgrade maven || true -brew install gcc || true -brew link --overwrite gcc - -/usr/local/bin/gcc-? --version -mvn -version - -cd $TRAVIS_BUILD_DIR/../libnd4j/ -sed -i="" /cmake_minimum_required/d CMakeLists.txt -MAKEJ=2 bash buildnativeoperations.sh -platform $OS -cd $TRAVIS_BUILD_DIR/ -bash change-scala-versions.sh $SCALA -mvn clean $MAVEN_PHASE -B -U --settings ./ci/settings.xml -Dmaven.javadoc.skip=true -Dmaven.test.skip=true -Dlocal.software.repository=sonatype \ - -Djavacpp.platform=$OS -Djavacpp.platform.compiler=clang++ -pl '!nd4j-uberjar,!nd4j-backends/nd4j-backend-impls/nd4j-cuda,!nd4j-backends/nd4j-backend-impls/nd4j-cuda-platform,!nd4j-backends/nd4j-backend-impls/nd4j-native-platform,!nd4j-backends/nd4j-tests' - diff --git a/nd4j/ci/build-linux-x86_64.sh b/nd4j/ci/build-linux-x86_64.sh deleted file mode 100755 index 8fb6c7ae4..000000000 --- a/nd4j/ci/build-linux-x86_64.sh +++ /dev/null @@ -1,77 +0,0 @@ -#!/bin/bash -################################################################################ -# 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 -################################################################################ - -set -evx - -while true; do echo .; sleep 60; done & - -sudo fallocate -l 4GB /swapfile -sudo chmod 600 /swapfile -sudo mkswap /swapfile -sudo swapon /swapfile - -if [[ $TRAVIS_PULL_REQUEST == "false" ]]; then - BRANCH=$TRAVIS_BRANCH - MAVEN_PHASE="deploy" -else - BRANCH=$TRAVIS_PULL_REQUEST_BRANCH - MAVEN_PHASE="install" -fi - -if ! git -C $TRAVIS_BUILD_DIR/.. clone https://github.com/deeplearning4j/libnd4j/ --depth=50 --branch=$BRANCH; then - git -C $TRAVIS_BUILD_DIR/.. clone https://github.com/deeplearning4j/libnd4j/ --depth=50 -fi - -PROTOBUF=3.5.1 -curl --retry 10 -L https://github.com/google/protobuf/releases/download/v$PROTOBUF/protobuf-cpp-$PROTOBUF.tar.gz -o $HOME/protobuf-$PROTOBUF.tar.gz -tar -C $TRAVIS_BUILD_DIR/.. --totals -xf $HOME/protobuf-$PROTOBUF.tar.gz - -if [[ -n "${EXT:-}" ]]; then - DEVTOOLSET=6 -else - DEVTOOLSET=4 -fi - -if [[ -n "${CUDA:-}" ]]; then - DOCKER_IMAGE=nvidia/cuda:$CUDA-devel-centos6 -else - DOCKER_IMAGE=centos:6 -fi - -docker run -ti -e SONATYPE_USERNAME -e SONATYPE_PASSWORD -v $HOME/.m2:/root/.m2 -v $TRAVIS_BUILD_DIR/..:/build $DOCKER_IMAGE /bin/bash -evxc "\ - yum -y install centos-release-scl-rh epel-release; \ - yum -y install devtoolset-$DEVTOOLSET-toolchain rh-maven33 cmake3 git java-1.8.0-openjdk-devel; \ - source scl_source enable devtoolset-$DEVTOOLSET rh-maven33 || true; \ - cd /build/protobuf-$PROTOBUF/; \ - ./configure; \ - make -j2; \ - cd /build/libnd4j/; \ - sed -i /cmake_minimum_required/d CMakeLists.txt; \ - if [[ -n \"${CUDA:-}\" ]]; then \ - MAKEJ=1 bash buildnativeoperations.sh -c cuda -v $CUDA -cc 30; \ - cd /build/nd4j/; \ - bash change-cuda-versions.sh $CUDA; \ - EXTRA_OPTIONS='-pl !nd4j-uberjar,!nd4j-backends/nd4j-backend-impls/nd4j-native,!nd4j-backends/nd4j-backend-impls/nd4j-native-platform,!nd4j-backends/nd4j-tests'; \ - else \ - MAKEJ=2 bash buildnativeoperations.sh -c cpu -e ${EXT:-}; \ - cd /build/nd4j/; \ - EXTRA_OPTIONS='-pl !nd4j-uberjar,!nd4j-backends/nd4j-backend-impls/nd4j-cuda,!nd4j-backends/nd4j-backend-impls/nd4j-cuda-platform,!nd4j-backends/nd4j-tests'; \ - fi; \ - bash change-scala-versions.sh $SCALA; \ - mvn clean $MAVEN_PHASE -B -U --settings ./ci/settings.xml -Dmaven.test.skip=true -Dlocal.software.repository=sonatype \ - -Dlibnd4j.extension=${EXT:-} \$EXTRA_OPTIONS -DprotocCommand=/build/protobuf-$PROTOBUF/src/protoc;" - diff --git a/nd4j/ci/build-macosx-x86_64.sh b/nd4j/ci/build-macosx-x86_64.sh deleted file mode 100755 index 98abb17c4..000000000 --- a/nd4j/ci/build-macosx-x86_64.sh +++ /dev/null @@ -1,71 +0,0 @@ -#!/bin/bash -################################################################################ -# 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 -################################################################################ - -set -evx - -while true; do echo .; sleep 60; done & - -if [[ $TRAVIS_PULL_REQUEST == "false" ]]; then - BRANCH=$TRAVIS_BRANCH - MAVEN_PHASE="deploy" -else - BRANCH=$TRAVIS_PULL_REQUEST_BRANCH - MAVEN_PHASE="install" -fi - -if ! git -C $TRAVIS_BUILD_DIR/.. clone https://github.com/deeplearning4j/libnd4j/ --depth=50 --branch=$BRANCH; then - git -C $TRAVIS_BUILD_DIR/.. clone https://github.com/deeplearning4j/libnd4j/ --depth=50 -fi - -brew update -brew upgrade maven || true -brew install gcc || true -brew link --overwrite gcc - -/usr/local/bin/gcc-? --version -mvn -version - -if [[ "${CUDA:-}" == "8.0" ]]; then - CUDA_URL=https://developer.nvidia.com/compute/cuda/8.0/Prod2/local_installers/cuda_8.0.61_mac-dmg -elif [[ "${CUDA:-}" == "9.0" ]]; then - CUDA_URL=https://developer.nvidia.com/compute/cuda/9.0/Prod/local_installers/cuda_9.0.176_mac-dmg -elif [[ "${CUDA:-}" == "9.1" ]]; then - CUDA_URL=https://developer.nvidia.com/compute/cuda/9.1/Prod/local_installers/cuda_9.1.85_mac -fi -if [[ -n ${CUDA_URL:-} ]]; then - curl --retry 10 -L -o $HOME/cuda.dmg $CUDA_URL - hdiutil mount $HOME/cuda.dmg - sleep 5 - sudo /Volumes/CUDAMacOSXInstaller/CUDAMacOSXInstaller.app/Contents/MacOS/CUDAMacOSXInstaller --accept-eula --no-window -fi - -cd $TRAVIS_BUILD_DIR/../libnd4j/ -sed -i="" /cmake_minimum_required/d CMakeLists.txt -if [[ -n "${CUDA:-}" ]]; then - MAKEJ=1 bash buildnativeoperations.sh -c cuda -v $CUDA -cc 30 - cd $TRAVIS_BUILD_DIR/ - bash change-cuda-versions.sh $CUDA - EXTRA_OPTIONS='-pl !nd4j-uberjar,!nd4j-backends/nd4j-backend-impls/nd4j-native,!nd4j-backends/nd4j-backend-impls/nd4j-native-platform,!nd4j-backends/nd4j-tests' -else - MAKEJ=2 bash buildnativeoperations.sh -c cpu -e ${EXT:-} - cd $TRAVIS_BUILD_DIR/ - EXTRA_OPTIONS='-pl !nd4j-uberjar,!nd4j-backends/nd4j-backend-impls/nd4j-cuda,!nd4j-backends/nd4j-backend-impls/nd4j-cuda-platform,!nd4j-backends/nd4j-tests' -fi -bash change-scala-versions.sh $SCALA -mvn clean $MAVEN_PHASE -B -U --settings ./ci/settings.xml -Dmaven.javadoc.skip=true -Dmaven.test.skip=true -Dlocal.software.repository=sonatype \ - -Dlibnd4j.extension=${EXT:-} $EXTRA_OPTIONS - diff --git a/nd4j/ci/build-windows-x86_64.cmd b/nd4j/ci/build-windows-x86_64.cmd deleted file mode 100644 index 5f7af7bd8..000000000 --- a/nd4j/ci/build-windows-x86_64.cmd +++ /dev/null @@ -1,49 +0,0 @@ -call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64 -echo on - -if "%APPVEYOR_PULL_REQUEST_NUMBER%" == "" ( - set BRANCH=%APPVEYOR_REPO_BRANCH% - set MAVEN_PHASE=deploy -) else ( - set BRANCH=%APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH% - set MAVEN_PHASE=install -) - -git -C "%APPVEYOR_BUILD_FOLDER%\.." clone https://github.com/deeplearning4j/libnd4j/ --depth=50 --branch=%BRANCH% -if %ERRORLEVEL% neq 0 ( - git -C "%APPVEYOR_BUILD_FOLDER%\.." clone https://github.com/deeplearning4j/libnd4j/ --depth=50 -) - -if "%CUDA%" == "8.0" ( - set "CUDA_URL=https://developer.nvidia.com/compute/cuda/8.0/Prod2/local_installers/cuda_8.0.61_windows-exe" -) -if "%CUDA%" == "9.0" ( - set "CUDA_URL=https://developer.nvidia.com/compute/cuda/9.0/Prod/local_installers/cuda_9.0.176_windows-exe" -) -if "%CUDA%" == "9.1" ( - set "CUDA_URL=https://developer.nvidia.com/compute/cuda/9.1/Prod/local_installers/cuda_9.1.85_windows" -) -if not "%CUDA_URL%" == "" ( - curl --retry 10 -L -o cuda.exe %CUDA_URL% - cuda.exe -s - set "CUDA_PATH=%ProgramFiles%\NVIDIA GPU Computing Toolkit\CUDA\v%CUDA%" - set "CUDA_PATH_V%CUDA:.=_%=%ProgramFiles%\NVIDIA GPU Computing Toolkit\CUDA\v%CUDA%" - set "PATH=%ProgramFiles%\NVIDIA GPU Computing Toolkit\CUDA\v%CUDA%\bin;%ProgramFiles%\NVIDIA GPU Computing Toolkit\CUDA\v%CUDA%\libnvvp;%PATH%" -) - -set "PATH=C:\msys64\usr\bin\core_perl;C:\msys64\mingw64\bin;C:\msys64\usr\bin;%PATH%" -bash -lc "pacman -Syu --noconfirm" -bash -lc "pacman -Su --noconfirm" -bash -lc "pacman -S --needed --noconfirm base-devel make mingw-w64-x86_64-cmake mingw-w64-x86_64-gcc" - -if not "%CUDA%" == "" ( - bash -c "cd ../libnd4j/; MAKEJ=1 bash buildnativeoperations.sh -c cuda -v $CUDA -cc 30" - bash -c "bash change-cuda-versions.sh $CUDA" - set "EXTRA_OPTIONS=-pl !nd4j-uberjar,!nd4j-backends/nd4j-backend-impls/nd4j-native,!nd4j-backends/nd4j-backend-impls/nd4j-native-platform,!nd4j-backends/nd4j-tests" -) else ( - bash -c "cd ../libnd4j/; MAKEJ=2 bash buildnativeoperations.sh -c cpu -e $EXT" - set "EXTRA_OPTIONS=-pl !nd4j-uberjar,!nd4j-backends/nd4j-backend-impls/nd4j-cuda,!nd4j-backends/nd4j-backend-impls/nd4j-cuda-platform,!nd4j-backends/nd4j-tests" -) -bash -c "bash change-scala-versions.sh $SCALA" -call mvn clean %MAVEN_PHASE% -B -U --settings .\ci\settings.xml -Dmaven.test.skip=true -Dlocal.software.repository=sonatype ^ - -Dlibnd4j.extension=%EXT% %EXTRA_OPTIONS% diff --git a/nd4j/ci/settings.xml b/nd4j/ci/settings.xml deleted file mode 100644 index e6fd58339..000000000 --- a/nd4j/ci/settings.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - sonatype-nexus-snapshots - ${env.SONATYPE_USERNAME} - ${env.SONATYPE_PASSWORD} - - - diff --git a/nd4j/contrib/formatter.xml b/nd4j/contrib/formatter.xml deleted file mode 100644 index d6cc96bf6..000000000 --- a/nd4j/contrib/formatter.xml +++ /dev/null @@ -1,353 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/nd4j/nd4j-parameter-server-parent/nd4j-parameter-server-client/pom.xml b/nd4j/nd4j-parameter-server-parent/nd4j-parameter-server-client/pom.xml index 5b237f65c..75024af0f 100644 --- a/nd4j/nd4j-parameter-server-parent/nd4j-parameter-server-client/pom.xml +++ b/nd4j/nd4j-parameter-server-parent/nd4j-parameter-server-client/pom.xml @@ -1,3 +1,4 @@ + - - - nd4j-parameter-server-parent - org.nd4j - 1.0.0-SNAPSHOT - + + 4.0.0 + + org.nd4j + nd4j-parameter-server-parent + 1.0.0-SNAPSHOT + + nd4j-parameter-server-client - jar nd4j-parameter-server-client @@ -34,7 +37,6 @@ unirest-java ${unirest.version} - org.nd4j nd4j-parameter-server-model @@ -58,22 +60,17 @@ org.nd4j nd4j-parameter-server - ${project.version} test - ch.qos.logback logback-classic ${logback.version} test - org.nd4j nd4j-common-tests - ${project.version} - test @@ -81,11 +78,9 @@ testresources - nd4j-testresources - nd4j-tests-cpu @@ -116,7 +111,6 @@ - nd4j-tests-cuda diff --git a/nd4j/nd4j-parameter-server-parent/nd4j-parameterserver-model/pom.xml b/nd4j/nd4j-parameter-server-parent/nd4j-parameter-server-model/pom.xml similarity index 78% rename from nd4j/nd4j-parameter-server-parent/nd4j-parameterserver-model/pom.xml rename to nd4j/nd4j-parameter-server-parent/nd4j-parameter-server-model/pom.xml index 350f53806..07d99e966 100644 --- a/nd4j/nd4j-parameter-server-parent/nd4j-parameterserver-model/pom.xml +++ b/nd4j/nd4j-parameter-server-parent/nd4j-parameter-server-model/pom.xml @@ -1,3 +1,4 @@ + - - - nd4j-parameter-server-parent - org.nd4j - 1.0.0-SNAPSHOT - + + 4.0.0 + + org.nd4j + nd4j-parameter-server-parent + 1.0.0-SNAPSHOT + + nd4j-parameter-server-model - jar nd4j-parameter-server-model UTF-8 - 1.8 - 1.8 diff --git a/nd4j/nd4j-parameter-server-parent/nd4j-parameterserver-model/src/main/java/org/nd4j/parameterserver/model/MasterConnectionInfo.java b/nd4j/nd4j-parameter-server-parent/nd4j-parameter-server-model/src/main/java/org/nd4j/parameterserver/model/MasterConnectionInfo.java similarity index 100% rename from nd4j/nd4j-parameter-server-parent/nd4j-parameterserver-model/src/main/java/org/nd4j/parameterserver/model/MasterConnectionInfo.java rename to nd4j/nd4j-parameter-server-parent/nd4j-parameter-server-model/src/main/java/org/nd4j/parameterserver/model/MasterConnectionInfo.java diff --git a/nd4j/nd4j-parameter-server-parent/nd4j-parameterserver-model/src/main/java/org/nd4j/parameterserver/model/MasterStatus.java b/nd4j/nd4j-parameter-server-parent/nd4j-parameter-server-model/src/main/java/org/nd4j/parameterserver/model/MasterStatus.java similarity index 100% rename from nd4j/nd4j-parameter-server-parent/nd4j-parameterserver-model/src/main/java/org/nd4j/parameterserver/model/MasterStatus.java rename to nd4j/nd4j-parameter-server-parent/nd4j-parameter-server-model/src/main/java/org/nd4j/parameterserver/model/MasterStatus.java diff --git a/nd4j/nd4j-parameter-server-parent/nd4j-parameterserver-model/src/main/java/org/nd4j/parameterserver/model/ServerState.java b/nd4j/nd4j-parameter-server-parent/nd4j-parameter-server-model/src/main/java/org/nd4j/parameterserver/model/ServerState.java similarity index 100% rename from nd4j/nd4j-parameter-server-parent/nd4j-parameterserver-model/src/main/java/org/nd4j/parameterserver/model/ServerState.java rename to nd4j/nd4j-parameter-server-parent/nd4j-parameter-server-model/src/main/java/org/nd4j/parameterserver/model/ServerState.java diff --git a/nd4j/nd4j-parameter-server-parent/nd4j-parameterserver-model/src/main/java/org/nd4j/parameterserver/model/ServerType.java b/nd4j/nd4j-parameter-server-parent/nd4j-parameter-server-model/src/main/java/org/nd4j/parameterserver/model/ServerType.java similarity index 100% rename from nd4j/nd4j-parameter-server-parent/nd4j-parameterserver-model/src/main/java/org/nd4j/parameterserver/model/ServerType.java rename to nd4j/nd4j-parameter-server-parent/nd4j-parameter-server-model/src/main/java/org/nd4j/parameterserver/model/ServerType.java diff --git a/nd4j/nd4j-parameter-server-parent/nd4j-parameterserver-model/src/main/java/org/nd4j/parameterserver/model/ServerTypeJson.java b/nd4j/nd4j-parameter-server-parent/nd4j-parameter-server-model/src/main/java/org/nd4j/parameterserver/model/ServerTypeJson.java similarity index 100% rename from nd4j/nd4j-parameter-server-parent/nd4j-parameterserver-model/src/main/java/org/nd4j/parameterserver/model/ServerTypeJson.java rename to nd4j/nd4j-parameter-server-parent/nd4j-parameter-server-model/src/main/java/org/nd4j/parameterserver/model/ServerTypeJson.java diff --git a/nd4j/nd4j-parameter-server-parent/nd4j-parameterserver-model/src/main/java/org/nd4j/parameterserver/model/SlaveConnectionInfo.java b/nd4j/nd4j-parameter-server-parent/nd4j-parameter-server-model/src/main/java/org/nd4j/parameterserver/model/SlaveConnectionInfo.java similarity index 100% rename from nd4j/nd4j-parameter-server-parent/nd4j-parameterserver-model/src/main/java/org/nd4j/parameterserver/model/SlaveConnectionInfo.java rename to nd4j/nd4j-parameter-server-parent/nd4j-parameter-server-model/src/main/java/org/nd4j/parameterserver/model/SlaveConnectionInfo.java diff --git a/nd4j/nd4j-parameter-server-parent/nd4j-parameterserver-model/src/main/java/org/nd4j/parameterserver/model/SlaveStatus.java b/nd4j/nd4j-parameter-server-parent/nd4j-parameter-server-model/src/main/java/org/nd4j/parameterserver/model/SlaveStatus.java similarity index 100% rename from nd4j/nd4j-parameter-server-parent/nd4j-parameterserver-model/src/main/java/org/nd4j/parameterserver/model/SlaveStatus.java rename to nd4j/nd4j-parameter-server-parent/nd4j-parameter-server-model/src/main/java/org/nd4j/parameterserver/model/SlaveStatus.java diff --git a/nd4j/nd4j-parameter-server-parent/nd4j-parameterserver-model/src/main/java/org/nd4j/parameterserver/model/SubscriberState.java b/nd4j/nd4j-parameter-server-parent/nd4j-parameter-server-model/src/main/java/org/nd4j/parameterserver/model/SubscriberState.java similarity index 100% rename from nd4j/nd4j-parameter-server-parent/nd4j-parameterserver-model/src/main/java/org/nd4j/parameterserver/model/SubscriberState.java rename to nd4j/nd4j-parameter-server-parent/nd4j-parameter-server-model/src/main/java/org/nd4j/parameterserver/model/SubscriberState.java diff --git a/nd4j/nd4j-parameter-server-parent/nd4j-parameter-server-node/pom.xml b/nd4j/nd4j-parameter-server-parent/nd4j-parameter-server-node/pom.xml index f1c168c33..07a04f80d 100644 --- a/nd4j/nd4j-parameter-server-parent/nd4j-parameter-server-node/pom.xml +++ b/nd4j/nd4j-parameter-server-parent/nd4j-parameter-server-node/pom.xml @@ -1,3 +1,4 @@ + - - - nd4j-parameter-server-parent - org.nd4j - 1.0.0-SNAPSHOT - + + 4.0.0 + + org.nd4j + nd4j-parameter-server-parent + 1.0.0-SNAPSHOT + + nd4j-parameter-server-node_2.11 - jar nd4j-parameter-server-node - - - - org.apache.maven.plugins - maven-compiler-plugin - - 8 - 8 - - - - @@ -64,27 +55,21 @@ org.nd4j nd4j-parameter-server - ${project.version} - ch.qos.logback logback-classic ${logback.version} test - io.reactivex.rxjava2 rxjava 2.2.0 - org.nd4j nd4j-common-tests - ${project.version} - test @@ -92,11 +77,9 @@ testresources - nd4j-testresources - nd4j-tests-cpu @@ -127,7 +110,6 @@ - nd4j-tests-cuda diff --git a/nd4j/nd4j-parameter-server-parent/nd4j-parameter-server-rocksdb-storage/pom.xml b/nd4j/nd4j-parameter-server-parent/nd4j-parameter-server-rocksdb-storage/pom.xml index 3ba5a156a..733d1ae1b 100644 --- a/nd4j/nd4j-parameter-server-parent/nd4j-parameter-server-rocksdb-storage/pom.xml +++ b/nd4j/nd4j-parameter-server-parent/nd4j-parameter-server-rocksdb-storage/pom.xml @@ -1,3 +1,4 @@ + - - - nd4j-parameter-server-parent - org.nd4j - 1.0.0-SNAPSHOT - + + 4.0.0 + + org.nd4j + nd4j-parameter-server-parent + 1.0.0-SNAPSHOT + + nd4j-parameter-server-rocksdb-storage - jar nd4j-parameter-server-rocksdb-storage - org.rocksdb @@ -38,20 +40,14 @@ org.nd4j nd4j-parameter-server - ${project.version} - junit junit - test - org.nd4j nd4j-common-tests - ${project.version} - test diff --git a/nd4j/nd4j-parameter-server-parent/nd4j-parameter-server-status/pom.xml b/nd4j/nd4j-parameter-server-parent/nd4j-parameter-server-status/pom.xml index 7c2783904..f24a1de89 100644 --- a/nd4j/nd4j-parameter-server-parent/nd4j-parameter-server-status/pom.xml +++ b/nd4j/nd4j-parameter-server-parent/nd4j-parameter-server-status/pom.xml @@ -1,3 +1,4 @@ + - - - nd4j-parameter-server-parent - org.nd4j - 1.0.0-SNAPSHOT - + + 4.0.0 + + org.nd4j + nd4j-parameter-server-parent + 1.0.0-SNAPSHOT + + nd4j-parameter-server-status_2.11 - jar nd4j-parameter-server-status @@ -41,25 +44,19 @@ mapdb ${mapdb.version} - org.nd4j nd4j-parameter-server - ${project.version} - junit junit - test - com.typesafe.play play-netty-server_2.11 ${playframework.version} - com.typesafe.play play-java_2.11 @@ -95,12 +92,9 @@ - org.nd4j nd4j-common-tests - ${project.version} - test diff --git a/nd4j/nd4j-parameter-server-parent/nd4j-parameter-server/pom.xml b/nd4j/nd4j-parameter-server-parent/nd4j-parameter-server/pom.xml index d96eb02f4..0325f2d52 100644 --- a/nd4j/nd4j-parameter-server-parent/nd4j-parameter-server/pom.xml +++ b/nd4j/nd4j-parameter-server-parent/nd4j-parameter-server/pom.xml @@ -1,3 +1,4 @@ + - - - nd4j-parameter-server-parent - org.nd4j - 1.0.0-SNAPSHOT - + + 4.0.0 + + org.nd4j + nd4j-parameter-server-parent + 1.0.0-SNAPSHOT + + nd4j-parameter-server - jar nd4j-parameter-server @@ -34,6 +37,11 @@ nd4j-parameter-server-model ${project.version} + + org.nd4j + nd4j-aeron + ${project.version} + org.slf4j slf4j-log4j12 @@ -43,11 +51,6 @@ junit junit - - org.nd4j - nd4j-aeron - ${project.version} - com.beust jcommander @@ -58,12 +61,9 @@ unirest-java ${unirest.version} - org.nd4j nd4j-common-tests - ${project.version} - test @@ -71,11 +71,9 @@ testresources - nd4j-testresources - nd4j-tests-cpu @@ -106,7 +104,6 @@ - nd4j-tests-cuda diff --git a/nd4j/nd4j-parameter-server-parent/pom.xml b/nd4j/nd4j-parameter-server-parent/pom.xml index 4d77e3e96..3a160d2e3 100644 --- a/nd4j/nd4j-parameter-server-parent/pom.xml +++ b/nd4j/nd4j-parameter-server-parent/pom.xml @@ -1,3 +1,4 @@ + - + + + 4.0.0 + - nd4j org.nd4j + nd4j 1.0.0-SNAPSHOT - 4.0.0 nd4j-parameter-server-parent pom nd4j-parameter-server-parent + + nd4j-parameter-server + nd4j-parameter-server-client + nd4j-parameter-server-model + nd4j-parameter-server-status + nd4j-parameter-server-rocksdb-storage + nd4j-parameter-server-node + + + + 1.8 + 1.8 + + + + + + org.nd4j + nd4j-common-tests + ${project.version} + test + + + org.nd4j + nd4j-parameter-server + ${project.version} + + + @@ -52,12 +85,10 @@ - com.google.code.play2-maven-plugin play2-maven-plugin ${maven-play2-plugin.version} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/rl4j/cartpole.gif b/rl4j/docs/images/cartpole.gif similarity index 100% rename from rl4j/cartpole.gif rename to rl4j/docs/images/cartpole.gif diff --git a/rl4j/doom.gif b/rl4j/docs/images/doom.gif similarity index 100% rename from rl4j/doom.gif rename to rl4j/docs/images/doom.gif diff --git a/rl4j/malmo.gif b/rl4j/docs/images/malmo.gif similarity index 100% rename from rl4j/malmo.gif rename to rl4j/docs/images/malmo.gif diff --git a/rl4j/scoregraph.png b/rl4j/scoregraph.png deleted file mode 100644 index dd317734e30c3098de168d3184b1f5edd04aa49b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90128 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

HRZC?`XI~fXyfEEB&la`UiFol|q}7 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�xLd15%*c=qKPbmNyTI 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 diff --git a/scalnet/.travis.yml b/scalnet/.travis.yml deleted file mode 100644 index b6879f83d..000000000 --- a/scalnet/.travis.yml +++ /dev/null @@ -1,11 +0,0 @@ -language: scala -scala: dummy -jdk: oraclejdk8 - -script: - - sbt ++2.11.12 clean compile test - - sbt ++2.10.7 clean compile test - - ./change-scala-versions.sh "2.11" - - mvn -q clean package - - ./change-scala-versions.sh "2.10" - - mvn -q clean package