Announcement

Collapse
No announcement yet.

AMD ZenDNN 4.1 Released For Speeding Up Deep Learning Inference On Ryzen / EPYC CPUs

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • AMD ZenDNN 4.1 Released For Speeding Up Deep Learning Inference On Ryzen / EPYC CPUs

    Phoronix: AMD ZenDNN 4.1 Released For Speeding Up Deep Learning Inference On Ryzen / EPYC CPUs

    AMD on Thursday released ZenDNN 4.1 as the newest release of their Zen Deep Neural Network Library for accelerating inference workloads on AMD Ryzen and EPYC processors. The ZenDNN library remains API compatible with Intel's oneDNN library and helps for building out optimized AI workloads for use on AMD Zen processors...

    Phoronix, Linux Hardware Reviews, Linux hardware benchmarks, Linux server benchmarks, Linux benchmarking, Desktop Linux, Linux performance, Open Source graphics, Linux How To, Ubuntu benchmarks, Ubuntu hardware, Phoronix Test Suite

  • #2
    ZenDNN is not and never were API compatible with oneDNN.

    inc/zendnn.hpp:
    Code:
    /// ZENDNN namespace
    namespace zendnn {
    
    /// @addtogroup zendnn_api_utils Utilities
    /// Utility types and definitions.
    /// @{
    
    /// ZENDNN exception class.
    ///
    /// This class captures the status returned by a failed C API function and
    /// the error message from the call site.
    struct error : public std::exception {
        zendnn_status_t status;
        const char *message;
    
        /// Constructs an instance of an exception class.
        ///
        /// @param status The error status returned by a C API function.
        /// @param message The error message.
        error(zendnn_status_t status, const char *message)
            : status(status), message(message) {}
    
        /// Returns the explanatory string.
        const char *what() const noexcept override { return message; }
    
        /// A convenience function for wrapping calls to C API functions. Checks
        /// the return status and throws an zendnn::error in case of failure.
        ///
        /// @param status The error status returned by a C API function.
        /// @param message The error message.
        static void wrap_c_api(zendnn_status_t status, const char *message) {
            if (status != zendnn_success) ZENDNN_THROW_ERROR(status, message);
        }
    };​
    This creates issues for software ecosystem. See discussion in Pytorch Github for example:
    I didn't realize ZenDNN is a fork of OneDNN with a bunch of duplicated code -- but after @jgong5 pointed it out, I went and looked and it seems true.
    It seems completely wasteful and bug-prone to fork it.​

    Comment

    Working...
    X