You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tvm.apache.org by li...@apache.org on 2019/11/27 00:42:15 UTC

[incubator-tvm] branch v0.6 updated (fbb2a35 -> f552d4d)

This is an automated email from the ASF dual-hosted git repository.

liuyizhi pushed a change to branch v0.6
in repository https://gitbox.apache.org/repos/asf/incubator-tvm.git.


    from fbb2a35  [RUNTIME] rename allocator.make -> allocator.make_object for term consistency (#4416)
     new a5d14af  [DOCS] Update main website to tvm.apache.org (#4429)
     new f552d4d  [RELEASE] Update copyright message, change notice, remove cma kernel module for now (#4431)

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 3rdparty/cma/Makefile                 |  39 ---
 3rdparty/cma/cma.c                    | 555 ----------------------------------
 3rdparty/compiler-rt/builtin_fp16.h   |   2 -
 NOTICE                                |   3 +-
 README.md                             |   6 +-
 docs/vta/index.rst                    |   2 +-
 jvm/pom.xml                           |   8 +-
 tutorials/autotvm/tune_conv2d_cuda.py |   2 +-
 8 files changed, 10 insertions(+), 607 deletions(-)
 delete mode 100644 3rdparty/cma/Makefile
 delete mode 100644 3rdparty/cma/cma.c


[incubator-tvm] 01/02: [DOCS] Update main website to tvm.apache.org (#4429)

Posted by li...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

liuyizhi pushed a commit to branch v0.6
in repository https://gitbox.apache.org/repos/asf/incubator-tvm.git

commit a5d14af65d44714c5c6eede37a71695f50c69e7e
Author: Tianqi Chen <tq...@users.noreply.github.com>
AuthorDate: Tue Nov 26 14:40:26 2019 -0800

    [DOCS] Update main website to tvm.apache.org (#4429)
    
    * [DOCS] Update main website to tvm.apache.org
    
    * Update jvm pom repo loc
    
    * Change the org to asf
    
    * Update ci addr to new one
---
 README.md                             | 6 +++---
 docs/vta/index.rst                    | 2 +-
 jvm/pom.xml                           | 8 ++++----
 tutorials/autotvm/tune_conv2d_cuda.py | 2 +-
 4 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/README.md b/README.md
index ad121f6..b5a3860 100644
--- a/README.md
+++ b/README.md
@@ -15,14 +15,14 @@
 <!--- specific language governing permissions and limitations -->
 <!--- under the License. -->
 
-<img src=https://raw.githubusercontent.com/tqchen/tvm.ai/master/images/logo/tvm-logo-small.png width=128/> Open Deep Learning Compiler Stack
+<img src=https://raw.githubusercontent.com/apache/incubator-tvm-site/master/images/logo/tvm-logo-small.png width=128/> Open Deep Learning Compiler Stack
 ==============================================
 [Documentation](https://docs.tvm.ai) |
 [Contributors](CONTRIBUTORS.md) |
-[Community](https://tvm.ai/community.html) |
+[Community](https://tvm.apache.org/community) |
 [Release Notes](NEWS.md)
 
-[![Build Status](http://ci.tvm.ai:8080/buildStatus/icon?job=tvm/master)](http://ci.tvm.ai:8080/job/tvm/job/master/)
+[![Build Status](https://ci.tvm.ai/buildStatus/icon?job=tvm/master)](https://ci.tvm.ai/job/tvm/job/master/)
 [![Azure Pipeline](https://dev.azure.com/tvmai/tvm/_apis/build/status/windows_mac_build?branchName=master)](https://dev.azure.com/tvmai/tvm/_build/latest?definitionId=2&branchName=master)
 
 Apache TVM (incubating) is a compiler stack for deep learning systems. It is designed to close the gap between the
diff --git a/docs/vta/index.rst b/docs/vta/index.rst
index 9dc281d..b719e2d 100644
--- a/docs/vta/index.rst
+++ b/docs/vta/index.rst
@@ -49,5 +49,5 @@ Literature
 - Read the VTA `release blog post`_.
 - Read the VTA tech report: `An Open Hardware Software Stack for Deep Learning`_.
 
-.. _release blog post: https://tvm.ai/2018/07/12/vta-release-announcement.html
+.. _release blog post: https://tvm.apache.org/2018/07/12/vta-release-announcement
 .. _An Open Hardware Software Stack for Deep Learning: https://arxiv.org/abs/1807.04188
\ No newline at end of file
diff --git a/jvm/pom.xml b/jvm/pom.xml
index 5205abf..b563dd1 100644
--- a/jvm/pom.xml
+++ b/jvm/pom.xml
@@ -10,8 +10,8 @@
   <url>https://github.com/apache/incubator-tvm/tree/master/jvm</url>
   <description>TVM4J Package</description>
   <organization>
-    <name>Distributed (Deep) Machine Learning Community</name>
-    <url>http://dmlc.ml</url>
+    <name>Apache Software Foundation</name>
+    <url>https://apache.org</url>
   </organization>
   <licenses>
     <license>
@@ -20,8 +20,8 @@
     </license>
   </licenses>
   <scm>
-    <connection>scm:git:git@github.com:dmlc/tvm.git</connection>
-    <developerConnection>scm:git:git@github.com:dmlc/tvm.git</developerConnection>
+    <connection>scm:git:git@github.com:apache/incubator-tvm.git</connection>
+    <developerConnection>scm:git:git@github.com:apache/incubator-tvm.git</developerConnection>
     <url>https://github.com/apache/incubator-tvm</url>
   </scm>
 
diff --git a/tutorials/autotvm/tune_conv2d_cuda.py b/tutorials/autotvm/tune_conv2d_cuda.py
index a367c99..09b5604 100644
--- a/tutorials/autotvm/tune_conv2d_cuda.py
+++ b/tutorials/autotvm/tune_conv2d_cuda.py
@@ -60,7 +60,7 @@ from tvm import autotvm
 # There are plenty of useful schedule primitives in tvm. You can also find
 # some tutorials that describe them in more details, such as
 # (1). :ref:`opt-conv-gpu`
-# (2). `Optimizing DepthwiseConv on NVIDIA GPU <https://tvm.ai/2017/08/22/Optimize-Deep-Learning-GPU-Operators-with-TVM-A-Depthwise-Convolution-Example.html>`_
+# (2). `Optimizing DepthwiseConv on NVIDIA GPU <https://tvm.apache.org/2017/08/22/Optimize-Deep-Learning-GPU-Operators-with-TVM-A-Depthwise-Convolution-Example>`_
 #
 # However, their implementations are manually tuned for some special input
 # shapes. In this section, we build a large enough space to cover


[incubator-tvm] 02/02: [RELEASE] Update copyright message, change notice, remove cma kernel module for now (#4431)

Posted by li...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

liuyizhi pushed a commit to branch v0.6
in repository https://gitbox.apache.org/repos/asf/incubator-tvm.git

commit f552d4df8c356f5bb6b7fbef9b9cdac65d674d54
Author: Tianqi Chen <tq...@users.noreply.github.com>
AuthorDate: Tue Nov 26 15:58:13 2019 -0800

    [RELEASE] Update copyright message, change notice, remove cma kernel module for now (#4431)
---
 3rdparty/cma/Makefile               |  39 ---
 3rdparty/cma/cma.c                  | 555 ------------------------------------
 3rdparty/compiler-rt/builtin_fp16.h |   2 -
 NOTICE                              |   3 +-
 4 files changed, 1 insertion(+), 598 deletions(-)

diff --git a/3rdparty/cma/Makefile b/3rdparty/cma/Makefile
deleted file mode 100644
index 0f19b0c..0000000
--- a/3rdparty/cma/Makefile
+++ /dev/null
@@ -1,39 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you 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.
-
-PATH_SETTINGS?=$(PWD)/settings.mk
-
-# Driver configuration file
-include $(PATH_SETTINGS)
-
-ifeq ($(KERNELRELEASE),)
-# kbuild
-
-default:
-	make ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) -C $(KSOURCE_DIR) M=`pwd` modules
-
-clean:
-	make -C $(KSOURCE_DIR) M=`pwd` clean
-
-else
-# run from Kernel Makefile
-
-obj-m 	  := cma.o
-ccflags-y := -DDRIVER_NODE_NAME="\"$(DRIVER_NODE_NAME)\"" \
-			 -DCMA_DEBUG=$(CMA_DEBUG) \
-			 -DCMA_IOC_MAGIC=$(CMA_IOC_MAGIC)
-endif
diff --git a/3rdparty/cma/cma.c b/3rdparty/cma/cma.c
deleted file mode 100644
index 72d2913..0000000
--- a/3rdparty/cma/cma.c
+++ /dev/null
@@ -1,555 +0,0 @@
-/* cma.c - ARM specific Linux driver for allocating physically contigious memory.
- *
- * The MIT License (MIT)
- *
- * COPYRIGHT (C) 2017 Institute of Electronics and Computer Science (EDI), Latvia.
- * AUTHOR: Rihards Novickis (rihards.novickis@edi.lv)
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- *
- * DESCRIPTION:
- * In some DMA use cases there is a need or it is more efficient to use large
- * physically contigous memory regions. When Linux kernel is compiled with CMA
- * (Contigous Memory Allocator) feature, this module allows to allocate this
- * contigous memory and pass it to the user space. Memory can be either cached
- * or uncached.
- *
- * For api description, see "cma_api.h" header file.
- *
- */
-
-/* Linux driver includes */
-#include <linux/init.h>
-#include <linux/module.h>
-#include <linux/fs.h>
-#include <linux/device.h>
-#include <linux/slab.h>
-#include <linux/uaccess.h>
-#include <linux/mutex.h>
-
-/* CMA specific includes */
-#include <linux/dma-mapping.h>
-#include <linux/dma-contiguous.h>
-
-/* IOCTL description */
-#include "cma.h"
-
-
-/* Handle defines */
-#ifndef CONFIG_DMA_CMA
-  #error "CMA configuration not set in kernel!"
-#endif
-#ifndef CMA_DEBUG
-  #define CMA_DEBUG       0
-#endif
-#ifndef DRIVER_NODE_NAME
-  #define DRIVER_NODE_NAME   "cma"
-#endif
-
-
-/* Commonly used printk statements */
-#define __ERROR(fmt, args...)    printk(KERN_ERR "CMA_ERROR: " fmt, ##args)
-#define __INFO(fmt, args...)      printk(KERN_INFO "CMA_INFO: " fmt, ##args)
-
-#if CMA_DEBUG == 1
-  #define __DEBUG(fmt, args...)  printk(KERN_INFO "CMA_DEBUG: " fmt, ##args)
-#else
-  #define __DEBUG(fmt, args...)
-#endif
-
-
-/* cma entry flags */
-#define CMA_ENTRY_CACHED     0
-#define CMA_ENTRY_MAPPED    (1<<0)
-#define CMA_ENTRY_NONCACHED   (1<<1)
-
-
-/* fops declarations */
-static int cma_ioctl(struct file *filp, unsigned int cmd, unsigned int arg);
-static int cma_mmap(struct file *filp, struct vm_area_struct *vm_area_dscr);
-
-/* ioctl interface commands */
-static int cma_ioctl_alloc(struct file *filp, unsigned int cmd, unsigned int arg, int cached_flag);
-static int cma_ioctl_free(struct file *filp, unsigned int cmd, unsigned int arg);
-static int cma_ioctl_get_phy_addr(struct file *filp, unsigned int cmd, unsigned int arg);
-static int cma_ioctl_get_size(struct file *filp, unsigned int cmd, unsigned int arg);
-
-/* CMA entry specific functions */
-struct cma_entry *cma_entry_get_by_phy_addr(unsigned int phy_addr);
-struct cma_entry *cma_entry_get_by_v_usr_addr(unsigned v_usr_addr);
-static int cma_entry_add(struct cma_entry *entry);
-static int cma_entry_release(unsigned v_usr_addr);
-
-/* mmap ops declarations */
-void cma_mmap_close(struct vm_area_struct *vma);
-
-
-/* File operations */
-struct file_operations fops = {
-  .owner         = THIS_MODULE,
-  .unlocked_ioctl   = cma_ioctl,
-  .mmap         = cma_mmap
-};
-
-/* mmap operation structure */
-static struct vm_operations_struct cma_ops = {
-  .close     = cma_mmap_close
-};
-
-
-/* List structure for containing memory allocation information */
-struct cma_entry{
-  struct cma_entry *next;
-  pid_t     pid;    /* calling process id */
-  unsigned   size;    /* size of allocation */
-  dma_addr_t  phy_addr;  /* physical address */
-  void      *v_ptr;    /* kernel-space pointer */
-  unsigned   v_usr_addr; /* user-space addr */
-  int     flags;    /* memory allocation related flags */
-};
-
-
-/* Global variables */
-int major;
-static struct class   *class;
-static struct device   *device;
-struct cma_entry     *cma_start = NULL;
-static struct mutex   mutex_cma_list_modify;
-
-
-struct cma_entry *cma_entry_get_by_phy_addr(unsigned int phy_addr) {
-  struct cma_entry *walk = cma_start;
-
-  __DEBUG("cma_entry_get_by_phy_addr()\n");
-
-  if (mutex_lock_interruptible(&mutex_cma_list_modify))
-    return NULL;
-
-  /* search for physical address */
-  while (walk != NULL) {
-    if (walk->phy_addr == phy_addr) {
-      goto leave;
-    }
-    walk = walk->next;
-  }
-
-leave:
-  mutex_unlock(&mutex_cma_list_modify);
-  return walk;
-}
-
-
-struct cma_entry *cma_entry_get_by_v_usr_addr(unsigned v_usr_addr) {
-  struct cma_entry *walk = cma_start;
-
-  __DEBUG("cma_entry_get_by_v_usr_addr()\n");
-
-  if (mutex_lock_interruptible(&mutex_cma_list_modify)) {
-    __DEBUG("cma_entry_get_by_v_usr_addr: failed to call mutex_lock_interruptible().\n");
-    return NULL;
-  }
-
-  /* search for user virtual address */
-  while (walk != NULL) {
-    if (walk->v_usr_addr == v_usr_addr) {
-      __DEBUG("found an entry with v_usr_addr (0x%x).\n", v_usr_addr);
-      goto leave;
-    }
-    __DEBUG("> walk->v_usr_addr=(0x%x), expected v_usr_addr=(0x%x).\n",
-            walk->v_usr_addr, v_usr_addr);
-    walk = walk->next;
-  }
-  __DEBUG("failed to find an entry with v_usr_addr (0x%x).\n", v_usr_addr);
-
-leave:
-  mutex_unlock(&mutex_cma_list_modify);
-  return walk;
-}
-
-
-static int cma_entry_add(struct cma_entry *entry) {
-  struct cma_entry *walk;
-  __DEBUG("cma_entry_add() - phy_addr 0x%x; pid 0x%x\n", entry->phy_addr, entry->pid);
-
-  if (mutex_lock_interruptible(&mutex_cma_list_modify))
-    return -EAGAIN;
-
-  /* add entry in start - this is more effective */
-  entry->next = cma_start;
-  cma_start = entry;
-
-  /* print entry list for debugging */
-  walk = cma_start;
-  while (walk != NULL) {
-    __DEBUG("> walk->phy_addr=(0x%x).\n", walk->phy_addr);
-    walk = walk->next;
-  }
-
-  mutex_unlock(&mutex_cma_list_modify);
-
-  return 0;
-}
-
-
-static int cma_entry_release(unsigned v_usr_addr) {
-  int err;
-  struct cma_entry *walk_prev, *walk_curr;
-
-  /* print entry list for debugging */
-  struct cma_entry *walk;
-  __DEBUG("cma_entry_release() - v_usr_addr 0x%x; pid 0x%x\n", v_usr_addr, current->pid);
-
-  if (mutex_lock_interruptible(&mutex_cma_list_modify))
-    return -EAGAIN;
-
-  walk_prev = NULL;
-  walk_curr = cma_start;
-
-  while (walk_curr != NULL) {
-    if (walk_curr->v_usr_addr == v_usr_addr) {
-      /* check if mapped */
-      if (walk_curr->flags & CMA_ENTRY_MAPPED) {
-        __DEBUG("failed to find a valid entry with v_usr_addr(0x%x), entry mapped.\n", v_usr_addr);
-        err = -1;
-        goto leave;
-      }
-
-      /* check if not the first entry */
-      if (walk_prev != NULL)
-        walk_prev->next = walk_curr->next;
-      else
-        cma_start = walk_curr->next;
-      if ((walk_curr->next == NULL) && (cma_start == walk_curr))
-        cma_start = NULL;
-
-      __DEBUG("found an entry with v_usr_addr=0x%x, phy_addr=0x%x, next=0x%x\n",
-              v_usr_addr, walk_curr->phy_addr, (int)walk_curr->next);
-      dma_free_coherent(NULL, walk_curr->size, walk_curr->v_ptr, walk_curr->phy_addr);
-      kfree(walk_curr);
-      err = 0;
-      goto leave;
-    }
-    __DEBUG("skip entry with v_usr_addr (0x%x).\n", walk_curr->v_usr_addr);
-
-    /* prepare next walk */
-    walk_prev = walk_curr;
-    walk_curr = walk_curr->next;
-  }
-
-  __DEBUG("failed to find an entry with v_usr_addr (0x%x).\n", v_usr_addr);
-  err = -1;
-
-leave:
-
-  /* print entry list for debugging */
-  walk = cma_start;
-  while (walk != NULL) {
-    __DEBUG("> walk->v_usr_addr=(0x%x), walk->next=0x%x\n", walk->v_usr_addr, (int)walk->next);
-    walk = walk->next;
-  }
-
-  mutex_unlock(&mutex_cma_list_modify);
-  return err;
-}
-
-
-/* inline function for readability */
-inline int check_entry_accordance(struct cma_entry *entry, struct vm_area_struct *vma) {
-  if ( entry == NULL )
-    return -EFAULT;
-
-  if ( entry->phy_addr != vma->vm_pgoff << PAGE_SHIFT )
-    return -EFAULT;
-
-  if ( entry->size != vma->vm_end-vma->vm_start )
-    return -EFAULT;
-
-  if ( entry->pid != current->pid )
-    return -EACCES;
-
-  return 0;
-}
-
-static int cma_mmap(struct file *filp, struct vm_area_struct *vma) {
-  int err;
-  struct cma_entry *entry;
-
-  __DEBUG("cma_mmap() - phy_addr 0x%lx, v_user_addr 0x%lx\n",
-          vma->vm_pgoff << PAGE_SHIFT, vma->vm_start);
-
-  entry = cma_entry_get_by_phy_addr(vma->vm_pgoff << PAGE_SHIFT);
-
-  /* check if mmap is alligned with according entry */
-  err = check_entry_accordance(entry, vma);
-  if (err) return err;
-
-  /* set user address for later reference (used when freeing the memory ) */
-  entry->v_usr_addr = vma->vm_start;
-
-  /* should memory be uncached? */
-  if ( entry->flags & CMA_ENTRY_NONCACHED )
-    vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
-
-  /* map memory to user space */
-  if (remap_pfn_range(vma, vma->vm_start, vma->vm_pgoff,
-                      vma->vm_end-vma->vm_start, vma->vm_page_prot)) {
-    up_write(&current->mm->mmap_sem);
-      return -EAGAIN;
-  }
-
-  /* save mmap ops and set entry mapped flag */
-  vma->vm_ops = &cma_ops;
-  entry->flags = (entry->flags & (~CMA_ENTRY_MAPPED)) | CMA_ENTRY_MAPPED;
-
-  return 0;
-}
-
-
-void cma_mmap_close(struct vm_area_struct *vma) {
-  struct cma_entry *entry;
-
-  __DEBUG("cma_mmap_close()\n");
-
-  /* remove custom mapped flag */
-  entry = cma_entry_get_by_phy_addr(vma->vm_pgoff << PAGE_SHIFT);
-  if ( entry != NULL )
-    entry->flags &= (~CMA_ENTRY_MAPPED);
-}
-
-
-static int cma_ioctl(struct file *filp, unsigned int cmd, unsigned int arg) {
-  /* routine check */
-  __DEBUG("IOCTL command issued\n");
-
-  /* check validity of the cmd */
-  if (_IOC_TYPE(cmd) != CMA_IOCTL_MAGIC) {
-    __ERROR("IOCTL Incorrect magic number\n");
-    return -ENOTTY;
-  }
-  if (_IOC_NR(cmd) > CMA_IOCTL_MAXNR) {
-    __ERROR("IOCTL Command is not valid\n");
-    return -ENOTTY;
-  }
-
-  /* get size from userspace */
-  switch (cmd) {
-    case CMA_ALLOC_CACHED:
-      return cma_ioctl_alloc(filp, cmd, arg, CMA_ENTRY_CACHED);
-    case CMA_ALLOC_NONCACHED:
-      return cma_ioctl_alloc(filp, cmd, arg, CMA_ENTRY_NONCACHED);
-    case CMA_FREE:
-      return cma_ioctl_free(filp, cmd, arg);
-    case CMA_GET_PHY_ADDR:
-      return cma_ioctl_get_phy_addr(filp, cmd, arg);
-    case CMA_GET_SIZE:
-      return cma_ioctl_get_size(filp, cmd, arg);
-    default:
-      __DEBUG("This should never happen!\n");
-  }
-
-  return 0;
-}
-
-
-static int cma_ioctl_alloc(struct file *filp, unsigned int cmd, unsigned int arg, int cached_flag) {
-  int err;
-  struct cma_entry *entry;
-  __DEBUG("cma_ioctl_alloc() called!\n");
-
-  if (!access_ok(VERIFY_READ, (void __user*) arg, _IOC_SIZE(cmd))) {
-    __DEBUG("fail to get read access to %d bytes of memory.\n", entry->size);
-    return -EFAULT;
-  }
-  if (!access_ok(VERIFY_WRITE, (void __user*) arg, _IOC_SIZE(cmd))) {
-    __DEBUG("fail to get write access to %d bytes of memory.\n", entry->size);
-    return -EFAULT;
-  }
-
-  /* create new cma entry  */
-  entry = kmalloc(sizeof(struct cma_entry), GFP_KERNEL);
-
-  /* set entry params */
-  __get_user(entry->size, (typeof(&entry->size))arg);
-  entry->pid     = current->pid;
-  entry->flags   = cached_flag;
-
-  /* allocate contigous memory */
-  entry->v_ptr = dma_alloc_coherent(NULL, entry->size, &entry->phy_addr, GFP_KERNEL);
-  if ( entry->v_ptr == NULL ) {
-    err = -ENOMEM;
-    __DEBUG("==== FAILED TO ALLOCATE 0x%X BYTES OF COHERENT MEMORY ====\n", entry->size);
-    goto error_dma_alloc_coherent;
-  }
-
-  /* add entry */
-  err = cma_entry_add(entry);
-  if (err)  goto error_cma_entry_add;
-
-  /* put physical address to user space */
-  __put_user(entry->phy_addr, (typeof(&entry->phy_addr))arg);
-
-  __DEBUG("allocated 0x%x bytes of coherent memory at phy_addr=0x%x\n", entry->size, entry->phy_addr);
-  return entry->phy_addr;
-
-
-error_cma_entry_add:
-  dma_free_coherent(NULL, entry->size, entry->v_ptr, entry->phy_addr);
-
-error_dma_alloc_coherent:
-  kfree(entry);
-
-  return err;
-}
-
-
-static int cma_ioctl_free(struct file *filp, unsigned int cmd, unsigned int arg) {
-  dma_addr_t v_usr_addr;
-  __DEBUG("cma_ioctl_free() called!\n");
-
-  if (!access_ok(VERIFY_READ, (void __user*) arg, _IOC_SIZE(cmd)))
-    return -EFAULT;
-
-  __get_user(v_usr_addr, (typeof(&v_usr_addr))arg);
-
-  return cma_entry_release(v_usr_addr);
-}
-
-
-static struct cma_entry *cma_ioctl_get_entry_from_v_usr_addr(unsigned int cmd, unsigned int arg) {
-  unsigned v_usr_addr;
-
-  __DEBUG("cma_ioctl_get_entry_from_v_usr_addr() called!\n");
-
-  /* routine check */
-  if (!access_ok(VERIFY_READ, (void __user*) arg, _IOC_SIZE(cmd))) {
-    __DEBUG("failed to get read access to virtual user address: 0x%x\n", arg);
-    return NULL;
-  }
-  if (!access_ok(VERIFY_WRITE, (void __user*) arg, _IOC_SIZE(cmd))) {
-    __DEBUG("failed to get write access to virtual user address: 0x%x\n", arg);
-    return NULL;
-  }
-
-  /* get process user address */
-  __get_user(v_usr_addr, (typeof(&v_usr_addr))arg);
-
-  /* search for appropriate entry */
-  return cma_entry_get_by_v_usr_addr(v_usr_addr);
-}
-
-
-static int cma_ioctl_get_phy_addr(struct file *filp, unsigned int cmd, unsigned int arg) {
-  struct cma_entry *entry;
-
-  __DEBUG("cma_ioctl_get_phy_addr() called!\n");
-
-  /* get entry */
-  entry = cma_ioctl_get_entry_from_v_usr_addr(cmd, arg);
-  if (entry == NULL) {
-    __DEBUG("cma entry has not been found.\n");
-    return -EFAULT;
-  }
-
-  /* put physical address into user space */
-  __put_user(entry->phy_addr, (typeof(&entry->phy_addr))arg);
-
-  return 0;
-}
-
-
-static int cma_ioctl_get_size(struct file *filp, unsigned int cmd, unsigned int arg) {
-  struct cma_entry *entry;
-
-  __DEBUG("cma_ioctl_get_size() called!\n");
-
-  /* get entry */
-  entry = cma_ioctl_get_entry_from_v_usr_addr(cmd, arg);
-  if (entry == NULL) {
-    __DEBUG("cma_ioctl_get_size: failed to get_entry_from_v_usr_addr.\n");
-    return -EFAULT;
-  }
-
-  /* put size into user space */
-  __put_user(entry->size, (typeof(&entry->size))arg);
-
-  return 0;
-}
-
-
-static int cma_init(void) {
-  int err;
-  __INFO("Initializeing Contigous Memory Allocator module\n");
-
-  /* obtain major number */
-  major = register_chrdev(0, DRIVER_NODE_NAME, &fops);
-  if ( major < 0 ) {
-    __ERROR("Failed to allocate major number\n");
-    return -major;
-  }
-
-  /* create class */
-  class = class_create(THIS_MODULE, DRIVER_NODE_NAME);
-  if ( IS_ERR(class) ) {
-    __ERROR("Failed to create class\n");
-    err = PTR_ERR(class);
-    goto error_class_create;
-  }
-
-  /* create device node */
-  device = device_create(class, NULL, MKDEV(major, 0), NULL, DRIVER_NODE_NAME);
-  if ( IS_ERR(device) ) {
-    __ERROR("Failed to create device\n");
-    err = PTR_ERR(device);
-    goto error_device_create;
-  }
-
-  mutex_init(&mutex_cma_list_modify);
-
-  return 0;
-
-
-error_device_create:
-  class_destroy(class);
-
-error_class_create:
-  unregister_chrdev(major, DRIVER_NODE_NAME);
-
-  return err;
-}
-
-
-static void cma_exit(void) {
-  __INFO("Releasing Contigous Memory Allocator module\n");
-
-  /* TODO: walk_list_remove_pid */
-
-  device_destroy(class, MKDEV(major, 0));
-
-  class_destroy(class);
-
-  unregister_chrdev(major, DRIVER_NODE_NAME);
-}
-
-
-MODULE_LICENSE("GPL");
-MODULE_DESCRIPTION("Driver for allocating cached and noncached physically contigous memory. "
-                   "Exploits kernel CMA feature.");
-module_init(cma_init);
-module_exit(cma_exit);
diff --git a/3rdparty/compiler-rt/builtin_fp16.h b/3rdparty/compiler-rt/builtin_fp16.h
index 67fe643..fa8efdd 100644
--- a/3rdparty/compiler-rt/builtin_fp16.h
+++ b/3rdparty/compiler-rt/builtin_fp16.h
@@ -18,8 +18,6 @@
  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  * THE SOFTWARE.
-
- * Copyright (c) 2018 by Contributors
  * \file builtin_fp16.cc
  * \brief Functions for conversion between fp32 and fp16, adopted from compiler-rt.
  */
diff --git a/NOTICE b/NOTICE
index 64d6ee0..ca4b80a 100644
--- a/NOTICE
+++ b/NOTICE
@@ -1,6 +1,5 @@
 Apache TVM (incubating)
-Copyright 2019 and onwards The Apache Software Foundation
+Copyright 2019 The Apache Software Foundation
 
 This product includes software developed at
 The Apache Software Foundation (http://www.apache.org/).
-