From ba084c9a6814e2c6886fa3d12aae7c757b80f4a7 Mon Sep 17 00:00:00 2001 From: samaid Date: Wed, 13 Nov 2019 10:37:54 -0600 Subject: [PATCH] Removing old documentation. Next commit will add the new one --- docs/.nojekyll | 0 docs/CleanRSTfiles.py | 41 ----- docs/Documentation_Guidelines.txt | 65 -------- docs/Makefile | 60 ------- docs/devsource/DevelopersGuide.rst | 105 ------------ docs/devsource/api.rst | 8 - docs/devsource/conf.py | 259 ----------------------------- docs/devsource/datatypes.rst | 13 -- docs/devsource/distributed.rst | 25 --- docs/devsource/index.rst | 13 -- docs/devsource/overview.rst | 37 ----- docs/figs/1D_dist.jpg | Bin 35182 -> 0 bytes docs/figs/1D_dist.pdf | Bin 7436 -> 0 bytes docs/figs/dist.jpg | Bin 146880 -> 0 bytes docs/figs/dist.pdf | Bin 9438 -> 0 bytes docs/figs/dist.pptx | Bin 33651 -> 0 bytes docs/gh-pages.py | 182 -------------------- docs/rename_function.py | 101 ----------- docs/usersource/GettingStarted.rst | 72 -------- docs/usersource/apireference.rst | 11 -- docs/usersource/compilation.rst | 89 ---------- docs/usersource/conf.py | 239 -------------------------- docs/usersource/developers.rst | 7 - docs/usersource/index.rst | 17 -- docs/usersource/overview.rst | 11 -- docs/usersource/performance.rst | 16 -- docs/usersource/series.rst | 12 -- docs/usersource/workflow.rst | 7 - 28 files changed, 1390 deletions(-) delete mode 100644 docs/.nojekyll delete mode 100644 docs/CleanRSTfiles.py delete mode 100644 docs/Documentation_Guidelines.txt delete mode 100644 docs/Makefile delete mode 100644 docs/devsource/DevelopersGuide.rst delete mode 100644 docs/devsource/api.rst delete mode 100644 docs/devsource/conf.py delete mode 100644 docs/devsource/datatypes.rst delete mode 100644 docs/devsource/distributed.rst delete mode 100644 docs/devsource/index.rst delete mode 100644 docs/devsource/overview.rst delete mode 100644 docs/figs/1D_dist.jpg delete mode 100644 docs/figs/1D_dist.pdf delete mode 100644 docs/figs/dist.jpg delete mode 100644 docs/figs/dist.pdf delete mode 100644 docs/figs/dist.pptx delete mode 100644 docs/gh-pages.py delete mode 100644 docs/rename_function.py delete mode 100644 docs/usersource/GettingStarted.rst delete mode 100644 docs/usersource/apireference.rst delete mode 100644 docs/usersource/compilation.rst delete mode 100644 docs/usersource/conf.py delete mode 100644 docs/usersource/developers.rst delete mode 100644 docs/usersource/index.rst delete mode 100644 docs/usersource/overview.rst delete mode 100644 docs/usersource/performance.rst delete mode 100644 docs/usersource/series.rst delete mode 100644 docs/usersource/workflow.rst diff --git a/docs/.nojekyll b/docs/.nojekyll deleted file mode 100644 index e69de29bb..000000000 diff --git a/docs/CleanRSTfiles.py b/docs/CleanRSTfiles.py deleted file mode 100644 index bc5be30c5..000000000 --- a/docs/CleanRSTfiles.py +++ /dev/null @@ -1,41 +0,0 @@ -# ***************************************************************************** -# Copyright (c) 2019, Intel Corporation All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# -# Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; -# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, -# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# ***************************************************************************** - - -import os -import itertools -from shutil import copyfile - -cur_dir = os.getcwd() -api_dir = os.path.join(cur_dir, "docs", "usersource", "api") -os.chdir(api_dir) -for file in os.listdir(os.getcwd()): - with open(file, "r") as rstfile: - line = rstfile.readlines() - with open(file, 'w') as rstfile: - rstfile.truncate(0) - rstfile.write(":orphan:\n\n") - rstfile.writelines(line[3:]) diff --git a/docs/Documentation_Guidelines.txt b/docs/Documentation_Guidelines.txt deleted file mode 100644 index 0c62c2c60..000000000 --- a/docs/Documentation_Guidelines.txt +++ /dev/null @@ -1,65 +0,0 @@ -This file provides guidelines for developers on how to update the documentation. The content of the file will be added to the developers' document later. If you have any questions about this file or Intel® SDC documentation please contact Rujal Desai. -How to update the documentation - -Intel® SDC documentation is built using Sphinx. Building the documentation is not part of Intel® SDC build as of now(that may change later). So you have to follow few extra steps to build new documentation. - -Sphinx uses RST files to generate html/pdf output. Therefore the new documentation should either be in RST file or standardized docstring(provided with the function/class definition inside source code). - -There are two ways to contribute to the documentation: -1. Add documentation for a Pandas API overloaded in Intel® SDC -2. Add/Change content of one of the section of the existing documentation - -Pandas API Documentation - -If you have implemented a Pandas function/operator in Intel® SDC follow these steps to add it to the new documentation: - -1. Write a docstring inside the function/operator definition and make sure it is in the standardized format that Intel® SDC follows - - If you are not aware of the standardized format of docstring refer to pandas.Series.append method in hpat/datatypes/hpat_series_functions.py . Also, make sure the function definition has all the arguments included in it even though HPAt doesn't support that argument. For example, Pandas Series.ne(not equal) method has the following signature: - - Series.ne(self, other, level=None, fill_value=None, axis=0) - - Intel® SDC doesn't support 'level' , 'fill_value' and 'axis' but the function definition in Intel® SDC should looik like this: - - new_funcname(self, other, level=None, fill_value=None, axis=0) - where new_funcname : function name given by developer - -2. Edit the script rename_function.py - - This step is part of a work around. Hence it is specific to Intel® SDC. Sphinx uses autodoc to automatically generate documentation from a function docstring. However, if we use that directly the function name displayed in User's Guide for Intel® SDC will be the function name that developer has used to overload Pandas API instead of the actual name of that Pandas API that is overloaded. For example, - - Pandas.Series.append method is overloaded in Intel® SDC by this function definition: - - @overload_method(SeriesType, 'append') - def hpat_pandas_series_append(self, to_append, ignore_index=False, verify_integrity=False) - - But we cannot display 'hpat_pandas_series_append' in 'Supported Pandas API' section of USer's Guide. rename_function.py script fixes this. But the developer is responsible to give required information to the script so that the display name can be the one that we want. Follow the steps mentioned in rename_function.py file. - -3. Edit the respective RST file or create a new one - - Find out if the RST file for your method already exists in hpat/docs/usersource . As of now RST file for pandas series is already created but any other Pandas API that does not belong to series is required to be added in a new RST file. For example, If you have implemented Pandas GroupBy method then create a new RST file called "groupby.rst" . If you're not sure how to create a new RST file or what to add in this file refer to series.rst . Add the function name(the one that should be displayed) in this RST file and add this new filename in apireference.rst . - -4. Build the documentation - - Go to hpat/docs. Use following commands to build the User's documentation: - - make clean - make html - - For developer's documentation: - - make clean - make developerhtml - -Add/Change the existing Documentation -If you want to add a new section or modify content of an existing section, make sure the content is in RST format. If you have created a new RST file then add the filename in either hpat/docs/usersource/index.rst or hpat/docs/devsource/index.rst . Then build the user's documentation using following commands: - -cd hpat/docs -make clean -make html - -For developer's documentation: - -cd hpat/docs -make clean -make developerhtml \ No newline at end of file diff --git a/docs/Makefile b/docs/Makefile deleted file mode 100644 index 8719a4831..000000000 --- a/docs/Makefile +++ /dev/null @@ -1,60 +0,0 @@ -# Minimal makefile for Sphinx documentation -# - -# You can set these variables from the command line. -SPHINXOPTS = -j1 -SPHINXBUILD = sphinx-build -SPHINXPROJ = SDC -SOURCEDIR = . -BUILDDIR = _build -DEVBUILDDIR = _builddev -PYRUN = python -DOCSRCDIR = ./API_Doc - -# User-friendly check for sphinx-build -ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) -$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed) -endif - - -ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(SPHINXOPTS) -DEV_ALLSPHINXOPTS = -d $(DEVBUILDDIR)/doctrees $(SPHINXOPTS) - -# Put it first so that "make" without argument is like "make help". -help: - @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) - - -clean: - rm -rf $(BUILDDIR)/* $(DEVBUILDDIR)/* - rm -rf $(SOURCEDIR)$(DOCSRCDIR) - rm -rf $(SOURCEDIR)/usersource/api/* - -.PHONY: help Makefile - -html: - rm -rf $(SOURCEDIR)$(DOCSRCDIR) - $(PYRUN) rename_function.py - $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) usersource -t user $(BUILDDIR)/html - $(PYRUN) CleanRSTfiles.py - $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) usersource -t user $(BUILDDIR)/html - @echo - @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." - - -developerhtml: - $(SPHINXBUILD) -b html $(DEV_ALLSPHINXOPTS) devsource -t developer $(DEVBUILDDIR)/html - @echo - @echo "Build finished. The HTML pages are in $(DEVBUILDDIR)/html." - -latex: - $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) usersource $(BUILDDIR)/latex - @echo - @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." - @echo "Run \`make all-pdf' in that directory to run these through (pdf)latex" - -devlatex: - $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) devsource $(DEVBUILDDIR)/latex - @echo - @echo "Build finished; the LaTeX files are in $(DEVBUILDDIR)/latex." - @echo "Run \`make all-pdf' in that directory to run these through (pdf)latex" diff --git a/docs/devsource/DevelopersGuide.rst b/docs/devsource/DevelopersGuide.rst deleted file mode 100644 index 3ff5bedfe..000000000 --- a/docs/devsource/DevelopersGuide.rst +++ /dev/null @@ -1,105 +0,0 @@ -.. _DevelopersGuide: - -Developer's Guide -================= - -Intel® SDC implements Pandas and Numpy API as a DSL. -Data structures are implemented as Numba extensions, and -compiler stages are responsible for different levels of abstraction. -For example, `Series data type support `_ -and `Series transformations `_ -implement the `Pandas Series API `_. -Follow the pipeline for a simple function like `Series.sum()` -for initial understanding of the transformations. - -Intel® SDC Technology Overview ------------------------- - -This `slide deck `_ -provides an overview of Intel® SDC technology and software architecture. - -These papers provide deeper dive in technical ideas (might not be necessary for many developers): - -- `HPAT paper on automatic parallelization for distributed memory `_ -- `HPAT paper on system architecture versus Spark `_ -- `HPAT Dataframe DSL approach `_ -- `ParallelAccelerator DSL approach `_ - - -Numba ------ - -Intel® SDC sits on top of Numba and is heavily tied to many of its features. -Therefore, understanding Numba's internal details and being able to develop Numba extensions -is necessary. - - -- Start with `basic overview of Numba use `_ and try the examples. -- `User documentation `_ is generally helpful for overview of features. -- | `ParallelAccelerator documentation `_ - provides overview of parallel analysis and transformations in Numba (also used in Intel® SDC). -- `Setting up Numba for development `_ -- | `Numba architecture page `_ - is a good starting point for understanding the internals. -- | Learning Numba IR is crucial for understanding transformations. - See the `IR classes `_. - Setting `NUMBA_DEBUG_ARRAY_OPT=1` shows the IR at different stages - of ParallelAccelerator and Intel® SDC transformations. Run `a simple parallel - example `_ - and make sure you understad the IR at different stages. -- | `Exending Numba page `_ - provides details on how to provide native implementations for data types and functions. - The low-level API should be avoided as much as possible for ease of development and - code readability. The `unicode support `_ - in Numba is an example of a modern extension for Numba (documentation planned). -- | A more complex extension is `the new dictionary implementation in - Numba `_ (documentation planned). - It has examples of calling into C code which is implemented as - `a C extension library `_. - For a simpler example of calling into C library, see Intel® SDC's I/O features like - `get_file_size `_. -- | `Developer reference manual `_ - provides more details if necessary. - -How to update the documentation --------------------------------- - -The Intel® SDC documentation is generated from RST files using Sphinx. If you want to add to the documentation follow these steps: - -1. If you don't have sphinx installed then install sphinx in your conda environment:: - - conda install sphinx - -2. You should also install sphinx_bootstrap_theme because that is the theme used for hPAT documentation:: - - pip install sphinx_bootstrap_theme - -2. To add new documentation you either can modify an existing RST file or create a new RST file. The location of that file will be: - docs/source/ - - -3. If you create a new RST file you should also modify the index.rst to add your filename in the table of contents. index.rst is in the same directory as other RST files. Adding the filename to this list will introduce a new section in online documentation. - - -4. To build the developer'sdocumentation:: - - cd docs - make developerhtml - - If you want to build user documentation:: - - cd docs - make html - - -This will generate all html files in _build/html directory. - - -5. If you want to generate pdf you should have latexmk installed. After making sure you have latexmk installed follow these steps:: - - cd docs - make latex - cd _build/latex - make all-pdf - -The pdf will be generated in _build/latex directory as SDC.pdf. diff --git a/docs/devsource/api.rst b/docs/devsource/api.rst deleted file mode 100644 index 3f5475159..000000000 --- a/docs/devsource/api.rst +++ /dev/null @@ -1,8 +0,0 @@ -Modules -======== - -.. toctree:: - :maxdepth: 2 - - distributed - datatypes \ No newline at end of file diff --git a/docs/devsource/conf.py b/docs/devsource/conf.py deleted file mode 100644 index 32a4ae2a8..000000000 --- a/docs/devsource/conf.py +++ /dev/null @@ -1,259 +0,0 @@ -# ***************************************************************************** -# Copyright (c) 2019, Intel Corporation All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# -# Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; -# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, -# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# ***************************************************************************** - - -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -# -# Intel® SDC documentation build configuration file, created by -# sphinx-quickstart on Wed Sep 6 09:29:19 2017. -# -# This file is execfile()d with the current directory set to its -# containing dir. -# -# Note that not all possible configuration values are present in this -# autogenerated file. -# -# All configuration values have a default; values that are commented out -# serve to show the default. - -# If extensions (or modules to document with autodoc) are in another directory, -# add these directories to sys.path here. If the directory is relative to the -# documentation root, use os.path.abspath to make it absolute, like shown here. -# -import os -import sys -import sphinx_bootstrap_theme - -try: - import hpat -except ImportError: - sys.path.insert(0, os.path.abspath('../..')) - import hpat - -sys.path.insert(0, os.path.abspath('../..')) -sys.path.append(os.path.abspath('../../hpat/')) - -# -- General configuration ------------------------------------------------ - -# If your documentation needs a minimal Sphinx version, state it here. -# -# needs_sphinx = '1.0' - -# Add any Sphinx extension module names here, as strings. They can be -# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom -# ones. -extensions = ['sphinx.ext.autodoc', - 'sphinx.ext.intersphinx', - 'sphinx.ext.todo', - 'sphinx.ext.mathjax', - 'sphinx.ext.githubpages', - 'sphinx.ext.napoleon', - 'sphinx.ext.autosectionlabel', - 'sphinx.ext.autosummary', - 'sphinx.ext.viewcode' - ] - - -# Numpy and Google docstring options -napoleon_google_docstring = True -napoleon_numpy_docstring = True -napoleon_include_init_with_doc = True -napoleon_include_private_with_doc = True -napoleon_include_special_with_doc = True -napoleon_use_admonition_for_examples = False -napoleon_use_admonition_for_notes = False -napoleon_use_admonition_for_references = False -napoleon_use_ivar = False -napoleon_use_param = True -napoleon_use_rtype = True - - -#autosummary_generate = True -autosectionlabel_prefix_document = True -'''autodoc_mock_imports = ['numba', -'llvmlite', -'hpat.hstr_ext', -'hpat.dict_ext', -'hpat.str_ext', -'hpat.str_arr_ext', -'hpat.utils', -'hpat.hset_ext', -'hpat.set_ext', -'hpat.config', -'hpat.timsort', -'hpat.io', -'hpat.hdist', -'hpat.transport_seq', -'hpat.distributed_lower', -'hpat.distributed_analysis', -'hpat.hdatetime_ext', -'hpat.hiframes', -'hpat.compiler', -'pandas', -'numpy', -]''' - -add_module_names = False -suppress_warnings = ['autosectionlabel.*' - ] - -# Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] - -# The suffix(es) of source filenames. -# You can specify multiple suffix as a list of string: -# -# source_suffix = ['.rst', '.md'] -source_suffix = '.rst' - -# The master toctree document. -master_doc = 'index' - -# General information about the project. -project = 'Intel® SDC' -#copyright = '2017, Ehsan Totoni' -author = 'Intel' - -# The version info for the project you're documenting, acts as replacement for -# |version| and |release|, also used in various other places throughout the -# built documents. -# -# The short X.Y version. -version = '0.1' -# The full version, including alpha/beta/rc tags. -release = '0.1' - -# The language for content autogenerated by Sphinx. Refer to documentation -# for a list of supported languages. -# -# This is also used if you do content translation via gettext catalogs. -# Usually you set "language" from the command line for these cases. -language = None - -# List of patterns, relative to source directory, that match files and -# directories to ignore when looking for source files. -# This patterns also effect to html_static_path and html_extra_path -exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] - -# The name of the Pygments (syntax highlighting) style to use. -pygments_style = 'sphinx' - -# If true, `todo` and `todoList` produce output, else they produce nothing. -todo_include_todos = True - - -# -- Options for HTML output ---------------------------------------------- - -# The theme to use for HTML and HTML Help pages. See the documentation for -# a list of builtin themes. -# -html_theme = 'bootstrap' - -# Theme options are theme-specific and customize the look and feel of a theme -# further. For a list of options available for each theme, see the -# documentation. -# -html_theme_options = { - 'bootswatch_theme': "paper", -} - -html_theme_path = sphinx_bootstrap_theme.get_html_theme_path() -# Add any paths that contain custom static files (such as style sheets) here, -# relative to this directory. They are copied after the builtin static files, -# so a file named "default.css" will overwrite the builtin "default.css". -#html_static_path = ['_static'] - - -# -- Options for HTMLHelp output ------------------------------------------ - -# Output file base name for HTML help builder. -htmlhelp_basename = 'SDCdoc' - - -# -- Options for LaTeX output --------------------------------------------- - -latex_engine = 'pdflatex' -latex_elements = { - # The paper size ('letterpaper' or 'a4paper'). - # - # 'papersize': 'letterpaper', - - # The font size ('10pt', '11pt' or '12pt'). - # - # 'pointsize': '10pt', - - # Additional stuff for the LaTeX preamble. - # - # 'preamble': '', - - # Latex figure (float) alignment - # - # 'figure_align': 'htbp', -} - -# Grouping the document tree into LaTeX files. List of tuples -# (source start file, target name, title, -# author, documentclass [howto, manual, or own class]). -latex_documents = [ - (master_doc, 'HPAT.tex', 'HPAT Documentation', - 'Intel', 'manual'), -] - -pdf_documents = [ - ('index', u'HPATDocumentation', u'HPAT Documentation', u'Rujal Desai'), -] - -# -- Options for manual page output --------------------------------------- - -# One entry per manual page. List of tuples -# (source start file, name, description, authors, manual section). -man_pages = [ - (master_doc, 'hpat', 'HPAT Documentation', - [author], 1) -] - - -# -- Options for Texinfo output ------------------------------------------- - -# Grouping the document tree into Texinfo files. List of tuples -# (source start file, target name, title, author, -# dir menu entry, description, category) -texinfo_documents = [ - (master_doc, 'HPAT', 'HPAT Documentation', - author, 'HPAT', 'One line description of project.', - 'Miscellaneous'), -] - -numfig = True - -# configuration for intersphinx -intersphinx_mapping = { - 'python': ('https://docs.python.org/', None), - 'numba': ('https://numba.pydata.org/numba-doc/dev', None), - 'numpy': ('http://docs.scipy.org/doc/numpy', None), - 'pandas': ('https://pandas.pydata.org/pandas-docs/stable/', None), -} diff --git a/docs/devsource/datatypes.rst b/docs/devsource/datatypes.rst deleted file mode 100644 index 937fd6690..000000000 --- a/docs/devsource/datatypes.rst +++ /dev/null @@ -1,13 +0,0 @@ -Pandas Series Functions -========================================= - -.. automodule:: datatypes.hpat_pandas_series_functions - :members: - :undoc-members: - :show-inheritance: - :private-members: - :special-members: - :inherited-members: - - - diff --git a/docs/devsource/distributed.rst b/docs/devsource/distributed.rst deleted file mode 100644 index 650d1a0dd..000000000 --- a/docs/devsource/distributed.rst +++ /dev/null @@ -1,25 +0,0 @@ -Distributed -============ - -.. automodule:: hpat.distributed - - -Classes -~~~~~~~ - -.. currentmodule:: hpat.distributed - -.. autoclass:: DistributedPass - :members: - :undoc-members: - :private-members: - :inherited-members: - -Functions -~~~~~~~~~ - -.. autofunction:: _find_first_print - -.. autofunction:: _set_getsetitem_index - -.. autofunction:: dprint \ No newline at end of file diff --git a/docs/devsource/index.rst b/docs/devsource/index.rst deleted file mode 100644 index 6c67acbab..000000000 --- a/docs/devsource/index.rst +++ /dev/null @@ -1,13 +0,0 @@ -Intel® SDC Developer's Guide -======================= - -.. toctree:: - :maxdepth: 2 - :numbered: - :caption: Contents: - - overview - DevelopersGuide - api - -To download Intel® SDC documentation PDF click here :download:`pdf <../_builddev/latex/SDC.pdf>` diff --git a/docs/devsource/overview.rst b/docs/devsource/overview.rst deleted file mode 100644 index a0c27679d..000000000 --- a/docs/devsource/overview.rst +++ /dev/null @@ -1,37 +0,0 @@ -.. _overview: - -Quick Introduction to Intel® SDC -========================== - -.. todo:: Change content here considering Developer's perspective - -High Performance Analytics Toolkit (Intel® SDC) is a big data analytics and machine -learning framework that provides Python's ease of use but is extremely fast. - -Intel® SDC scales analytics programs in python to cluster/cloud environments -automatically, requiring only minimal code changes. Here is a logistic -regression program using Intel® SDC:: - - @hpat.jit - def logistic_regression(iterations): - f = h5py.File("lr.hdf5", "r") - X = f['points'][:] - Y = f['responses'][:] - D = X.shape[1] - w = np.random.ranf(D) - t1 = time.time() - for i in range(iterations): - z = ((1.0 / (1.0 + np.exp(-Y * np.dot(X, w))) - 1.0) * Y) - w -= np.dot(z, X) - return w - -This code runs on cluster and cloud environments using a simple command like:: - - mpiexec -n 1024 python logistic_regression.py - -Intel® SDC compiles the source code to efficient native parallel code -(with `MPI `_). -This is in contrast to other frameworks such as Apache Spark which are -master-executor libraries. Hence, Intel® SDC is typically 100x or more faster. -Intel® SDC is built on top of `Numba `_ -and `LLVM `_ compilers. diff --git a/docs/figs/1D_dist.jpg b/docs/figs/1D_dist.jpg deleted file mode 100644 index 2959e82bec533da6961767091cad7d836533e10d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35182 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 diff --git a/docs/figs/1D_dist.pdf b/docs/figs/1D_dist.pdf deleted file mode 100644 index de577d120e8a8325d87ca38711fd849963606c7f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7436 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 diff --git a/docs/figs/dist.jpg b/docs/figs/dist.jpg deleted file mode 100644 index 4c0e4c689ae43179cb1f25fb48e660f1128f8ab3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 146880 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 pk_+f`RKWE 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 BVln^# diff --git a/docs/figs/dist.pdf b/docs/figs/dist.pdf deleted file mode 100644 index a95110c4d14866a5b6971efaf28480aba2e25e41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9438 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 diff --git a/docs/gh-pages.py b/docs/gh-pages.py deleted file mode 100644 index bdccec815..000000000 --- a/docs/gh-pages.py +++ /dev/null @@ -1,182 +0,0 @@ -# ***************************************************************************** -# Copyright (c) 2019, Intel Corporation All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# -# Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; -# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, -# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# ***************************************************************************** - - -#!/usr/bin/env python -# -*- coding: utf-8 -*- -# adapted from numba/docs - -"""Script to commit the doc build outputs into the github-pages repo. - -Use: - - gh-pages.py [tag] - -If no tag is given, the current output of 'git describe' is used. If given, -that is how the resulting directory will be named. - -In practice, you should use either actual clean tags from a current build or -something like 'current' as a stable URL for the most current version of the """ -from __future__ import print_function, division, absolute_import - -# ----------------------------------------------------------------------------- -# Imports -# ----------------------------------------------------------------------------- -import os -import re -import shutil -import sys -from os import chdir as cd -from os.path import join as pjoin - -from subprocess import Popen, PIPE, CalledProcessError, check_call - -# ----------------------------------------------------------------------------- -# Globals -# ----------------------------------------------------------------------------- - -pages_dir = 'gh-pages' -html_dir = '_build/html' -pdf_dir = '_build/latex' -pages_repo = 'https://github.com/IntelPython/sdc-doc.git' - -# ----------------------------------------------------------------------------- -# Functions -# ----------------------------------------------------------------------------- - - -def sub_environment(): - """Return an environment dict for executing subcommands in.""" - env = os.environ.copy() - # Force untranslated messages for regex matching - env['LANG'] = 'C' - return env - - -def sh(cmd): - """Execute command in a subshell, return status code.""" - return check_call(cmd, shell=True, env=sub_environment()) - - -def sh2(cmd): - """Execute command in a subshell, return stdout. - - Stderr is unbuffered from the subshell.x""" - p = Popen(cmd, stdout=PIPE, shell=True, env=sub_environment()) - out = p.communicate()[0] - retcode = p.returncode - if retcode: - raise CalledProcessError(retcode, cmd) - else: - return out.rstrip() - - -def sh3(cmd): - """Execute command in a subshell, return stdout, stderr - - If anything appears in stderr, print it out to sys.stderr""" - p = Popen(cmd, stdout=PIPE, stderr=PIPE, shell=True, - env=sub_environment()) - out, err = p.communicate() - retcode = p.returncode - if retcode: - raise CalledProcessError(retcode, cmd) - else: - return out.rstrip(), err.rstrip() - - -def init_repo(path): - """clone the gh-pages repo if we haven't already.""" - sh("git clone %s %s" % (pages_repo, path)) - here = os.getcwd() - cd(path) - sh('git checkout gh-pages') - cd(here) - - -# ----------------------------------------------------------------------------- -# Script starts -# ----------------------------------------------------------------------------- -if __name__ == '__main__': - # The tag can be given as a positional argument - try: - tag = sys.argv[1] - except IndexError: - try: - tag = sh2('git describe --exact-match').decode() - except CalledProcessError: - tag = "dev" # Fallback - print("Using dev") - - startdir = os.getcwd() - if not os.path.exists(pages_dir): - # init the repo - init_repo(pages_dir) - else: - # ensure up-to-date before operating - cd(pages_dir) - sh('git checkout gh-pages') - sh('git pull') - cd(startdir) - - dest = pjoin(pages_dir, tag) - - # don't `make html` here, because gh-pages already depends on html in Makefile - # sh('make html') - if tag != 'dev': - # only build pdf for non-dev targets - #sh2('make pdf') - pass - - # This is pretty unforgiving: we unconditionally nuke the destination - # directory, and then copy the html tree in there - shutil.rmtree(dest, ignore_errors=True) - shutil.copytree(html_dir, dest) - if tag != 'dev': - #shutil.copy(pjoin(pdf_dir, 'ipython.pdf'), pjoin(dest, 'ipython.pdf')) - pass - - try: - cd(pages_dir) - status = sh2('git status | head -1').decode() - branch = re.match(r'\#?\s*On branch (.*)$', status).group(1) - if branch != 'gh-pages': - e = 'On %r, git branch is %r, MUST be "gh-pages"' % (pages_dir, - branch) - raise RuntimeError(e) - - sh('git add -A %s' % tag) - sh('git commit -m"Updated doc release: %s"' % tag) - print() - print('Most recent 3 commits:') - sys.stdout.flush() - sh('git --no-pager log --oneline HEAD~3..') - finally: - cd(startdir) - - print() - print('Now verify the build in: %r' % dest) - print("If everything looks good, 'git push'") diff --git a/docs/rename_function.py b/docs/rename_function.py deleted file mode 100644 index 5d961a867..000000000 --- a/docs/rename_function.py +++ /dev/null @@ -1,101 +0,0 @@ -# ***************************************************************************** -# Copyright (c) 2019, Intel Corporation All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# -# Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; -# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, -# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# ***************************************************************************** - - -""" - This script requires developers to add the following information: - 1. add file and function name to srcfiles_srcfuncs - 2. add file and directory name to srcdir_srcfiles - 3. add expected display name for the function to display_names -""" - - -import os -import itertools -from shutil import copyfile - -""" - Add the function names with the src file in this dictionary - If the file is already present, just add the func name in the respective values - Create new entry if the srcfile is not present - - srcfiles_srcfuncs = { srcfile : [func1, func2..]} - srcfile : file containing the function that should be renamed - [func1, func2..] : list of function names that should be changed - -""" -srcfiles_srcfuncs = { - "hpat_pandas_series_functions.py": ["hpat_pandas_series_append", "hpat_pandas_series_ne", "hpat_pandas_series_iloc"] -} - -""" - Add the filenames and the parent directory in this dictionary - If the dir is already present in this list, just add the filename in the respective values - Create a new entry if the dir is not present in this dictionary - - srcdir_srcfiles = { parentdir : [filename1, filename2..]} - parentdir : Parent directory for the file - [filename1, filename2 ..] : List of files that have the functions to be renamed - - """ -srcdir_srcfiles = { - "hpat/datatypes": ["hpat_pandas_series_functions.py"], - "hpat/hiframes": ["aggregate.py", "boxing.py"] -} - - -# Add the function name that will replace the original name and should be displayed in documentation -# Always add new name at the ends. Do not change the order -display_names = ['append', 'ne', 'iloc'] -cur_dir = os.getcwd() - - -# This is the dir where all the source files will be copied -src_copy_dir = os.path.join(cur_dir, "API_Doc") -if not os.path.exists(src_copy_dir): - os.mkdir(src_copy_dir) - -# Copy all required srcfiles -for dir in srcdir_srcfiles: - file_list = srcdir_srcfiles[dir] - for f in file_list: - src_file = os.path.join(cur_dir, dir, f) - dst_file = os.path.join(cur_dir, "API_Doc", f) - copyfile(src_file, dst_file) - -os.chdir(src_copy_dir) - -# Change the function names in copied files -i = 0 -for filename in srcfiles_srcfuncs: - func_list = srcfiles_srcfuncs[filename] - with open(filename, 'r') as fn: - content = fn.read() - for func in func_list: - content = content.replace(func, display_names[i]) - i += 1 - with open(filename, 'w') as fn: - fn.write(content) diff --git a/docs/usersource/GettingStarted.rst b/docs/usersource/GettingStarted.rst deleted file mode 100644 index 599c6813b..000000000 --- a/docs/usersource/GettingStarted.rst +++ /dev/null @@ -1,72 +0,0 @@ -.. _GettingStarted: - -Getting Started with Intel® SDC -~~~~~~~~~~~~~~~~~~~~~~~~~ - -Intel® SDC is useful to accelerate a subset of `Python `_ operations working with `Pandas Series `_ and `Dataframes `_ as well as with `Numpy Arrays `_ . Being the just-in-time compiler built on top of `Numba `_ Intel® SDC will compile a subset of Pandas and Numpy codes into the native code. The compilation is controlled by a set of `Numba decorators `_ and **Intel® SDC decorators** that can be applied to a function. - -The code below illustrates a typical workflow that Intel® SDC is intended to compile - -.. todo:: - Short code illustrating how hpat can compile read_csv and compute aggregators over columns - -We also recommend to read `A ~5 minute guide to Numba `_ . - -Installing Intel® SDC -=============== - -.. todo:: - - instructions how to install hpat using 1) conda, 2) pip - -Experienced users can also compile Intel® SDC from sources - -How to use Intel® SDC -================ - -.. todo:: - Provide a few code snapshots illustrating typical usages of Intel® SDC: - • Reading a file - • Working with a column - a few basic ops, e.g. aggregation or sorting + UDF - • Working with a dataframe - • Working with a machine learning library, e.g. scikit-learn, xgboost, daal - - Each snapshot can have two flavors - serial and parallel to illustrate easiness of getting parallel performance. Each code snapshot provides the link to full examples located at GitHub repo> - -Here's an example which describes reading data from a csv file and performing basic operation like finding mean and sorting values of a specific column: - -.. literalinclude:: ../../examples/series_basic.py - :language: python - :linenos: - :caption: series_basic - :name: series_basic - -Here's another simple example which uses merge and concat operations for Pandas Dataframes: - -.. literalinclude:: ../../examples/Basic_DataFrame.py - :language: python - :linenos: - :caption: merge_concat - :name: merge_concat - - -What If I Get A Compilation Error -================================= - -.. todo:: - Need to give basic information that hpat and numba do not support full set of Pandas and Numpy APIs, provide the link to the API Reference section for Intel® SDC, relevant reference to Numba documentation. - -Also give very short introduction to what kind of code Numba/Intel® SDC can compile and what cannot, i.e. type stability etc. Provide the links to relevant sections in Intel® SDC and Numba documentations focusing on compilation issues/limitations - -Measuring Intel® SDC performance -=========================== - -.. todo:: - Short intro how to measure performance. Compilation time and run time. Illustrate by example. Reference to relevant discussion in Numba documentation - -What If I Get Poor Performance? -=============================== - -.. todo:: - Short introduction why performance may be slower than expected. GIL, Object mode and nopython mode. Overheads related to boxing and unboxing Python objects. - Reference to relevant sections of Intel® SDC and Numba documentation for detailed discussion diff --git a/docs/usersource/apireference.rst b/docs/usersource/apireference.rst deleted file mode 100644 index 2287cc086..000000000 --- a/docs/usersource/apireference.rst +++ /dev/null @@ -1,11 +0,0 @@ -.. _apireference: - -API Reference: Supported Pandas APIs -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -This page gives an overview of all Pandas APIs supported currently by Intel® SDC - -.. toctree:: - :maxdepth: 2 - - series \ No newline at end of file diff --git a/docs/usersource/compilation.rst b/docs/usersource/compilation.rst deleted file mode 100644 index 9b2e04376..000000000 --- a/docs/usersource/compilation.rst +++ /dev/null @@ -1,89 +0,0 @@ -.. _compilation: - -Compiling With Intel® SDC -~~~~~~~~~~~~~~~~~~~ - -.. todo:: - Basic compilation controls. What can be compiled and what cannot. How to work around compilation issues. References to relevant discussion in Numba. Specifics for Series, Dataframes, and other hpat specific data structures - -What if I get a compilation error -=================================== - -There are a few reasons why Intel® SDC cannot compile your code out-of-the-box. - -1. Intel® SDC does support only a subset of Pandas APIs. -2. Intel® SDC and `Numba `_ can compile only a subset of Python data types. -3. Intel® SDC cannot infer the type of a variable at compile time. - -Unsupported APIs ------------------ - -Intel® SDC is able to compile variety of the most typical workflows that involve Pandas operations but not all. Sometimes it means that your code cannot be compiled out-of-the-box. - -.. todo:: - Give an example here of unsupported Pandas API that cannot be compiled as is, e.g. pd.read_excel - -You can work this around by - - - -Unsupported Data Types ------------------------- - -The other common reason why Intel® SDC or `Numba `_ cannot compile the code is because it does not support a certain data type. You can work this around by using an alternative data type. - -.. todo:: - Give examples with dictionaries or datetime, show how one type can be replaced with another - -Type Inference And Type Stability ----------------------------------- - -The last but certainly not the least why Intel® SDC cannot compile your code is because it cannot infer the type at the time of compilation. The most frequent cause for that is the type instability. - -The static compilation is a powerful technology to obtain high efficiency of a code but the flip side is the compiler should be able to infer all variable types at the time of compilation and these types remain stable within the region being compiled. - -The following is an example of the type-unstable variable a, and hence this code cannot be compiled by Intel® SDC:: - - if flag: - a = 1.0 - else: - a = np.ones(10) - -.. todo:: - Discuss the workaround, show the modified code - -The use of isinstance operator often means type instability and is not supported. Similarly, function calls should also be deterministic. The below example is not supported since function f is not known in advance:: - - if flag: - f = np.zeros - else: - f = np.random.ranf - A = f(10) - -.. todo:: - Discuss the workaround, show the modified code - -Discuss other typical scenarios when Numba or hpat cannot perform type inference - -Dealing With Integer NaN Values -================================= - -`Pandas Series `_ are built upon `Numpy Arrays `_ , which do not support NaN values for integers. For that reason Pandas dynamically converts integer columns to floating point ones when NaN values are needed. Intel® SDC can perform such a conversion only if enough information about NaN values is available at compilation time. When it is impossible the user is responsible for manual conversion of integer data to floating point data. - -.. todo:: - Show example when hpat can infer NaNs in integer Series. Also show example where information about NaNs cannot be known at compile time and show how it can be worked around - -Type Inference In I/O Operations -================================= - -If the filename is constant, the Intel® SDC may be able to determine the file schema at compilation time. It will allow to perform type inference of columns in respective Pandas dataframe. - -.. todo:: - Show example with reading file into dataframe when hpat can do type inferencing at compile time - -If Intel® SDC fails to infer types from the file, the schema must be manually specified. - -.. todo:: - Show example how to manually specify the schema - -Alternatively you can take file reading out of the compiled region, or you can try diff --git a/docs/usersource/conf.py b/docs/usersource/conf.py deleted file mode 100644 index 20b081337..000000000 --- a/docs/usersource/conf.py +++ /dev/null @@ -1,239 +0,0 @@ -# ***************************************************************************** -# Copyright (c) 2019, Intel Corporation All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# -# Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; -# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, -# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# ***************************************************************************** - - -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -# -# HPAT documentation build configuration file, created by -# sphinx-quickstart on Wed Sep 6 09:29:19 2017. -# -# This file is execfile()d with the current directory set to its -# containing dir. -# -# Note that not all possible configuration values are present in this -# autogenerated file. -# -# All configuration values have a default; values that are commented out -# serve to show the default. - -# If extensions (or modules to document with autodoc) are in another directory, -# add these directories to sys.path here. If the directory is relative to the -# documentation root, use os.path.abspath to make it absolute, like shown here. -# -import os -import sys -import sphinx_bootstrap_theme - -try: - import hpat -except ImportError: - sys.path.insert(0, os.path.abspath('../..')) - import hpat - - -sys.path.insert(0, os.path.abspath('../..')) -import API_Doc - -# -- General configuration ------------------------------------------------ - -# If your documentation needs a minimal Sphinx version, state it here. -# -# needs_sphinx = '1.0' - -# Add any Sphinx extension module names here, as strings. They can be -# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom -# ones. -extensions = ['sphinx.ext.autodoc', - 'sphinx.ext.intersphinx', - 'sphinx.ext.todo', - 'sphinx.ext.mathjax', - 'sphinx.ext.githubpages', - 'sphinx.ext.napoleon', - 'sphinx.ext.autosectionlabel', - 'sphinx.ext.autosummary' - ] - - -# Numpy and Google docstring options -napoleon_google_docstring = True -napoleon_numpy_docstring = True -napoleon_include_init_with_doc = True -napoleon_include_private_with_doc = True -napoleon_include_special_with_doc = True -napoleon_use_admonition_for_examples = False -napoleon_use_admonition_for_notes = False -napoleon_use_admonition_for_references = False -napoleon_use_ivar = False -napoleon_use_param = True -napoleon_use_rtype = True - - -autosectionlabel_prefix_document = True - - -add_module_names = False -suppress_warnings = ['autosectionlabel.*'] -autodoc_docstring_signature = True - -autosummary_generate = True - -# Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] - -# The suffix(es) of source filenames. -# You can specify multiple suffix as a list of string: -# -# source_suffix = ['.rst', '.md'] -source_suffix = '.rst' - -# The master toctree document. -master_doc = 'index' - -# General information about the project. -project = 'HPAT' -#copyright = '2017, Ehsan Totoni' -author = 'Intel' - -# The version info for the project you're documenting, acts as replacement for -# |version| and |release|, also used in various other places throughout the -# built documents. -# -# The short X.Y version. -version = '0.1' -# The full version, including alpha/beta/rc tags. -release = '0.1' - -# The language for content autogenerated by Sphinx. Refer to documentation -# for a list of supported languages. -# -# This is also used if you do content translation via gettext catalogs. -# Usually you set "language" from the command line for these cases. -language = None - -# List of patterns, relative to source directory, that match files and -# directories to ignore when looking for source files. -# This patterns also effect to html_static_path and html_extra_path -exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] - -# The name of the Pygments (syntax highlighting) style to use. -pygments_style = 'sphinx' - -# If true, `todo` and `todoList` produce output, else they produce nothing. -todo_include_todos = True - - -# -- Options for HTML output ---------------------------------------------- - -# The theme to use for HTML and HTML Help pages. See the documentation for -# a list of builtin themes. -# -html_theme = 'bootstrap' - -# Theme options are theme-specific and customize the look and feel of a theme -# further. For a list of options available for each theme, see the -# documentation. -# -html_theme_options = { - 'bootswatch_theme': "paper", -} - -html_theme_path = sphinx_bootstrap_theme.get_html_theme_path() -# Add any paths that contain custom static files (such as style sheets) here, -# relative to this directory. They are copied after the builtin static files, -# so a file named "default.css" will overwrite the builtin "default.css". -#html_static_path = ['_static'] - - -# -- Options for HTMLHelp output ------------------------------------------ - -# Output file base name for HTML help builder. -htmlhelp_basename = 'HPATdoc' - - -# -- Options for LaTeX output --------------------------------------------- - -latex_engine = 'pdflatex' -latex_elements = { - # The paper size ('letterpaper' or 'a4paper'). - # - # 'papersize': 'letterpaper', - - # The font size ('10pt', '11pt' or '12pt'). - # - # 'pointsize': '10pt', - - # Additional stuff for the LaTeX preamble. - # - # 'preamble': '', - - # Latex figure (float) alignment - # - # 'figure_align': 'htbp', -} - -# Grouping the document tree into LaTeX files. List of tuples -# (source start file, target name, title, -# author, documentclass [howto, manual, or own class]). -latex_documents = [ - (master_doc, 'HPAT.tex', 'HPAT Documentation', - 'Intel', 'manual'), -] - -pdf_documents = [ - ('index', u'HPATDocumentation', u'HPAT Documentation', u'Rujal Desai'), -] - -# -- Options for manual page output --------------------------------------- - -# One entry per manual page. List of tuples -# (source start file, name, description, authors, manual section). -man_pages = [ - (master_doc, 'hpat', 'HPAT Documentation', - [author], 1) -] - - -# -- Options for Texinfo output ------------------------------------------- - -# Grouping the document tree into Texinfo files. List of tuples -# (source start file, target name, title, author, -# dir menu entry, description, category) -texinfo_documents = [ - (master_doc, 'HPAT', 'HPAT Documentation', - author, 'HPAT', 'One line description of project.', - 'Miscellaneous'), -] - -numfig = True - -# configuration for intersphinx -intersphinx_mapping = { - 'python': ('https://docs.python.org/', None), - 'numba': ('https://numba.pydata.org/numba-doc/dev', None), - 'numpy': ('http://docs.scipy.org/doc/numpy', None), - 'pandas': ('https://pandas.pydata.org/pandas-docs/stable/', None), -} diff --git a/docs/usersource/developers.rst b/docs/usersource/developers.rst deleted file mode 100644 index 70bb97a1d..000000000 --- a/docs/usersource/developers.rst +++ /dev/null @@ -1,7 +0,0 @@ -.. developers: - -Intel® SDC for Developers -~~~~~~~~~~~~~~~~~~~~ - -.. todo:: - Provide the link to GitHub repository, provide build instructions, provide the link to Developer's Guide \ No newline at end of file diff --git a/docs/usersource/index.rst b/docs/usersource/index.rst deleted file mode 100644 index 9579674d7..000000000 --- a/docs/usersource/index.rst +++ /dev/null @@ -1,17 +0,0 @@ -Intel® SDC User's Guide -=================== - -.. toctree:: - :maxdepth: 2 - :numbered: - :caption: Contents: - - overview - GettingStarted - compilation - performance - workflow - apireference - developers - -To download Intel® SDC documentation PDF click here :download:`pdf <../SDC.pdf>` diff --git a/docs/usersource/overview.rst b/docs/usersource/overview.rst deleted file mode 100644 index 4a9d62380..000000000 --- a/docs/usersource/overview.rst +++ /dev/null @@ -1,11 +0,0 @@ -.. _overview: - -What is Intel® SDC? -========================== - -Intel® SDC is the extension of `Numba `_ that allows a just-in-time compilation of Python codes, which are the mix of `Pandas DataFrame `_ , `NumPy Array `_ , and other numerical functions. - -Being the `Numba `_ extension, with the :func:`@jit ` and respective compilation options Intel® SDC generates machine code using the `LLVM Compiler `_ as well as can auto-parallelize the code. - -On a single machine Intel® SDC parallelism can be either multi-threading (based on TBB or `OpenMP `_ ) or multi-processing. In addition Intel® SDC can seamlessly scale to many nodes with `MPI `_ , which allows to implement big data analysis workflows using familiar Python APIs such as `Pandas `_ and `Numpy `_ and distributed numerical and machine learning libraries, such as `daal4py `_ . - diff --git a/docs/usersource/performance.rst b/docs/usersource/performance.rst deleted file mode 100644 index da423602a..000000000 --- a/docs/usersource/performance.rst +++ /dev/null @@ -1,16 +0,0 @@ -.. _performance: - -Getting Performance With Intel® SDC -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Compilation Overheads -====================== - -.. todo:: - Discuss tradeoffs of the compilation vs. staying in interpreter/object mode. Demonstrate effects of the compilation time overhead, boxing/unboxing overheads. Explain why boxing and unboxing is required. Explain difference between Pandas dataframe structure layout and internal hpat hi-frame layout, e.g. on the example of unboxing strings. Discuss the difference with Apache Arrow approach - -Automatic Parallelization -========================== - -.. todo:: - Types of supported parallelism. Multiprocessing (MPI) and multi-threading (TBB, OMP, built-in scheduler), implications. Controls, decorators, hybrid parallelism. Tradeoffs choosing the type of parallelism diff --git a/docs/usersource/series.rst b/docs/usersource/series.rst deleted file mode 100644 index 10d5fc968..000000000 --- a/docs/usersource/series.rst +++ /dev/null @@ -1,12 +0,0 @@ -Pandas.Series -========================================= -This section provides a list of all operations of Pandas Series supported in Intel® SDC. - -.. currentmodule:: API_Doc.hpat_pandas_series_functions - -.. autosummary:: - :toctree:api/ - - ne - append - iloc \ No newline at end of file diff --git a/docs/usersource/workflow.rst b/docs/usersource/workflow.rst deleted file mode 100644 index 28aba146f..000000000 --- a/docs/usersource/workflow.rst +++ /dev/null @@ -1,7 +0,0 @@ -.. workflow: - -Typical Intel® SDC workflow -~~~~~~~~~~~~~~~~~~~~~ - -.. todo:: - Discuss high-level issues related to typical data analytics workflow, starting from I/O issues to dataframe processing to machine learning. Discuss each of these aspects on some examples.