/* * ****************************************************************************** * * * * * * This program and the accompanying materials are made available under the * * terms of the Apache License, Version 2.0 which is available at * * https://www.apache.org/licenses/LICENSE-2.0. * * * * See the NOTICE file distributed with this work for additional * * information regarding copyright ownership. * * Unless required by applicable law or agreed to in writing, software * * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * * License for the specific language governing permissions and limitations * * under the License. * * * * SPDX-License-Identifier: Apache-2.0 * ***************************************************************************** */ // // Created by raver119 on 2018-09-16. // @author Oleg Semeniv // @author Abdelrauf #ifndef DEV_TESTS_NDARRAYFACTORY_H #define DEV_TESTS_NDARRAYFACTORY_H #include #include #include #include #include namespace sd { class SD_LIB_EXPORT NDArrayFactory { private: template static void memcpyFromVector(void *ptr, const std::vector &vector); public: template static NDArray *empty_(LaunchContext *context = LaunchContext ::defaultContext()); static NDArray *empty_(DataType dataType, LaunchContext *context = LaunchContext ::defaultContext()); template static NDArray empty(LaunchContext *context = LaunchContext ::defaultContext()); static NDArray empty(DataType dataType, LaunchContext *context = LaunchContext ::defaultContext()); template static NDArray *valueOf(const std::initializer_list &shape, T value, char order = 'c', LaunchContext *context = LaunchContext ::defaultContext()); template static NDArray *valueOf(std::vector &shape, T value, const char order = 'c', LaunchContext *context = LaunchContext ::defaultContext()); static NDArray *valueOf(std::vector &shape, NDArray&value, const char order = 'c', LaunchContext *context = LaunchContext ::defaultContext()); template static NDArray *linspace(T from, T to, LongType numElements); static NDArray create(ShapeDescriptor *shapeDescriptor, LaunchContext *context = LaunchContext ::defaultContext()); static NDArray create(DataType dtype, LaunchContext *context = LaunchContext ::defaultContext()); template static NDArray *create_(const T value, LaunchContext *context = LaunchContext ::defaultContext()); static NDArray *create_(DataType dtype, LaunchContext *context = LaunchContext ::defaultContext()); template static NDArray create(const T value, LaunchContext *context = LaunchContext ::defaultContext()); template static NDArray create(DataType type, const T scalar, LaunchContext *context = LaunchContext ::defaultContext()); template static NDArray *vector(LongType length, T startingValue = (T)0, LaunchContext *context = LaunchContext ::defaultContext()); template static NDArray *create_(const char order, std::vector &shape, LaunchContext *context = LaunchContext ::defaultContext()); static NDArray *create_(const char order, std::vector &shape, DataType dataType, LaunchContext *context = LaunchContext ::defaultContext()); template static NDArray *create_(char order, const std::vector &shape, const std::vector &data, LaunchContext *context = LaunchContext ::defaultContext()); template static NDArray create(char order, const std::vector &shape, const std::vector &data, LaunchContext *context = LaunchContext ::defaultContext()); template static NDArray create(char order, const std::vector &shape, LaunchContext *context = LaunchContext ::defaultContext()); static NDArray create(char order, const std::vector &shape, DataType dtype, LaunchContext *context = LaunchContext ::defaultContext()); template static NDArray create(const std::vector &values, LaunchContext *context = LaunchContext ::defaultContext()); #ifndef __JAVACPP_HACK__ // this method only available out of javacpp template static NDArray create(T *buffer, char order, const std::initializer_list &shape, LaunchContext *context = LaunchContext ::defaultContext()); /** * This method creates NDArray from .npy file * @param fileName * @return */ static NDArray fromNpyFile(const char *fileName); #if defined(HAS_UTF8) /** * This factory create array from utf8 string * @return NDArray default dataType UTF8 */ static NDArray string(const char *string, DataType dtype = UTF8, LaunchContext *context = LaunchContext ::defaultContext()); static NDArray *string_(const char *string, DataType dtype = UTF8, LaunchContext *context = LaunchContext ::defaultContext()); static NDArray *string_(const std::string &string, DataType dtype = UTF8, LaunchContext *context = LaunchContext ::defaultContext()); static NDArray string(const std::string &string, DataType dtype = UTF8, LaunchContext *context = LaunchContext::defaultContext()); static NDArray string(std::vector &shape, const std::vector &strings, DataType dataType = UTF8, LaunchContext *context = LaunchContext ::defaultContext()); static NDArray string(std::vector &shape, const std::vector &string, DataType dataType = UTF8, LaunchContext *context = LaunchContext ::defaultContext()); static NDArray *string_(std::vector &shape, const std::vector &strings, DataType dataType = UTF8, LaunchContext *context = LaunchContext ::defaultContext()); static NDArray *string_(std::vector &shape, const std::vector &string, DataType dataType = UTF8, LaunchContext *context = LaunchContext ::defaultContext()); #endif #if defined(HAS_UTF16) /** * This factory create array from utf16 string * @return NDArray default dataType UTF16 */ static NDArray string(const char16_t *u16string, DataType dtype = UTF16, LaunchContext *context = LaunchContext::defaultContext()); static NDArray *string_(const char16_t *u16string, DataType dtype = UTF16, LaunchContext *context = LaunchContext::defaultContext()); static NDArray *string_(const std::u16string &u16string, DataType dtype = UTF16, LaunchContext *context = LaunchContext::defaultContext()); static NDArray string(const std::u16string &u16string, DataType dtype = UTF16, LaunchContext *context = LaunchContext::defaultContext()); /** * This factory create array from vector of utf16 strings * @return NDArray default dataType UTF16 */ static NDArray string(std::vector &shape, const std::initializer_list &strings, DataType dataType = UTF16, LaunchContext *context = LaunchContext::defaultContext()); static NDArray string(std::vector &shape, const std::initializer_list &string, DataType dataType = UTF16, LaunchContext *context = LaunchContext::defaultContext()); static NDArray string(std::vector &shape, const std::vector &strings, DataType dataType = UTF16, LaunchContext *context = LaunchContext::defaultContext()); static NDArray string(std::vector &shape, const std::vector &string, DataType dtype = UTF16, LaunchContext *context = LaunchContext::defaultContext()); static NDArray *string_(std::vector &shape, const std::initializer_list &strings, DataType dataType = UTF16, LaunchContext *context = LaunchContext::defaultContext()); static NDArray *string_(std::vector &shape, const std::initializer_list &string, DataType dataType = UTF16, LaunchContext *context = LaunchContext::defaultContext()); static NDArray *string_(std::vector &shape, const std::vector &strings, DataType dataType = UTF16, LaunchContext *context = LaunchContext::defaultContext()); static NDArray *string_(std::vector &shape, const std::vector &string, DataType dataType = UTF16, LaunchContext *context = LaunchContext::defaultContext()); #endif #if defined(HAS_UTF32) /** * This factory create array from utf32 string * @return NDArray default dataType UTF32 */ static NDArray string(const char32_t *u32string, DataType dtype = UTF32, LaunchContext *context = LaunchContext::defaultContext()); static NDArray *string_(const char32_t *u32string, DataType dtype = UTF32, LaunchContext *context = LaunchContext::defaultContext()); static NDArray *string_(const std::u32string &u32string, DataType dtype = UTF32, LaunchContext *context = LaunchContext::defaultContext()); static NDArray string(const std::u32string &u32string, DataType dtype = UTF32, LaunchContext *context = LaunchContext::defaultContext()); /** * This factory create array from vector of utf32 strings * @return NDArray default dataType UTF32 */ static NDArray string(std::vector &shape, const std::initializer_list &strings, DataType dataType = UTF32, LaunchContext *context = LaunchContext::defaultContext()); static NDArray string(std::vector &shape, const std::initializer_list &string, DataType dataType = UTF32, LaunchContext *context = LaunchContext::defaultContext()); static NDArray string(std::vector &shape, const std::vector &strings, DataType dtype, LaunchContext *context); static NDArray string(std::vector &shape, const std::vector &string, DataType dtype = UTF32, LaunchContext *context = LaunchContext::defaultContext()); static NDArray *string_(std::vector &shape, const std::initializer_list &strings, DataType dataType = UTF32, LaunchContext *context = LaunchContext::defaultContext()); static NDArray *string_(std::vector &shape, const std::initializer_list &string, DataType dataType = UTF32, LaunchContext *context = LaunchContext::defaultContext()); static NDArray *string_(std::vector &shape, const std::vector &strings, DataType dataType = UTF32, LaunchContext *context = LaunchContext::defaultContext()); static NDArray *string_(std::vector &shape, const std::vector &string, DataType dataType = UTF32, LaunchContext *context = LaunchContext::defaultContext()); #endif #endif }; } // namespace sd #endif // DEV_TESTS_NDARRAYFACTORY_H