diff --git a/ATTRIBUTIONS b/ATTRIBUTIONS index 98d3a24..2f92008 100644 --- a/ATTRIBUTIONS +++ b/ATTRIBUTIONS @@ -91,50 +91,59 @@ License License that accompanies it. Creative Commons may be contacted at http://creativecommons.org/. -3. The Modernist theme - - License: Creative Commons Zero v1.0 Universal - Homepage: https://github.com/pages-themes/modernist +3. documentation-theme-jekyll + License: MIT + Homepage: https://github.com/tomjoht/documentation-theme-jekyll + + The MIT License (MIT) + + Copyright (c) 2016 Tom Johnson + + 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. + +4. Navgoco + License: BSD 3-clause "New" or "Revised" License + homepage: http://github.com/tefra/navgoco/ + /* This license pertains to the Navgoco jQuery component used for the sidebar. */ + + Copyright (c) 2013, Christodoulos Tsoulloftas, http://www.komposta.net + All rights reserved. - Creative Commons CC0 1.0 Universal - Creative Commons Legal Code - CC0 1.0 Universal - CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER. - Statement of Purpose - The laws of most jurisdictions throughout the world automatically confer exclusive Copyright and Related Rights (defined below) upon the creator and subsequent owner(s) (each and all, an "owner") of an original work of authorship and/or a database (each, a "Work"). - - Certain owners wish to permanently relinquish those rights to a Work for the purpose of contributing to a commons of creative, cultural and scientific works ("Commons") that the public can reliably and without fear of later claims of infringement build upon, modify, incorporate in other works, reuse and redistribute as freely as possible in any form whatsoever and for any purposes, including without limitation commercial purposes. These owners may contribute to the Commons to promote the ideal of a free culture and the further production of creative, cultural and scientific works, or to gain reputation or greater distribution for their Work in part through the use and efforts of others. - - For these and/or other purposes and motivations, and without any expectation of additional consideration or compensation, the person associating CC0 with a Work (the "Affirmer"), to the extent that he or she is an owner of Copyright and Related Rights in the Work, voluntarily elects to apply CC0 to the Work and publicly distribute the Work under its terms, with knowledge of his or her Copyright and Related Rights in the Work and the meaning and intended legal effect of CC0 on those rights. - - 1. Copyright and Related Rights. A Work made available under CC0 may be protected by copyright and related or neighboring rights ("Copyright and Related Rights"). Copyright and Related Rights include, but are not limited to, the following: - - the right to reproduce, adapt, distribute, perform, display, communicate, and translate a Work; - moral rights retained by the original author(s) and/or performer(s); - publicity and privacy rights pertaining to a person's image or likeness depicted in a Work; - rights protecting against unfair competition in regards to a Work, subject to the limitations in paragraph 4(a), below; - rights protecting the extraction, dissemination, use and reuse of data in a Work; - database rights (such as those arising under Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, and under any national implementation thereof, including any amended or successor version of such directive); and - other similar, equivalent or corresponding rights throughout the world based on applicable law or treaty, and any national implementations thereof. - 2. Waiver. To the greatest extent permitted by, but not in contravention of, applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and unconditionally waives, abandons, and surrenders all of Affirmer's Copyright and Related Rights and associated claims and causes of action, whether now known or unknown (including existing as well as future claims and causes of action), in the Work - - in all territories worldwide, - for the maximum duration provided by applicable law or treaty (including future time extensions), - in any current or future medium and for any number of copies, and - for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "Waiver"). - Affirmer makes the Waiver for the benefit of each member of the public at large and to the detriment of Affirmer's heirs and successors, fully intending that such Waiver shall not be subject to revocation, rescission, cancellation, termination, or any other legal or equitable action to disrupt the quiet enjoyment of the Work by the public as contemplated by Affirmer's express Statement of Purpose. - 3. Public License Fallback. Should any part of the Waiver for any reason be judged legally invalid or ineffective under applicable law, then the Waiver shall be preserved to the maximum extent permitted taking into account Affirmer's express Statement of Purpose. In addition, to the extent the Waiver is so judged Affirmer hereby grants to each affected person a royalty-free, non transferable, non sublicensable, non exclusive, irrevocable and unconditional license to exercise Affirmer's Copyright and Related Rights in the Work - - in all territories worldwide, - for the maximum duration provided by applicable law or treaty (including future time extensions), - in any current or future medium and for any number of copies, and - for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "License"). - The License shall be deemed effective as of the date CC0 was applied by Affirmer to the Work. Should any part of the License for any reason be judged legally invalid or ineffective under applicable law, such partial invalidity or ineffectiveness shall not invalidate the remainder of the License, and in such case Affirmer hereby affirms that he or she will not - exercise any of his or her remaining Copyright and Related Rights in the Work or - assert any associated claims and causes of action with respect to the Work, in either case contrary to Affirmer's express Statement of Purpose. - 4. Limitations and Disclaimers. - - No trademark or patent rights held by Affirmer are waived, abandoned, surrendered, licensed or otherwise affected by this document. - Affirmer offers the Work as-is and makes no representations or warranties of any kind concerning the Work, express, implied, statutory or otherwise, including without limitation warranties of title, merchantability, fitness for a particular purpose, non infringement, or the absence of latent or other defects, accuracy, or the present or absence of errors, whether or not discoverable, all to the greatest extent permissible under applicable law. - Affirmer disclaims responsibility for clearing rights of other persons that may apply to the Work or any use thereof, including without limitation any person's Copyright and Related Rights in the Work. Further, Affirmer disclaims responsibility for obtaining any necessary consents, permissions or other rights required for any use of the Work. - Affirmer understands and acknowledges that Creative Commons is not a party to this document and has no duty or obligation with respect to this CC0 or use of the Work. + 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. + * Neither the name of the nor the names of its + contributors may be used to endorse or promote products derived from this + software without specific prior written permission. + + 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. diff --git a/README.md b/README.md index e7225d8..f881553 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,26 @@ # Intel® Movidius™ Neural Compute SDK This Intel® Movidius™ Neural Compute software developer kit (NCSDK) is provided for users of the [Intel® Movidius™ Neural Compute Stick](https://developer.movidius.com/) (Intel® Movidius™ NCS). It includes software tools, an API, and examples, so developers can create software that takes advantage of the accelerated neural network capability provided by the Intel Movidius NCS hardware. - +# Neural Compute SDK2 +## [NCSDK v2](https://github.com/movidius/ncsdk/releases/latest) is now available. + +------- +All documentation in the docs directory is now in HTML format which is **best viewed from the documentation site: https://movidius.github.io/ncsdk/** +------- +------- +With this release the existing NCAPI v1 has been rearchitected into NCAPI v2 which will pave the way for future enhancements and capabilities, as well add some now! While users are transitioning to this new NCAPI v2 the legacy NCSDK v1.x release will stay on the master branch and NCSDK2 will be on the [ncsdk2](https://github.com/movidius/ncsdk/tree/ncsdk2) branch. At some point in the not too distant future, NCSDK2 will move to the master. + +To help you get ready for NCSDK2 you can take a look at some of the [changes in NCAPI v2](https://movidius.github.io/ncsdk/ncapi/readme.html) as well as the [NCSDK2 Release Notes](https://movidius.github.io/ncsdk/release_notes.html). + +To install NCSDK 2.x you can use the following command to clone the ncsdk2 branch +```bash +git clone -b ncsdk2 https://github.com/movidius/ncsdk.git +``` +Or if you would rather install the legacy NCSDK 1.x you can use the following command to clone as has always been the case +```bash +git clone https://github.com/movidius/ncsdk.git +``` + # Installation The provided Makefile helps with installation. Clone this repository and then run the following command to install the NCSDK: @@ -27,4 +46,4 @@ For installation and general instructions to get started with the NCSDK, take a # Troubleshooting and Tech Support Be sure to check the [NCS Troubleshooting Guide](https://ncsforum.movidius.com/discussion/370/intel-ncs-troubleshooting-help-and-guidelines#latest) if you run into any issues with the NCS or NCSDK. -Also for general tech support issues the [NCS User Forum](https://developer.movidius.com/forums) is recommended and contains community discussions on many issues and resolutions. +Also for general tech support issues the [NCS User Forum](https://developer.movidius.com/forums) is recommended and contains community discussions on many issues and resolutions. \ No newline at end of file diff --git a/api/include/mvnc.h b/api/include/mvnc.h index b732c63..3059117 100644 --- a/api/include/mvnc.h +++ b/api/include/mvnc.h @@ -56,11 +56,15 @@ typedef enum { } ncStatus_t; typedef enum { - NC_RW_LOG_LEVEL = 0, // Log level, int, MVLOG_DEBUG = 0, debug and above (full verbosity) - // MVLOG_INFO = 1, info and above - // MVLOG_WARN = 2, warnings and above - // MVLOG_ERROR = 3, errors and above - // MVLOG_FATAL = 4, fatal only + NC_LOG_DEBUG = 0, // debug and above (full verbosity) + NC_LOG_INFO, // info and above + NC_LOG_WARN, // warning and above + NC_LOG_ERROR, // errors and above + NC_LOG_FATAL, // fatal only +} ncLogLevel_t; + +typedef enum { + NC_RW_LOG_LEVEL = 0, // Log level, int, default NC_LOG_WARN NC_RO_API_VERSION = 1, // retruns API Version. array of unsigned int of size 4 //major.minor.hotfix.rc } ncGlobalOption_t; @@ -169,12 +173,17 @@ typedef enum { NC_FIFO_FP32 = 1, } ncFifoDataType_t; + struct ncTensorDescriptor_t { - unsigned int n; - unsigned int c; - unsigned int w; - unsigned int h; - unsigned int totalSize; + unsigned int n; // batch size, currently only 1 is supported + unsigned int c; // number of channels + unsigned int w; // width + unsigned int h; // height + unsigned int totalSize; // Total size of the data in tensor = largest stride* dim size + unsigned int cStride; // Stride in the channels' dimension + unsigned int wStride; // Stride in the horizontal dimension + unsigned int hStride; // Stride in the vertical dimension + ncFifoDataType_t dataType; // data type of the tensor, FP32 or FP16 }; typedef enum { @@ -191,13 +200,14 @@ typedef enum { NC_RO_FIFO_CAPACITY = 4, // return number of maximum elements in the buffer NC_RO_FIFO_READ_FILL_LEVEL = 5, // return number of tensors in the read buffer NC_RO_FIFO_WRITE_FILL_LEVEL = 6, // return number of tensors in a write buffer - NC_RO_FIFO_TENSOR_DESCRIPTOR = 7, // return the tensor descriptor of the FIFO + NC_RO_FIFO_GRAPH_TENSOR_DESCRIPTOR = 7, // return the tensor descriptor of the FIFO + NC_RO_FIFO_TENSOR_DESCRIPTOR = NC_RO_FIFO_GRAPH_TENSOR_DESCRIPTOR, // deprecated NC_RO_FIFO_STATE = 8, // return the fifo state, returns CREATED, ALLOCATED,DESTROYED NC_RO_FIFO_NAME = 9, // return fifo name NC_RO_FIFO_ELEMENT_DATA_SIZE = 10, //element data size in bytes, int + NC_RW_FIFO_HOST_TENSOR_DESCRIPTOR = 11, // App's tensor descriptor, defaults to none strided channel minor } ncFifoOption_t; - // Global dllexport ncStatus_t ncGlobalSetOption(int option, const void *data, unsigned int dataLength); diff --git a/api/include/ncCommPrivate.h b/api/include/ncCommPrivate.h index 805950f..1865305 100644 --- a/api/include/ncCommPrivate.h +++ b/api/include/ncCommPrivate.h @@ -34,8 +34,10 @@ struct tensorDescriptor_t { uint32_t w; uint32_t h; uint32_t totalSize; -}; //If this structure is equivalent with the API structure, it is just a coincidence. Don't make any assumptions based on this in the code. - + uint32_t widthStride; + uint32_t heightStride; + uint32_t channelsStride; +}; typedef enum { NC_GRAPH_OK, NC_GRAPH_WRONG_INPUT_FORMAT, @@ -85,7 +87,6 @@ typedef enum { typedef enum { BUFFER_ALLOCATE_CMD = 0, BUFFER_DEALLOCATE_CMD = 1, - } bufferCommandType_t; typedef struct { @@ -94,10 +95,8 @@ typedef struct { char streamName[16]; uint32_t buffId1; uint32_t buffId2; - uint32_t releaseElemBuff1; - uint32_t releaseElemBuff2; uint32_t executors_number; - uint8_t laterUse[16]; + uint8_t laterUse[24]; } graphCommand_t; typedef struct { diff --git a/api/include/ncPrivateTypes.h b/api/include/ncPrivateTypes.h index 6da7d06..02e0d80 100644 --- a/api/include/ncPrivateTypes.h +++ b/api/include/ncPrivateTypes.h @@ -28,7 +28,11 @@ #ifndef _NC_PRIVATE_TYPES_H_ #define _NC_PRIVATE_TYPES_H_ +#if (defined(_WIN32) || defined(_WIN64)) +#include "win_pthread.h" +#else #include +#endif #include #include "ncCommPrivate.h" #include "XLinkPublicDefines.h" @@ -41,6 +45,25 @@ typedef enum { NC_OPTION_CLASS3 = 3, } ncOptionClass_t; +typedef enum { + NC_FIFO_HWC = 0, // row major - channel minor, for RGB image: RGB00, RGB01, RGB02,... + // all RGB pixels by row + NC_FIFO_CHW = 1, // channel major - column minor (planar), for RGB image: + // R01R02R03...G01G02G03...B01B02B03... + // all Red rows..all Green rows..all Blue rows + NC_FIFO_HCW = 2, // row major - column minor (interleaved), for RGB image: + // R00R01..R0k.., G00G01..G0k.., B00B01..B0k.., R10R11..R1k.. + // 1st Red row, 1st Green row, 1st Blue Rrw, 2nd Red row.. + NC_FIFO_CWH = 3, // channel major - row minor, for RGB image: + // R00R10R20... G00G10G20...B00B10B20... + // all Red columns, all Green columns, all blue columns + NC_FIFO_WCH = 4, // column major - row minor; for RGB image: + // R00R10..Rk0.., G00G10..Gk0.., B00B10..Bk0.., R01R11..Rk1.. + // 1st Red col, 1st Green col, 1st blue col, 2nd Red col... + NC_FIFO_WHC = 5, // column major - channle minor, for RGB image: RGB00, RGB10, RGB20... + // all RGB pixels by col... +} ncFifoLayout_t; + struct _devicePrivate_t { int throttle_happened; float *thermal_stats; @@ -84,21 +107,22 @@ struct _graphPrivate_t { struct _fifoPrivate_t { ncFifoType_t type; + ncFifoLayout_t graphLayout; int consumer_cnt; uint32_t id; streamId_t streamId; - struct ncTensorDescriptor_t tensor_desc; + struct ncTensorDescriptor_t graph_tensor_desc; + struct ncTensorDescriptor_t host_tensor_desc; struct _devicePrivate_t *dev; struct _fifoPrivate_t *next; char name[NC_MAX_NAME_SIZE]; struct _userParamPrivate_t *user_param_in; //used for write fifo struct _userParamPrivate_t *user_param_out; //used for read fifo + int host_tensor_desc_set; int write_count; int consumed_by_graph; int num_elements; int api_read_element; - int api_read_adjust; - int datatype; int consumers_remaining; int datasize; pthread_mutex_t fifo_mutex; diff --git a/api/python/mvnc/mvncapi.py b/api/python/mvnc/mvncapi.py index b362b00..14957f8 100644 --- a/api/python/mvnc/mvncapi.py +++ b/api/python/mvnc/mvncapi.py @@ -18,6 +18,7 @@ import numpy import warnings import platform +import numbers from enum import Enum from ctypes import * @@ -88,13 +89,15 @@ class Status(Enum): INVALID_DATA_LENGTH = -14 # invalid data length has been passed when reading an array/buffer option INVALID_HANDLE = -15 # handle to object that is invalid +class LogLevel(Enum): + DEBUG = 0 # debug and above (full verbosity) + INFO = 1 # info and above + WARN = 2 # warnings and above + ERROR = 3 # errors and above + FATAL = 4 # fatal only class GlobalOption(Enum): - RW_LOG_LEVEL = 0 # Log level, int, MVLOG_DEBUG = 0, debug and above (full verbosity) - # MVLOG_INFO = 1, info and above - # MVLOG_WARN = 2, warnings and above - # MVLOG_ERROR = 3, errors and above - # MVLOG_FATAL = 4, fatal only + RW_LOG_LEVEL = 0 # Log level, int, default is WARN RO_API_VERSION = 1 # returns api version. array of unsigned int of size 4 # major.minor.hotfix.rc @@ -168,13 +171,16 @@ class FifoDataType(Enum): FP16 = 0 FP32 = 1 - class TensorDescriptor(Structure): - _fields_ = [('n', c_uint), - ('c', c_uint), - ('w', c_uint), - ('h', c_uint), - ('totalSize', c_uint)] + _fields_ = [('n', c_uint), # batch size, currently only 1 is supported + ('c', c_uint), # number of channels + ('w', c_uint), # width + ('h', c_uint), # height + ('totalSize', c_uint), # total size of the data in tensor = largest stride* dim size + ('cStride', c_uint), # stride in the channels' dimension + ('wStride', c_uint), # stride in the horizontal dimension + ('hStride', c_uint), # stride in the vertical dimension + ('dataType', c_uint)] # data type of the tensor, FP32 or FP16 class FifoOption(Enum): @@ -185,9 +191,12 @@ class FifoOption(Enum): RO_CAPACITY = 4 # return number of maximum elements in the fifo RO_READ_FILL_LEVEL = 5 # return number of tensors in the buffer RO_WRITE_FILL_LEVEL = 6 # return number of tensors in the buffer - RO_TENSOR_DESCRIPTOR = 7 # return the tensor descriptor of the FIFO + RO_GRAPH_TENSOR_DESCRIPTOR = 7 # return the tensor descriptor of the FIFO + RO_TENSOR_DESCRIPTOR = RO_GRAPH_TENSOR_DESCRIPTOR # deprecated RO_STATE = 8 # return the fifo state; CREATED, ALLOCATED, DESTROYED RO_NAME = 9 # returns fifo name + RO_ELEMENT_DATA_SIZE = 10 # element data size in bytes, int + RW_HOST_TENSOR_DESCRIPTOR = 11 # App's tensor descriptor, defaults to none strided channel minor def enumerate_devices(): @@ -210,7 +219,10 @@ def global_set_option(option, value): :param option: a GlobalOption enumeration :param value: value for the option """ - data = c_int(value) + if option == GlobalOption.RW_LOG_LEVEL and (isinstance(value, int) == False): + data = c_int(value.value) + else: + data = c_int(value) status = f.ncGlobalSetOption(option.value, pointer(data), sizeof(data)) if status != Status.OK.value: raise Exception(Status(status)) @@ -257,7 +269,7 @@ def __init__(self, name, fifo_type, skip_init=False): self.handle = c_void_p() self.device = None pName = name.encode('ascii') - + if skip_init == False: status = f.ncFifoCreate(pName, fifo_type.value, byref(self.handle)) if status != Status.OK.value: @@ -293,10 +305,16 @@ def set_option(self, option, value): """ if (option == FifoOption.RW_DATA_TYPE or option == FifoOption.RW_TYPE): data = c_int(value.value) - else: + elif (option != FifoOption.RW_HOST_TENSOR_DESCRIPTOR): data = c_int(value) - status = f.ncFifoSetOption( - self.handle, option.value, pointer(data), sizeof(data)) + + if (option != FifoOption.RW_HOST_TENSOR_DESCRIPTOR): + status = f.ncFifoSetOption( + self.handle, option.value, pointer(data), sizeof(data)) + else: + status = f.ncFifoSetOption( + self.handle, option.value, byref(value), sizeof(value)) + if status != Status.OK.value: raise Exception(Status(status)) @@ -310,6 +328,7 @@ def get_option(self, option): option == FifoOption.RW_DATA_TYPE or option == FifoOption.RW_DONT_BLOCK or option == FifoOption.RO_CAPACITY or + option == FifoOption.RO_ELEMENT_DATA_SIZE or option == FifoOption.RO_READ_FILL_LEVEL or option == FifoOption.RO_WRITE_FILL_LEVEL or option == FifoOption.RO_STATE): @@ -317,7 +336,9 @@ def get_option(self, option): optdata = c_int() def get_optval(raw_optdata): return raw_optdata.value - elif (option == FifoOption.RO_TENSOR_DESCRIPTOR): + elif (option == FifoOption.RO_GRAPH_TENSOR_DESCRIPTOR or + option == FifoOption.RO_TENSOR_DESCRIPTOR or + option == FifoOption.RW_HOST_TENSOR_DESCRIPTOR): # TensorDescriptor struct optdata = TensorDescriptor() @@ -367,11 +388,11 @@ def read_elem(self): Even if the count is bigger than one, the API can read only once. """ - # first read tensor descriptor to allocate buffer for output - tensor_desc = TensorDescriptor() - optsize = c_uint(sizeof(tensor_desc)) + # first read element size to allocate buffer for output + elementsize = c_int() + optsize = c_uint(sizeof(elementsize)) status = f.ncFifoGetOption( - self.handle, FifoOption.RO_TENSOR_DESCRIPTOR.value, byref(tensor_desc), byref(optsize)) + self.handle, FifoOption.RO_ELEMENT_DATA_SIZE.value, byref(elementsize), byref(optsize)) if status != Status.OK.value: raise Exception(Status(status)) @@ -383,19 +404,10 @@ def read_elem(self): if status != Status.OK.value: raise Exception(Status(status)) datatype = optdata.value - - if (datatype == FifoDataType.FP32.value): - sizeof_td_dt = tensor_desc.totalSize / \ - (tensor_desc.n * tensor_desc.c * tensor_desc.w * tensor_desc.h) - tensorlen = c_uint( - int(tensor_desc.totalSize / sizeof_td_dt * numpy.dtype(numpy.float32).itemsize)) - else: - tensorlen = c_uint(tensor_desc.totalSize) - - tensor = create_string_buffer(tensorlen.value) + tensor = create_string_buffer(elementsize.value) user_obj = c_long() status = f.ncFifoReadElem(self.handle, byref( - tensor), byref(tensorlen), byref(user_obj)) + tensor), byref(elementsize), byref(user_obj)) # if status == Status.NO_DATA.value: # return None, None if status != Status.OK.value: @@ -554,7 +566,7 @@ def __init__(self, name): self.handle = c_void_p() self.device = None pName = name.encode('ascii') - + """ Initalize a new graph. This function will not send anything to the device, diff --git a/api/src/Makefile b/api/src/Makefile index 64c444e..32af558 100644 --- a/api/src/Makefile +++ b/api/src/Makefile @@ -6,6 +6,7 @@ OBJDIR := obj-$(ARCH) INSTALLDIR := ${DESTDIR}/usr/local PYTHON3DIST := $(shell python3 -c "import site; print(site.getsitepackages()[0])") PYTHON2DIST := $(shell python -c "import site; print(site.getsitepackages()[0])") +LINK_HIGHCLASS ?= no VERSION_NUMBER=`cat ./version.txt` SRCS := \ mvnc_api.c \ @@ -32,7 +33,14 @@ CFLAGS+=$(XLINK_CFLAGS) -D__PC__ -DUSE_USB_VSC -DVERSION_NAME="\"$(VERSION_NUMBE #CFLAGS+=-DXLINK_NO_BOOT CFLAGS+=-DDEVICE_SHELL_ENABLED -LIBS += -lpthread -lusb-1.0 -ldl -lmvnc_highclass -L$(INSTALLDIR)/lib/ +LIBS += -lpthread -lusb-1.0 -ldl + +#Allow compiling without highclass +ifeq ($(LINK_HIGHCLASS),no) +CFLAGS+= -DEXCLUDE_HIGHCLASS +else +LIBS+= -lmvnc_highclass -L$(INSTALLDIR)/lib/ +endif INCLUDES := \ -I. \ -I../include \ @@ -89,7 +97,7 @@ uninstall: rm -f $(INSTALLDIR)/lib/libmvnc.so rm -f $(INSTALLDIR)/include/mvnc.h rm -f $(INSTALLDIR)/include/mvnc2/mvnc.h - rm -f $(INSTALLDIR)/lib/mvnc/MvNCAPI.mvcmd + rm -f $(INSTALLDIR)/lib/mvnc/MvNCAPI-*.mvcmd # rm -rf $(INSTALLDIR)/lib/mvnc rm -rf ${DESTDIR}$(PYTHON3DIST)/mvnc rm -rf ${DESTDIR}$(PYTHON2DIST)/mvnc diff --git a/api/src/common/components/XLink/pc/UsbLinkPlatform.c b/api/src/common/components/XLink/pc/UsbLinkPlatform.c index f37edd1..0935e34 100644 --- a/api/src/common/components/XLink/pc/UsbLinkPlatform.c +++ b/api/src/common/components/XLink/pc/UsbLinkPlatform.c @@ -37,6 +37,7 @@ #if (defined(_WIN32) || defined(_WIN64) ) #include "usb_winusb.h" #include "gettime.h" +#include "win_pthread.h" extern void initialize_usb_boot(); #else #include @@ -45,6 +46,7 @@ extern void initialize_usb_boot(); #include #include #include +#include #endif #include "usb_boot.h" @@ -79,7 +81,6 @@ int usbFdRead = -1; static int statuswaittimeout = 5; -#include #include pthread_t readerThreadId; diff --git a/api/src/common/components/XLink/pc/usb_boot.c b/api/src/common/components/XLink/pc/usb_boot.c index a67ad92..69f792d 100644 --- a/api/src/common/components/XLink/pc/usb_boot.c +++ b/api/src/common/components/XLink/pc/usb_boot.c @@ -18,7 +18,6 @@ // USB utility for use with Myriad2v2 ROM // Very heavily modified from Sabre version of usb_boot -// Author: David Steinberg // Copyright(C) 2015 Movidius Ltd. diff --git a/api/src/common/components/XLink/shared/XLink.c b/api/src/common/components/XLink/shared/XLink.c index 38a2edb..d0404fc 100644 --- a/api/src/common/components/XLink/shared/XLink.c +++ b/api/src/common/components/XLink/shared/XLink.c @@ -30,11 +30,13 @@ #include #include - -#include -#include #if (defined(_WIN32) || defined(_WIN64)) +#include "win_pthread.h" +#include "win_semaphore.h" #include "gettime.h" +#else +#include +#include #endif #include "mvMacros.h" #include "UsbLinkPlatform.h" @@ -476,7 +478,7 @@ int dispatcherLocalEventGetResponse(xLinkEvent_t* event, xLinkEvent_t* response) event->header.flags.bitField.nack = 0; event->header.flags.bitField.localServe = 0; - if(!isStreamSpaceEnoughFor(stream, ALIGN_UP(event->header.size, __CACHE_LINE_SIZE))){ + if(!isStreamSpaceEnoughFor(stream, event->header.size)){ mvLog(MVLOG_DEBUG,"local NACK RTS. stream is full\n"); event->header.flags.bitField.block = 1; event->header.flags.bitField.localServe = 1; diff --git a/api/src/common/components/XLink/shared/XLinkDispatcher.c b/api/src/common/components/XLink/shared/XLinkDispatcher.c index 23575f5..97f3930 100644 --- a/api/src/common/components/XLink/shared/XLinkDispatcher.c +++ b/api/src/common/components/XLink/shared/XLinkDispatcher.c @@ -28,10 +28,13 @@ #include #include - +#if (defined(_WIN32) || defined(_WIN64)) +#include "win_pthread.h" +#include "win_semaphore.h" +#else #include #include - +#endif #include "XLinkDispatcher.h" #include "XLinkPrivateDefines.h" @@ -138,11 +141,7 @@ sem_t addSchedulerSem; //below workaround for "C2088 '==': illegal for struct" error int pthread_t_compare(pthread_t a, pthread_t b) { -#if (defined(_WIN32) || defined(_WIN64) ) - return ((a.p == b.p) && (a.x == b.x)); -#else return (a == b); -#endif } static int unrefSem(sem_t* sem, xLinkSchedulerState_t* curr) { diff --git a/api/src/common/components/XLink/shared/XLinkPrivateDefines.h b/api/src/common/components/XLink/shared/XLinkPrivateDefines.h index 2ef4be5..c9e352d 100644 --- a/api/src/common/components/XLink/shared/XLinkPrivateDefines.h +++ b/api/src/common/components/XLink/shared/XLinkPrivateDefines.h @@ -27,7 +27,11 @@ #ifdef _USBLINK_ENABLE_PRIVATE_INCLUDE_ #include +#if (defined(_WIN32) || defined(_WIN64)) +#include "win_semaphore.h" +#else #include +#endif #include #include "UsbLinkPlatform.h" diff --git a/api/src/common/components/XLinkConsole/pc/XLinkConsole.h b/api/src/common/components/XLinkConsole/pc/XLinkConsole.h index d5f54fa..b2ae231 100644 --- a/api/src/common/components/XLinkConsole/pc/XLinkConsole.h +++ b/api/src/common/components/XLinkConsole/pc/XLinkConsole.h @@ -20,7 +20,6 @@ * XLinkConsole.h * * Created on: Nov 20, 2017 - * Author: zbiro */ #ifndef _XLINKCONSOLE_H_ #define _XLINKCONSOLE_H_ diff --git a/api/src/common/shared/include/mvLog.h b/api/src/common/shared/include/mvLog.h index dcf82e2..77db60b 100644 --- a/api/src/common/shared/include/mvLog.h +++ b/api/src/common/shared/include/mvLog.h @@ -95,6 +95,9 @@ typedef enum mvLog_t{ MVLOG_LAST, } mvLog_t; +#ifdef __shave__ +__attribute__((section(".laststage"))) +#endif static const char mvLogHeader[MVLOG_LAST][30] = { MVLOG_DEBUG_COLOR "D:", @@ -104,10 +107,19 @@ static const char mvLogHeader[MVLOG_LAST][30] = MVLOG_FATAL_COLOR "F:" }; +// #ifdef __shave__ +// __attribute__((section(".laststage"))) +// #endif unsigned int __attribute__ ((weak)) MVLOGLEVEL(MVLOG_UNIT_NAME) = MVLOG_INFO; +// #ifdef __shave__ +// __attribute__((section(".laststage"))) +// #endif static unsigned int MVLOGLEVEL(default) = MVLOG_INFO; +#ifdef __shave__ +__attribute__((section(".laststage"))) +#endif static int __attribute__ ((unused)) logprintf(enum mvLog_t lvl, const char * func, const int line, const char * format, ...) @@ -129,9 +141,16 @@ logprintf(enum mvLog_t lvl, const char * func, const int line, if(!rtems_interrupt_is_in_progress()) { #endif +#if defined __sparc__ || defined __PC__ fprintf(stdout, headerFormat, mvLogHeader[lvl], timestamp, func, line); vfprintf(stdout, format, args); fprintf(stdout, "%s\n", ANSI_COLOR_RESET); +#elif defined __shave__ + printf(headerFormat, mvLogHeader[lvl], timestamp, func, line); + printf(format, args); + printf("%s\n", ANSI_COLOR_RESET); + +#endif #ifdef __RTEMS__ } else diff --git a/api/src/mvnc_api.c b/api/src/mvnc_api.c index 8228a16..290e98c 100644 --- a/api/src/mvnc_api.c +++ b/api/src/mvnc_api.c @@ -41,6 +41,7 @@ #define MVLOG_UNIT_NAME ncAPI #include "mvLog.h" +#include "mvMacros.h" #define BLOB_STREAM_SIZE 4096 #define NC_MAX_OPTIMISATIONS 40 @@ -59,6 +60,8 @@ #define DEVICE_CLASS0_BASE 2000 #define OPTION_CLASS_SIZE 100 +#define FP16_DATA_SIZE 2 + static int initialized = 0; static int loglevel_initialized = 0; static unsigned int api_version[4] = { 0 }; @@ -66,7 +69,7 @@ static unsigned int api_version[4] = { 0 }; static pthread_mutex_t globalMutex = PTHREAD_MUTEX_INITIALIZER; static XLinkGlobalHandler_t ghandler; - +#ifndef EXCLUDE_HIGHCLASS extern ncStatus_t setDeviceOptionClass2(struct _devicePrivate_t *d, int option, const void *data, unsigned int dataLength); @@ -98,7 +101,7 @@ extern ncStatus_t setGraphOptionClass2(struct _graphPrivate_t *g, extern ncStatus_t setGraphOptionClass3(struct _graphPrivate_t *g, int option, const void *data, unsigned int dataLength); - +#endif static double timeInSeconds() { @@ -124,6 +127,87 @@ static ncOptionClass_t getOptionClass(int option, int base) return (int) ((option - base) / OPTION_CLASS_SIZE); } +#if (defined(_WIN32) || defined(_WIN64) ) +#define MAX_2(a,b) ((a) > (b) ? (a) : (b)) +#define MAX_3(a,b,c) ((a) > (b) ? MAX_2((a), (c)) : MAX_2((b), (c))) +#ifdef MAX +#undef MAX +#define MAX MAX_2 +#endif +#else +#define MAX_3(a,b,c) \ + ({ __typeof__ (a) _a = (a); \ + __typeof__ (b) _b = (b); \ + __typeof__ (c) _c = (c); \ + (_a > _b && _a > _c) ? _a : ((_b > _c && _b > _a) ? _b : _c); }) +#endif + +static ncFifoLayout_t getLayout(struct ncTensorDescriptor_t* td) { + unsigned int max = MAX_3(td->hStride, td->wStride, td->cStride); + if (max == td->hStride) { + if (MAX(td->wStride, td->cStride) == td->wStride) + return NC_FIFO_HWC; + else + return NC_FIFO_HCW; + } else if (max == td->cStride) { + if (MAX(td->wStride, td->hStride) == td->hStride) + return NC_FIFO_CHW; + else + return NC_FIFO_CWH; + } else { //W is major + if (MAX(td->hStride, td->cStride) == td->hStride) + return NC_FIFO_WHC; + else + return NC_FIFO_WCH; + } +} + +static void convertDataTypeAndLayout(const unsigned char* src, unsigned char* dst, + const struct ncTensorDescriptor_t* srcTd, + const struct ncTensorDescriptor_t* dstTd, + ncFifoDataType_t srcType, + ncFifoDataType_t dstType) { + mvLog(MVLOG_DEBUG, "src data type %d dst data type %d\n", srcType, dstType); + mvLog(MVLOG_DEBUG, "SRC: w %d h %d c %d w_s %d h_s %d c_s %d\n", srcTd->w, + srcTd->h, srcTd->c, srcTd->wStride, srcTd->hStride, srcTd->cStride); + mvLog(MVLOG_DEBUG, "DST: w %d h %d c %d w_s %d h_s %d c_s %d\n", dstTd->w, + dstTd->h, dstTd->c, dstTd->wStride, dstTd->hStride, dstTd->cStride); + int dataTypeSize = dstType == NC_FIFO_FP16 ? FP16_DATA_SIZE : sizeof(float); + for (int row = 0; row < srcTd->h; row++) { //row + for (int col = 0; col < srcTd->w; col++) { + for (int c = 0; c < srcTd->c; c++) { + if (srcType == dstType) { + memcpy(&dst[dstTd->wStride*col + row * dstTd->hStride + c * dstTd->cStride], + &src[srcTd->wStride*col + row * srcTd->hStride + c * srcTd->cStride], dataTypeSize); + } else if (srcType == NC_FIFO_FP16) { + //converting to FP32 + unsigned short input = *((unsigned short*) &src[srcTd->wStride*col + row * srcTd->hStride + c * srcTd->cStride]); + unsigned *_dst = (unsigned *) &dst[dstTd->wStride*col + row * dstTd->hStride + c * dstTd->cStride]; + *_dst = half2float(input); + } else { + //converting to FP16 + unsigned int input = * ((unsigned *)&src[srcTd->wStride*col + row * srcTd->hStride + c * srcTd->cStride]); + unsigned short *_dst = (unsigned short*) &dst[dstTd->wStride*col + row * dstTd->hStride + c * dstTd->cStride]; + *_dst = float2half(input); + } + } + } + } +} + +void printImg(unsigned char* inputTensor, struct ncTensorDescriptor_t* inputDesc) { + for (int c = 0; c < inputDesc->c; c++) { + for (int row = 0; row < inputDesc->h; row++) { //row + for (int col = 0; col < inputDesc->w; col++) { + printf("%x ", inputTensor[col + row * inputDesc->hStride + + c * inputDesc->cStride]); + } + printf(" ===== ROW %d (channel %d) Done === \n", row, c); + } + printf("\n"); + } +} + static void resetAll() { int index = 0; @@ -152,7 +236,9 @@ static void resetAll() if (XLinkConnect(handler) != X_LINK_SUCCESS) { mvLog(MVLOG_ERROR, "Failed to connect to stalled device\n"); } - stalled_count++; + else { + stalled_count++; + } free(handler); } else { @@ -813,6 +899,21 @@ ncStatus_t checkGraphMonitorResponse(streamId_t graphMonStream) return NC_OK; } +static void copyTensorDescriptorDetails(const struct tensorDescriptor_t* src, + struct ncTensorDescriptor_t* dest) { + if (!dest || !src) + return; + dest->n = src->n; + dest->w = src->w; + dest->h = src->h; + dest->c = src->c; + dest->totalSize = src->totalSize; + dest->cStride = src->channelsStride; + dest->wStride = src->widthStride; + dest->hStride = src->heightStride; + dest->dataType = NC_FIFO_FP16; //graph data type is FP16 +} + ncStatus_t ncGraphAllocate(struct ncDeviceHandle_t * deviceHandle, struct ncGraphHandle_t * graphHandle, const void *graphBuffer, @@ -947,12 +1048,29 @@ ncStatus_t ncGraphAllocate(struct ncDeviceHandle_t * deviceHandle, if (rc == NC_OK) { g->input_count = tensorDescIn->length / sizeof(struct tensorDescriptor_t); - memcpy(&g->input_tensor_desc, tensorDescIn->data, - sizeof(struct tensorDescriptor_t)); + struct tensorDescriptor_t* inDesc = (struct tensorDescriptor_t* )tensorDescIn->data; + copyTensorDescriptorDetails(inDesc, &g->input_tensor_desc); + mvLog(MVLOG_DEBUG, + "Input tensor w %d h %d c %d n %d totalSize %d wstide %d hstride %d cstride %d layout %d\n", + g->input_tensor_desc.w, g->input_tensor_desc.h, + g->input_tensor_desc.c, + g->input_tensor_desc.n, g->input_tensor_desc.totalSize, + inDesc->widthStride, inDesc->heightStride, + inDesc->channelsStride, getLayout(&g->input_tensor_desc)); g->output_count = tensorDescOut->length / sizeof(struct tensorDescriptor_t); - memcpy(&g->output_tensor_desc, tensorDescOut->data, - sizeof(struct tensorDescriptor_t)); + + struct tensorDescriptor_t* outDesc = (struct tensorDescriptor_t* )tensorDescOut->data; + copyTensorDescriptorDetails(outDesc, &g->output_tensor_desc); + + mvLog(MVLOG_DEBUG, + "output tensor w %d h %d c %d n %d totalSize %d wstide %d hstride %d cstride %d layout %d\n", + g->output_tensor_desc.w, g->output_tensor_desc.h, + g->output_tensor_desc.c, g->output_tensor_desc.n, + g->output_tensor_desc.totalSize, + outDesc->widthStride, outDesc->heightStride, + outDesc->channelsStride, getLayout(&g->output_tensor_desc)); + g->nstages = *(uint32_t *) nstages->data; memcpy(&g->blob_version, blob_version->data, sizeof(g->blob_version)); @@ -1165,12 +1283,14 @@ ncStatus_t ncGraphSetOption(struct ncGraphHandle_t * graphHandle, case NC_OPTION_CLASS1: rc = setGraphOptionClass1(g, option, data, dataLength); break; +#ifndef EXCLUDE_HIGHCLASS case NC_OPTION_CLASS2: rc = setGraphOptionClass2(g, option, data, dataLength); break; case NC_OPTION_CLASS3: rc = setGraphOptionClass3(g, option, data, dataLength); break; +#endif default: mvLog(MVLOG_ERROR, "There is no such option class"); rc = NC_INVALID_PARAMETERS; @@ -1460,12 +1580,14 @@ ncStatus_t ncGraphGetOption(struct ncGraphHandle_t * graphHandle, case NC_OPTION_CLASS1: rc = getGraphOptionClass1(g, option, data, dataLength); break; +#ifndef EXCLUDE_HIGHCLASS case NC_OPTION_CLASS2: rc = getGraphOptionClass2(g, option, data, dataLength); break; case NC_OPTION_CLASS3: rc = getGraphOptionClass3(g, option, data, dataLength); break; +#endif default: mvLog(MVLOG_ERROR, "There is no such option class"); rc = NC_INVALID_PARAMETERS; @@ -1886,12 +2008,14 @@ ncStatus_t ncDeviceSetOption(struct ncDeviceHandle_t * deviceHandle, rc = NC_UNAUTHORIZED; // option class 0 consists of read-only value break; //no class1 - no write options for device +#ifndef EXCLUDE_HIGHCLASS case NC_OPTION_CLASS2: rc = setDeviceOptionClass2(d, option, data, dataLength); break; case NC_OPTION_CLASS3: rc = setDeviceOptionClass3(d, option, data, dataLength); break; +#endif default: rc = NC_INVALID_PARAMETERS; break; @@ -1965,12 +2089,14 @@ ncStatus_t ncDeviceGetOption(struct ncDeviceHandle_t * deviceHandle, rc = getDeviceOptionClass0(d, option, data, dataLength); break; //no class1 - no write options for device +#ifndef EXCLUDE_HIGHCLASS case NC_OPTION_CLASS2: rc = getDeviceOptionClass2(d, option, data, dataLength); break; case NC_OPTION_CLASS3: rc = getDeviceOptionClass3(d, option, data, dataLength); break; +#endif default: rc = NC_INVALID_PARAMETERS; break; @@ -2031,6 +2157,7 @@ ncStatus_t ncFifoCreate(const char *name, ncFifoType_t type, handle->type = type; handle->consumer_cnt = 1; //default consumers + handle->state = NC_FIFO_CREATED; pthread_mutex_init(&handle->fifo_mutex, NULL); handle->consumed_by_graph = 0; @@ -2038,10 +2165,11 @@ ncStatus_t ncFifoCreate(const char *name, ncFifoType_t type, handle->user_param_in = NULL; handle->user_param_out = NULL; handle->api_read_element = 0; - handle->api_read_adjust = 0; handle->id = fifoIdCounter++; - handle->datatype = NC_FIFO_FP32; handle->num_elements = 0; + handle->host_tensor_desc_set = 0; + memset(&handle->host_tensor_desc, 0, sizeof(struct ncTensorDescriptor_t)); + handle->host_tensor_desc.dataType = NC_FIFO_FP32; //default app data type is FP32 strncpy(handle->name, name, NC_MAX_NAME_SIZE); return NC_OK; @@ -2107,6 +2235,84 @@ int popUserParam(struct _fifoPrivate_t *fH, void **user_param, int isIn) return NC_OK; } +void getStrides(ncFifoLayout_t layout, struct ncTensorDescriptor_t* desc, + ncFifoDataType_t dataType) { + int baseStride = dataType == NC_FIFO_FP16 ? FP16_DATA_SIZE : sizeof(float); + switch (layout) { + case NC_FIFO_HWC: + desc->cStride = baseStride; + desc->wStride = desc->cStride * desc->c; + desc->hStride = desc->wStride * desc->w; + break; + case NC_FIFO_CHW: + desc->wStride = baseStride; + desc->hStride = desc->wStride * desc->w; + desc->cStride = desc->hStride * desc->h; + break; + case NC_FIFO_HCW: + desc->wStride = baseStride; + desc->cStride = desc->wStride * desc->w; + desc->hStride = desc->cStride * desc->c; + break; + case NC_FIFO_CWH: + desc->hStride = baseStride; + desc->wStride = desc->hStride * desc->h; + desc->cStride = desc->wStride * desc->w; + break; + case NC_FIFO_WCH: + desc->hStride = baseStride; + desc->cStride = desc->hStride * desc->h; + desc->wStride = desc->cStride * desc->c; + break; + case NC_FIFO_WHC: + desc->cStride = baseStride; + desc->hStride = desc->cStride * desc->c; + desc->wStride = desc->hStride * desc->h; + break; + default: + break; + } +} + +static unsigned int getTotalSize(struct ncTensorDescriptor_t* desc) { + unsigned int maxStride; + unsigned int maxDim; + + if (desc->wStride == desc->hStride && + desc->wStride == desc->cStride) { + maxDim = MAX(desc->w, desc->h); + maxDim = MAX(maxDim, desc->c); + maxStride = desc->wStride; + } else if (desc->wStride >= desc->hStride && + desc->wStride >= desc->cStride) { + maxStride = desc->wStride; + maxDim = desc->w; + if (desc->wStride == desc->hStride) + maxDim = MAX(desc->w, desc->h); + else if (desc->wStride == desc->cStride) + maxDim = MAX(desc->w, desc->c); + } else if (desc->hStride >= desc->wStride && + desc->hStride >= desc->cStride) { + maxStride = desc->hStride; + maxDim = desc->h; + if (desc->hStride == desc->wStride) + maxDim = MAX(desc->h, desc->w); + else if (desc->hStride == desc->cStride) + maxDim = MAX(desc->h, desc->c); + } else { + maxStride = desc->cStride; + maxDim = desc->c; + if (desc->cStride == desc->wStride) + maxDim = MAX(desc->c, desc->w); + else if (desc->cStride == desc->hStride) + maxDim = MAX(desc->c, desc->h); + } + return desc->n * maxStride * maxDim; +} +static unsigned int getElementSize(struct _fifoPrivate_t * handle) { + return handle->host_tensor_desc.totalSize; +} + ncStatus_t ncFifoAllocate(struct ncFifoHandle_t * fifoHandle, struct ncDeviceHandle_t * device, struct ncTensorDescriptor_t * tensor_desc, @@ -2150,26 +2356,35 @@ ncStatus_t ncFifoAllocate(struct ncFifoHandle_t * fifoHandle, } pthread_mutex_unlock(&globalMutex); - handle->tensor_desc = *tensor_desc; - int sizeof_td_dt = - tensor_desc->totalSize / (tensor_desc->n * tensor_desc->c * - tensor_desc->w * tensor_desc->h); - if (sizeof_td_dt == 0) { - pthread_mutex_unlock(&globalMutex); - mvLog(MVLOG_ERROR, - "fifo descriptor has invalid shape, data type size seem to be zero (totalSize/shape produces zero)!\n"); - return NC_INVALID_PARAMETERS; + handle->graph_tensor_desc = *tensor_desc; + if (!handle->host_tensor_desc_set) { + ncFifoDataType_t saved_data_type = handle->host_tensor_desc.dataType; + handle->host_tensor_desc = handle->graph_tensor_desc; + handle->host_tensor_desc.dataType = saved_data_type; + getStrides(NC_FIFO_HWC, &handle->host_tensor_desc, handle->host_tensor_desc.dataType); + handle->host_tensor_desc.totalSize = getTotalSize(&handle->host_tensor_desc); + handle->host_tensor_desc_set = 1; + } else { + // it has been set, let's check that shape is good + // when we add scaling of input, this constraint can be removed + if (handle->host_tensor_desc.w != handle->graph_tensor_desc.w || + handle->host_tensor_desc.h != handle->graph_tensor_desc.h || + handle->host_tensor_desc.c != handle->graph_tensor_desc.c || + handle->host_tensor_desc.n != handle->graph_tensor_desc.n) + { + mvLog(MVLOG_ERROR, "Host tensor descriptor shape doesn't match graph tensor descriptor shape!\n"); + return NC_INVALID_PARAMETERS; + } } + handle->graphLayout = getLayout(tensor_desc); handle->user_param_in = NULL; handle->user_param_out = NULL; handle->num_elements = numElem; handle->consumers_remaining = handle->consumer_cnt; //default consumers handle->dev = d; handle->next = NULL; - if (handle->datatype == NC_FIFO_FP32) - handle->datasize = (tensor_desc->totalSize / sizeof_td_dt) * sizeof(float); - else - handle->datasize = tensor_desc->totalSize; + + handle->datasize = getElementSize(handle); if (d->fifos) handle->next = d->fifos; @@ -2309,6 +2524,7 @@ ncStatus_t ncFifoDestroy(struct ncFifoHandle_t ** fifoHandle) } + ncStatus_t ncFifoWriteElem(struct ncFifoHandle_t * fifoHandle, const void *inputTensor, unsigned int * inputTensorLength, @@ -2348,44 +2564,41 @@ ncStatus_t ncFifoWriteElem(struct ncFifoHandle_t * fifoHandle, mvLog(MVLOG_ERROR, "No write access to fifo"); return NC_UNAUTHORIZED; } - struct ncTensorDescriptor_t * inputDesc = &handle->tensor_desc; - - int rc; - // Convert fp32 to fp16 - if (handle->datatype == NC_FIFO_FP32) { - int sizeof_td_dt = - inputDesc->totalSize / (inputDesc->n * inputDesc->c * inputDesc->w * - inputDesc->h); - if (sizeof_td_dt != 2) { - mvLog(MVLOG_WARN, - "Converting to FP16 while data type size based on descriptor is not FP16!"); - mvLog(MVLOG_WARN, - "Ignoring desc shape and using data type size of FP16\n"); - sizeof_td_dt = 2; - } - int expectedTensorLength = (inputDesc->totalSize / sizeof_td_dt) * sizeof(float); - if (*inputTensorLength != expectedTensorLength) { + if (*inputTensorLength != handle->datasize) { mvLog(MVLOG_ERROR, "input tensor length (%d) doesnt match expected value (%d)", - *inputTensorLength, expectedTensorLength); - *inputTensorLength = expectedTensorLength; + *inputTensorLength, handle->datasize); + *inputTensorLength = handle->datasize; return NC_INVALID_DATA_LENGTH; - } + } + struct ncTensorDescriptor_t * inputDesc = &handle->graph_tensor_desc; - unsigned char *inputTensorFP16 = malloc(inputDesc->totalSize); + int rc; + // Convert fp32 to fp16 and/or input layout + ncFifoLayout_t layout = getLayout(inputDesc); + ncFifoLayout_t host_layout = getLayout(&handle->host_tensor_desc); + if (handle->host_tensor_desc.dataType == NC_FIFO_FP32 || layout != host_layout) { + unsigned char *inputTensorConverted = malloc(inputDesc->totalSize); + struct ncTensorDescriptor_t hostDesc = handle->host_tensor_desc; + //getStrides(handle->hostLayout, &srcDesc, handle->datatype); + + if (layout != host_layout) { + mvLog(MVLOG_DEBUG, + "Conversion from host layout %d to graph layout %d, is needed\n", + host_layout, layout); + } else { + mvLog(MVLOG_DEBUG, + "No layout conversion is needed %d\n", + layout); + } - unsigned int cnt = inputDesc->totalSize / sizeof_td_dt; - floattofp16(inputTensorFP16, (float *) inputTensor, cnt); - rc = XLinkWriteData(handle->streamId, inputTensorFP16, + convertDataTypeAndLayout((unsigned char*) inputTensor, inputTensorConverted, + &hostDesc, + inputDesc, handle->host_tensor_desc.dataType, NC_FIFO_FP16); + rc = XLinkWriteData(handle->streamId, inputTensorConverted, inputDesc->totalSize); - free(inputTensorFP16); + free(inputTensorConverted); } else { - if (*inputTensorLength != inputDesc->totalSize) { - mvLog(MVLOG_ERROR, - "input tensor length doesnt match expected value"); - *inputTensorLength = inputDesc->totalSize; - return NC_INVALID_DATA_LENGTH; - } rc = XLinkWriteData(handle->streamId, inputTensor, *inputTensorLength); } if (rc != 0) @@ -2452,27 +2665,41 @@ ncStatus_t ncFifoReadElem(struct ncFifoHandle_t * fifoHandle, void *outputData, mvLog(MVLOG_ERROR, "API already read this element"); return NC_UNAUTHORIZED; } - streamPacketDesc_t *packet; if (!XLinkReadData(handle->streamId, &packet)) { - // Convert fp16 to fp32 - if (handle->datatype == NC_FIFO_FP32) { - int sizeof_td_dt = handle->tensor_desc.totalSize / - (handle->tensor_desc.n * handle->tensor_desc.c * - handle->tensor_desc.w * handle->tensor_desc.h); - int cnt = packet->length / sizeof_td_dt; - fp16tofloat(outputData, (unsigned char *) packet->data, cnt); + // Convert fp16 to fp32 and/or layout + struct ncTensorDescriptor_t * fifoDesc = &handle->graph_tensor_desc; + ncFifoLayout_t layout = getLayout(fifoDesc); + ncFifoLayout_t host_layout = getLayout(&handle->host_tensor_desc); + //printf("packet->length %d handle->datasize %d \n" , packet->length, handle->datasize); + + if (handle->host_tensor_desc.dataType == NC_FIFO_FP32 || + layout != host_layout) { + struct ncTensorDescriptor_t hostDesc = handle->host_tensor_desc; + //getStrides(handle->hostLayout, &dstDesc, handle->host_tensor_desc.dataType); + if (layout != host_layout) { + mvLog(MVLOG_DEBUG, + "Conversion from graph layout %d to host layout %d, is needed\n", + layout, host_layout); + } else { + mvLog(MVLOG_DEBUG, + "No layout conversion is needed %d\n", layout); + } + + convertDataTypeAndLayout((unsigned char*) packet->data, outputData, + fifoDesc, &hostDesc, NC_FIFO_FP16, + handle->host_tensor_desc.dataType ); } else { memcpy(outputData, packet->data, packet->length); } XLinkReleaseData(handle->streamId); } + //As user should see an API read to be the same as Graph read, we need to wirte the element in 2 queues. //if we read it here, we will need to remove the element on the device side //to avoid sending a message just for this purpose, we can send it at the next trigger which touches this FIFO. pthread_mutex_lock(&handle->fifo_mutex); handle->api_read_element = 1; - handle->api_read_adjust++; handle->consumers_remaining--; if (handle->consumers_remaining == 0) { @@ -2509,7 +2736,7 @@ ncStatus_t ncFifoSetOption(struct ncFifoHandle_t * fifoHandle, int option, return NC_INVALID_HANDLE; } struct _fifoPrivate_t *f = (struct _fifoPrivate_t *) fifoHandle->private_data; - if (f->state != NC_FIFO_CREATED) { + if (f->state != NC_FIFO_CREATED && option != NC_RW_FIFO_HOST_TENSOR_DESCRIPTOR) { mvLog(MVLOG_ERROR, "cannot set Fifo options after allocation"); return NC_UNAUTHORIZED; } @@ -2523,7 +2750,14 @@ ncStatus_t ncFifoSetOption(struct ncFifoHandle_t * fifoHandle, int option, dataLength, size); return NC_INVALID_DATA_LENGTH; } - f->type = *(ncFifoType_t *) data; + int tempType = *(ncFifoType_t *) data; + if (tempType != NC_FIFO_HOST_WO && tempType != NC_FIFO_HOST_RO) { + mvLog(MVLOG_ERROR, + "Type value set (%d) is invalid!\n", + tempType); + return NC_INVALID_PARAMETERS; + } + f->type = tempType; break; } case NC_RW_FIFO_CONSUMER_COUNT:{ @@ -2545,7 +2779,48 @@ ncStatus_t ncFifoSetOption(struct ncFifoHandle_t * fifoHandle, int option, dataLength, size); return NC_INVALID_DATA_LENGTH; } - f->datatype = *(int *) data; + int tempDType = *(int *) data; + if (tempDType != NC_FIFO_FP16 && tempDType != NC_FIFO_FP32) { + mvLog(MVLOG_ERROR, + "dataType value set (%d) is invalid!\n", + tempDType); + return NC_INVALID_PARAMETERS; + } + f->host_tensor_desc.dataType = tempDType; + break; + } + case NC_RW_FIFO_HOST_TENSOR_DESCRIPTOR:{ + unsigned int size = sizeof(struct ncTensorDescriptor_t); + if (dataLength < size) { + mvLog(MVLOG_ERROR, + "data length of output buffer (%d) is smaller that required (%d)!\n", + dataLength, size); + return NC_INVALID_DATA_LENGTH; + } + + int expected_total_size = getTotalSize((struct ncTensorDescriptor_t *) data); + if (expected_total_size != ((struct ncTensorDescriptor_t *) data)->totalSize) { + mvLog(MVLOG_ERROR, + "totalSize in host tensor descriptor (%d) doesn't match expeected totalSize (%d)!\n", + ((struct ncTensorDescriptor_t *) data)->totalSize, expected_total_size); + return NC_INVALID_PARAMETERS; + } + if (f->state == NC_FIFO_ALLOCATED) { + struct ncTensorDescriptor_t* temp = (struct ncTensorDescriptor_t*) data; + if (temp->w != f->graph_tensor_desc.w || + temp->h != f->graph_tensor_desc.h || + temp->c != f->graph_tensor_desc.c || + temp->n != f->graph_tensor_desc.n) + { + mvLog(MVLOG_ERROR, "trying to set host tensor decriptor to a shape that doesn't match graph tensor descriptor shape!\n"); + return NC_INVALID_PARAMETERS; + } + } + + f->host_tensor_desc = *(struct ncTensorDescriptor_t *) data; + f->host_tensor_desc_set = 1; + f->datasize = getElementSize(f); + break; } case NC_RW_FIFO_DONT_BLOCK: @@ -2554,7 +2829,7 @@ ncStatus_t ncFifoSetOption(struct ncFifoHandle_t * fifoHandle, int option, case NC_RO_FIFO_CAPACITY: case NC_RO_FIFO_READ_FILL_LEVEL: case NC_RO_FIFO_WRITE_FILL_LEVEL: - case NC_RO_FIFO_TENSOR_DESCRIPTOR: + case NC_RO_FIFO_GRAPH_TENSOR_DESCRIPTOR: case NC_RO_FIFO_STATE: case NC_RO_FIFO_ELEMENT_DATA_SIZE: return NC_UNAUTHORIZED; @@ -2584,7 +2859,7 @@ ncStatus_t ncFifoGetOption(struct ncFifoHandle_t * fifoHandle, int option, if (fifoHandle->private_data->state == NC_FIFO_CREATED && option != NC_RO_FIFO_STATE && option != NC_RW_FIFO_DATA_TYPE && option != NC_RW_FIFO_DONT_BLOCK && option != NC_RW_FIFO_CONSUMER_COUNT - && option != NC_RO_FIFO_NAME) { + && option != NC_RO_FIFO_NAME && option != NC_RW_FIFO_HOST_TENSOR_DESCRIPTOR) { mvLog(MVLOG_ERROR, "Fifo hasn't been allocated, cannot read those options"); return NC_NOT_ALLOCATED; @@ -2630,7 +2905,7 @@ ncStatus_t ncFifoGetOption(struct ncFifoHandle_t * fifoHandle, int option, *dataLength = sizeof(fifoHandle->private_data->consumer_cnt); break; case NC_RO_FIFO_ELEMENT_DATA_SIZE: - *(int *) data = fifoHandle->private_data->datasize; + *(int *) data = getElementSize(fifoHandle->private_data); *dataLength = sizeof(fifoHandle->private_data->datasize); break; case NC_RW_FIFO_DATA_TYPE: @@ -2643,15 +2918,15 @@ ncStatus_t ncFifoGetOption(struct ncFifoHandle_t * fifoHandle, int option, *dataLength = size; return NC_INVALID_DATA_LENGTH; } - *(int *) data = fifoHandle->private_data->datatype; - *dataLength = sizeof(fifoHandle->private_data->datatype); + *(int *) data = fifoHandle->private_data->host_tensor_desc.dataType; + *dataLength = sizeof(fifoHandle->private_data->host_tensor_desc.dataType); break; } case NC_RO_FIFO_CAPACITY: *(int *) data = fifoHandle->private_data->num_elements; *dataLength = sizeof(fifoHandle->private_data->num_elements); break; - case NC_RO_FIFO_TENSOR_DESCRIPTOR: + case NC_RO_FIFO_GRAPH_TENSOR_DESCRIPTOR: { unsigned int size = sizeof(struct ncTensorDescriptor_t); if (*dataLength < size) { @@ -2664,8 +2939,29 @@ ncStatus_t ncFifoGetOption(struct ncFifoHandle_t * fifoHandle, int option, if (fifoHandle->private_data->state != NC_FIFO_ALLOCATED) return NC_UNAUTHORIZED; // before allocation, tensor_desc is NULL *(struct ncTensorDescriptor_t *) data = - fifoHandle->private_data->tensor_desc; - *dataLength = sizeof(fifoHandle->private_data->tensor_desc); + fifoHandle->private_data->graph_tensor_desc; + *dataLength = sizeof(fifoHandle->private_data->graph_tensor_desc); + break; + } + case NC_RW_FIFO_HOST_TENSOR_DESCRIPTOR: + { + unsigned int size = sizeof(struct ncTensorDescriptor_t); + if (*dataLength < size) { + mvLog(MVLOG_ERROR, + "data length of output buffer (%d) is smaller that required (%d)!\n", + *dataLength, size); + *dataLength = size; + return NC_INVALID_DATA_LENGTH; + } + if (fifoHandle->private_data->state != NC_FIFO_ALLOCATED && + fifoHandle->private_data->host_tensor_desc_set == 0) { + mvLog(MVLOG_ERROR, + "option NC_RW_FIFO_HOST_TENSOR_DESCRIPTOR cannot be read before it has been set or before Fifo has been allocated"); + return NC_UNAUTHORIZED; + } + *(struct ncTensorDescriptor_t *) data = + fifoHandle->private_data->host_tensor_desc; + *dataLength = sizeof(fifoHandle->private_data->host_tensor_desc); break; } case NC_RO_FIFO_READ_FILL_LEVEL: @@ -2681,7 +2977,7 @@ ncStatus_t ncFifoGetOption(struct ncFifoHandle_t * fifoHandle, int option, } int fillLevel; if (XLinkGetFillLevel(fi->streamId, 0, &fillLevel) == X_LINK_SUCCESS) { - *(int *) data = (fillLevel / fi->tensor_desc.totalSize); + *(int *) data = (fillLevel / fi->graph_tensor_desc.totalSize); } else { return NC_UNAUTHORIZED; } @@ -2701,7 +2997,7 @@ ncStatus_t ncFifoGetOption(struct ncFifoHandle_t * fifoHandle, int option, } int fillLevel; if (XLinkGetFillLevel(fi->streamId, 1, &fillLevel) == X_LINK_SUCCESS) { - *(int *) data = (fillLevel / fi->tensor_desc.totalSize); + *(int *) data = (fillLevel / fi->graph_tensor_desc.totalSize); } else { return NC_ERROR; } @@ -2786,8 +3082,8 @@ ncStatus_t ncGraphQueueInference(struct ncGraphHandle_t * graphHandle, //graphs have no access to one of the fifos return NC_INVALID_PARAMETERS; } - if (tensorCompatibility(&fi->tensor_desc, &g->input_tensor_desc) != NC_OK || - tensorCompatibility(&fo->tensor_desc, + if (tensorCompatibility(&fi->graph_tensor_desc, &g->input_tensor_desc) != NC_OK || + tensorCompatibility(&fo->graph_tensor_desc, &g->output_tensor_desc) != NC_OK) { mvLog(MVLOG_WARN, "Input/Output tensor shape is not compatible with graph"); @@ -2804,8 +3100,7 @@ ncStatus_t ncGraphQueueInference(struct ncGraphHandle_t * graphHandle, void *user_param; pthread_mutex_lock(&fi->fifo_mutex); fi->consumers_remaining--; - cmd.cmd.graphCmd.releaseElemBuff1 = fi->api_read_adjust; - fi->api_read_adjust = 0; + if (fi->consumers_remaining == 0) { if (!fi->api_read_element && fifoReadAccess(fi)) { //the element was entirely consumed by graphs. This means we need to free it up from XLink streamPacketDesc_t *packet; @@ -2826,8 +3121,6 @@ ncStatus_t ncGraphQueueInference(struct ncGraphHandle_t * graphHandle, pthread_mutex_unlock(&fi->fifo_mutex); pthread_mutex_lock(&fo->fifo_mutex); - cmd.cmd.graphCmd.releaseElemBuff2 = fo->api_read_adjust; - fo->api_read_adjust = 0; rc = pushUserParam(fo, user_param, 0); if (rc != NC_OK) { pthread_mutex_unlock(&fo->fifo_mutex); diff --git a/api/src/version.txt b/api/src/version.txt index ce4879c..2e86a85 100644 --- a/api/src/version.txt +++ b/api/src/version.txt @@ -1 +1 @@ -2.04.00.06 +2.05.00.02 diff --git a/docs/TOC.html b/docs/TOC.html index 4c51099..138d097 100644 --- a/docs/TOC.html +++ b/docs/TOC.html @@ -1,45 +1,506 @@ - - - + + + - - - - - - - - - - -
-
-

Intel® Movidius™ Neural Compute SDK

+ + + + + | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
-

View the Project on GitHub

-
+ + + + + + +
  • + Frameworks + +
  • + + + + + +
  • + Toolkit + +
  • + + + + + +
  • + API + +
  • + + + + + + +
  • + + Examples +
  • + + + + + + +
  • + + Release Notes +
  • + + + + + + +
  • + + Support +
  • + + + + + + -
    + + + +
    + + -

    Intel® Movidius™ Neural Compute SDK Documentation

    + + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/caffe.html b/docs/caffe.html index 4db96ad..1e1bec2 100644 --- a/docs/caffe.html +++ b/docs/caffe.html @@ -1,39 +1,501 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +Caffe Support | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Caffe Support + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + + +
  • + + Examples +
  • + + + + + + +
  • + + Release Notes +
  • + + + + + + +
  • + + Support +
  • + + + + + + + + + -
    +
    + + -

    Caffe Support

    + +
    +

    Caffe Support

    -

    Introduction

    Caffe is a deep learning framework developed by Berkeley AI Research (BAIR) and by community contributors.

    Each version of the Intel® Movidius™ Neural Compute SDK (Intel® Movidius™ NCSDK) installs and is validated with a single version of Caffe that provides broad network support for that release. The specific version installed may change from release to release. Other versions of Caffe may work with the NCSDK but are not officially supported and may require customization for your specific development machine.

    @@ -49,12 +511,12 @@

    Caffe Models

  • .caffemodel - Binary file that contains the weights for each layer that are obtained after training a model
  • -

    Further reading: Deploying Your Customized Caffe Models on Intel® Movidius™ Neural Compute Stick

    +

    Caffe Layer Support

    The following layers are supported in Caffe by the NCSDK. The NCSDK does not support network training, so some layers that are only required for training are not supported.

    -

    Activation/Neuron

    +

    Activation/Neuron

    • bias
    • elu
    • @@ -65,18 +527,18 @@

      Activation/Neuron

    • tanh
    -

    Common

    +

    Common

    • inner_product
    -

    Normalization

    +

    Normalization

    • batch_norm
    • lrn
    -

    Utility

    +

    Utility

    • concat
    • eltwise
    • @@ -87,7 +549,7 @@

      Utility

    • softmax
    -

    Vision

    +

    Vision

    • conv
        @@ -99,8 +561,8 @@

        Vision

      • pooling
      -

      Known Issues

      -

      Caffe Input Layer

      +

      Known Issues

      +

      Caffe Input Layer

      Limitation: Batch Size, which is the first dimension, must always be 1

      @@ -140,7 +602,7 @@

      Input Name

      { dim:1 dim:3 dim:224 dim:224 }
    -

    Crop Layer

    +

    Crop Layer

    Limitation: Crop layer cannot take reference size layer from input:”data”.

    layer {
    @@ -156,7 +618,7 @@ 

    Crop Layer

    }
    -

    Size Limitations

    +

    Size Limitations

    Compiled Movidius™ “graph” file < 320 MB; Intermediate layer buffer size < 100 MB

    [Error 35] Setup Error: Not enough resources on Myriad to process this network
    @@ -167,15 +629,23 @@ 

    Size Limitations

    [Error 25] Myriad Error: "Matmul scratch memory [112640] lower than required [165392]"
     
    - - +
    + +
    + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/compiler_error.html b/docs/compiler_error.html index 31237b0..becb37f 100644 --- a/docs/compiler_error.html +++ b/docs/compiler_error.html @@ -1,83 +1,669 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +mvNCCompile Error Codes | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +mvNCCompile Error Codes + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    - -
    - -

    mvNCCompile Error Codes

    - -

    Error 1: “Setup Error: Caffe Import Error.”

    -

    Error 2: “Setup Error: Using a version of Python that is unsupported.”

    -

    Error 3: “Setup Error: Caffe Syntax Error: …”

    -

    Error 4: “Toolkit Error: Stage Type Not Supported: …”

    -

    Error 5: “Toolkit Error: Stage Details Not Supported: …”

    -

    Error 6: “Setup Error: no Myriad Executable detected.”

    -

    Error 7: “Toolkit Error: USB Failure. Code: …”

    -

    Error 8: “Argument Error: Network description cannot be found.”

    -

    Error 9: “Argument Error: Network weight cannot be found.”

    -

    Error 10: “Toolkit Error: No such Mode …”

    -

    Error 11: “Argument Error: Expected ID not provided.”

    -

    Error 12: “Argument Error: Image cannot be found.”

    -

    Error 13: “Toolkit Error: Provided OutputNode/InputNode name does not exist or does not match with one contained in caffemodel file Provided: …”

    -

    Error 14: “Toolkit Error: Data Type Not Supported: …”

    -

    Error 15: “Toolkit Error: Parser Not Supported: …”

    -

    Error 16: “Toolkit Error: Internal Error: Input Stage is not first layer.”

    - -

    Error 18: “Toolkit Error: Internal Error: Invalid Conversion Optimization. From: …”

    -

    Error 19: “Toolkit Error: Setup Error: Not all required arguments were passed / Erroneous arguments.”

    -

    Error 20: “Toolkit Error: Input Layer must be in an input_shape construct.”

    -

    Error 21: “Argument Error: Validation metric not supported “

    -

    Error 22: “Toolkit Error: Unable to tell what parser is required. Consider overriding with –parser argument.”

    -

    Error 23: “Toolkit Error: Mismatch between input layer of network and given input file.”

    -

    Error 24: “Toolkit Error: >1 image inference not supported.”

    -

    Error 26: “Toolkit Error: No moviUsbBoot Executable detected.”

    -

    Error 25: “Myriad Error: …”

    -

    Error 27: “Setup Error: Too Many / Too Few Shave Processors Selected.”

    -

    Error 28: “Caffe Error: MemoryError. Potential Cause: Available RAM not sufficient for Network to be loaded into Caffe”

    -

    Error 29: “Setup Error: Tuple Syntax Incorrect, should be in form x,y,z “

    -

    Error 30: “Toolkit Error: Filetype not supported as a input.”

    -

    Error 31: “USB Error: Problem Transferring data.”

    -

    Error 32: “Setup Error: Problem parsing configuration File.”

    -

    Error 33: “Toolkit Error: No Temperature Read from device.”

    -

    Error 34: “Setup Error: Values for input contain placeholder. Pass an absolute value.”

    -

    Error 35: “Setup Error: Not enough resources on Myriad to process this network.”

    - - -
    -
    - - - - +
  • + Toolkit + +
  • + + + + + +
  • + API + +
  • + + + + + + +
  • + + Examples +
  • + + + + + + +
  • + + Release Notes +
  • + + + + + + +
  • + + Support +
  • + + + + + + + + + + + + + + + +
    +

    mvNCCompile Error Codes

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Error CodeMessage
    1Setup Error: Caffe Import Error.
    2Setup Error: Using a version of Python that is unsupported.
    3Setup Error: Caffe Syntax Error: …
    4Toolkit Error: Stage Type Not Supported: …
    5Toolkit Error: Stage Details Not Supported: …
    6Setup Error: no Myriad Executable detected.
    7Toolkit Error: USB Failure. Code: …
    8Argument Error: Network description cannot be found.
    9Argument Error: Network weight cannot be found.
    10Toolkit Error: No such Mode …
    11Argument Error: Expected ID not provided.
    12Argument Error: Image cannot be found.
    13Toolkit Error: Provided OutputNode/InputNode name does not exist or does not match with one contained in caffemodel file Provided: …
    14Toolkit Error: Data Type Not Supported: …
    15Toolkit Error: Parser Not Supported: …
    16Toolkit Error: Internal Error: Input Stage is not first layer.
    17Toolkit Error: Internal Error: Could not build graph. Missing link: …
    18Toolkit Error: Internal Error: Invalid Conversion Optimization. From: …
    19Toolkit Error: Setup Error: Not all required arguments were passed / Erroneous arguments.
    20Toolkit Error: Input Layer must be in an input_shape construct.
    21Argument Error: Validation metric not supported
    22Toolkit Error: Unable to tell what parser is required. Consider overriding with –parser argument.
    23Toolkit Error: Mismatch between input layer of network and given input file.
    24Toolkit Error: >1 image inference not supported.
    26Toolkit Error: No moviUsbBoot Executable detected.
    25Myriad Error: …
    27Setup Error: Too Many / Too Few Shave Processors Selected.
    28Caffe Error: MemoryError. Potential Cause: Available RAM not sufficient for Network to be loaded into Caffe
    29Setup Error: Tuple Syntax Incorrect, should be in form x,y,z
    30Toolkit Error: Filetype not supported as a input.
    31USB Error: Problem Transferring data.
    32Setup Error: Problem parsing configuration File.
    33Toolkit Error: No Temperature Read from device.
    34Setup Error: Values for input contain placeholder. Pass an absolute value.
    35Setup Error: Not enough resources on Myriad to process this network.
    + +
    + + + + + + + + + +
    +
    + +
    +
    + diff --git a/docs/configure_network.html b/docs/configure_network.html index 31388ee..a197353 100644 --- a/docs/configure_network.html +++ b/docs/configure_network.html @@ -1,37 +1,500 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +Configuring Your Network for the Intel® Movidius™ Neural Compute SDK | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Configuring Your Network for the Intel® Movidius™ Neural Compute SDK + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + + +
  • + Installation + +
  • + + + + + +
  • + Frameworks + +
  • + + + + + +
  • + Toolkit + +
  • + + + + + +
  • + API + +
  • + + + + + + +
  • + + Examples +
  • + + + + + + +
  • + + Release Notes +
  • + + + + + + +
  • + + Support +
  • + + + + + + + + + -
    +
    + + -

    Configuring Your Network for the Intel® Movidius™ Neural Compute SDK

    + +
    +

    Configuring Your Network for the Intel® Movidius™ Neural Compute SDK

    This guide will help you get all of the configuration information correct when creating your network for the Intel® Movidius™ Neural Compute SDK (NCSDK). All of these parameters are critical. If you don’t get them right, your network won’t give you the accuracy that was achieved by the team that trained the model. The configuration parameters are as follows:

      @@ -49,7 +512,7 @@

      Mean Subtraction

      104, 117, 123
       These numbers are in BGR orientation.
       
      -

      Caffe Specific Examples

      +

      Caffe Specific Examples

      This mean calculation can be calculated with a tool that comes with caffe (compute_image_mean.cpp). Caffe provides a script to do it, as well (make_imagenet_mean.sh).


      @@ -83,8 +546,8 @@

      Caffe Specific Examples

      scale: 0.00390625 }
    -

    TensorFlow™ Specific Examples

    -

    TensorFlow™ documentation of mean is not as straightforward as Caffe. The TensorFlow Slim models for image classification are a great place to get high quality pre-trained models:

    +

    TensorFlow Specific Examples

    +

    TensorFlow* documentation of mean is not as straightforward as Caffe. The TensorFlow Slim models for image classification are a great place to get high quality pre-trained models:

    slim models

    @@ -133,10 +596,10 @@

    Categories

    Most Caffe trained models seem to follow the 1000 class convention, and TensorFlow trained models follow the 1001 class convention. For the TensorFlow models, an offset needs to be added. You can see this documented in the TensorFlow GitHub.

    -

    Putting It All Together

    +

    Putting It All Together

    Now with all of these factors, let’s go through two examples.

    -

    Caffe Example

    +

    Caffe Example

    Let’s use the Berkeley Caffe GoogLeNet model as an example. The basic model parameters are:

    Scale: 0-255 (before mean subtraction)
     Mean: based on mean_binary.proto file
    @@ -168,7 +631,7 @@ 

    Caffe Example

    print ('prediction ' + str(i) + ' is ' + labels[order[i]-labels_offset])
    -

    TensorFlow Example

    +

    TensorFlow Example

    Let’s use the TensorFlow Slim Inception V3:

    Scale: -1 to 1 (after mean subtraction)
     Mean: 128
    @@ -203,17 +666,26 @@ 

    TensorFlow Example

    print ('prediction ' + str(i) + ' is ' + labels[order[i]-labels_offset])
    -

    Feedback or comments? Let me know at darren.s.crews@intel.com.

    +
    Feedback or comments? Let me know at darren.s.crews@intel.com.
    - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/css/bootstrap.min.css b/docs/css/bootstrap.min.css new file mode 100755 index 0000000..caec43d --- /dev/null +++ b/docs/css/bootstrap.min.css @@ -0,0 +1,7528 @@ +/*! + * Bootstrap v3.3.2 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + + +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ + +html { + font-family: sans-serif; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100% +} + +body { + margin: 0 +} + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block +} + +audio, +canvas, +progress, +video { + display: inline-block; + vertical-align: baseline +} + +audio:not([controls]) { + display: none; + height: 0 +} + +[hidden], +template { + display: none +} + +a { + background-color: transparent +} + +a:active, +a:hover { + outline: 0 +} + +abbr[title] { + border-bottom: 1px dotted +} + +b, +strong { + font-weight: 700 +} + +dfn { + font-style: italic +} + +h1 { + margin: .67em 0; + font-size: 2em +} + +mark { + color: #000; + background: #ff0 +} + +small { + font-size: 80% +} + +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline +} + +sup { + top: -.5em +} + +sub { + bottom: -.25em +} + +img { + border: 0 +} + +svg:not(:root) { + overflow: hidden +} + +figure { + margin: 1em 40px +} + +hr { + height: 0; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box +} + +pre { + overflow: auto +} + +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em +} + +button, +input, +optgroup, +select, +textarea { + margin: 0; + font: inherit; + color: inherit +} + +button { + overflow: visible +} + +button, +select { + text-transform: none +} + +button, +html input[type=button], +input[type=reset], +input[type=submit] { + -webkit-appearance: button; + cursor: pointer +} + +button[disabled], +html input[disabled] { + cursor: default +} + +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0 +} + +input { + line-height: normal +} + +input[type=checkbox], +input[type=radio] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 0 +} + +input[type=number]::-webkit-inner-spin-button, +input[type=number]::-webkit-outer-spin-button { + height: auto +} + +input[type=search] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield +} + +input[type=search]::-webkit-search-cancel-button, +input[type=search]::-webkit-search-decoration { + -webkit-appearance: none +} + +fieldset { + padding: .35em .625em .75em; + margin: 0 2px; + border: 1px solid silver +} + +legend { + padding: 0; + border: 0 +} + +textarea { + overflow: auto +} + +optgroup { + font-weight: 700 +} + +table { + border-spacing: 0; + border-collapse: collapse +} + +td, +th { + padding: 0 +} + + +/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ + +@media print { + *, + :after, + :before { + /*color:#000!important;*/ + /*background:0 0!important*/ + ; + } + a, + a:visited { + text-decoration: underline + } + a[href]:after { + content: " (" attr(href) ")" + } + abbr[title]:after { + content: " (" attr(title) ")" + } + a[href^="javascript:"]:after, + a[href^="#"]:after { + content: "" + } + blockquote, + pre { + border: 1px solid #999; + page-break-inside: avoid + } + thead { + display: table-header-group + } + img, + tr { + page-break-inside: avoid + } + img { + max-width: 100%!important + } + h2, + h3, + p { + orphans: 3; + widows: 3 + } + h2, + h3 { + page-break-after: avoid + } + select { + background: #fff!important + } + .navbar { + display: none + } + .btn>.caret, + .dropup>.btn>.caret { + border-top-color: #000!important + } + .label { + border: 1px solid #000 + } + .table { + border-collapse: collapse!important + } + .table td, + .table th { + background-color: #fff!important + } + .table-bordered td, + .table-bordered th { + border: 1px solid #ddd!important + } +} + +@font-face { + font-family: 'Glyphicons Halflings'; + src: url(../fonts/glyphicons-halflings-regular.eot); + src: url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'), url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'), url(../fonts/glyphicons-halflings-regular.woff) format('woff'), url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'), url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg') +} + +.glyphicon { + position: relative; + top: 1px; + display: inline-block; + font-family: 'Glyphicons Halflings'; + font-style: normal; + font-weight: 400; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale +} + +.glyphicon-asterisk:before { + content: "\2a" +} + +.glyphicon-plus:before { + content: "\2b" +} + +.glyphicon-eur:before, +.glyphicon-euro:before { + content: "\20ac" +} + +.glyphicon-minus:before { + content: "\2212" +} + +.glyphicon-cloud:before { + content: "\2601" +} + +.glyphicon-envelope:before { + content: "\2709" +} + +.glyphicon-pencil:before { + content: "\270f" +} + +.glyphicon-glass:before { + content: "\e001" +} + +.glyphicon-music:before { + content: "\e002" +} + +.glyphicon-search:before { + content: "\e003" +} + +.glyphicon-heart:before { + content: "\e005" +} + +.glyphicon-star:before { + content: "\e006" +} + +.glyphicon-star-empty:before { + content: "\e007" +} + +.glyphicon-user:before { + content: "\e008" +} + +.glyphicon-film:before { + content: "\e009" +} + +.glyphicon-th-large:before { + content: "\e010" +} + +.glyphicon-th:before { + content: "\e011" +} + +.glyphicon-th-list:before { + content: "\e012" +} + +.glyphicon-ok:before { + content: "\e013" +} + +.glyphicon-remove:before { + content: "\e014" +} + +.glyphicon-zoom-in:before { + content: "\e015" +} + +.glyphicon-zoom-out:before { + content: "\e016" +} + +.glyphicon-off:before { + content: "\e017" +} + +.glyphicon-signal:before { + content: "\e018" +} + +.glyphicon-cog:before { + content: "\e019" +} + +.glyphicon-trash:before { + content: "\e020" +} + +.glyphicon-home:before { + content: "\e021" +} + +.glyphicon-file:before { + content: "\e022" +} + +.glyphicon-time:before { + content: "\e023" +} + +.glyphicon-road:before { + content: "\e024" +} + +.glyphicon-download-alt:before { + content: "\e025" +} + +.glyphicon-download:before { + content: "\e026" +} + +.glyphicon-upload:before { + content: "\e027" +} + +.glyphicon-inbox:before { + content: "\e028" +} + +.glyphicon-play-circle:before { + content: "\e029" +} + +.glyphicon-repeat:before { + content: "\e030" +} + +.glyphicon-refresh:before { + content: "\e031" +} + +.glyphicon-list-alt:before { + content: "\e032" +} + +.glyphicon-lock:before { + content: "\e033" +} + +.glyphicon-flag:before { + content: "\e034" +} + +.glyphicon-headphones:before { + content: "\e035" +} + +.glyphicon-volume-off:before { + content: "\e036" +} + +.glyphicon-volume-down:before { + content: "\e037" +} + +.glyphicon-volume-up:before { + content: "\e038" +} + +.glyphicon-qrcode:before { + content: "\e039" +} + +.glyphicon-barcode:before { + content: "\e040" +} + +.glyphicon-tag:before { + content: "\e041" +} + +.glyphicon-tags:before { + content: "\e042" +} + +.glyphicon-book:before { + content: "\e043" +} + +.glyphicon-bookmark:before { + content: "\e044" +} + +.glyphicon-print:before { + content: "\e045" +} + +.glyphicon-camera:before { + content: "\e046" +} + +.glyphicon-font:before { + content: "\e047" +} + +.glyphicon-bold:before { + content: "\e048" +} + +.glyphicon-italic:before { + content: "\e049" +} + +.glyphicon-text-height:before { + content: "\e050" +} + +.glyphicon-text-width:before { + content: "\e051" +} + +.glyphicon-align-left:before { + content: "\e052" +} + +.glyphicon-align-center:before { + content: "\e053" +} + +.glyphicon-align-right:before { + content: "\e054" +} + +.glyphicon-align-justify:before { + content: "\e055" +} + +.glyphicon-list:before { + content: "\e056" +} + +.glyphicon-indent-left:before { + content: "\e057" +} + +.glyphicon-indent-right:before { + content: "\e058" +} + +.glyphicon-facetime-video:before { + content: "\e059" +} + +.glyphicon-picture:before { + content: "\e060" +} + +.glyphicon-map-marker:before { + content: "\e062" +} + +.glyphicon-adjust:before { + content: "\e063" +} + +.glyphicon-tint:before { + content: "\e064" +} + +.glyphicon-edit:before { + content: "\e065" +} + +.glyphicon-share:before { + content: "\e066" +} + +.glyphicon-check:before { + content: "\e067" +} + +.glyphicon-move:before { + content: "\e068" +} + +.glyphicon-step-backward:before { + content: "\e069" +} + +.glyphicon-fast-backward:before { + content: "\e070" +} + +.glyphicon-backward:before { + content: "\e071" +} + +.glyphicon-play:before { + content: "\e072" +} + +.glyphicon-pause:before { + content: "\e073" +} + +.glyphicon-stop:before { + content: "\e074" +} + +.glyphicon-forward:before { + content: "\e075" +} + +.glyphicon-fast-forward:before { + content: "\e076" +} + +.glyphicon-step-forward:before { + content: "\e077" +} + +.glyphicon-eject:before { + content: "\e078" +} + +.glyphicon-chevron-left:before { + content: "\e079" +} + +.glyphicon-chevron-right:before { + content: "\e080" +} + +.glyphicon-plus-sign:before { + content: "\e081" +} + +.glyphicon-minus-sign:before { + content: "\e082" +} + +.glyphicon-remove-sign:before { + content: "\e083" +} + +.glyphicon-ok-sign:before { + content: "\e084" +} + +.glyphicon-question-sign:before { + content: "\e085" +} + +.glyphicon-info-sign:before { + content: "\e086" +} + +.glyphicon-screenshot:before { + content: "\e087" +} + +.glyphicon-remove-circle:before { + content: "\e088" +} + +.glyphicon-ok-circle:before { + content: "\e089" +} + +.glyphicon-ban-circle:before { + content: "\e090" +} + +.glyphicon-arrow-left:before { + content: "\e091" +} + +.glyphicon-arrow-right:before { + content: "\e092" +} + +.glyphicon-arrow-up:before { + content: "\e093" +} + +.glyphicon-arrow-down:before { + content: "\e094" +} + +.glyphicon-share-alt:before { + content: "\e095" +} + +.glyphicon-resize-full:before { + content: "\e096" +} + +.glyphicon-resize-small:before { + content: "\e097" +} + +.glyphicon-exclamation-sign:before { + content: "\e101" +} + +.glyphicon-gift:before { + content: "\e102" +} + +.glyphicon-leaf:before { + content: "\e103" +} + +.glyphicon-fire:before { + content: "\e104" +} + +.glyphicon-eye-open:before { + content: "\e105" +} + +.glyphicon-eye-close:before { + content: "\e106" +} + +.glyphicon-warning-sign:before { + content: "\e107" +} + +.glyphicon-plane:before { + content: "\e108" +} + +.glyphicon-calendar:before { + content: "\e109" +} + +.glyphicon-random:before { + content: "\e110" +} + +.glyphicon-comment:before { + content: "\e111" +} + +.glyphicon-magnet:before { + content: "\e112" +} + +.glyphicon-chevron-up:before { + content: "\e113" +} + +.glyphicon-chevron-down:before { + content: "\e114" +} + +.glyphicon-retweet:before { + content: "\e115" +} + +.glyphicon-shopping-cart:before { + content: "\e116" +} + +.glyphicon-folder-close:before { + content: "\e117" +} + +.glyphicon-folder-open:before { + content: "\e118" +} + +.glyphicon-resize-vertical:before { + content: "\e119" +} + +.glyphicon-resize-horizontal:before { + content: "\e120" +} + +.glyphicon-hdd:before { + content: "\e121" +} + +.glyphicon-bullhorn:before { + content: "\e122" +} + +.glyphicon-bell:before { + content: "\e123" +} + +.glyphicon-certificate:before { + content: "\e124" +} + +.glyphicon-thumbs-up:before { + content: "\e125" +} + +.glyphicon-thumbs-down:before { + content: "\e126" +} + +.glyphicon-hand-right:before { + content: "\e127" +} + +.glyphicon-hand-left:before { + content: "\e128" +} + +.glyphicon-hand-up:before { + content: "\e129" +} + +.glyphicon-hand-down:before { + content: "\e130" +} + +.glyphicon-circle-arrow-right:before { + content: "\e131" +} + +.glyphicon-circle-arrow-left:before { + content: "\e132" +} + +.glyphicon-circle-arrow-up:before { + content: "\e133" +} + +.glyphicon-circle-arrow-down:before { + content: "\e134" +} + +.glyphicon-globe:before { + content: "\e135" +} + +.glyphicon-wrench:before { + content: "\e136" +} + +.glyphicon-tasks:before { + content: "\e137" +} + +.glyphicon-filter:before { + content: "\e138" +} + +.glyphicon-briefcase:before { + content: "\e139" +} + +.glyphicon-fullscreen:before { + content: "\e140" +} + +.glyphicon-dashboard:before { + content: "\e141" +} + +.glyphicon-paperclip:before { + content: "\e142" +} + +.glyphicon-heart-empty:before { + content: "\e143" +} + +.glyphicon-link:before { + content: "\e144" +} + +.glyphicon-phone:before { + content: "\e145" +} + +.glyphicon-pushpin:before { + content: "\e146" +} + +.glyphicon-usd:before { + content: "\e148" +} + +.glyphicon-gbp:before { + content: "\e149" +} + +.glyphicon-sort:before { + content: "\e150" +} + +.glyphicon-sort-by-alphabet:before { + content: "\e151" +} + +.glyphicon-sort-by-alphabet-alt:before { + content: "\e152" +} + +.glyphicon-sort-by-order:before { + content: "\e153" +} + +.glyphicon-sort-by-order-alt:before { + content: "\e154" +} + +.glyphicon-sort-by-attributes:before { + content: "\e155" +} + +.glyphicon-sort-by-attributes-alt:before { + content: "\e156" +} + +.glyphicon-unchecked:before { + content: "\e157" +} + +.glyphicon-expand:before { + content: "\e158" +} + +.glyphicon-collapse-down:before { + content: "\e159" +} + +.glyphicon-collapse-up:before { + content: "\e160" +} + +.glyphicon-log-in:before { + content: "\e161" +} + +.glyphicon-flash:before { + content: "\e162" +} + +.glyphicon-log-out:before { + content: "\e163" +} + +.glyphicon-new-window:before { + content: "\e164" +} + +.glyphicon-record:before { + content: "\e165" +} + +.glyphicon-save:before { + content: "\e166" +} + +.glyphicon-open:before { + content: "\e167" +} + +.glyphicon-saved:before { + content: "\e168" +} + +.glyphicon-import:before { + content: "\e169" +} + +.glyphicon-export:before { + content: "\e170" +} + +.glyphicon-send:before { + content: "\e171" +} + +.glyphicon-floppy-disk:before { + content: "\e172" +} + +.glyphicon-floppy-saved:before { + content: "\e173" +} + +.glyphicon-floppy-remove:before { + content: "\e174" +} + +.glyphicon-floppy-save:before { + content: "\e175" +} + +.glyphicon-floppy-open:before { + content: "\e176" +} + +.glyphicon-credit-card:before { + content: "\e177" +} + +.glyphicon-transfer:before { + content: "\e178" +} + +.glyphicon-cutlery:before { + content: "\e179" +} + +.glyphicon-header:before { + content: "\e180" +} + +.glyphicon-compressed:before { + content: "\e181" +} + +.glyphicon-earphone:before { + content: "\e182" +} + +.glyphicon-phone-alt:before { + content: "\e183" +} + +.glyphicon-tower:before { + content: "\e184" +} + +.glyphicon-stats:before { + content: "\e185" +} + +.glyphicon-sd-video:before { + content: "\e186" +} + +.glyphicon-hd-video:before { + content: "\e187" +} + +.glyphicon-subtitles:before { + content: "\e188" +} + +.glyphicon-sound-stereo:before { + content: "\e189" +} + +.glyphicon-sound-dolby:before { + content: "\e190" +} + +.glyphicon-sound-5-1:before { + content: "\e191" +} + +.glyphicon-sound-6-1:before { + content: "\e192" +} + +.glyphicon-sound-7-1:before { + content: "\e193" +} + +.glyphicon-copyright-mark:before { + content: "\e194" +} + +.glyphicon-registration-mark:before { + content: "\e195" +} + +.glyphicon-cloud-download:before { + content: "\e197" +} + +.glyphicon-cloud-upload:before { + content: "\e198" +} + +.glyphicon-tree-conifer:before { + content: "\e199" +} + +.glyphicon-tree-deciduous:before { + content: "\e200" +} + +.glyphicon-cd:before { + content: "\e201" +} + +.glyphicon-save-file:before { + content: "\e202" +} + +.glyphicon-open-file:before { + content: "\e203" +} + +.glyphicon-level-up:before { + content: "\e204" +} + +.glyphicon-copy:before { + content: "\e205" +} + +.glyphicon-paste:before { + content: "\e206" +} + +.glyphicon-alert:before { + content: "\e209" +} + +.glyphicon-equalizer:before { + content: "\e210" +} + +.glyphicon-king:before { + content: "\e211" +} + +.glyphicon-queen:before { + content: "\e212" +} + +.glyphicon-pawn:before { + content: "\e213" +} + +.glyphicon-bishop:before { + content: "\e214" +} + +.glyphicon-knight:before { + content: "\e215" +} + +.glyphicon-baby-formula:before { + content: "\e216" +} + +.glyphicon-tent:before { + content: "\26fa" +} + +.glyphicon-blackboard:before { + content: "\e218" +} + +.glyphicon-bed:before { + content: "\e219" +} + +.glyphicon-apple:before { + content: "\f8ff" +} + +.glyphicon-erase:before { + content: "\e221" +} + +.glyphicon-hourglass:before { + content: "\231b" +} + +.glyphicon-lamp:before { + content: "\e223" +} + +.glyphicon-duplicate:before { + content: "\e224" +} + +.glyphicon-piggy-bank:before { + content: "\e225" +} + +.glyphicon-scissors:before { + content: "\e226" +} + +.glyphicon-bitcoin:before { + content: "\e227" +} + +.glyphicon-yen:before { + content: "\00a5" +} + +.glyphicon-ruble:before { + content: "\20bd" +} + +.glyphicon-scale:before { + content: "\e230" +} + +.glyphicon-ice-lolly:before { + content: "\e231" +} + +.glyphicon-ice-lolly-tasted:before { + content: "\e232" +} + +.glyphicon-education:before { + content: "\e233" +} + +.glyphicon-option-horizontal:before { + content: "\e234" +} + +.glyphicon-option-vertical:before { + content: "\e235" +} + +.glyphicon-menu-hamburger:before { + content: "\e236" +} + +.glyphicon-modal-window:before { + content: "\e237" +} + +.glyphicon-oil:before { + content: "\e238" +} + +.glyphicon-grain:before { + content: "\e239" +} + +.glyphicon-sunglasses:before { + content: "\e240" +} + +.glyphicon-text-size:before { + content: "\e241" +} + +.glyphicon-text-color:before { + content: "\e242" +} + +.glyphicon-text-background:before { + content: "\e243" +} + +.glyphicon-object-align-top:before { + content: "\e244" +} + +.glyphicon-object-align-bottom:before { + content: "\e245" +} + +.glyphicon-object-align-horizontal:before { + content: "\e246" +} + +.glyphicon-object-align-left:before { + content: "\e247" +} + +.glyphicon-object-align-vertical:before { + content: "\e248" +} + +.glyphicon-object-align-right:before { + content: "\e249" +} + +.glyphicon-triangle-right:before { + content: "\e250" +} + +.glyphicon-triangle-left:before { + content: "\e251" +} + +.glyphicon-triangle-bottom:before { + content: "\e252" +} + +.glyphicon-triangle-top:before { + content: "\e253" +} + +.glyphicon-console:before { + content: "\e254" +} + +.glyphicon-superscript:before { + content: "\e255" +} + +.glyphicon-subscript:before { + content: "\e256" +} + +.glyphicon-menu-left:before { + content: "\e257" +} + +.glyphicon-menu-right:before { + content: "\e258" +} + +.glyphicon-menu-down:before { + content: "\e259" +} + +.glyphicon-menu-up:before { + content: "\e260" +} + +* { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box +} + +:after, +:before { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box +} + +html { + font-size: 10px; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0) +} + +body { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.42857143; + color: #333; + background-color: #fff +} + +button, +input, +select, +textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit +} + +a { + color: #337ab7; + text-decoration: none +} + +a:focus, +a:hover { + color: #23527c; + text-decoration: underline +} + +a:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px +} + +figure { + margin: 0 +} + +img { + vertical-align: middle +} + +.carousel-inner>.item>a>img, +.carousel-inner>.item>img, +.img-responsive, +.thumbnail a>img, +.thumbnail>img { + display: block; + max-width: 100%; + height: auto +} + +.img-rounded { + border-radius: 6px +} + +.img-thumbnail { + display: inline-block; + max-width: 100%; + height: auto; + padding: 4px; + line-height: 1.42857143; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 4px; + -webkit-transition: all .2s ease-in-out; + -o-transition: all .2s ease-in-out; + transition: all .2s ease-in-out +} + +.img-circle { + border-radius: 50% +} + +hr { + margin-top: 20px; + margin-bottom: 20px; + border: 0; + border-top: 1px solid #eee +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0 +} + +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto +} + +.h1, +.h2, +.h3, +.h4, +.h5, +.h6, +h1, +h2, +h3, +h4, +h5, +h6 { + font-family: inherit; + font-weight: 500; + line-height: 1.1; + color: inherit +} + +.h1 .small, +.h1 small, +.h2 .small, +.h2 small, +.h3 .small, +.h3 small, +.h4 .small, +.h4 small, +.h5 .small, +.h5 small, +.h6 .small, +.h6 small, +h1 .small, +h1 small, +h2 .small, +h2 small, +h3 .small, +h3 small, +h4 .small, +h4 small, +h5 .small, +h5 small, +h6 .small, +h6 small { + font-weight: 400; + line-height: 1; + color: #777 +} + +.h1, +.h2, +.h3, +h1, +h2, +h3 { + margin-top: 20px; + margin-bottom: 10px +} + +.h1 .small, +.h1 small, +.h2 .small, +.h2 small, +.h3 .small, +.h3 small, +h1 .small, +h1 small, +h2 .small, +h2 small, +h3 .small, +h3 small { + font-size: 65% +} + +.h4, +.h5, +.h6, +h4, +h5, +h6 { + margin-top: 10px; + margin-bottom: 10px +} + +.h4 .small, +.h4 small, +.h5 .small, +.h5 small, +.h6 .small, +.h6 small, +h4 .small, +h4 small, +h5 .small, +h5 small, +h6 .small, +h6 small { + font-size: 75% +} + +.h1, +h1 { + font-size: 36px +} + +.h2, +h2 { + font-size: 30px +} + +.h3, +h3 { + font-size: 24px +} + +.h4, +h4 { + font-size: 18px +} + +.h5, +h5 { + font-size: 14px +} + +.h6, +h6 { + font-size: 12px +} + +p { + margin: 0 0 10px +} + +.lead { + margin-bottom: 20px; + font-size: 16px; + font-weight: 300; + line-height: 1.4 +} + +@media (min-width:768px) { + .lead { + font-size: 21px + } +} + +.small, +small { + font-size: 85% +} + +.mark, +mark { + padding: .2em; + background-color: #fcf8e3 +} + +.text-left { + text-align: left +} + +.text-right { + text-align: right +} + +.text-center { + text-align: center +} + +.text-justify { + text-align: justify +} + +.text-nowrap { + white-space: nowrap +} + +.text-lowercase { + text-transform: lowercase +} + +.text-uppercase { + text-transform: uppercase +} + +.text-capitalize { + text-transform: capitalize +} + +.text-muted { + color: #777 +} + +.text-primary { + color: #337ab7 +} + +a.text-primary:hover { + color: #286090 +} + +.text-success { + color: #3c763d +} + +a.text-success:hover { + color: #2b542c +} + +.text-info { + color: #31708f +} + +a.text-info:hover { + color: #245269 +} + +.text-warning { + color: #8a6d3b +} + +a.text-warning:hover { + color: #66512c +} + +.text-danger { + color: #a94442 +} + +a.text-danger:hover { + color: #843534 +} + +.bg-primary { + color: #fff; + background-color: #337ab7 +} + +a.bg-primary:hover { + background-color: #286090 +} + +.bg-success { + background-color: #dff0d8 +} + +a.bg-success:hover { + background-color: #c1e2b3 +} + +.bg-info { + background-color: #d9edf7 +} + +a.bg-info:hover { + background-color: #afd9ee +} + +.bg-warning { + background-color: #fcf8e3 +} + +a.bg-warning:hover { + background-color: #f7ecb5 +} + +.bg-danger { + background-color: #f2dede +} + +a.bg-danger:hover { + background-color: #e4b9b9 +} + +.page-header { + padding-bottom: 9px; + margin: 40px 0 20px; + border-bottom: 1px solid #eee +} + +ol, +ul { + margin-top: 0; + margin-bottom: 10px +} + +ol ol, +ol ul, +ul ol, +ul ul { + margin-bottom: 0 +} + +.list-unstyled { + padding-left: 0; + list-style: none +} + +.list-inline { + padding-left: 0; + margin-left: -5px; + list-style: none +} + +.list-inline>li { + display: inline-block; + padding-right: 5px; + padding-left: 5px +} + +dl { + margin-top: 0; + margin-bottom: 20px +} + +dd, +dt { + line-height: 1.42857143 +} + +dt { + font-weight: 700 +} + +dd { + margin-left: 0 +} + +@media (min-width:768px) { + .dl-horizontal dt { + float: left; + width: 160px; + overflow: hidden; + clear: left; + text-align: right; + text-overflow: ellipsis; + white-space: nowrap + } + .dl-horizontal dd { + margin-left: 180px + } +} + +abbr[data-original-title], +abbr[title] { + cursor: help; + border-bottom: 1px dotted #777 +} + +.initialism { + font-size: 90%; + text-transform: uppercase +} + +blockquote { + padding: 10px 20px; + margin: 0 0 20px; + font-size: 17.5px; + border-left: 5px solid #eee +} + +blockquote ol:last-child, +blockquote p:last-child, +blockquote ul:last-child { + margin-bottom: 0 +} + +blockquote .small, +blockquote footer, +blockquote small { + display: block; + font-size: 80%; + line-height: 1.42857143; + color: #777 +} + +blockquote .small:before, +blockquote footer:before, +blockquote small:before { + content: '\2014 \00A0' +} + +.blockquote-reverse, +blockquote.pull-right { + padding-right: 15px; + padding-left: 0; + text-align: right; + border-right: 5px solid #eee; + border-left: 0 +} + +.blockquote-reverse .small:before, +.blockquote-reverse footer:before, +.blockquote-reverse small:before, +blockquote.pull-right .small:before, +blockquote.pull-right footer:before, +blockquote.pull-right small:before { + content: '' +} + +.blockquote-reverse .small:after, +.blockquote-reverse footer:after, +.blockquote-reverse small:after, +blockquote.pull-right .small:after, +blockquote.pull-right footer:after, +blockquote.pull-right small:after { + content: '\00A0 \2014' +} + +address { + margin-bottom: 20px; + font-style: normal; + line-height: 1.42857143 +} + +code, +kbd, +pre, +samp { + font-family: Menlo, Monaco, Consolas, "Courier New", monospace +} + +code { + padding: 2px 4px; + font-size: 90%; + color: #c7254e; + background-color: #f9f2f4; + border-radius: 4px +} + +kbd { + padding: 2px 4px; + font-size: 90%; + color: #fff; + background-color: #333; + border-radius: 3px; +} + +kbd kbd { + padding: 0; + font-size: 100%; + font-weight: 700; +} + +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 1.42857143; + color: #333; + word-break: break-all; + word-wrap: break-word; + background-color: #f5f5f5; + border: 1px solid #ccc; + border-radius: 4px +} + +pre code { + padding: 0; + font-size: inherit; + color: inherit; + white-space: pre-wrap; + background-color: transparent; + border-radius: 0 +} + +.pre-scrollable { + max-height: 340px; + overflow-y: scroll +} + +.container { + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto +} + +@media (min-width:768px) { + .container { + width: 750px + } +} + +@media (min-width:992px) { + .container { + width: 970px + } +} + +@media (min-width:1200px) { + .container { + width: 1170px + } +} + +.container-fluid { + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto +} + +.row { + margin-right: -15px; + margin-left: -15px +} + +.col-lg-1, +.col-lg-10, +.col-lg-11, +.col-lg-12, +.col-lg-2, +.col-lg-3, +.col-lg-4, +.col-lg-5, +.col-lg-6, +.col-lg-7, +.col-lg-8, +.col-lg-9, +.col-md-1, +.col-md-10, +.col-md-11, +.col-md-12, +.col-md-2, +.col-md-3, +.col-md-4, +.col-md-5, +.col-md-6, +.col-md-7, +.col-md-8, +.col-md-9, +.col-sm-1, +.col-sm-10, +.col-sm-11, +.col-sm-12, +.col-sm-2, +.col-sm-3, +.col-sm-4, +.col-sm-5, +.col-sm-6, +.col-sm-7, +.col-sm-8, +.col-sm-9, +.col-xs-1, +.col-xs-10, +.col-xs-11, +.col-xs-12, +.col-xs-2, +.col-xs-3, +.col-xs-4, +.col-xs-5, +.col-xs-6, +.col-xs-7, +.col-xs-8, +.col-xs-9 { + position: relative; + min-height: 1px; + padding-right: 15px; + padding-left: 15px +} + +.col-xs-1, +.col-xs-10, +.col-xs-11, +.col-xs-12, +.col-xs-2, +.col-xs-3, +.col-xs-4, +.col-xs-5, +.col-xs-6, +.col-xs-7, +.col-xs-8, +.col-xs-9 { + float: left +} + +.col-xs-12 { + width: 100% +} + +.col-xs-11 { + width: 91.66666667% +} + +.col-xs-10 { + width: 83.33333333% +} + +.col-xs-9 { + width: 75% +} + +.col-xs-8 { + width: 66.66666667% +} + +.col-xs-7 { + width: 58.33333333% +} + +.col-xs-6 { + width: 50% +} + +.col-xs-5 { + width: 41.66666667% +} + +.col-xs-4 { + width: 33.33333333% +} + +.col-xs-3 { + width: 25% +} + +.col-xs-2 { + width: 16.66666667% +} + +.col-xs-1 { + width: 8.33333333% +} + +.col-xs-pull-12 { + right: 100% +} + +.col-xs-pull-11 { + right: 91.66666667% +} + +.col-xs-pull-10 { + right: 83.33333333% +} + +.col-xs-pull-9 { + right: 75% +} + +.col-xs-pull-8 { + right: 66.66666667% +} + +.col-xs-pull-7 { + right: 58.33333333% +} + +.col-xs-pull-6 { + right: 50% +} + +.col-xs-pull-5 { + right: 41.66666667% +} + +.col-xs-pull-4 { + right: 33.33333333% +} + +.col-xs-pull-3 { + right: 25% +} + +.col-xs-pull-2 { + right: 16.66666667% +} + +.col-xs-pull-1 { + right: 8.33333333% +} + +.col-xs-pull-0 { + right: auto +} + +.col-xs-push-12 { + left: 100% +} + +.col-xs-push-11 { + left: 91.66666667% +} + +.col-xs-push-10 { + left: 83.33333333% +} + +.col-xs-push-9 { + left: 75% +} + +.col-xs-push-8 { + left: 66.66666667% +} + +.col-xs-push-7 { + left: 58.33333333% +} + +.col-xs-push-6 { + left: 50% +} + +.col-xs-push-5 { + left: 41.66666667% +} + +.col-xs-push-4 { + left: 33.33333333% +} + +.col-xs-push-3 { + left: 25% +} + +.col-xs-push-2 { + left: 16.66666667% +} + +.col-xs-push-1 { + left: 8.33333333% +} + +.col-xs-push-0 { + left: auto +} + +.col-xs-offset-12 { + margin-left: 100% +} + +.col-xs-offset-11 { + margin-left: 91.66666667% +} + +.col-xs-offset-10 { + margin-left: 83.33333333% +} + +.col-xs-offset-9 { + margin-left: 75% +} + +.col-xs-offset-8 { + margin-left: 66.66666667% +} + +.col-xs-offset-7 { + margin-left: 58.33333333% +} + +.col-xs-offset-6 { + margin-left: 50% +} + +.col-xs-offset-5 { + margin-left: 41.66666667% +} + +.col-xs-offset-4 { + margin-left: 33.33333333% +} + +.col-xs-offset-3 { + margin-left: 25% +} + +.col-xs-offset-2 { + margin-left: 16.66666667% +} + +.col-xs-offset-1 { + margin-left: 8.33333333% +} + +.col-xs-offset-0 { + margin-left: 0 +} + +@media (min-width:768px) { + .col-sm-1, + .col-sm-10, + .col-sm-11, + .col-sm-12, + .col-sm-2, + .col-sm-3, + .col-sm-4, + .col-sm-5, + .col-sm-6, + .col-sm-7, + .col-sm-8, + .col-sm-9 { + float: left + } + .col-sm-12 { + width: 100% + } + .col-sm-11 { + width: 91.66666667% + } + .col-sm-10 { + width: 83.33333333% + } + .col-sm-9 { + width: 75% + } + .col-sm-8 { + width: 66.66666667% + } + .col-sm-7 { + width: 58.33333333% + } + .col-sm-6 { + width: 50% + } + .col-sm-5 { + width: 41.66666667% + } + .col-sm-4 { + width: 33.33333333% + } + .col-sm-3 { + width: 25% + } + .col-sm-2 { + width: 16.66666667% + } + .col-sm-1 { + width: 8.33333333% + } + .col-sm-pull-12 { + right: 100% + } + .col-sm-pull-11 { + right: 91.66666667% + } + .col-sm-pull-10 { + right: 83.33333333% + } + .col-sm-pull-9 { + right: 75% + } + .col-sm-pull-8 { + right: 66.66666667% + } + .col-sm-pull-7 { + right: 58.33333333% + } + .col-sm-pull-6 { + right: 50% + } + .col-sm-pull-5 { + right: 41.66666667% + } + .col-sm-pull-4 { + right: 33.33333333% + } + .col-sm-pull-3 { + right: 25% + } + .col-sm-pull-2 { + right: 16.66666667% + } + .col-sm-pull-1 { + right: 8.33333333% + } + .col-sm-pull-0 { + right: auto + } + .col-sm-push-12 { + left: 100% + } + .col-sm-push-11 { + left: 91.66666667% + } + .col-sm-push-10 { + left: 83.33333333% + } + .col-sm-push-9 { + left: 75% + } + .col-sm-push-8 { + left: 66.66666667% + } + .col-sm-push-7 { + left: 58.33333333% + } + .col-sm-push-6 { + left: 50% + } + .col-sm-push-5 { + left: 41.66666667% + } + .col-sm-push-4 { + left: 33.33333333% + } + .col-sm-push-3 { + left: 25% + } + .col-sm-push-2 { + left: 16.66666667% + } + .col-sm-push-1 { + left: 8.33333333% + } + .col-sm-push-0 { + left: auto + } + .col-sm-offset-12 { + margin-left: 100% + } + .col-sm-offset-11 { + margin-left: 91.66666667% + } + .col-sm-offset-10 { + margin-left: 83.33333333% + } + .col-sm-offset-9 { + margin-left: 75% + } + .col-sm-offset-8 { + margin-left: 66.66666667% + } + .col-sm-offset-7 { + margin-left: 58.33333333% + } + .col-sm-offset-6 { + margin-left: 50% + } + .col-sm-offset-5 { + margin-left: 41.66666667% + } + .col-sm-offset-4 { + margin-left: 33.33333333% + } + .col-sm-offset-3 { + margin-left: 25% + } + .col-sm-offset-2 { + margin-left: 16.66666667% + } + .col-sm-offset-1 { + margin-left: 8.33333333% + } + .col-sm-offset-0 { + margin-left: 0 + } +} + +@media (min-width:992px) { + .col-md-1, + .col-md-10, + .col-md-11, + .col-md-12, + .col-md-2, + .col-md-3, + .col-md-4, + .col-md-5, + .col-md-6, + .col-md-7, + .col-md-8, + .col-md-9 { + float: left + } + .col-md-12 { + width: 100% + } + .col-md-11 { + width: 91.66666667% + } + .col-md-10 { + width: 83.33333333% + } + .col-md-9 { + width: 75% + } + .col-md-8 { + width: 66.66666667% + } + .col-md-7 { + width: 58.33333333% + } + .col-md-6 { + width: 50% + } + .col-md-5 { + width: 41.66666667% + } + .col-md-4 { + width: 33.33333333% + } + .col-md-3 { + width: 25% + } + .col-md-2 { + width: 16.66666667% + } + .col-md-1 { + width: 8.33333333% + } + .col-md-pull-12 { + right: 100% + } + .col-md-pull-11 { + right: 91.66666667% + } + .col-md-pull-10 { + right: 83.33333333% + } + .col-md-pull-9 { + right: 75% + } + .col-md-pull-8 { + right: 66.66666667% + } + .col-md-pull-7 { + right: 58.33333333% + } + .col-md-pull-6 { + right: 50% + } + .col-md-pull-5 { + right: 41.66666667% + } + .col-md-pull-4 { + right: 33.33333333% + } + .col-md-pull-3 { + right: 25% + } + .col-md-pull-2 { + right: 16.66666667% + } + .col-md-pull-1 { + right: 8.33333333% + } + .col-md-pull-0 { + right: auto + } + .col-md-push-12 { + left: 100% + } + .col-md-push-11 { + left: 91.66666667% + } + .col-md-push-10 { + left: 83.33333333% + } + .col-md-push-9 { + left: 75% + } + .col-md-push-8 { + left: 66.66666667% + } + .col-md-push-7 { + left: 58.33333333% + } + .col-md-push-6 { + left: 50% + } + .col-md-push-5 { + left: 41.66666667% + } + .col-md-push-4 { + left: 33.33333333% + } + .col-md-push-3 { + left: 25% + } + .col-md-push-2 { + left: 16.66666667% + } + .col-md-push-1 { + left: 8.33333333% + } + .col-md-push-0 { + left: auto + } + .col-md-offset-12 { + margin-left: 100% + } + .col-md-offset-11 { + margin-left: 91.66666667% + } + .col-md-offset-10 { + margin-left: 83.33333333% + } + .col-md-offset-9 { + margin-left: 75% + } + .col-md-offset-8 { + margin-left: 66.66666667% + } + .col-md-offset-7 { + margin-left: 58.33333333% + } + .col-md-offset-6 { + margin-left: 50% + } + .col-md-offset-5 { + margin-left: 41.66666667% + } + .col-md-offset-4 { + margin-left: 33.33333333% + } + .col-md-offset-3 { + margin-left: 25% + } + .col-md-offset-2 { + margin-left: 16.66666667% + } + .col-md-offset-1 { + margin-left: 8.33333333% + } + .col-md-offset-0 { + margin-left: 0 + } +} + +@media (min-width:1200px) { + .col-lg-1, + .col-lg-10, + .col-lg-11, + .col-lg-12, + .col-lg-2, + .col-lg-3, + .col-lg-4, + .col-lg-5, + .col-lg-6, + .col-lg-7, + .col-lg-8, + .col-lg-9 { + float: left + } + .col-lg-12 { + width: 100% + } + .col-lg-11 { + width: 91.66666667% + } + .col-lg-10 { + width: 83.33333333% + } + .col-lg-9 { + width: 75% + } + .col-lg-8 { + width: 66.66666667% + } + .col-lg-7 { + width: 58.33333333% + } + .col-lg-6 { + width: 50% + } + .col-lg-5 { + width: 41.66666667% + } + .col-lg-4 { + width: 33.33333333% + } + .col-lg-3 { + width: 25% + } + .col-lg-2 { + width: 16.66666667% + } + .col-lg-1 { + width: 8.33333333% + } + .col-lg-pull-12 { + right: 100% + } + .col-lg-pull-11 { + right: 91.66666667% + } + .col-lg-pull-10 { + right: 83.33333333% + } + .col-lg-pull-9 { + right: 75% + } + .col-lg-pull-8 { + right: 66.66666667% + } + .col-lg-pull-7 { + right: 58.33333333% + } + .col-lg-pull-6 { + right: 50% + } + .col-lg-pull-5 { + right: 41.66666667% + } + .col-lg-pull-4 { + right: 33.33333333% + } + .col-lg-pull-3 { + right: 25% + } + .col-lg-pull-2 { + right: 16.66666667% + } + .col-lg-pull-1 { + right: 8.33333333% + } + .col-lg-pull-0 { + right: auto + } + .col-lg-push-12 { + left: 100% + } + .col-lg-push-11 { + left: 91.66666667% + } + .col-lg-push-10 { + left: 83.33333333% + } + .col-lg-push-9 { + left: 75% + } + .col-lg-push-8 { + left: 66.66666667% + } + .col-lg-push-7 { + left: 58.33333333% + } + .col-lg-push-6 { + left: 50% + } + .col-lg-push-5 { + left: 41.66666667% + } + .col-lg-push-4 { + left: 33.33333333% + } + .col-lg-push-3 { + left: 25% + } + .col-lg-push-2 { + left: 16.66666667% + } + .col-lg-push-1 { + left: 8.33333333% + } + .col-lg-push-0 { + left: auto + } + .col-lg-offset-12 { + margin-left: 100% + } + .col-lg-offset-11 { + margin-left: 91.66666667% + } + .col-lg-offset-10 { + margin-left: 83.33333333% + } + .col-lg-offset-9 { + margin-left: 75% + } + .col-lg-offset-8 { + margin-left: 66.66666667% + } + .col-lg-offset-7 { + margin-left: 58.33333333% + } + .col-lg-offset-6 { + margin-left: 50% + } + .col-lg-offset-5 { + margin-left: 41.66666667% + } + .col-lg-offset-4 { + margin-left: 33.33333333% + } + .col-lg-offset-3 { + margin-left: 25% + } + .col-lg-offset-2 { + margin-left: 16.66666667% + } + .col-lg-offset-1 { + margin-left: 8.33333333% + } + .col-lg-offset-0 { + margin-left: 0 + } +} + +table { + background-color: transparent +} + +caption { + padding-top: 8px; + padding-bottom: 8px; + color: #777; + text-align: left +} + +th { + text-align: left +} + +.table { + width: 100%; + max-width: 100%; + margin-bottom: 20px +} + +.table>tbody>tr>td, +.table>tbody>tr>th, +.table>tfoot>tr>td, +.table>tfoot>tr>th, +.table>thead>tr>td, +.table>thead>tr>th { + padding: 8px; + line-height: 1.42857143; + vertical-align: top; + border-top: 1px solid #ddd +} + +.table>thead>tr>th { + vertical-align: bottom; + border-bottom: 2px solid #ddd +} + +.table>caption+thead>tr:first-child>td, +.table>caption+thead>tr:first-child>th, +.table>colgroup+thead>tr:first-child>td, +.table>colgroup+thead>tr:first-child>th, +.table>thead:first-child>tr:first-child>td, +.table>thead:first-child>tr:first-child>th { + border-top: 0 +} + +.table>tbody+tbody { + border-top: 2px solid #ddd +} + +.table .table { + background-color: #fff +} + +.table-condensed>tbody>tr>td, +.table-condensed>tbody>tr>th, +.table-condensed>tfoot>tr>td, +.table-condensed>tfoot>tr>th, +.table-condensed>thead>tr>td, +.table-condensed>thead>tr>th { + padding: 5px +} + +.table-bordered { + border: 1px solid #ddd +} + +.table-bordered>tbody>tr>td, +.table-bordered>tbody>tr>th, +.table-bordered>tfoot>tr>td, +.table-bordered>tfoot>tr>th, +.table-bordered>thead>tr>td, +.table-bordered>thead>tr>th { + border: 1px solid #ddd +} + +.table-bordered>thead>tr>td, +.table-bordered>thead>tr>th { + border-bottom-width: 2px +} + +.table-striped>tbody>tr:nth-of-type(odd) { + background-color: #f9f9f9 +} + +.table-hover>tbody>tr:hover { + background-color: #f5f5f5 +} + +table col[class*=col-] { + position: static; + display: table-column; + float: none +} + +table td[class*=col-], +table th[class*=col-] { + position: static; + display: table-cell; + float: none +} + +.table>tbody>tr.active>td, +.table>tbody>tr.active>th, +.table>tbody>tr>td.active, +.table>tbody>tr>th.active, +.table>tfoot>tr.active>td, +.table>tfoot>tr.active>th, +.table>tfoot>tr>td.active, +.table>tfoot>tr>th.active, +.table>thead>tr.active>td, +.table>thead>tr.active>th, +.table>thead>tr>td.active, +.table>thead>tr>th.active { + background-color: #f5f5f5 +} + +.table-hover>tbody>tr.active:hover>td, +.table-hover>tbody>tr.active:hover>th, +.table-hover>tbody>tr:hover>.active, +.table-hover>tbody>tr>td.active:hover, +.table-hover>tbody>tr>th.active:hover { + background-color: #e8e8e8 +} + +.table>tbody>tr.success>td, +.table>tbody>tr.success>th, +.table>tbody>tr>td.success, +.table>tbody>tr>th.success, +.table>tfoot>tr.success>td, +.table>tfoot>tr.success>th, +.table>tfoot>tr>td.success, +.table>tfoot>tr>th.success, +.table>thead>tr.success>td, +.table>thead>tr.success>th, +.table>thead>tr>td.success, +.table>thead>tr>th.success { + background-color: #dff0d8 +} + +.table-hover>tbody>tr.success:hover>td, +.table-hover>tbody>tr.success:hover>th, +.table-hover>tbody>tr:hover>.success, +.table-hover>tbody>tr>td.success:hover, +.table-hover>tbody>tr>th.success:hover { + background-color: #d0e9c6 +} + +.table>tbody>tr.info>td, +.table>tbody>tr.info>th, +.table>tbody>tr>td.info, +.table>tbody>tr>th.info, +.table>tfoot>tr.info>td, +.table>tfoot>tr.info>th, +.table>tfoot>tr>td.info, +.table>tfoot>tr>th.info, +.table>thead>tr.info>td, +.table>thead>tr.info>th, +.table>thead>tr>td.info, +.table>thead>tr>th.info { + background-color: #d9edf7 +} + +.table-hover>tbody>tr.info:hover>td, +.table-hover>tbody>tr.info:hover>th, +.table-hover>tbody>tr:hover>.info, +.table-hover>tbody>tr>td.info:hover, +.table-hover>tbody>tr>th.info:hover { + background-color: #c4e3f3 +} + +.table>tbody>tr.warning>td, +.table>tbody>tr.warning>th, +.table>tbody>tr>td.warning, +.table>tbody>tr>th.warning, +.table>tfoot>tr.warning>td, +.table>tfoot>tr.warning>th, +.table>tfoot>tr>td.warning, +.table>tfoot>tr>th.warning, +.table>thead>tr.warning>td, +.table>thead>tr.warning>th, +.table>thead>tr>td.warning, +.table>thead>tr>th.warning { + background-color: #fcf8e3 +} + +.table-hover>tbody>tr.warning:hover>td, +.table-hover>tbody>tr.warning:hover>th, +.table-hover>tbody>tr:hover>.warning, +.table-hover>tbody>tr>td.warning:hover, +.table-hover>tbody>tr>th.warning:hover { + background-color: #faf2cc +} + +.table>tbody>tr.danger>td, +.table>tbody>tr.danger>th, +.table>tbody>tr>td.danger, +.table>tbody>tr>th.danger, +.table>tfoot>tr.danger>td, +.table>tfoot>tr.danger>th, +.table>tfoot>tr>td.danger, +.table>tfoot>tr>th.danger, +.table>thead>tr.danger>td, +.table>thead>tr.danger>th, +.table>thead>tr>td.danger, +.table>thead>tr>th.danger { + background-color: #f2dede +} + +.table-hover>tbody>tr.danger:hover>td, +.table-hover>tbody>tr.danger:hover>th, +.table-hover>tbody>tr:hover>.danger, +.table-hover>tbody>tr>td.danger:hover, +.table-hover>tbody>tr>th.danger:hover { + background-color: #ebcccc +} + +.table-responsive { + min-height: .01%; + overflow-x: auto +} + +@media screen and (max-width:767px) { + .table-responsive { + width: 100%; + margin-bottom: 15px; + overflow-y: hidden; + -ms-overflow-style: -ms-autohiding-scrollbar; + border: 1px solid #ddd + } + .table-responsive>.table { + margin-bottom: 0 + } + .table-responsive>.table>tbody>tr>td, + .table-responsive>.table>tbody>tr>th, + .table-responsive>.table>tfoot>tr>td, + .table-responsive>.table>tfoot>tr>th, + .table-responsive>.table>thead>tr>td, + .table-responsive>.table>thead>tr>th { + white-space: nowrap + } + .table-responsive>.table-bordered { + border: 0 + } + .table-responsive>.table-bordered>tbody>tr>td:first-child, + .table-responsive>.table-bordered>tbody>tr>th:first-child, + .table-responsive>.table-bordered>tfoot>tr>td:first-child, + .table-responsive>.table-bordered>tfoot>tr>th:first-child, + .table-responsive>.table-bordered>thead>tr>td:first-child, + .table-responsive>.table-bordered>thead>tr>th:first-child { + border-left: 0 + } + .table-responsive>.table-bordered>tbody>tr>td:last-child, + .table-responsive>.table-bordered>tbody>tr>th:last-child, + .table-responsive>.table-bordered>tfoot>tr>td:last-child, + .table-responsive>.table-bordered>tfoot>tr>th:last-child, + .table-responsive>.table-bordered>thead>tr>td:last-child, + .table-responsive>.table-bordered>thead>tr>th:last-child { + border-right: 0 + } + .table-responsive>.table-bordered>tbody>tr:last-child>td, + .table-responsive>.table-bordered>tbody>tr:last-child>th, + .table-responsive>.table-bordered>tfoot>tr:last-child>td, + .table-responsive>.table-bordered>tfoot>tr:last-child>th { + border-bottom: 0 + } +} + +fieldset { + min-width: 0; + padding: 0; + margin: 0; + border: 0 +} + +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: inherit; + color: #333; + border: 0; + border-bottom: 1px solid #e5e5e5 +} + +label { + display: inline-block; + max-width: 100%; + margin-bottom: 5px; + font-weight: 700 +} + +input[type=search] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box +} + +input[type=checkbox], +input[type=radio] { + margin: 4px 0 0; + margin-top: 1px \9; + line-height: normal +} + +input[type=file] { + display: block +} + +input[type=range] { + display: block; + width: 100% +} + +select[multiple], +select[size] { + height: auto +} + +input[type=file]:focus, +input[type=checkbox]:focus, +input[type=radio]:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px +} + +output { + display: block; + padding-top: 7px; + font-size: 14px; + line-height: 1.42857143; + color: #555 +} + +.form-control { + display: block; + width: 100%; + height: 34px; + padding: 6px 12px; + font-size: 14px; + line-height: 1.42857143; + color: #555; + background-color: #fff; + background-image: none; + border: 1px solid #ccc; + border-radius: 4px; +} + +.form-control:focus { + border-color: #66afe9; + outline: 0; +} + +.form-control::-moz-placeholder { + color: #999; + opacity: 1 +} + +.form-control:-ms-input-placeholder { + color: #999 +} + +.form-control::-webkit-input-placeholder { + color: #999 +} + +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { + cursor: not-allowed; + background-color: #eee; + opacity: 1 +} + +textarea.form-control { + height: auto +} + +input[type=search] { + -webkit-appearance: none +} + +@media screen and (-webkit-min-device-pixel-ratio:0) { + input[type=date], + input[type=time], + input[type=datetime-local], + input[type=month] { + line-height: 34px + } + .input-group-sm input[type=date], + .input-group-sm input[type=time], + .input-group-sm input[type=datetime-local], + .input-group-sm input[type=month], + input[type=date].input-sm, + input[type=time].input-sm, + input[type=datetime-local].input-sm, + input[type=month].input-sm { + line-height: 30px + } + .input-group-lg input[type=date], + .input-group-lg input[type=time], + .input-group-lg input[type=datetime-local], + .input-group-lg input[type=month], + input[type=date].input-lg, + input[type=time].input-lg, + input[type=datetime-local].input-lg, + input[type=month].input-lg { + line-height: 46px + } +} + +.form-group { + margin-bottom: 15px +} + +.checkbox, +.radio { + position: relative; + display: block; + margin-top: 10px; + margin-bottom: 10px +} + +.checkbox label, +.radio label { + min-height: 20px; + padding-left: 20px; + margin-bottom: 0; + font-weight: 400; + cursor: pointer +} + +.checkbox input[type=checkbox], +.checkbox-inline input[type=checkbox], +.radio input[type=radio], +.radio-inline input[type=radio] { + position: absolute; + margin-top: 4px \9; + margin-left: -20px +} + +.checkbox+.checkbox, +.radio+.radio { + margin-top: -5px +} + +.checkbox-inline, +.radio-inline { + display: inline-block; + padding-left: 20px; + margin-bottom: 0; + font-weight: 400; + vertical-align: middle; + cursor: pointer +} + +.checkbox-inline+.checkbox-inline, +.radio-inline+.radio-inline { + margin-top: 0; + margin-left: 10px +} + +fieldset[disabled] input[type=checkbox], +fieldset[disabled] input[type=radio], +input[type=checkbox].disabled, +input[type=checkbox][disabled], +input[type=radio].disabled, +input[type=radio][disabled] { + cursor: not-allowed +} + +.checkbox-inline.disabled, +.radio-inline.disabled, +fieldset[disabled] .checkbox-inline, +fieldset[disabled] .radio-inline { + cursor: not-allowed +} + +.checkbox.disabled label, +.radio.disabled label, +fieldset[disabled] .checkbox label, +fieldset[disabled] .radio label { + cursor: not-allowed +} + +.form-control-static { + padding-top: 7px; + padding-bottom: 7px; + margin-bottom: 0 +} + +.form-control-static.input-lg, +.form-control-static.input-sm { + padding-right: 0; + padding-left: 0 +} + +.input-sm { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px +} + +select.input-sm { + height: 30px; + line-height: 30px +} + +select[multiple].input-sm, +textarea.input-sm { + height: auto +} + +.form-group-sm .form-control { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px +} + +select.form-group-sm .form-control { + height: 30px; + line-height: 30px +} + +select[multiple].form-group-sm .form-control, +textarea.form-group-sm .form-control { + height: auto +} + +.form-group-sm .form-control-static { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5 +} + +.input-lg { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px +} + +select.input-lg { + height: 46px; + line-height: 46px +} + +select[multiple].input-lg, +textarea.input-lg { + height: auto +} + +.form-group-lg .form-control { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px +} + +select.form-group-lg .form-control { + height: 46px; + line-height: 46px +} + +select[multiple].form-group-lg .form-control, +textarea.form-group-lg .form-control { + height: auto +} + +.form-group-lg .form-control-static { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333 +} + +.has-feedback { + position: relative +} + +.has-feedback .form-control { + padding-right: 42.5px +} + +.form-control-feedback { + position: absolute; + top: 0; + right: 0; + z-index: 2; + display: block; + width: 34px; + height: 34px; + line-height: 34px; + text-align: center; +} + +.input-lg+.form-control-feedback { + width: 46px; + height: 46px; + line-height: 46px +} + +.input-sm+.form-control-feedback { + width: 30px; + height: 30px; + line-height: 30px +} + +.has-success .checkbox, +.has-success .checkbox-inline, +.has-success .control-label, +.has-success .help-block, +.has-success .radio, +.has-success .radio-inline, +.has-success.checkbox label, +.has-success.checkbox-inline label, +.has-success.radio label, +.has-success.radio-inline label { + color: #3c763d +} + +.has-success .form-control { + border-color: #3c763d; +} + +.has-success .form-control:focus { + border-color: #2b542c; +} + +.has-success .input-group-addon { + color: #3c763d; + background-color: #dff0d8; + border-color: #3c763d +} + +.has-success .form-control-feedback { + color: #3c763d +} + +.has-warning .checkbox, +.has-warning .checkbox-inline, +.has-warning .control-label, +.has-warning .help-block, +.has-warning .radio, +.has-warning .radio-inline, +.has-warning.checkbox label, +.has-warning.checkbox-inline label, +.has-warning.radio label, +.has-warning.radio-inline label { + color: #8a6d3b +} + +.has-warning .form-control { + border-color: #8a6d3b; +} + +.has-warning .form-control:focus { + border-color: #66512c; +} + +.has-warning .input-group-addon { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #8a6d3b +} + +.has-warning .form-control-feedback { + color: #8a6d3b +} + +.has-error .checkbox, +.has-error .checkbox-inline, +.has-error .control-label, +.has-error .help-block, +.has-error .radio, +.has-error .radio-inline, +.has-error.checkbox label, +.has-error.checkbox-inline label, +.has-error.radio label, +.has-error.radio-inline label { + color: #a94442 +} + +.has-error .form-control { + border-color: #a94442; +} + +.has-error .form-control:focus { + border-color: #843534; +} + +.has-error .input-group-addon { + color: #a94442; + background-color: #f2dede; + border-color: #a94442 +} + +.has-error .form-control-feedback { + color: #a94442 +} + +.has-feedback label~.form-control-feedback { + top: 25px +} + +.has-feedback label.sr-only~.form-control-feedback { + top: 0 +} + +.help-block { + display: block; + margin-top: 5px; + margin-bottom: 10px; + color: #737373 +} + +@media (min-width:768px) { + .form-inline .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle + } + .form-inline .form-control { + display: inline-block; + width: auto; + vertical-align: middle + } + .form-inline .form-control-static { + display: inline-block + } + .form-inline .input-group { + display: inline-table; + vertical-align: middle + } + .form-inline .input-group .form-control, + .form-inline .input-group .input-group-addon, + .form-inline .input-group .input-group-btn { + width: auto + } + .form-inline .input-group>.form-control { + width: 100% + } + .form-inline .control-label { + margin-bottom: 0; + vertical-align: middle + } + .form-inline .checkbox, + .form-inline .radio { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle + } + .form-inline .checkbox label, + .form-inline .radio label { + padding-left: 0 + } + .form-inline .checkbox input[type=checkbox], + .form-inline .radio input[type=radio] { + position: relative; + margin-left: 0 + } + .form-inline .has-feedback .form-control-feedback { + top: 0 + } +} + +.form-horizontal .checkbox, +.form-horizontal .checkbox-inline, +.form-horizontal .radio, +.form-horizontal .radio-inline { + padding-top: 7px; + margin-top: 0; + margin-bottom: 0 +} + +.form-horizontal .checkbox, +.form-horizontal .radio { + min-height: 27px +} + +.form-horizontal .form-group { + margin-right: -15px; + margin-left: -15px +} + +@media (min-width:768px) { + .form-horizontal .control-label { + padding-top: 7px; + margin-bottom: 0; + text-align: right + } +} + +.form-horizontal .has-feedback .form-control-feedback { + right: 15px +} + +@media (min-width:768px) { + .form-horizontal .form-group-lg .control-label { + padding-top: 14.33px + } +} + +@media (min-width:768px) { + .form-horizontal .form-group-sm .control-label { + padding-top: 6px + } +} + +.btn { + display: inline-block; + padding: 6px 12px; + margin-bottom: 0; + font-size: 14px; + font-weight: 400; + line-height: 1.42857143; + text-align: center; + white-space: nowrap; + vertical-align: middle; + -ms-touch-action: manipulation; + touch-action: manipulation; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background-image: none; + border: 1px solid transparent; + border-radius: 4px +} + +.btn.active.focus, +.btn.active:focus, +.btn.focus, +.btn:active.focus, +.btn:active:focus, +.btn:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px +} + +.btn.focus, +.btn:focus, +.btn:hover { + color: #333; + text-decoration: none +} + +.btn.active, +.btn:active { + background-image: none; + outline: 0; +} + +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn { + cursor: not-allowed; + filter: alpha(opacity=65); + opacity: .65 +} + +.btn-default { + color: #333; + background-color: #fff; + border-color: #ccc +} + +.btn-default.active, +.btn-default.focus, +.btn-default:active, +.btn-default:focus, +.btn-default:hover, +.open>.dropdown-toggle.btn-default { + color: #333; + background-color: #e6e6e6; + border-color: #adadad +} + +.btn-default.active, +.btn-default:active, +.open>.dropdown-toggle.btn-default { + background-image: none +} + +.btn-default.disabled, +.btn-default.disabled.active, +.btn-default.disabled.focus, +.btn-default.disabled:active, +.btn-default.disabled:focus, +.btn-default.disabled:hover, +.btn-default[disabled], +.btn-default[disabled].active, +.btn-default[disabled].focus, +.btn-default[disabled]:active, +.btn-default[disabled]:focus, +.btn-default[disabled]:hover, +fieldset[disabled] .btn-default, +fieldset[disabled] .btn-default.active, +fieldset[disabled] .btn-default.focus, +fieldset[disabled] .btn-default:active, +fieldset[disabled] .btn-default:focus, +fieldset[disabled] .btn-default:hover { + background-color: #fff; + border-color: #ccc +} + +.btn-default .badge { + color: #fff; + background-color: #333 +} + +.btn-primary { + color: #fff; + background-color: #337ab7; + border-color: #2e6da4 +} + +.btn-primary.active, +.btn-primary.focus, +.btn-primary:active, +.btn-primary:focus, +.btn-primary:hover, +.open>.dropdown-toggle.btn-primary { + color: #fff; + background-color: #286090; + border-color: #204d74 +} + +.btn-primary.active, +.btn-primary:active, +.open>.dropdown-toggle.btn-primary { + background-image: none +} + +.btn-primary.disabled, +.btn-primary.disabled.active, +.btn-primary.disabled.focus, +.btn-primary.disabled:active, +.btn-primary.disabled:focus, +.btn-primary.disabled:hover, +.btn-primary[disabled], +.btn-primary[disabled].active, +.btn-primary[disabled].focus, +.btn-primary[disabled]:active, +.btn-primary[disabled]:focus, +.btn-primary[disabled]:hover, +fieldset[disabled] .btn-primary, +fieldset[disabled] .btn-primary.active, +fieldset[disabled] .btn-primary.focus, +fieldset[disabled] .btn-primary:active, +fieldset[disabled] .btn-primary:focus, +fieldset[disabled] .btn-primary:hover { + background-color: #337ab7; + border-color: #2e6da4 +} + +.btn-primary .badge { + color: #337ab7; + background-color: #fff +} + +.btn-success { + color: #fff; + background-color: #5cb85c; + border-color: #4cae4c +} + +.btn-success.active, +.btn-success.focus, +.btn-success:active, +.btn-success:focus, +.btn-success:hover, +.open>.dropdown-toggle.btn-success { + color: #fff; + background-color: #449d44; + border-color: #398439 +} + +.btn-success.active, +.btn-success:active, +.open>.dropdown-toggle.btn-success { + background-image: none +} + +.btn-success.disabled, +.btn-success.disabled.active, +.btn-success.disabled.focus, +.btn-success.disabled:active, +.btn-success.disabled:focus, +.btn-success.disabled:hover, +.btn-success[disabled], +.btn-success[disabled].active, +.btn-success[disabled].focus, +.btn-success[disabled]:active, +.btn-success[disabled]:focus, +.btn-success[disabled]:hover, +fieldset[disabled] .btn-success, +fieldset[disabled] .btn-success.active, +fieldset[disabled] .btn-success.focus, +fieldset[disabled] .btn-success:active, +fieldset[disabled] .btn-success:focus, +fieldset[disabled] .btn-success:hover { + background-color: #5cb85c; + border-color: #4cae4c +} + +.btn-success .badge { + color: #5cb85c; + background-color: #fff +} + +.btn-info { + color: #fff; + background-color: #5bc0de; + border-color: #46b8da +} + +.btn-info.active, +.btn-info.focus, +.btn-info:active, +.btn-info:focus, +.btn-info:hover, +.open>.dropdown-toggle.btn-info { + color: #fff; + background-color: #31b0d5; + border-color: #269abc +} + +.btn-info.active, +.btn-info:active, +.open>.dropdown-toggle.btn-info { + background-image: none +} + +.btn-info.disabled, +.btn-info.disabled.active, +.btn-info.disabled.focus, +.btn-info.disabled:active, +.btn-info.disabled:focus, +.btn-info.disabled:hover, +.btn-info[disabled], +.btn-info[disabled].active, +.btn-info[disabled].focus, +.btn-info[disabled]:active, +.btn-info[disabled]:focus, +.btn-info[disabled]:hover, +fieldset[disabled] .btn-info, +fieldset[disabled] .btn-info.active, +fieldset[disabled] .btn-info.focus, +fieldset[disabled] .btn-info:active, +fieldset[disabled] .btn-info:focus, +fieldset[disabled] .btn-info:hover { + background-color: #5bc0de; + border-color: #46b8da +} + +.btn-info .badge { + color: #5bc0de; + background-color: #fff +} + +.btn-warning { + color: #fff; + background-color: #f0ad4e; + border-color: #eea236 +} + +.btn-warning.active, +.btn-warning.focus, +.btn-warning:active, +.btn-warning:focus, +.btn-warning:hover, +.open>.dropdown-toggle.btn-warning { + color: #fff; + background-color: #ec971f; + border-color: #d58512 +} + +.btn-warning.active, +.btn-warning:active, +.open>.dropdown-toggle.btn-warning { + background-image: none +} + +.btn-warning.disabled, +.btn-warning.disabled.active, +.btn-warning.disabled.focus, +.btn-warning.disabled:active, +.btn-warning.disabled:focus, +.btn-warning.disabled:hover, +.btn-warning[disabled], +.btn-warning[disabled].active, +.btn-warning[disabled].focus, +.btn-warning[disabled]:active, +.btn-warning[disabled]:focus, +.btn-warning[disabled]:hover, +fieldset[disabled] .btn-warning, +fieldset[disabled] .btn-warning.active, +fieldset[disabled] .btn-warning.focus, +fieldset[disabled] .btn-warning:active, +fieldset[disabled] .btn-warning:focus, +fieldset[disabled] .btn-warning:hover { + background-color: #f0ad4e; + border-color: #eea236 +} + +.btn-warning .badge { + color: #f0ad4e; + background-color: #fff +} + +.btn-danger { + color: #fff; + background-color: #d9534f; + border-color: #d43f3a +} + +.btn-danger.active, +.btn-danger.focus, +.btn-danger:active, +.btn-danger:focus, +.btn-danger:hover, +.open>.dropdown-toggle.btn-danger { + color: #fff; + background-color: #c9302c; + border-color: #ac2925 +} + +.btn-danger.active, +.btn-danger:active, +.open>.dropdown-toggle.btn-danger { + background-image: none +} + +.btn-danger.disabled, +.btn-danger.disabled.active, +.btn-danger.disabled.focus, +.btn-danger.disabled:active, +.btn-danger.disabled:focus, +.btn-danger.disabled:hover, +.btn-danger[disabled], +.btn-danger[disabled].active, +.btn-danger[disabled].focus, +.btn-danger[disabled]:active, +.btn-danger[disabled]:focus, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger, +fieldset[disabled] .btn-danger.active, +fieldset[disabled] .btn-danger.focus, +fieldset[disabled] .btn-danger:active, +fieldset[disabled] .btn-danger:focus, +fieldset[disabled] .btn-danger:hover { + background-color: #d9534f; + border-color: #d43f3a +} + +.btn-danger .badge { + color: #d9534f; + background-color: #fff +} + +.btn-link { + font-weight: 400; + color: #337ab7; + border-radius: 0 +} + +.btn-link, +.btn-link.active, +.btn-link:active, +.btn-link[disabled], +fieldset[disabled] .btn-link { + background-color: transparent; +} + +.btn-link, +.btn-link:active, +.btn-link:focus, +.btn-link:hover { + border-color: transparent +} + +.btn-link:focus, +.btn-link:hover { + color: #23527c; + text-decoration: underline; + background-color: transparent +} + +.btn-link[disabled]:focus, +.btn-link[disabled]:hover, +fieldset[disabled] .btn-link:focus, +fieldset[disabled] .btn-link:hover { + color: #777; + text-decoration: none +} + +.btn-group-lg>.btn, +.btn-lg { + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px +} + +.btn-group-sm>.btn, +.btn-sm { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px +} + +.btn-group-xs>.btn, +.btn-xs { + padding: 1px 5px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px +} + +.btn-block { + display: block; + width: 100% +} + +.btn-block+.btn-block { + margin-top: 5px +} + +input[type=button].btn-block, +input[type=reset].btn-block, +input[type=submit].btn-block { + width: 100% +} + +.fade { + opacity: 0; + -webkit-transition: opacity .15s linear; + -o-transition: opacity .15s linear; + transition: opacity .15s linear +} + +.fade.in { + opacity: 1 +} + +.collapse { + display: none; + visibility: hidden +} + +.collapse.in { + display: block; + visibility: visible +} + +tr.collapse.in { + display: table-row +} + +tbody.collapse.in { + display: table-row-group +} + +.collapsing { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition-timing-function: ease; + -o-transition-timing-function: ease; + transition-timing-function: ease; + -webkit-transition-duration: .35s; + -o-transition-duration: .35s; + transition-duration: .35s; + -webkit-transition-property: height, visibility; + -o-transition-property: height, visibility; + transition-property: height, visibility +} + +.caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 2px; + vertical-align: middle; + border-top: 4px solid; + border-right: 4px solid transparent; + border-left: 4px solid transparent +} + +.dropdown, +.dropup { + position: relative +} + +.dropdown-toggle:focus { + outline: 0 +} + +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + font-size: 14px; + text-align: left; + list-style: none; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, .15); + border-radius: 4px; +} + +.dropdown-menu.pull-right { + right: 0; + left: auto +} + +.dropdown-menu .divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5 +} + +.dropdown-menu>li>a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: 400; + line-height: 1.42857143; + color: #333; + white-space: nowrap +} + +.dropdown-menu>li>a:focus, +.dropdown-menu>li>a:hover { + color: #262626; + text-decoration: none; + background-color: #f5f5f5 +} + +.dropdown-menu>.active>a, +.dropdown-menu>.active>a:focus, +.dropdown-menu>.active>a:hover { + color: #fff; + text-decoration: none; + background-color: #337ab7; + outline: 0 +} + +.dropdown-menu>.disabled>a, +.dropdown-menu>.disabled>a:focus, +.dropdown-menu>.disabled>a:hover { + color: #777 +} + +.dropdown-menu>.disabled>a:focus, +.dropdown-menu>.disabled>a:hover { + text-decoration: none; + cursor: not-allowed; + background-color: transparent; + background-image: none; + filter: progid: DXImageTransform.Microsoft.gradient(enabled=false) +} + +.open>.dropdown-menu { + display: block +} + +.open>a { + outline: 0 +} + +.dropdown-menu-right { + right: 0; + left: auto +} + +.dropdown-menu-left { + right: auto; + left: 0 +} + +.dropdown-header { + display: block; + padding: 3px 20px; + font-size: 12px; + line-height: 1.42857143; + color: #777; + white-space: nowrap +} + +.dropdown-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 990 +} + +.pull-right>.dropdown-menu { + right: 0; + left: auto +} + +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + content: ""; + border-top: 0; + border-bottom: 4px solid +} + +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 2px +} + +@media (min-width:768px) { + .navbar-right .dropdown-menu { + right: 0; + left: auto + } + .navbar-right .dropdown-menu-left { + right: auto; + left: 0 + } +} + +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-block; + vertical-align: middle +} + +.btn-group-vertical>.btn, +.btn-group>.btn { + position: relative; + float: left +} + +.btn-group-vertical>.btn.active, +.btn-group-vertical>.btn:active, +.btn-group-vertical>.btn:focus, +.btn-group-vertical>.btn:hover, +.btn-group>.btn.active, +.btn-group>.btn:active, +.btn-group>.btn:focus, +.btn-group>.btn:hover { + z-index: 2 +} + +.btn-group .btn+.btn, +.btn-group .btn+.btn-group, +.btn-group .btn-group+.btn, +.btn-group .btn-group+.btn-group { + margin-left: -1px +} + +.btn-toolbar { + margin-left: -5px +} + +.btn-toolbar .btn-group, +.btn-toolbar .input-group { + float: left +} + +.btn-toolbar>.btn, +.btn-toolbar>.btn-group, +.btn-toolbar>.input-group { + margin-left: 5px +} + +.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { + border-radius: 0 +} + +.btn-group>.btn:first-child { + margin-left: 0 +} + +.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle) { + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.btn-group>.btn:last-child:not(:first-child), +.btn-group>.dropdown-toggle:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.btn-group>.btn-group { + float: left +} + +.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn { + border-radius: 0 +} + +.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child, +.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle { + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child { + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0 +} + +.btn-group>.btn+.dropdown-toggle { + padding-right: 8px; + padding-left: 8px +} + +.btn-group>.btn-lg+.dropdown-toggle { + padding-right: 12px; + padding-left: 12px +} + +.btn-group.open .dropdown-toggle { +} + +.btn-group.open .dropdown-toggle.btn-link { +} + +.btn .caret { + margin-left: 0 +} + +.btn-lg .caret { + border-width: 5px 5px 0; + border-bottom-width: 0 +} + +.dropup .btn-lg .caret { + border-width: 0 5px 5px +} + +.btn-group-vertical>.btn, +.btn-group-vertical>.btn-group, +.btn-group-vertical>.btn-group>.btn { + display: block; + float: none; + width: 100%; + max-width: 100% +} + +.btn-group-vertical>.btn-group>.btn { + float: none +} + +.btn-group-vertical>.btn+.btn, +.btn-group-vertical>.btn+.btn-group, +.btn-group-vertical>.btn-group+.btn, +.btn-group-vertical>.btn-group+.btn-group { + margin-top: -1px; + margin-left: 0 +} + +.btn-group-vertical>.btn:not(:first-child):not(:last-child) { + border-radius: 0 +} + +.btn-group-vertical>.btn:first-child:not(:last-child) { + border-top-right-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0 +} + +.btn-group-vertical>.btn:last-child:not(:first-child) { + border-top-left-radius: 0; + border-top-right-radius: 0; + border-bottom-left-radius: 4px +} + +.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn { + border-radius: 0 +} + +.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child, +.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0 +} + +.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child { + border-top-left-radius: 0; + border-top-right-radius: 0 +} + +.btn-group-justified { + display: table; + width: 100%; + table-layout: fixed; + border-collapse: separate +} + +.btn-group-justified>.btn, +.btn-group-justified>.btn-group { + display: table-cell; + float: none; + width: 1% +} + +.btn-group-justified>.btn-group .btn { + width: 100% +} + +.btn-group-justified>.btn-group .dropdown-menu { + left: auto +} + +[data-toggle=buttons]>.btn input[type=checkbox], +[data-toggle=buttons]>.btn input[type=radio], +[data-toggle=buttons]>.btn-group>.btn input[type=checkbox], +[data-toggle=buttons]>.btn-group>.btn input[type=radio] { + position: absolute; + clip: rect(0, 0, 0, 0); +} + +.input-group { + position: relative; + display: table; + border-collapse: separate +} + +.input-group[class*=col-] { + float: none; + padding-right: 0; + padding-left: 0 +} + +.input-group .form-control { + position: relative; + z-index: 2; + float: left; + width: 100%; + margin-bottom: 0 +} + +.input-group-lg>.form-control, +.input-group-lg>.input-group-addon, +.input-group-lg>.input-group-btn>.btn { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px +} + +select.input-group-lg>.form-control, +select.input-group-lg>.input-group-addon, +select.input-group-lg>.input-group-btn>.btn { + height: 46px; + line-height: 46px +} + +select[multiple].input-group-lg>.form-control, +select[multiple].input-group-lg>.input-group-addon, +select[multiple].input-group-lg>.input-group-btn>.btn, +textarea.input-group-lg>.form-control, +textarea.input-group-lg>.input-group-addon, +textarea.input-group-lg>.input-group-btn>.btn { + height: auto +} + +.input-group-sm>.form-control, +.input-group-sm>.input-group-addon, +.input-group-sm>.input-group-btn>.btn { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px +} + +select.input-group-sm>.form-control, +select.input-group-sm>.input-group-addon, +select.input-group-sm>.input-group-btn>.btn { + height: 30px; + line-height: 30px +} + +select[multiple].input-group-sm>.form-control, +select[multiple].input-group-sm>.input-group-addon, +select[multiple].input-group-sm>.input-group-btn>.btn, +textarea.input-group-sm>.form-control, +textarea.input-group-sm>.input-group-addon, +textarea.input-group-sm>.input-group-btn>.btn { + height: auto +} + +.input-group .form-control, +.input-group-addon, +.input-group-btn { + display: table-cell +} + +.input-group .form-control:not(:first-child):not(:last-child), +.input-group-addon:not(:first-child):not(:last-child), +.input-group-btn:not(:first-child):not(:last-child) { + border-radius: 0 +} + +.input-group-addon, +.input-group-btn { + width: 1%; + white-space: nowrap; + vertical-align: middle +} + +.input-group-addon { + padding: 6px 12px; + font-size: 14px; + font-weight: 400; + line-height: 1; + color: #555; + text-align: center; + background-color: #eee; + border: 1px solid #ccc; + border-radius: 4px +} + +.input-group-addon.input-sm { + padding: 5px 10px; + font-size: 12px; + border-radius: 3px +} + +.input-group-addon.input-lg { + padding: 10px 16px; + font-size: 18px; + border-radius: 6px +} + +.input-group-addon input[type=checkbox], +.input-group-addon input[type=radio] { + margin-top: 0 +} + +.input-group .form-control:first-child, +.input-group-addon:first-child, +.input-group-btn:first-child>.btn, +.input-group-btn:first-child>.btn-group>.btn, +.input-group-btn:first-child>.dropdown-toggle, +.input-group-btn:last-child>.btn-group:not(:last-child)>.btn, +.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle) { + border-top-right-radius: 0; + border-bottom-right-radius: 0 +} + +.input-group-addon:first-child { + border-right: 0 +} + +.input-group .form-control:last-child, +.input-group-addon:last-child, +.input-group-btn:first-child>.btn-group:not(:first-child)>.btn, +.input-group-btn:first-child>.btn:not(:first-child), +.input-group-btn:last-child>.btn, +.input-group-btn:last-child>.btn-group>.btn, +.input-group-btn:last-child>.dropdown-toggle { + border-top-left-radius: 0; + border-bottom-left-radius: 0 +} + +.input-group-addon:last-child { + border-left: 0 +} + +.input-group-btn { + position: relative; + font-size: 0; + white-space: nowrap +} + +.input-group-btn>.btn { + position: relative +} + +.input-group-btn>.btn+.btn { + margin-left: -1px +} + +.input-group-btn>.btn:active, +.input-group-btn>.btn:focus, +.input-group-btn>.btn:hover { + z-index: 2 +} + +.input-group-btn:first-child>.btn, +.input-group-btn:first-child>.btn-group { + margin-right: -1px +} + +.input-group-btn:last-child>.btn, +.input-group-btn:last-child>.btn-group { + margin-left: -1px +} + +.nav { + padding-left: 0; + margin-bottom: 0; + list-style: none +} + +.nav>li { + position: relative; + display: block +} + +.nav>li>a { + position: relative; + display: block; + padding: 10px 15px +} + +.nav>li>a:focus, +.nav>li>a:hover { + text-decoration: none; + background-color: #eee +} + +.nav>li.disabled>a { + color: #777 +} + +.nav>li.disabled>a:focus, +.nav>li.disabled>a:hover { + color: #777; + text-decoration: none; + cursor: not-allowed; + background-color: transparent +} + +.nav .open>a, +.nav .open>a:focus, +.nav .open>a:hover { + background-color: #eee; + border-color: #337ab7 +} + +.nav .nav-divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5 +} + +.nav>li>a>img { + max-width: none +} + +.nav-tabs { + border-bottom: 1px solid #ddd +} + +.nav-tabs>li { + float: left; + margin-bottom: -1px +} + +.nav-tabs>li>a { + margin-right: 2px; + line-height: 1.42857143; + border: 1px solid transparent; + border-radius: 4px 4px 0 0 +} + +.nav-tabs>li>a:hover { + border-color: #eee #eee #ddd +} + +.nav-tabs>li.active>a, +.nav-tabs>li.active>a:focus, +.nav-tabs>li.active>a:hover { + color: #555; + cursor: default; + background-color: #fff; + border: 1px solid #ddd; + border-bottom-color: transparent +} + +.nav-tabs.nav-justified { + width: 100%; + border-bottom: 0 +} + +.nav-tabs.nav-justified>li { + float: none +} + +.nav-tabs.nav-justified>li>a { + margin-bottom: 5px; + text-align: center +} + +.nav-tabs.nav-justified>.dropdown .dropdown-menu { + top: auto; + left: auto +} + +@media (min-width:768px) { + .nav-tabs.nav-justified>li { + display: table-cell; + width: 1% + } + .nav-tabs.nav-justified>li>a { + margin-bottom: 0 + } +} + +.nav-tabs.nav-justified>li>a { + margin-right: 0; + border-radius: 4px +} + +.nav-tabs.nav-justified>.active>a, +.nav-tabs.nav-justified>.active>a:focus, +.nav-tabs.nav-justified>.active>a:hover { + border: 1px solid #ddd +} + +@media (min-width:768px) { + .nav-tabs.nav-justified>li>a { + border-bottom: 1px solid #ddd; + border-radius: 4px 4px 0 0 + } + .nav-tabs.nav-justified>.active>a, + .nav-tabs.nav-justified>.active>a:focus, + .nav-tabs.nav-justified>.active>a:hover { + border-bottom-color: #fff + } +} + +.nav-pills>li { + float: left +} + +.nav-pills>li>a { + border-radius: 4px +} + +.nav-pills>li+li { + margin-left: 2px +} + +.nav-pills>li.active>a, +.nav-pills>li.active>a:focus, +.nav-pills>li.active>a:hover { + color: #fff; + background-color: #337ab7 +} + +.nav-stacked>li { + float: none +} + +.nav-stacked>li+li { + margin-top: 2px; + margin-left: 0 +} + +.nav-justified { + width: 100% +} + +.nav-justified>li { + float: none +} + +.nav-justified>li>a { + margin-bottom: 5px; + text-align: center +} + +.nav-justified>.dropdown .dropdown-menu { + top: auto; + left: auto +} + +@media (min-width:768px) { + .nav-justified>li { + display: table-cell; + width: 1% + } + .nav-justified>li>a { + margin-bottom: 0 + } +} + +.nav-tabs-justified { + border-bottom: 0 +} + +.nav-tabs-justified>li>a { + margin-right: 0; + border-radius: 4px +} + +.nav-tabs-justified>.active>a, +.nav-tabs-justified>.active>a:focus, +.nav-tabs-justified>.active>a:hover { + border: 1px solid #ddd +} + +@media (min-width:768px) { + .nav-tabs-justified>li>a { + border-bottom: 1px solid #ddd; + border-radius: 4px 4px 0 0 + } + .nav-tabs-justified>.active>a, + .nav-tabs-justified>.active>a:focus, + .nav-tabs-justified>.active>a:hover { + border-bottom-color: #fff + } +} + +.tab-content>.tab-pane { + display: none; + visibility: hidden +} + +.tab-content>.active { + display: block; + visibility: visible +} + +.nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-left-radius: 0; + border-top-right-radius: 0 +} + +.navbar { + position: relative; + min-height: 50px; + margin-bottom: 20px; + border: 1px solid transparent +} + +@media (min-width:768px) { + .navbar { + border-radius: 4px + } +} + +@media (min-width:768px) { + .navbar-header { + float: left + } +} + +.navbar-collapse { + padding-right: 15px; + padding-left: 15px; + overflow-x: visible; + -webkit-overflow-scrolling: touch; + border-top: 1px solid transparent; +} + +.navbar-collapse.in { + overflow-y: auto +} + +@media (min-width:768px) { + .navbar-collapse { + width: auto; + border-top: 0; + } + .navbar-collapse.collapse { + display: block!important; + height: auto!important; + padding-bottom: 0; + overflow: visible!important; + visibility: visible!important + } + .navbar-collapse.in { + overflow-y: visible + } + .navbar-fixed-bottom .navbar-collapse, + .navbar-fixed-top .navbar-collapse, + .navbar-static-top .navbar-collapse { + padding-right: 0; + padding-left: 0 + } +} + +.navbar-fixed-bottom .navbar-collapse, +.navbar-fixed-top .navbar-collapse { + max-height: 340px +} + +@media (max-device-width:480px) and (orientation:landscape) { + .navbar-fixed-bottom .navbar-collapse, + .navbar-fixed-top .navbar-collapse { + max-height: 200px + } +} + +.container-fluid>.navbar-collapse, +.container-fluid>.navbar-header, +.container>.navbar-collapse, +.container>.navbar-header { + margin-right: -15px; + margin-left: -15px +} + +@media (min-width:768px) { + .container-fluid>.navbar-collapse, + .container-fluid>.navbar-header, + .container>.navbar-collapse, + .container>.navbar-header { + margin-right: 0; + margin-left: 0 + } +} + +.navbar-static-top { + z-index: 1000; + border-width: 0 0 1px +} + +@media (min-width:768px) { + .navbar-static-top { + border-radius: 0 + } +} + +.navbar-fixed-bottom, +.navbar-fixed-top { + position: fixed; + right: 0; + left: 0; +} + +@media (min-width:768px) { + .navbar-fixed-bottom, + .navbar-fixed-top { + border-radius: 0 + } +} + +.navbar-fixed-top { + top: 0; + border-width: 0 0 1px +} + +.navbar-fixed-bottom { + bottom: 0; + margin-bottom: 0; + border-width: 1px 0 0 +} + +.navbar-brand { + float: left; + height: 50px; + padding: 15px 15px; + font-size: 18px; + line-height: 20px +} + +.navbar-brand:focus, +.navbar-brand:hover { + text-decoration: none +} + +.navbar-brand>img { + display: block +} + +@media (min-width:768px) { + .navbar>.container .navbar-brand, + .navbar>.container-fluid .navbar-brand { + margin-left: -15px + } +} + +.navbar-toggle { + position: relative; + float: right; + padding: 9px 10px; + margin-top: 8px; + margin-right: 15px; + margin-bottom: 8px; + background-color: transparent; + background-image: none; + border: 1px solid transparent; + border-radius: 4px +} + +.navbar-toggle:focus { + outline: 0 +} + +.navbar-toggle .icon-bar { + display: block; + width: 22px; + height: 2px; + border-radius: 1px +} + +.navbar-toggle .icon-bar+.icon-bar { + margin-top: 4px +} + +@media (min-width:768px) { + .navbar-toggle { + display: none + } +} + +.navbar-nav { + margin: 7.5px -15px +} + +.navbar-nav>li>a { + padding-top: 10px; + padding-bottom: 10px; + line-height: 20px +} + +@media (max-width:767px) { + .navbar-nav .open .dropdown-menu { + position: static; + float: none; + width: auto; + margin-top: 0; + background-color: transparent; + border: 0; + } + .navbar-nav .open .dropdown-menu .dropdown-header, + .navbar-nav .open .dropdown-menu>li>a { + padding: 5px 15px 5px 25px + } + .navbar-nav .open .dropdown-menu>li>a { + line-height: 20px + } + .navbar-nav .open .dropdown-menu>li>a:focus, + .navbar-nav .open .dropdown-menu>li>a:hover { + background-image: none + } +} + +@media (min-width:768px) { + .navbar-nav { + float: left; + margin: 0 + } + .navbar-nav>li { + float: left + } + .navbar-nav>li>a { + padding-top: 15px; + padding-bottom: 15px + } +} + +.navbar-form { + padding: 10px 15px; + margin-top: 8px; + margin-right: -15px; + margin-bottom: 8px; + margin-left: -15px; + border-top: 1px solid transparent; + border-bottom: 1px solid transparent; +} + +@media (min-width:768px) { + .navbar-form .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle + } + .navbar-form .form-control { + display: inline-block; + width: auto; + vertical-align: middle + } + .navbar-form .form-control-static { + display: inline-block + } + .navbar-form .input-group { + display: inline-table; + vertical-align: middle + } + .navbar-form .input-group .form-control, + .navbar-form .input-group .input-group-addon, + .navbar-form .input-group .input-group-btn { + width: auto + } + .navbar-form .input-group>.form-control { + width: 100% + } + .navbar-form .control-label { + margin-bottom: 0; + vertical-align: middle + } + .navbar-form .checkbox, + .navbar-form .radio { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle + } + .navbar-form .checkbox label, + .navbar-form .radio label { + padding-left: 0 + } + .navbar-form .checkbox input[type=checkbox], + .navbar-form .radio input[type=radio] { + position: relative; + margin-left: 0 + } + .navbar-form .has-feedback .form-control-feedback { + top: 0 + } +} + +@media (max-width:767px) { + .navbar-form .form-group { + margin-bottom: 5px + } + .navbar-form .form-group:last-child { + margin-bottom: 0 + } +} + +@media (min-width:768px) { + .navbar-form { + width: auto; + padding-top: 0; + padding-bottom: 0; + margin-right: 0; + margin-left: 0; + border: 0; + } +} + +.navbar-nav>li>.dropdown-menu { + margin-top: 0; + border-top-left-radius: 0; + border-top-right-radius: 0 +} + +.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu { + margin-bottom: 0; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0 +} + +.navbar-btn { + margin-top: 8px; + margin-bottom: 8px +} + +.navbar-btn.btn-sm { + margin-top: 10px; + margin-bottom: 10px +} + +.navbar-btn.btn-xs { + margin-top: 14px; + margin-bottom: 14px +} + +.navbar-text { + margin-top: 15px; + margin-bottom: 15px +} + +@media (min-width:768px) { + .navbar-text { + float: left; + margin-right: 15px; + margin-left: 15px + } +} + +@media (min-width:768px) { + .navbar-left { + float: left!important + } + .navbar-right { + float: right!important; + margin-right: -15px + } + .navbar-right~.navbar-right { + margin-right: 0 + } +} + +.navbar-default { + background-color: #f8f8f8; + border-color: #e7e7e7 +} + +.navbar-default .navbar-brand { + color: #777 +} + +.navbar-default .navbar-brand:focus, +.navbar-default .navbar-brand:hover { + color: #5e5e5e; + background-color: transparent +} + +.navbar-default .navbar-text { + color: #777 +} + +.navbar-default .navbar-nav>li>a { + color: #777 +} + +.navbar-default .navbar-nav>li>a:focus, +.navbar-default .navbar-nav>li>a:hover { + color: #333; + background-color: transparent +} + +.navbar-default .navbar-nav>.active>a, +.navbar-default .navbar-nav>.active>a:focus, +.navbar-default .navbar-nav>.active>a:hover { + color: #555; + background-color: #e7e7e7 +} + +.navbar-default .navbar-nav>.disabled>a, +.navbar-default .navbar-nav>.disabled>a:focus, +.navbar-default .navbar-nav>.disabled>a:hover { + color: #ccc; + background-color: transparent +} + +.navbar-default .navbar-toggle { + border-color: #ddd +} + +.navbar-default .navbar-toggle:focus, +.navbar-default .navbar-toggle:hover { + background-color: #ddd +} + +.navbar-default .navbar-toggle .icon-bar { + background-color: #888 +} + +.navbar-default .navbar-collapse, +.navbar-default .navbar-form { + border-color: #e7e7e7 +} + +.navbar-default .navbar-nav>.open>a, +.navbar-default .navbar-nav>.open>a:focus, +.navbar-default .navbar-nav>.open>a:hover { + color: #555; + background-color: #e7e7e7 +} + +@media (max-width:767px) { + .navbar-default .navbar-nav .open .dropdown-menu>li>a { + color: #777 + } + .navbar-default .navbar-nav .open .dropdown-menu>li>a:focus, + .navbar-default .navbar-nav .open .dropdown-menu>li>a:hover { + color: #333; + background-color: transparent + } + .navbar-default .navbar-nav .open .dropdown-menu>.active>a, + .navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus, + .navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover { + color: #555; + background-color: #e7e7e7 + } + .navbar-default .navbar-nav .open .dropdown-menu>.disabled>a, + .navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus, + .navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover { + color: #ccc; + background-color: transparent + } +} + +.navbar-default .navbar-link { + color: #777 +} + +.navbar-default .navbar-link:hover { + color: #333 +} + +.navbar-default .btn-link { + color: #777 +} + +.navbar-default .btn-link:focus, +.navbar-default .btn-link:hover { + color: #333 +} + +.navbar-default .btn-link[disabled]:focus, +.navbar-default .btn-link[disabled]:hover, +fieldset[disabled] .navbar-default .btn-link:focus, +fieldset[disabled] .navbar-default .btn-link:hover { + color: #ccc +} + +.navbar-inverse { + background-color: #222; + border-color: #080808 +} + +.navbar-inverse .navbar-brand { + color: #9d9d9d +} + +.navbar-inverse .navbar-brand:focus, +.navbar-inverse .navbar-brand:hover { + color: #fff; + background-color: transparent +} + +.navbar-inverse .navbar-text { + color: #9d9d9d +} + +.navbar-inverse .navbar-nav>li>a { + color: #9d9d9d +} + +.navbar-inverse .navbar-nav>li>a:focus, +.navbar-inverse .navbar-nav>li>a:hover { + color: #fff; + background-color: transparent +} + +.navbar-inverse .navbar-nav>.active>a, +.navbar-inverse .navbar-nav>.active>a:focus, +.navbar-inverse .navbar-nav>.active>a:hover { + color: #fff; + background-color: #080808 +} + +.navbar-inverse .navbar-nav>.disabled>a, +.navbar-inverse .navbar-nav>.disabled>a:focus, +.navbar-inverse .navbar-nav>.disabled>a:hover { + color: #444; + background-color: transparent +} + +.navbar-inverse .navbar-toggle { + border-color: #333 +} + +.navbar-inverse .navbar-toggle:focus, +.navbar-inverse .navbar-toggle:hover { + background-color: #333 +} + +.navbar-inverse .navbar-toggle .icon-bar { + background-color: #fff +} + +.navbar-inverse .navbar-collapse, +.navbar-inverse .navbar-form { + border-color: #101010 +} + +.navbar-inverse .navbar-nav>.open>a, +.navbar-inverse .navbar-nav>.open>a:focus, +.navbar-inverse .navbar-nav>.open>a:hover { + color: #fff; + background-color: #080808 +} + +@media (max-width:767px) { + .navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header { + border-color: #080808 + } + .navbar-inverse .navbar-nav .open .dropdown-menu .divider { + background-color: #080808 + } + .navbar-inverse .navbar-nav .open .dropdown-menu>li>a { + color: #9d9d9d + } + .navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus, + .navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover { + color: #fff; + background-color: transparent + } + .navbar-inverse .navbar-nav .open .dropdown-menu>.active>a, + .navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus, + .navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover { + color: #fff; + background-color: #080808 + } + .navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a, + .navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus, + .navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover { + color: #444; + background-color: transparent + } +} + +.navbar-inverse .navbar-link { + color: #9d9d9d +} + +.navbar-inverse .navbar-link:hover { + color: #fff +} + +.navbar-inverse .btn-link { + color: #9d9d9d +} + +.navbar-inverse .btn-link:focus, +.navbar-inverse .btn-link:hover { + color: #fff +} + +.navbar-inverse .btn-link[disabled]:focus, +.navbar-inverse .btn-link[disabled]:hover, +fieldset[disabled] .navbar-inverse .btn-link:focus, +fieldset[disabled] .navbar-inverse .btn-link:hover { + color: #444 +} + +.breadcrumb { + padding: 8px 15px; + margin-bottom: 20px; + list-style: none; + background-color: #f5f5f5; + border-radius: 4px +} + +.breadcrumb>li { + display: inline-block +} + +.breadcrumb>li+li:before { + padding: 0 5px; + color: #ccc; + content: "/\00a0" +} + +.breadcrumb>.active { + color: #777 +} + +.pagination { + display: inline-block; + padding-left: 0; + margin: 20px 0; + border-radius: 4px +} + +.pagination>li { + display: inline +} + +.pagination>li>a, +.pagination>li>span { + position: relative; + float: left; + padding: 6px 12px; + margin-left: -1px; + line-height: 1.42857143; + color: #337ab7; + text-decoration: none; + background-color: #fff; + border: 1px solid #ddd +} + +.pagination>li:first-child>a, +.pagination>li:first-child>span { + margin-left: 0; + border-top-left-radius: 4px; + border-bottom-left-radius: 4px +} + +.pagination>li:last-child>a, +.pagination>li:last-child>span { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px +} + +.pagination>li>a:focus, +.pagination>li>a:hover, +.pagination>li>span:focus, +.pagination>li>span:hover { + color: #23527c; + background-color: #eee; + border-color: #ddd +} + +.pagination>.active>a, +.pagination>.active>a:focus, +.pagination>.active>a:hover, +.pagination>.active>span, +.pagination>.active>span:focus, +.pagination>.active>span:hover { + z-index: 2; + color: #fff; + cursor: default; + background-color: #337ab7; + border-color: #337ab7 +} + +.pagination>.disabled>a, +.pagination>.disabled>a:focus, +.pagination>.disabled>a:hover, +.pagination>.disabled>span, +.pagination>.disabled>span:focus, +.pagination>.disabled>span:hover { + color: #777; + cursor: not-allowed; + background-color: #fff; + border-color: #ddd +} + +.pagination-lg>li>a, +.pagination-lg>li>span { + padding: 10px 16px; + font-size: 18px +} + +.pagination-lg>li:first-child>a, +.pagination-lg>li:first-child>span { + border-top-left-radius: 6px; + border-bottom-left-radius: 6px +} + +.pagination-lg>li:last-child>a, +.pagination-lg>li:last-child>span { + border-top-right-radius: 6px; + border-bottom-right-radius: 6px +} + +.pagination-sm>li>a, +.pagination-sm>li>span { + padding: 5px 10px; + font-size: 12px +} + +.pagination-sm>li:first-child>a, +.pagination-sm>li:first-child>span { + border-top-left-radius: 3px; + border-bottom-left-radius: 3px +} + +.pagination-sm>li:last-child>a, +.pagination-sm>li:last-child>span { + border-top-right-radius: 3px; + border-bottom-right-radius: 3px +} + +.pager { + padding-left: 0; + margin: 20px 0; + text-align: center; + list-style: none +} + +.pager li { + display: inline +} + +.pager li>a, +.pager li>span { + display: inline-block; + padding: 5px 14px; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 15px +} + +.pager li>a:focus, +.pager li>a:hover { + text-decoration: none; + background-color: #eee +} + +.pager .next>a, +.pager .next>span { + float: right +} + +.pager .previous>a, +.pager .previous>span { + float: left +} + +.pager .disabled>a, +.pager .disabled>a:focus, +.pager .disabled>a:hover, +.pager .disabled>span { + color: #777; + cursor: not-allowed; + background-color: #fff +} + +.label { + display: inline; + padding: .2em .6em .3em; + font-size: 75%; + font-weight: 700; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: .25em +} + +a.label:focus, +a.label:hover { + color: #fff; + text-decoration: none; + cursor: pointer +} + +.label:empty { + display: none +} + +.btn .label { + position: relative; + top: -1px +} + +.label-default { + background-color: #777 +} + +.label-default[href]:focus, +.label-default[href]:hover { + background-color: #5e5e5e +} + +.label-primary { + background-color: #337ab7 +} + +.label-primary[href]:focus, +.label-primary[href]:hover { + background-color: #286090 +} + +.label-success { + background-color: #5cb85c +} + +.label-success[href]:focus, +.label-success[href]:hover { + background-color: #449d44 +} + +.label-info { + background-color: #5bc0de +} + +.label-info[href]:focus, +.label-info[href]:hover { + background-color: #31b0d5 +} + +.label-warning { + background-color: #f0ad4e +} + +.label-warning[href]:focus, +.label-warning[href]:hover { + background-color: #ec971f +} + +.label-danger { + background-color: #d9534f +} + +.label-danger[href]:focus, +.label-danger[href]:hover { + background-color: #c9302c +} + +.badge { + display: inline-block; + min-width: 10px; + padding: 3px 7px; + font-size: 12px; + font-weight: 700; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + background-color: #777; + border-radius: 10px +} + +.badge:empty { + display: none +} + +.btn .badge { + position: relative; + top: -1px +} + +.btn-xs .badge { + top: 0; + padding: 1px 5px +} + +a.badge:focus, +a.badge:hover { + color: #fff; + text-decoration: none; + cursor: pointer +} + +.list-group-item.active>.badge, +.nav-pills>.active>a>.badge { + color: #337ab7; + background-color: #fff +} + +.list-group-item>.badge { + float: right +} + +.list-group-item>.badge+.badge { + margin-right: 5px +} + +.nav-pills>li>a>.badge { + margin-left: 3px +} + +.jumbotron { + padding: 30px 15px; + margin-bottom: 30px; + color: inherit; + background-color: #eee +} + +.jumbotron .h1, +.jumbotron h1 { + color: inherit +} + +.jumbotron p { + margin-bottom: 15px; + font-size: 21px; + font-weight: 200 +} + +.jumbotron>hr { + border-top-color: #d5d5d5 +} + +.container .jumbotron, +.container-fluid .jumbotron { + border-radius: 6px +} + +.jumbotron .container { + max-width: 100% +} + +@media screen and (min-width:768px) { + .jumbotron { + padding: 48px 0 + } + .container .jumbotron, + .container-fluid .jumbotron { + padding-right: 60px; + padding-left: 60px + } + .jumbotron .h1, + .jumbotron h1 { + font-size: 63px + } +} + +.thumbnail { + display: block; + padding: 4px; + margin-bottom: 20px; + line-height: 1.42857143; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 4px; + -webkit-transition: border .2s ease-in-out; + -o-transition: border .2s ease-in-out; + transition: border .2s ease-in-out +} + +.thumbnail a>img, +.thumbnail>img { + margin-right: auto; + margin-left: auto +} + +a.thumbnail.active, +a.thumbnail:focus, +a.thumbnail:hover { + border-color: #337ab7 +} + +.thumbnail .caption { + padding: 9px; + color: #333 +} + +.alert { + padding: 15px; + margin-bottom: 20px; + border: 1px solid transparent; + border-radius: 4px +} + +.alert h4 { + margin-top: 0; + color: inherit +} + +.alert .alert-link { + font-weight: 700 +} + +.alert>p, +.alert>ul { + margin-bottom: 0 +} + +.alert>p+p { + margin-top: 5px +} + +.alert-dismissable, +.alert-dismissible { + padding-right: 35px +} + +.alert-dismissable .close, +.alert-dismissible .close { + position: relative; + top: -2px; + right: -21px; + color: inherit +} + +.alert-success { + color: #3c763d; + background-color: #dff0d8; + border-color: #d6e9c6 +} + +.alert-success hr { + border-top-color: #c9e2b3 +} + +.alert-success .alert-link { + color: #2b542c +} + +.alert-info { + color: #31708f; + background-color: #d9edf7; + border-color: #bce8f1 +} + +.alert-info hr { + border-top-color: #a6e1ec +} + +.alert-info .alert-link { + color: #245269 +} + +.alert-warning { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #faebcc +} + +.alert-warning hr { + border-top-color: #f7e1b5 +} + +.alert-warning .alert-link { + color: #66512c +} + +.alert-danger { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1 +} + +.alert-danger hr { + border-top-color: #e4b9c0 +} + +.alert-danger .alert-link { + color: #843534 +} + +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0 + } + to { + background-position: 0 0 + } +} + +@-o-keyframes progress-bar-stripes { + from { + background-position: 40px 0 + } + to { + background-position: 0 0 + } +} + +@keyframes progress-bar-stripes { + from { + background-position: 40px 0 + } + to { + background-position: 0 0 + } +} + +.progress { + height: 20px; + margin-bottom: 20px; + overflow: hidden; + background-color: #f5f5f5; + border-radius: 4px; +} + +.progress-bar { + float: left; + width: 0; + height: 100%; + font-size: 12px; + line-height: 20px; + color: #fff; + text-align: center; + background-color: #337ab7; + -webkit-transition: width .6s ease; + -o-transition: width .6s ease; + transition: width .6s ease +} + +.progress-bar-striped, +.progress-striped .progress-bar { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + -webkit-background-size: 40px 40px; + background-size: 40px 40px +} + +.progress-bar.active, +.progress.active .progress-bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite +} + +.progress-bar-success { + background-color: #5cb85c +} + +.progress-striped .progress-bar-success { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent) +} + +.progress-bar-info { + background-color: #5bc0de +} + +.progress-striped .progress-bar-info { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent) +} + +.progress-bar-warning { + background-color: #f0ad4e +} + +.progress-striped .progress-bar-warning { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent) +} + +.progress-bar-danger { + background-color: #d9534f +} + +.progress-striped .progress-bar-danger { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent) +} + +.media { + margin-top: 15px +} + +.media:first-child { + margin-top: 0 +} + +.media, +.media-body { + overflow: hidden; + zoom: 1 +} + +.media-body { + width: 10000px +} + +.media-object { + display: block +} + +.media-right, +.media>.pull-right { + padding-left: 10px +} + +.media-left, +.media>.pull-left { + padding-right: 10px +} + +.media-body, +.media-left, +.media-right { + display: table-cell; + vertical-align: top +} + +.media-middle { + vertical-align: middle +} + +.media-bottom { + vertical-align: bottom +} + +.media-heading { + margin-top: 0; + margin-bottom: 5px +} + +.media-list { + padding-left: 0; + list-style: none +} + +.list-group { + padding-left: 0; + margin-bottom: 20px +} + +.list-group-item { + position: relative; + display: block; + padding: 10px 15px; + margin-bottom: -1px; + background-color: #fff; + border: 1px solid #ddd +} + +.list-group-item:first-child { + border-top-left-radius: 4px; + border-top-right-radius: 4px +} + +.list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px +} + +a.list-group-item { + color: #555 +} + +a.list-group-item .list-group-item-heading { + color: #333 +} + +a.list-group-item:focus, +a.list-group-item:hover { + color: #555; + text-decoration: none; + background-color: #f5f5f5 +} + +.list-group-item.disabled, +.list-group-item.disabled:focus, +.list-group-item.disabled:hover { + color: #777; + cursor: not-allowed; + background-color: #eee +} + +.list-group-item.disabled .list-group-item-heading, +.list-group-item.disabled:focus .list-group-item-heading, +.list-group-item.disabled:hover .list-group-item-heading { + color: inherit +} + +.list-group-item.disabled .list-group-item-text, +.list-group-item.disabled:focus .list-group-item-text, +.list-group-item.disabled:hover .list-group-item-text { + color: #777 +} + +.list-group-item.active, +.list-group-item.active:focus, +.list-group-item.active:hover { + z-index: 2; + color: #fff; + background-color: #337ab7; + border-color: #337ab7 +} + +.list-group-item.active .list-group-item-heading, +.list-group-item.active .list-group-item-heading>.small, +.list-group-item.active .list-group-item-heading>small, +.list-group-item.active:focus .list-group-item-heading, +.list-group-item.active:focus .list-group-item-heading>.small, +.list-group-item.active:focus .list-group-item-heading>small, +.list-group-item.active:hover .list-group-item-heading, +.list-group-item.active:hover .list-group-item-heading>.small, +.list-group-item.active:hover .list-group-item-heading>small { + color: inherit +} + +.list-group-item.active .list-group-item-text, +.list-group-item.active:focus .list-group-item-text, +.list-group-item.active:hover .list-group-item-text { + color: #c7ddef +} + +.list-group-item-success { + color: #3c763d; + background-color: #dff0d8 +} + +a.list-group-item-success { + color: #3c763d +} + +a.list-group-item-success .list-group-item-heading { + color: inherit +} + +a.list-group-item-success:focus, +a.list-group-item-success:hover { + color: #3c763d; + background-color: #d0e9c6 +} + +a.list-group-item-success.active, +a.list-group-item-success.active:focus, +a.list-group-item-success.active:hover { + color: #fff; + background-color: #3c763d; + border-color: #3c763d +} + +.list-group-item-info { + color: #31708f; + background-color: #d9edf7 +} + +a.list-group-item-info { + color: #31708f +} + +a.list-group-item-info .list-group-item-heading { + color: inherit +} + +a.list-group-item-info:focus, +a.list-group-item-info:hover { + color: #31708f; + background-color: #c4e3f3 +} + +a.list-group-item-info.active, +a.list-group-item-info.active:focus, +a.list-group-item-info.active:hover { + color: #fff; + background-color: #31708f; + border-color: #31708f +} + +.list-group-item-warning { + color: #8a6d3b; + background-color: #fcf8e3 +} + +a.list-group-item-warning { + color: #8a6d3b +} + +a.list-group-item-warning .list-group-item-heading { + color: inherit +} + +a.list-group-item-warning:focus, +a.list-group-item-warning:hover { + color: #8a6d3b; + background-color: #faf2cc +} + +a.list-group-item-warning.active, +a.list-group-item-warning.active:focus, +a.list-group-item-warning.active:hover { + color: #fff; + background-color: #8a6d3b; + border-color: #8a6d3b +} + +.list-group-item-danger { + color: #a94442; + background-color: #f2dede +} + +a.list-group-item-danger { + color: #a94442 +} + +a.list-group-item-danger .list-group-item-heading { + color: inherit +} + +a.list-group-item-danger:focus, +a.list-group-item-danger:hover { + color: #a94442; + background-color: #ebcccc +} + +a.list-group-item-danger.active, +a.list-group-item-danger.active:focus, +a.list-group-item-danger.active:hover { + color: #fff; + background-color: #a94442; + border-color: #a94442 +} + +.list-group-item-heading { + margin-top: 0; + margin-bottom: 5px +} + +.list-group-item-text { + margin-bottom: 0; + line-height: 1.3 +} + +.panel { + margin-bottom: 20px; + background-color: #fff; + border: 1px solid transparent; + border-radius: 4px; +} + +.panel-body { + padding: 15px +} + +.panel-heading { + padding: 10px 15px; + border-bottom: 1px solid transparent; + border-top-left-radius: 3px; + border-top-right-radius: 3px +} + +.panel-heading>.dropdown .dropdown-toggle { + color: inherit +} + +.panel-title { + margin-top: 0; + margin-bottom: 0; + font-size: 16px; + color: inherit +} + +.panel-title>.small, +.panel-title>.small>a, +.panel-title>a, +.panel-title>small, +.panel-title>small>a { + color: inherit +} + +.panel-footer { + padding: 10px 15px; + background-color: #f5f5f5; + border-top: 1px solid #ddd; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px +} + +.panel>.list-group, +.panel>.panel-collapse>.list-group { + margin-bottom: 0 +} + +.panel>.list-group .list-group-item, +.panel>.panel-collapse>.list-group .list-group-item { + border-width: 1px 0; + border-radius: 0 +} + +.panel>.list-group:first-child .list-group-item:first-child, +.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child { + border-top: 0; + border-top-left-radius: 3px; + border-top-right-radius: 3px +} + +.panel>.list-group:last-child .list-group-item:last-child, +.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child { + border-bottom: 0; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px +} + +.panel-heading+.list-group .list-group-item:first-child { + border-top-width: 0 +} + +.list-group+.panel-footer { + border-top-width: 0 +} + +.panel>.panel-collapse>.table, +.panel>.table, +.panel>.table-responsive>.table { + margin-bottom: 0 +} + +.panel>.panel-collapse>.table caption, +.panel>.table caption, +.panel>.table-responsive>.table caption { + padding-right: 15px; + padding-left: 15px +} + +.panel>.table-responsive:first-child>.table:first-child, +.panel>.table:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px +} + +.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child, +.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child, +.panel>.table:first-child>tbody:first-child>tr:first-child, +.panel>.table:first-child>thead:first-child>tr:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px +} + +.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child, +.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child, +.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child, +.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child, +.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child, +.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child, +.panel>.table:first-child>thead:first-child>tr:first-child td:first-child, +.panel>.table:first-child>thead:first-child>tr:first-child th:first-child { + border-top-left-radius: 3px +} + +.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child, +.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child, +.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child, +.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child, +.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child, +.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child, +.panel>.table:first-child>thead:first-child>tr:first-child td:last-child, +.panel>.table:first-child>thead:first-child>tr:first-child th:last-child { + border-top-right-radius: 3px +} + +.panel>.table-responsive:last-child>.table:last-child, +.panel>.table:last-child { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px +} + +.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child, +.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child, +.panel>.table:last-child>tbody:last-child>tr:last-child, +.panel>.table:last-child>tfoot:last-child>tr:last-child { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px +} + +.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child, +.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child, +.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child, +.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child, +.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child, +.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child, +.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child, +.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child { + border-bottom-left-radius: 3px +} + +.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child, +.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child, +.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child, +.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child, +.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child, +.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child, +.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child, +.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child { + border-bottom-right-radius: 3px +} + +.panel>.panel-body+.table, +.panel>.panel-body+.table-responsive, +.panel>.table+.panel-body, +.panel>.table-responsive+.panel-body { + border-top: 1px solid #ddd +} + +.panel>.table>tbody:first-child>tr:first-child td, +.panel>.table>tbody:first-child>tr:first-child th { + border-top: 0 +} + +.panel>.table-bordered, +.panel>.table-responsive>.table-bordered { + border: 0 +} + +.panel>.table-bordered>tbody>tr>td:first-child, +.panel>.table-bordered>tbody>tr>th:first-child, +.panel>.table-bordered>tfoot>tr>td:first-child, +.panel>.table-bordered>tfoot>tr>th:first-child, +.panel>.table-bordered>thead>tr>td:first-child, +.panel>.table-bordered>thead>tr>th:first-child, +.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child, +.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child, +.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child, +.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child, +.panel>.table-responsive>.table-bordered>thead>tr>td:first-child, +.panel>.table-responsive>.table-bordered>thead>tr>th:first-child { + border-left: 0 +} + +.panel>.table-bordered>tbody>tr>td:last-child, +.panel>.table-bordered>tbody>tr>th:last-child, +.panel>.table-bordered>tfoot>tr>td:last-child, +.panel>.table-bordered>tfoot>tr>th:last-child, +.panel>.table-bordered>thead>tr>td:last-child, +.panel>.table-bordered>thead>tr>th:last-child, +.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child, +.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child, +.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child, +.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child, +.panel>.table-responsive>.table-bordered>thead>tr>td:last-child, +.panel>.table-responsive>.table-bordered>thead>tr>th:last-child { + border-right: 0 +} + +.panel>.table-bordered>tbody>tr:first-child>td, +.panel>.table-bordered>tbody>tr:first-child>th, +.panel>.table-bordered>thead>tr:first-child>td, +.panel>.table-bordered>thead>tr:first-child>th, +.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td, +.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th, +.panel>.table-responsive>.table-bordered>thead>tr:first-child>td, +.panel>.table-responsive>.table-bordered>thead>tr:first-child>th { + border-bottom: 0 +} + +.panel>.table-bordered>tbody>tr:last-child>td, +.panel>.table-bordered>tbody>tr:last-child>th, +.panel>.table-bordered>tfoot>tr:last-child>td, +.panel>.table-bordered>tfoot>tr:last-child>th, +.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td, +.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th, +.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td, +.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th { + border-bottom: 0 +} + +.panel>.table-responsive { + margin-bottom: 0; + border: 0 +} + +.panel-group { + margin-bottom: 20px +} + +.panel-group .panel { + margin-bottom: 0; + border-radius: 4px +} + +.panel-group .panel+.panel { + margin-top: 5px +} + +.panel-group .panel-heading { + border-bottom: 0 +} + +.panel-group .panel-heading+.panel-collapse>.list-group, +.panel-group .panel-heading+.panel-collapse>.panel-body { + border-top: 1px solid #ddd +} + +.panel-group .panel-footer { + border-top: 0 +} + +.panel-group .panel-footer+.panel-collapse .panel-body { + border-bottom: 1px solid #ddd +} + +.panel-default { + border-color: #ddd +} + +.panel-default>.panel-heading { + color: #333; + background-color: #f5f5f5; + border-color: #ddd +} + +.panel-default>.panel-heading+.panel-collapse>.panel-body { + border-top-color: #ddd +} + +.panel-default>.panel-heading .badge { + color: #f5f5f5; + background-color: #333 +} + +.panel-default>.panel-footer+.panel-collapse>.panel-body { + border-bottom-color: #ddd +} + +.panel-primary { + border-color: #337ab7 +} + +.panel-primary>.panel-heading { + color: #fff; + background-color: #337ab7; + border-color: #337ab7 +} + +.panel-primary>.panel-heading+.panel-collapse>.panel-body { + border-top-color: #337ab7 +} + +.panel-primary>.panel-heading .badge { + color: #337ab7; + background-color: #fff +} + +.panel-primary>.panel-footer+.panel-collapse>.panel-body { + border-bottom-color: #337ab7 +} + +.panel-success { + border-color: #d6e9c6 +} + +.panel-success>.panel-heading { + color: #3c763d; + background-color: #dff0d8; + border-color: #d6e9c6 +} + +.panel-success>.panel-heading+.panel-collapse>.panel-body { + border-top-color: #d6e9c6 +} + +.panel-success>.panel-heading .badge { + color: #dff0d8; + background-color: #3c763d +} + +.panel-success>.panel-footer+.panel-collapse>.panel-body { + border-bottom-color: #d6e9c6 +} + +.panel-info { + border-color: #bce8f1 +} + +.panel-info>.panel-heading { + color: #31708f; + background-color: #d9edf7; + border-color: #bce8f1 +} + +.panel-info>.panel-heading+.panel-collapse>.panel-body { + border-top-color: #bce8f1 +} + +.panel-info>.panel-heading .badge { + color: #d9edf7; + background-color: #31708f +} + +.panel-info>.panel-footer+.panel-collapse>.panel-body { + border-bottom-color: #bce8f1 +} + +.panel-warning { + border-color: #faebcc +} + +.panel-warning>.panel-heading { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #faebcc +} + +.panel-warning>.panel-heading+.panel-collapse>.panel-body { + border-top-color: #faebcc +} + +.panel-warning>.panel-heading .badge { + color: #fcf8e3; + background-color: #8a6d3b +} + +.panel-warning>.panel-footer+.panel-collapse>.panel-body { + border-bottom-color: #faebcc +} + +.panel-danger { + border-color: #ebccd1 +} + +.panel-danger>.panel-heading { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1 +} + +.panel-danger>.panel-heading+.panel-collapse>.panel-body { + border-top-color: #ebccd1 +} + +.panel-danger>.panel-heading .badge { + color: #f2dede; + background-color: #a94442 +} + +.panel-danger>.panel-footer+.panel-collapse>.panel-body { + border-bottom-color: #ebccd1 +} + +.embed-responsive { + position: relative; + display: block; + height: 0; + padding: 0; + overflow: hidden +} + +.embed-responsive .embed-responsive-item, +.embed-responsive embed, +.embed-responsive iframe, +.embed-responsive object, +.embed-responsive video { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + border: 0 +} + +.embed-responsive.embed-responsive-16by9 { + padding-bottom: 56.25% +} + +.embed-responsive.embed-responsive-4by3 { + padding-bottom: 75% +} + +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + border-radius: 4px; +} + +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, .15) +} + +.well-lg { + padding: 24px; + border-radius: 6px +} + +.well-sm { + padding: 9px; + border-radius: 3px +} + +.close { + float: right; + font-size: 21px; + font-weight: 700; + line-height: 1; + color: #000; + filter: alpha(opacity=20); + opacity: .2 +} + +.close:focus, +.close:hover { + color: #000; + text-decoration: none; + cursor: pointer; + filter: alpha(opacity=50); + opacity: .5 +} + +button.close { + -webkit-appearance: none; + padding: 0; + cursor: pointer; + background: 0 0; + border: 0 +} + +.modal-open { + overflow: hidden +} + +.modal { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + display: none; + overflow: hidden; + -webkit-overflow-scrolling: touch; + outline: 0 +} + +.modal.fade .modal-dialog { + -webkit-transition: -webkit-transform .3s ease-out; + -o-transition: -o-transform .3s ease-out; + transition: transform .3s ease-out; + -webkit-transform: translate(0, -25%); + -ms-transform: translate(0, -25%); + -o-transform: translate(0, -25%); + transform: translate(0, -25%) +} + +.modal.in .modal-dialog { + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + -o-transform: translate(0, 0); + transform: translate(0, 0) +} + +.modal-open .modal { + overflow-x: hidden; + overflow-y: auto +} + +.modal-dialog { + position: relative; + width: auto; + margin: 10px +} + +.modal-content { + position: relative; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, .2); + border-radius: 6px; + outline: 0; +} + +.modal-backdrop { + position: absolute; + top: 0; + right: 0; + left: 0; + background-color: #000 +} + +.modal-backdrop.fade { + filter: alpha(opacity=0); + opacity: 0 +} + +.modal-backdrop.in { + filter: alpha(opacity=50); + opacity: .5 +} + +.modal-header { + min-height: 16.43px; + padding: 15px; + border-bottom: 1px solid #e5e5e5 +} + +.modal-header .close { + margin-top: -2px +} + +.modal-title { + margin: 0; + line-height: 1.42857143 +} + +.modal-body { + position: relative; + padding: 15px +} + +.modal-footer { + padding: 15px; + text-align: right; + border-top: 1px solid #e5e5e5 +} + +.modal-footer .btn+.btn { + margin-bottom: 0; + margin-left: 5px +} + +.modal-footer .btn-group .btn+.btn { + margin-left: -1px +} + +.modal-footer .btn-block+.btn-block { + margin-left: 0 +} + +.modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll +} + +@media (min-width:768px) { + .modal-dialog { + width: 600px; + margin: 30px auto + } + .modal-content { + } + .modal-sm { + width: 300px + } +} + +@media (min-width:992px) { + .modal-lg { + width: 900px + } +} + +.tooltip { + position: absolute; + z-index: 1070; + display: block; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 12px; + font-weight: 400; + line-height: 1.4; + visibility: visible; + filter: alpha(opacity=0); + opacity: 0 +} + +.tooltip.in { + filter: alpha(opacity=90); + opacity: .9 +} + +.tooltip.top { + padding: 5px 0; + margin-top: -3px +} + +.tooltip.right { + padding: 0 5px; + margin-left: 3px +} + +.tooltip.bottom { + padding: 5px 0; + margin-top: 3px +} + +.tooltip.left { + padding: 0 5px; + margin-left: -3px +} + +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #fff; + text-align: center; + text-decoration: none; + background-color: #000; + border-radius: 4px +} + +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid +} + +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-width: 5px 5px 0; + border-top-color: #000 +} + +.tooltip.top-left .tooltip-arrow { + right: 5px; + bottom: 0; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #000 +} + +.tooltip.top-right .tooltip-arrow { + bottom: 0; + left: 5px; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #000 +} + +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-width: 5px 5px 5px 0; + border-right-color: #000 +} + +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-width: 5px 0 5px 5px; + border-left-color: #000 +} + +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000 +} + +.tooltip.bottom-left .tooltip-arrow { + top: 0; + right: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000 +} + +.tooltip.bottom-right .tooltip-arrow { + top: 0; + left: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000 +} + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1060; + display: none; + max-width: 276px; + padding: 1px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + font-weight: 400; + line-height: 1.42857143; + text-align: left; + white-space: normal; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, .2); + border-radius: 6px; +} + +.popover.top { + margin-top: -10px +} + +.popover.right { + margin-left: 10px +} + +.popover.bottom { + margin-top: 10px +} + +.popover.left { + margin-left: -10px +} + +.popover-title { + padding: 8px 14px; + margin: 0; + font-size: 14px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-radius: 5px 5px 0 0 +} + +.popover-content { + padding: 9px 14px +} + +.popover>.arrow, +.popover>.arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid +} + +.popover>.arrow { + border-width: 11px +} + +.popover>.arrow:after { + content: ""; + border-width: 10px +} + +.popover.top>.arrow { + bottom: -11px; + left: 50%; + margin-left: -11px; + border-top-color: #999; + border-top-color: rgba(0, 0, 0, .25); + border-bottom-width: 0 +} + +.popover.top>.arrow:after { + bottom: 1px; + margin-left: -10px; + content: " "; + border-top-color: #fff; + border-bottom-width: 0 +} + +.popover.right>.arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-right-color: #999; + border-right-color: rgba(0, 0, 0, .25); + border-left-width: 0 +} + +.popover.right>.arrow:after { + bottom: -10px; + left: 1px; + content: " "; + border-right-color: #fff; + border-left-width: 0 +} + +.popover.bottom>.arrow { + top: -11px; + left: 50%; + margin-left: -11px; + border-top-width: 0; + border-bottom-color: #999; + border-bottom-color: rgba(0, 0, 0, .25) +} + +.popover.bottom>.arrow:after { + top: 1px; + margin-left: -10px; + content: " "; + border-top-width: 0; + border-bottom-color: #fff +} + +.popover.left>.arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-right-width: 0; + border-left-color: #999; + border-left-color: rgba(0, 0, 0, .25) +} + +.popover.left>.arrow:after { + right: 1px; + bottom: -10px; + content: " "; + border-right-width: 0; + border-left-color: #fff +} + + +@media screen and (min-width:768px) { + .carousel-control .glyphicon-chevron-left, + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-next, + .carousel-control .icon-prev { + width: 30px; + height: 30px; + margin-top: -15px; + font-size: 30px + } + .carousel-control .glyphicon-chevron-left, + .carousel-control .icon-prev { + margin-left: -15px + } + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-next { + margin-right: -15px + } + .carousel-caption { + right: 20%; + left: 20%; + padding-bottom: 30px + } + .carousel-indicators { + bottom: 20px + } +} + +.btn-group-vertical>.btn-group:after, +.btn-group-vertical>.btn-group:before, +.btn-toolbar:after, +.btn-toolbar:before, +.clearfix:after, +.clearfix:before, +.container-fluid:after, +.container-fluid:before, +.container:after, +.container:before, +.dl-horizontal dd:after, +.dl-horizontal dd:before, +.form-horizontal .form-group:after, +.form-horizontal .form-group:before, +.modal-footer:after, +.modal-footer:before, +.nav:after, +.nav:before, +.navbar-collapse:after, +.navbar-collapse:before, +.navbar-header:after, +.navbar-header:before, +.navbar:after, +.navbar:before, +.pager:after, +.pager:before, +.panel-body:after, +.panel-body:before, +.row:after, +.row:before { + display: table; + content: " " +} + +.btn-group-vertical>.btn-group:after, +.btn-toolbar:after, +.clearfix:after, +.container-fluid:after, +.container:after, +.dl-horizontal dd:after, +.form-horizontal .form-group:after, +.modal-footer:after, +.nav:after, +.navbar-collapse:after, +.navbar-header:after, +.navbar:after, +.pager:after, +.panel-body:after, +.row:after { + clear: both +} + +.center-block { + display: block; + margin-right: auto; + margin-left: auto +} + +.pull-right { + float: right!important +} + +.pull-left { + float: left!important +} + +.hide { + display: none!important +} + +.show { + display: block!important +} + +.invisible { + visibility: hidden +} + +.text-hide { + font: 0/0 a; + color: transparent; + background-color: transparent; + border: 0 +} + +.hidden { + display: none!important; + visibility: hidden!important +} + +.affix { + position: fixed +} + +@-ms-viewport { + width: device-width +} + +.visible-lg, +.visible-md, +.visible-sm, +.visible-xs { + display: none!important +} + +.visible-lg-block, +.visible-lg-inline, +.visible-lg-inline-block, +.visible-md-block, +.visible-md-inline, +.visible-md-inline-block, +.visible-sm-block, +.visible-sm-inline, +.visible-sm-inline-block, +.visible-xs-block, +.visible-xs-inline, +.visible-xs-inline-block { + display: none!important +} + +@media (max-width:767px) { + .visible-xs { + display: block!important + } + table.visible-xs { + display: table + } + tr.visible-xs { + display: table-row!important + } + td.visible-xs, + th.visible-xs { + display: table-cell!important + } +} + +@media (max-width:767px) { + .visible-xs-block { + display: block!important + } +} + +@media (max-width:767px) { + .visible-xs-inline { + display: inline!important + } +} + +@media (max-width:767px) { + .visible-xs-inline-block { + display: inline-block!important + } +} + +@media (min-width:768px) and (max-width:991px) { + .visible-sm { + display: block!important + } + table.visible-sm { + display: table + } + tr.visible-sm { + display: table-row!important + } + td.visible-sm, + th.visible-sm { + display: table-cell!important + } +} + +@media (min-width:768px) and (max-width:991px) { + .visible-sm-block { + display: block!important + } +} + +@media (min-width:768px) and (max-width:991px) { + .visible-sm-inline { + display: inline!important + } +} + +@media (min-width:768px) and (max-width:991px) { + .visible-sm-inline-block { + display: inline-block!important + } +} + +@media (min-width:992px) and (max-width:1199px) { + .visible-md { + display: block!important + } + table.visible-md { + display: table + } + tr.visible-md { + display: table-row!important + } + td.visible-md, + th.visible-md { + display: table-cell!important + } +} + +@media (min-width:992px) and (max-width:1199px) { + .visible-md-block { + display: block!important + } +} + +@media (min-width:992px) and (max-width:1199px) { + .visible-md-inline { + display: inline!important + } +} + +@media (min-width:992px) and (max-width:1199px) { + .visible-md-inline-block { + display: inline-block!important + } +} + +@media (min-width:1200px) { + .visible-lg { + display: block!important + } + table.visible-lg { + display: table + } + tr.visible-lg { + display: table-row!important + } + td.visible-lg, + th.visible-lg { + display: table-cell!important + } +} + +@media (min-width:1200px) { + .visible-lg-block { + display: block!important + } +} + +@media (min-width:1200px) { + .visible-lg-inline { + display: inline!important + } +} + +@media (min-width:1200px) { + .visible-lg-inline-block { + display: inline-block!important + } +} + +@media (max-width:767px) { + .hidden-xs { + display: none!important + } +} + +@media (min-width:768px) and (max-width:991px) { + .hidden-sm { + display: none!important + } +} + +@media (min-width:992px) and (max-width:1199px) { + .hidden-md { + display: none!important + } +} + +@media (min-width:1200px) { + .hidden-lg { + display: none!important + } +} + +.visible-print { + display: none!important +} + +@media print { + .visible-print { + display: block!important + } + table.visible-print { + display: table + } + tr.visible-print { + display: table-row!important + } + td.visible-print, + th.visible-print { + display: table-cell!important + } +} + +.visible-print-block { + display: none!important +} + +@media print { + .visible-print-block { + display: block!important + } +} + +.visible-print-inline { + display: none!important +} + +@media print { + .visible-print-inline { + display: inline!important + } +} + +.visible-print-inline-block { + display: none!important +} + +@media print { + .visible-print-inline-block { + display: inline-block!important + } +} + +@media print { + .hidden-print { + display: none!important + } +} diff --git a/docs/css/boxshadowproperties.css b/docs/css/boxshadowproperties.css new file mode 100755 index 0000000..0f2e1e6 --- /dev/null +++ b/docs/css/boxshadowproperties.css @@ -0,0 +1,24 @@ +/* box-shadow fonts return errors with prince, so extracting here to put in web output only */ + +#search-demo-container ul#results-container { + box-shadow: 2px 3px 2px #dedede; +} + + +hr.shaded { + box-shadow: inset 0 6px 6px -6px rgba(0,0,0,0.5); +} + +.videoThumbs img { + box-shadow: 2px 2px 1px #f0f0f0; +} + +.box { + box-shadow: 2px 2px 4px #dedede; +} + +@media (max-width: 1200px) { + .navbar-collapse { + box-shadow: inset 0 1px 0 rgba(255,255,255,0.1); + } +} diff --git a/docs/css/customstyles.css b/docs/css/customstyles.css new file mode 100755 index 0000000..e62679e --- /dev/null +++ b/docs/css/customstyles.css @@ -0,0 +1,1275 @@ +body { + font-size:15px; +} + +.bs-callout { + padding: 20px; + margin: 20px 0; + border: 1px solid #eee; + border-left-width: 5px; + border-radius: 3px; +} +.bs-callout h4 { + margin-top: 0; + margin-bottom: 5px; +} +.bs-callout p:last-child { + margin-bottom: 0; +} +.bs-callout code { + border-radius: 3px; +} +.bs-callout+.bs-callout { + margin-top: -5px; +} +.bs-callout-default { + border-left-color: #777; +} +.bs-callout-default h4 { + color: #777; +} +.bs-callout-primary { + border-left-color: #428bca; +} +.bs-callout-primary h4 { + color: #428bca; +} +.bs-callout-success { + border-left-color: #5cb85c; +} +.bs-callout-success h4 { + color: #5cb85c; +} +.bs-callout-danger { + border-left-color: #d9534f; +} +.bs-callout-danger h4 { + color: #d9534f; +} +.bs-callout-warning { + border-left-color: #f0ad4e; +} +.bs-callout-warning h4 { + color: #f0ad4e; +} +.bs-callout-info { + border-left-color: #5bc0de; +} +.bs-callout-info h4 { + color: #5bc0de; +} + + +.gi-2x{font-size: 2em;} +.gi-3x{font-size: 3em;} +.gi-4x{font-size: 4em;} +.gi-5x{font-size: 5em;} + + + + + +.breadcrumb > .active {color: #777 !important;} + +/* make room for the nav bar */ +h1[id], +h2[id], +h3[id], +h4[id], +h5[id], +h6[id], +dt[id]{ +padding-top: 60px; +margin-top: -40px +} + +.post-content img { + margin: 12px 0px 3px 0px; + width: auto; + height: auto; + max-width: 100%; + max-height: 100%; +} + +.post-content ol li, .post-content ul li { + margin: 10px 0px; +} + +.pageSummary { + font-size:13px; + display:block; + margin-bottom:15px; + padding-left:20px; +} + +.post-summary { + margin-bottom:12px; +} + +.bs-example{ + margin: 20px; +} + +.breadcrumb li { + color: gray; +} + +table { + background-color: transparent; +} +caption { + padding-top: 8px; + padding-bottom: 8px; + color: #777; + text-align: left; +} +th { + text-align: left; +} +table { + max-width: 90%; + margin-bottom: 20px; + border: 1px solid #dedede; +} + +table > thead > tr > th, +table > tbody > tr > th, +table > tfoot > tr > th, +table > thead > tr > td, +table > tbody > tr > td, +table > tfoot > tr > td { + padding: 8px; + line-height: 1.42857143; + vertical-align: top; + border-top: 1px solid #ddd; +} +table > thead > tr > th { + vertical-align: bottom; + border-bottom: 2px solid #ddd; + text-transform: none; + background-color: #777; + color: white; + text-align: left; +} +table > caption + thead > tr:first-child > th, +table > colgroup + thead > tr:first-child > th, +table > thead:first-child > tr:first-child > th, +table > caption + thead > tr:first-child > td, +table > colgroup + thead > tr:first-child > td, +table > thead:first-child > tr:first-child > td { + border-top: 0; +} + +table > tbody > tr:nth-of-type(odd) { + background-color: #f9f9f9; +} + +table col[class*="col-"] { + position: static; + display: table-column; + float: none; +} +table td[class*="col-"], +table th[class*="col-"] { + position: static; + display: table-cell; + float: none; +} + +table tr td { + hyphens: auto; +} + + +p.external a { + text-align:right; + font-size:12px; + color: #0088cc; + display:inline; +} + +#definition-box-container div a.active { + font-weight: bold; +} +p.post-meta {font-size: 80%; color: #777;} + +.entry-date{font-size:14px;font-size:0.875rem;line-height:1.71429;margin-bottom:0;text-transform:uppercase;} + +/* search area */ +#search-demo-container ul#results-container { + list-style: none; + font-size: 12px; + background-color: white; + position: absolute; + top: 40px; /* if you change anything about the nav, you'll prob. need to reset the top and left values here.*/ + left: 20px; + z-index: -1; + width:223px; + border-left: 1px solid #dedede; +} + + +ul#results-container a { + background-color: transparent; +} + +ul#results-container a:hover { + color: black; +} + + +#search-demo-container a:hover { + color: black; +} +#search-input { + padding: .5em; + margin-left:20px; + width:20em; + font-size: 0.8em; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + margin-top:10px; +} +/* end search */ + +.filter-options { + margin-bottom: 20px; +} +.filter-options button { + margin: 3px; +} + +div#toc ul li { + margin: 8px 0px 8px 22px; + font-size: 90%; + list-style: square; +} +div#toc ul { + background-color: whitesmoke; + padding: 5px; + border-radius: 5px; + max-width: 300px; + color: gray; +} + +div#toc ul li ul { + padding-left:8px; + +} + +div#toc ul li ul li::before { + content: "– "; +} + +div#toc >ul::before { + content: "Table of Contents"; + font-weight: 500; + color: #555; + text-align:center; + margin-left:auto; + margin-right:auto; + width:70px; + padding-top:20px; + padding-bottom:20px; + padding-left:10px; +} + +li.dropdownActive a { + font-weight: bold; +} + + +.post-content a.fa-rss { + color: orange; +} + + +.navbar-inverse .navbar-nav > li > a { + background-color: transparent; + margin-top:10px; +} + +.post-content .rssfeedLink { + color: #248EC2; +} + +footer { + font-size: smaller; +} + +/* FAQ page */ +#accordion .panel-heading { + font-size: 12px; +} + +a.accordion-toggle, a.accordion-collapsed { + font-size: 14px; + text-decoration: none; +} + +/* navgoco sidebar styles (customized) */ +.nav, .nav ul, .nav li { + list-style: none; +} + +.nav ul { + padding: 0; + /*margin: 0 0 0 18px;*/ + margin:0px; +} + +.nav { + /* padding: 4px;*/ + padding:0px; + margin: 0px; +} + +.nav > li { + margin: 1px 0; +} + +.nav > li li { + margin: 2px 0; +} + +.nav a { + color: #333; + display: block; + outline: none; + /*-webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px;*/ + text-decoration: none; +} + +.nav li > a > span { + float: right; + font-size: 19px; + font-weight: bolder; +} + + +.nav li > a > span:after { + content: '\25be'; +} +.nav li.active > a > span:after { + content: '\25b4'; +} + +.nav a:hover, .nav li.active > a { + background-color: #8D8D8D; + color: #f5f5f5; +} + +.nav > li.active > a { +background-color: #347DBE; +} + +.nav li a { + font-size: 12px; + line-height: 18px; + padding: 2px 10px; + background-color: #f1f1f1; +} + +.nav > li > a { + font-size: 14px; + line-height: 20px; + padding: 4px 10px; +} + +ul#mysidebar { + border-radius:0px; +} + +.nav ul li ul li a { + padding-left:40px; +} + +.nav li.thirdlevel > a { + color: #248EC2; + font-weight:bold; + padding-left:20px; + background-color: whitesmoke !important; +} + + +.nav ul li a { + background-color: #FAFAFA; +} + +.nav li a { + padding-right:10px; +} + +.nav li a:hover { + background-color: #8D8D8D; +} + +.nav ul li a { + border-top:1px solid whitesmoke; + padding-left:10px; +} +/* end sidebar */ + +.navbar-inverse .navbar-nav > .active > a, .navbar-inverse .navbar-nav > .active > a:hover, .navbar-inverse .navbar-nav > .active > a:focus { + border-radius:5px; +} + +.navbar-inverse .navbar-nav>.open>a, .navbar-inverse .navbar-nav>.open>a:focus, .navbar-inverse .navbar-nav>.open>a:hover { + border-radius: 5px; +} + +span.projectTitle { + font-family: "Intel Clear", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-weight: bold; +} + +.footer { + text-align: right; +} + +.footerMeta { + background-color: whitesmoke; + padding: 10px; + max-width: 250px; + border-radius: 5px; + margin-top: 50px; + font-style:italic; + font-size:12px; +} + +img.screenshotSmall { + max-width: 300px; +} + + +dl dt p { + margin-left:20px; +} + + +dl dd { + margin-top:10px; + margin-bottom:10px; +} + +dl.dl-horizontal dd { + padding-top: 20px; +} + +figcaption { + + padding-bottom:12px; + padding-top:6px; + max-width: 90%; + margin-bottom:20px; + font-style: italic; + color: gray; + +} + +.testing { + color: orange; +} + +.preference { + color: red; +} + + +table.dataTable thead { + background-color: #444; +} +table td { + hyphens: auto; +} + +section table tr.success { + background-color: #dff0d8 !important; +} + +table tr.info { + background-color: #d9edf7 !important; +} + +section table tr.warning, table tr.testing, table tr.testing > td.sorting_1 { + background-color: #fcf8e3 !important; +} +section table tr.danger, table tr.preference, table tr.preference > td.sorting_1 { + background-color: #f2dede !important; +} + +.orange { + color: orange; +} + +table.profile thead tr th { + background-color: #248ec2; +} + +table.request thead tr th { + background-color: #ED1951; +} + +.audienceLabel { + margin: 10px; + float: right; + border:1px solid #dedede; + padding:7px; +} + +.prefaceAudienceLabel { + color: gray; + text-align: center; + margin:5px; +} +span.myLabel { + padding-left:10px; + padding-right:10px; +} + +button.cursorNorm { + cursor: default; +} + +a.dropdown-toggle, .navbar-inverse .navbar-nav > li > a { + margin-left: 10px; +} + +hr.faded { + border: 0; + height: 1px; + background-image: -webkit-linear-gradient(left, rgba(0,0,0,0), rgba(0,0,0,0.75), rgba(0,0,0,0)); + background-image: -moz-linear-gradient(left, rgba(0,0,0,0), rgba(0,0,0,0.75), rgba(0,0,0,0)); + background-image: -ms-linear-gradient(left, rgba(0,0,0,0), rgba(0,0,0,0.75), rgba(0,0,0,0)); + background-image: -o-linear-gradient(left, rgba(0,0,0,0), rgba(0,0,0,0.75), rgba(0,0,0,0)); +} + +hr.shaded { + height: 12px; + border: 0; + margin-top: 70px; + background: white; + width: 100%; + margin-bottom: 10px; +} + +.fa-6x{font-size:900%;} +.fa-7x{font-size:1100%;} +.fa-8x{font-size:1300%;} +.fa-9x{font-size:1500%;} +.fa-10x{font-size:1700%;} + +i.border { + padding: 10px 20px; + background-color: whitesmoke; +} + +a[data-toggle] { + color: #248EC2; +} + +.summary { + font-size:120%; + color: #808080; + margin:20px 0px 20px 0px; + border-left: 5px solid #ED1951; + padding-left: 10px; + +} + +.summary:before { + content: "Summary: "; + font-weight: bold; +} + + +a.fa.fa-envelope-o.mailto { + font-weight: 600; +} + +.alert, .callout { + overflow: hidden; +} + +.nav-tabs > li.active > a, .nav-tabs > li.active > a:hover, .nav-tabs > li.active > a:focus { + background-color: #248ec2; + color: white; +} + +ol li ol li {list-style-type: lower-alpha;} +ol li ul li {list-style-type: disc;} + +li img {clear:both; } + +div#toc ul li ul li { + list-style-type: none; + margin: 5px 0px 0px 0px; +} + +.tab-content { + padding: 15px; + background-color: #FAFAFA; +} + +span.tagTitle {font-weight: 500;} + +li.activeSeries { + font-weight: bold; +} + +.seriesContext .dropdown-menu li.active { + font-weight: bold; + margin-left: 43px; + font-size:18px; +} + +.alert-warning { + color: #444; +} + +div.alert code, h2 code { + background-color: transparent !important; +} +/* without this, the links in these notes aren't visible.*/ +.alert a { + text-decoration: underline; +} + +div.tags {padding: 10px 5px;} + +.tabLabel { + font-weight: normal; +} + +hr { + background: #999; + margin: 30px 0px; + width: 90%; + margin-left: auto; + margin-right: auto; +} + +button.cursorNorm { + cursor: pointer; +} + +h2 { + font-size:24px; + line-height:29px; +} +span.otherProgrammingLanguages { + font-style: normal; +} + +a[data-toggle="tooltip"] { + color: #649345; + font-style: italic; + cursor: default; +} + +.seriesNext, .seriesContext { + margin-top: 15px; + margin-bottom: 15px; +} + +.seriescontext ol li { + list-style-type: upper-roman; +} + +ol.series li { + list-style-type: decimal; + margin-left: 40px; + padding-left: 0px; +} + +.siteTagline { + font-size: 200%; + font-weight: bold; + color: silver; + font-family: monospace; + text-align: center; + line-height: 10px; + margin: 20px 0px; + display: block; +} + +.versionTagline { + text-align: center; + margin-bottom: 20px; + font-family: courier; + color: silver; + color: #444; + display:block; +} + +/* not sure if using this ...*/ +.navbar-inverse .navbar-collapse, .navbar-inverse .navbar-form { + border-color: #248ec2 !important; +} + +#mysidebar .nav ul { + background-color: #FAFAFA; +} +.nav ul.series li { + list-style: decimal; + font-size:12px; +} + +.nav ul.series li a:hover { + background-color: gray; +} +.nav ul.series { + padding-left: 30px; +} + +.nav ul.series { + background-color: #FAFAFA; +} + +/* +a.dropdown-toggle.otherProgLangs { + color: #f7e68f !important; +} +*/ + +span.muted {color: #666;} + +table code {background-color: transparent;} + +.highlight .err { + color: #a61717; + background-color: transparent !important; +} + +table p { + margin-top: 12px; + margin-bottom: 12px; +} + +pre, table code { + white-space: pre-wrap; /* css-3 */ + white-space: -moz-pre-wrap; /* Mozilla, since 1999 */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + word-wrap: break-word; /* Internet Explorer 5.5+ */ +} + +pre { + margin: 25px 0px; +} + +#json-box-container pre { + margin: 0px; +} + +.video-js { + margin: 30px 0px; +} + +video { + display: block; + margin: 30px 0px; + border: 1px solid #c0c0c0; +} + + +p.required, p.dataType {display: block; color: #c0c0c0; font-size: 80%; margin-left:4px;} + +dd {margin-left:20px;} + +.post-content img.inline { + margin:0px; + margin-bottom:6px; +} +.panel-heading { + font-weight: bold; +} + +.note code, .alert code, .warning code, div#toc code, h2 code, h3 code, h4 code { + color: inherit; + padding: 0px; +} + +.alert { + margin-bottom:10px; + margin-top:10px; +} + +a.accordion-toggle { + font-style: normal; +} + +span.red { + color: red; + font-family: Monaco, Menlo, Consolas, "Courier New", monospace; +} + +h3.codeExplanation { + font-size:18px; + font-style:normal; + color: black; + line-height: 24px; +} + +span.soft { + color: #c0c0c0; +} + +.githubEditButton { + margin-bottom:7px; +} + +.endpoint { + padding: 15px; + background-color: #f0f0f0; + font-family: courier; + font-size: 110%; + margin: 20px 0px; + color: #444; +} + +.parameter { + font-family: courier; + color: red !important; +} + +.formBoundary { + border: 1px solid gray; + padding: 15px; + margin: 15px 0px; + background-color: whitesmoke; +} + +@media (max-width: 767px) { + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { + color: #444; + } +} + +@media (max-width: 990px) { + #mysidebar { + position: relative; + } +} + +@media (min-width: 1000px) { + + ul#mysidebar { + width: 225px; + } +} + +@media (max-width: 900px) { + + ul#mysidebar { + max-width: 100%; + } +} + +.col-md-9 img { + max-width: 100%; + max-height: 100%; +} + + +.post-content img { + margin: 12px 0px 3px 0px; + width: auto; + height: auto; + max-width: 100%; + max-height: 100%; +} +.col-md-9 img { + max-width: 100%; + max-height: 100%; +} + + +.post-content img { + margin: 12px 0px 3px 0px; + width: auto; + height: auto; + max-width: 100%; + max-height: 100%; +} + +.videoThumbs img { + float: left; + margin:15px 15px 15px 0px; + border: 1px solid #dedede; +} + + +@media only screen and (min-width: 900px), only screen and (min-device-width: 900px) { + .col-md-9 img { + max-width: 700px; + max-height: 700px; + } +} + +*:hover > .anchorjs-link { + transition: color .25s linear; + text-decoration: none; +} + +.kbCaption { + color: white; + background-color: #444; + padding:10px; +} + +/* this part adds an icon after external links, using FontAwesome*/ +a[href^="http://"]:after, a[href^="https://"]:after { + content: "\f08e"; + font-family: FontAwesome; + font-weight: normal; + font-style: normal; + display: inline-block; + text-decoration: none; + padding-left: 3px; +} + +/* Strip the outbound icon when this class is present */ +a[href].noCrossRef::after, +a.no_icon:after + { + content:"" !important; + padding-left: 0; +} + +.btn-default { + margin-bottom: 10px; +} + +/* algolia search */ + +.search { + text-align: left; +} +.search input { + font-size: 20px; + width: 300px; +} +.results { + margin: auto; + text-align: left; +} +.results ul { + list-style-type: none; + padding: 0; +} + +/* algolia */ + +div.results { + position: absolute; + background-color: white; + width: 100%; +} + +.post-meta { + font-size: 14px; + color: #828282; +} + +.post-link { + font-size: 22px; +} + +.post-list p { + margin: 10px 0px; +} + +time { + margin-right: 10px; +} + +p.post-meta time { + margin-right: 0px; +} + +span.label.label-default { + background-color: gray; +} + +span.label.label-primary { + background-color: #f0ad4e; +} +.col-lg-12 .nav li a {background-color: white} + + +.nav li.active > a.subfoldersTitle { + background-color: whitesmoke; + font-weight: bold; + color: black; + } + +a code { + color: #248EC2; +} + +code + a > code { + margin-left: -7px; +} + +table th code { + color: white; +} + +ol li ul li ol li { + list-style: decimal; +} + +ol li ul li ol li ul li{ + list-style: disc; +} + +.post-content table th { + vertical-align: top; +} + +table thead th code.highlighter-rouge { + background-color: transparent; +} + + +.box { + padding: 10px; + border: 1px solid #888; + width: 100px; + height: 80px; + background-color: #f5f5f5; + font-family: Arial; + font-size: 12px; + hyphens: auto; + float: left; + font-size: 12px; +} + +.box:hover { + background-color: #f0f0f0; +} + +#userMap { + overflow-x: auto; + overflow-y: auto; + padding: 20px; + min-width: 770px; +} + +#userMap .active { + background-color: #d6f5d6; + border:1px solid #555; + font-weight: bold; +} + +h2.userMapTitle { + font-family: Arial; +} + +#userMap a:hover { + text-decoration: none; + } + +div.arrow { + max-width: 50px; + margin-left: 15px; + margin-right: 15px; + font-size: 20px; +} + +div.content { + max-width: 110px +} + +#userMap div.arrow, #userMap div.content { + float: left; +} + +.clearfix { + clear: both; +} + + +#userMap div.arrow { + position: relative; + top: 30px; +} + +.box1 { + margin-left:0px; +} + +button.btn.btn-default.btn-lg.modalButton1 { + margin-left: -20px; +} + +div.box.box1 { + margin-left: -20px; +} + +#userMap .btn-lg { + width: 100px; + height: 80px; + +} + +#userMap .complexArrow { + font-size: 22px; + margin: 0px 10px; +} + + +#userMap .btn-lg .active { + background-color: #d6f5d6; +} + +#userMap .btn-lg { + white-space: pre-wrap; /* css-3 */ + white-space: -moz-pre-wrap; /* Mozilla, since 1999 */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + word-wrap: break-word; /* Internet Explorer 5.5+ */ + font-size: 14px; + } + +/* + * Let's target IE to respect aspect ratios and sizes for img tags containing SVG files + * + * [1] IE9 + * [2] IE10+ + */ +/* 1 */ +.ie9 img[src$=".svg"] { + width: 100%; +} +/* 2 */ +@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) { + img[src$=".svg"] { + width: 100%; + } +} + +h4.panel-title { + padding-top: 0px; + margin-top: 0px; +} + +/*set navbar breakpoint so that it converts to hamburger earlier */ + +@media (max-width: 1200px) { + .navbar-header { + float: none; + } + .navbar-left,.navbar-right { + float: none !important; + } + .navbar-toggle { + display: block; + } + .navbar-collapse { + border-top: 1px solid transparent; + } + .navbar-fixed-top { + top: 0; + border-width: 0 0 1px; + } + .navbar-collapse.collapse { + display: none!important; + } + .navbar-nav { + float: none!important; + margin-top: 7.5px; + } + .navbar-nav>li { + float: none; + } + .navbar-nav>li>a { + padding-top: 10px; + padding-bottom: 10px; + } + .collapse.in{ + display:block !important; + } +} + + +/* Below added by HM */ + +.singlenav li > a > span:after { + content: ''; +} + +.singlenav li.active > a > span:after { + content: ''; +} + + +.singlenav a:hover, .singlenav.current > a { + background-color: #8D8D8D; + color: #f5f5f5; +} + +#main { + margin-top: 70px; + margin-bottom: 70px; +} + +table { + width: 100%; +} + +code.highlighter-rouge { + color: black; + font-weight: bold; +} + +body a { + color: #0071C5; +} + +body { + font-family: "Intel Clear", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 15px; + line-height: 1.5; +} + +h4 { + font-weight: bold; +} + +/* Regular */ +@font-face { + font-family: 'Intel Clear'; + src: url("../fonts/IntelClear-Regular-webfont.eot"); + src: url("../fonts/IntelClear-Regular-webfont.eot?#iefix") format("embedded-opentype"), url("../fonts/IntelClear-Regular-webfont.woff") format("woff"), url("../fonts/IntelClear-Regular-webfont.ttf") format("truetype"); + font-weight: normal; + font-weight: 400; + font-style: normal; } + +/* Light */ +@font-face { + font-family: 'Intel Clear'; + src: url("../fonts/IntelClear-Light-webfont.eot"); + src: url("../fonts/IntelClear-Light-webfont.eot?#iefix") format("embedded-opentype"), url("../fonts/IntelClear-Light-webfont.woff") format("woff"), url("../fonts/IntelClear-Light-webfont.ttf") format("truetype"); + font-weight: 200; + font-style: normal; } + +/* Bold */ +@font-face { + font-family: 'Intel Clear'; + src: url("../fonts/IntelClear-Bold-webfont.eot"); + src: url("../fonts/IntelClear-Bold-webfont.eot?#iefix") format("embedded-opentype"), url("../fonts/IntelClear-Bold-webfont.woff") format("woff"), url("../fonts/IntelClear-Bold-webfont.ttf") format("truetype"); + font-weight: bold; + font-weight: 700; + font-style: normal; } + +@font-face { + font-family: 'Intelicon'; + src: url("../fonts/Intelicon.eot"); + src: url("../fonts/Intelicon.eot?#iefix") format("embedded-opentype"), url("../fonts/Intelicon.woff") format("woff"), url("../fonts/Intelicon.ttf") format("truetype"), url("../fonts/Intelicon.svg?#Intelicon") format("svg"); + font-weight: normal; + font-style: normal; } \ No newline at end of file diff --git a/docs/css/font-awesome.min.css b/docs/css/font-awesome.min.css new file mode 100755 index 0000000..0e0645d --- /dev/null +++ b/docs/css/font-awesome.min.css @@ -0,0 +1,4 @@ +/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url('fonts/fontawesome-webfont.eot?v=4.7.0');src:url('fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),url('fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),url('fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'),url('fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),url('fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-vcard:before,.fa-address-card:before{content:"\f2bb"}.fa-vcard-o:before,.fa-address-card-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto} diff --git a/docs/css/modern-business.css b/docs/css/modern-business.css new file mode 100755 index 0000000..b0323c5 --- /dev/null +++ b/docs/css/modern-business.css @@ -0,0 +1,89 @@ +/*! + * Start Bootstrap - Modern Business HTML Template (http://startbootstrap.com) + * Code licensed under the Apache License v2.0. + * For details, see http://www.apache.org/licenses/LICENSE-2.0. + */ + +/* Global Styles */ + +html, +body { + height: 100%; +} + +.img-portfolio { + margin-bottom: 30px; +} + +.img-hover:hover { + opacity: 0.8; +} + +/* Home Page Carousel */ + +header.carousel { + height: 50%; +} + +header.carousel .item, +header.carousel .item.active, +header.carousel .carousel-inner { + height: 100%; +} + +header.carousel .fill { + width: 100%; + height: 100%; + background-position: center; + background-size: cover; +} + +/* 404 Page Styles */ + +.error-404 { + font-size: 100px; +} + +/* Pricing Page Styles */ + +.price { + display: block; + font-size: 50px; + line-height: 50px; +} + +.price sup { + top: -20px; + left: 2px; + font-size: 20px; +} + +.period { + display: block; + font-style: italic; +} + +/* Footer Styles */ + +footer { + margin: 50px 0; +} + +/* Responsive Styles */ + +@media(max-width:991px) { + .client-img, + .img-related { + margin-bottom: 30px; + } +} + +@media(max-width:767px) { + .img-portfolio { + margin-bottom: 15px; + } + + header.carousel .carousel { + height: 70%; + } +} diff --git a/docs/css/printstyles.css b/docs/css/printstyles.css new file mode 100755 index 0000000..64d0f63 --- /dev/null +++ b/docs/css/printstyles.css @@ -0,0 +1,159 @@ + +/*body.print .container {max-width: 650px;}*/ + +body { + font-size:14px; +} +.nav ul li a {border-top:0px; background-color:transparent; color: #808080; } +#navig a[href] {color: #595959 !important;} +table .table {max-width:650px;} + +#navig li.sectionHead {font-weight: bold; font-size: 18px; color: #595959 !important; } +#navig li {font-weight: normal; } + +#navig a[href]::after { content: leader(".") target-counter(attr(href), page); } + +a[href]::after { + content: " (page " target-counter(attr(href), page) ")" +} + +a[href^="http:"]::after, a[href^="https:"]::after { + content: ""; +} + +a[href] { + color: blue !important; +} +a[href*="mailto"]::after, a[data-toggle="tooltip"]::after, a[href].noCrossRef::after { + content: ""; +} + + +@page { + margin: 60pt 90pt 60pt 90pt; + font-family: sans-serif; + font-style:none; + color: gray; + +} + +.printTitle { + line-height:30pt; + font-size:27pt; + font-weight: bold; + letter-spacing: -.5px; + margin-bottom:25px; +} + +.printSubtitle { + font-size: 19pt; + color: #cccccc !important; + font-family: "Grotesque MT Light"; + line-height: 22pt; + letter-spacing: -.5px; + margin-bottom:20px; +} +.printTitleArea hr { + color: #999999 !important; + height: 2px; + width: 100%; +} + +.printTitleImage { + max-width:300px; + margin-bottom:200px; +} + + +.printTitleImage { + max-width: 250px; +} + +#navig { + /*page-break-before: always;*/ +} + +.copyrightBoilerplate { + page-break-before:always; + font-size:14px; +} + +.lastGeneratedDate { + font-style: italic; + font-size:14px; + color: gray; +} + +.alert a { + text-decoration: none !important; +} + + +body.title { page: title } + +@page title { + @top-left { + content: " "; + } + @top-right { + content: " " + } + @bottom-right { + content: " "; + } + @bottom-left { + content: " "; + } +} + +body.frontmatter { page: frontmatter } +body.frontmatter {counter-reset: page 1} + + +@page frontmatter { + @top-left { + content: prince-script(guideName); + } + @top-right { + content: prince-script(datestamp); + } + @bottom-right { + content: counter(page, lower-roman); + } + @bottom-left { + content: "youremail@domain.com"; } +} + +body.first_page {counter-reset: page 1} + +h1 { string-set: doctitle content() } + +@page { + @top-left { + content: string(doctitle); + font-size: 11px; + font-style: italic; + } + @top-right { + content: prince-script(datestamp); + font-size: 11px; + } + + @bottom-right { + content: "Page " counter(page); + font-size: 11px; + } + @bottom-left { + content: prince-script(guideName); + font-size: 11px; + } +} +.alert { + background-color: #fafafa !important; + border-color: #dedede !important; + color: black; +} + +pre { + background-color: #fafafa; +} diff --git a/docs/css/syntax.css b/docs/css/syntax.css new file mode 100755 index 0000000..1e651cf --- /dev/null +++ b/docs/css/syntax.css @@ -0,0 +1,60 @@ +.highlight { background: #ffffff; } +.highlight .c { color: #999988; font-style: italic } /* Comment */ +.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ +.highlight .k { font-weight: bold } /* Keyword */ +.highlight .o { font-weight: bold } /* Operator */ +.highlight .cm { color: #999988; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #999999; font-weight: bold } /* Comment.Preproc */ +.highlight .c1 { color: #999988; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */ +.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */ +.highlight .gd .x { color: #000000; background-color: #ffaaaa } /* Generic.Deleted.Specific */ +.highlight .ge { font-style: italic } /* Generic.Emph */ +.highlight .gr { color: #aa0000 } /* Generic.Error */ +.highlight .gh { color: #999999 } /* Generic.Heading */ +.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ +.highlight .gi .x { color: #000000; background-color: #aaffaa } /* Generic.Inserted.Specific */ +.highlight .go { color: #888888 } /* Generic.Output */ +.highlight .gp { color: #555555 } /* Generic.Prompt */ +.highlight .gs { font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #aaaaaa } /* Generic.Subheading */ +.highlight .gt { color: #aa0000 } /* Generic.Traceback */ +.highlight .kc { font-weight: bold } /* Keyword.Constant */ +.highlight .kd { font-weight: bold } /* Keyword.Declaration */ +.highlight .kp { font-weight: bold } /* Keyword.Pseudo */ +.highlight .kr { font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: #445588; font-weight: bold } /* Keyword.Type */ +.highlight .m { color: #009999 } /* Literal.Number */ +.highlight .s { color: #d14 } /* Literal.String */ +.highlight .na { color: #008080 } /* Name.Attribute */ +.highlight .nb { color: #0086B3 } /* Name.Builtin */ +.highlight .nc { color: #445588; font-weight: bold } /* Name.Class */ +.highlight .no { color: #008080 } /* Name.Constant */ +.highlight .ni { color: #800080 } /* Name.Entity */ +.highlight .ne { color: #990000; font-weight: bold } /* Name.Exception */ +.highlight .nf { color: #990000; font-weight: bold } /* Name.Function */ +.highlight .nn { color: #555555 } /* Name.Namespace */ +.highlight .nt { color: #000080 } /* Name.Tag */ +.highlight .nv { color: #008080 } /* Name.Variable */ +.highlight .ow { font-weight: bold } /* Operator.Word */ +.highlight .w { color: #bbbbbb } /* Text.Whitespace */ +.highlight .mf { color: #009999 } /* Literal.Number.Float */ +.highlight .mh { color: #009999 } /* Literal.Number.Hex */ +.highlight .mi { color: #009999 } /* Literal.Number.Integer */ +.highlight .mo { color: #009999 } /* Literal.Number.Oct */ +.highlight .sb { color: #d14 } /* Literal.String.Backtick */ +.highlight .sc { color: #d14 } /* Literal.String.Char */ +.highlight .sd { color: #d14 } /* Literal.String.Doc */ +.highlight .s2 { color: #d14 } /* Literal.String.Double */ +.highlight .se { color: #d14 } /* Literal.String.Escape */ +.highlight .sh { color: #d14 } /* Literal.String.Heredoc */ +.highlight .si { color: #d14 } /* Literal.String.Interpol */ +.highlight .sx { color: #d14 } /* Literal.String.Other */ +.highlight .sr { color: #009926 } /* Literal.String.Regex */ +.highlight .s1 { color: #d14 } /* Literal.String.Single */ +.highlight .ss { color: #990073 } /* Literal.String.Symbol */ +.highlight .bp { color: #999999 } /* Name.Builtin.Pseudo */ +.highlight .vc { color: #008080 } /* Name.Variable.Class */ +.highlight .vg { color: #008080 } /* Name.Variable.Global */ +.highlight .vi { color: #008080 } /* Name.Variable.Instance */ +.highlight .il { color: #009999 } /* Literal.Number.Integer.Long */ \ No newline at end of file diff --git a/docs/css/theme-blue.css b/docs/css/theme-blue.css new file mode 100755 index 0000000..6775da5 --- /dev/null +++ b/docs/css/theme-blue.css @@ -0,0 +1,117 @@ +.summary { + color: #808080; + border-left: 5px solid #ED1951; + font-size:16px; +} + +.nav-tabs > li.active > a, .nav-tabs > li.active > a:hover, .nav-tabs > li.active > a:focus { + background-color: #0071C5; + color: white; +} + +.nav > li.active > a { + background-color: #0071C5; +} + +.nav > li > a:hover { + background-color: #0071C5; +} + +div.navbar-collapse .dropdown-menu > li > a:hover { + background-color: #0071C5; +} + +.nav li.thirdlevel > a { + background-color: #FAFAFA !important; + color: #0071C5; + font-weight: bold; +} + +a[data-toggle="tooltip"] { + color: #649345; + font-style: italic; + cursor: default; +} + +.navbar-inverse { + background-color: #0071C5; + border-color: #015CAE; +} +.navbar-inverse .navbar-nav>li>a, .navbar-inverse .navbar-brand { + color: white; +} + +.navbar-inverse .navbar-nav>li>a:hover, a.fa.fa-home.fa-lg.navbar-brand:hover { + color: #f0f0f0; +} + +a.navbar-brand:hover { + color: #f0f0f0; +} + +.navbar-inverse .navbar-nav > .open > a, .navbar-inverse .navbar-nav > .open > a:hover, .navbar-inverse .navbar-nav > .open > a:focus { + color: #015CAE; +} + +.navbar-inverse .navbar-nav > .open > a, .navbar-inverse .navbar-nav > .open > a:hover, .navbar-inverse .navbar-nav > .open > a:focus { + background-color: #015CAE; + color: #ffffff; +} + +.navbar-inverse .navbar-collapse, .navbar-inverse .navbar-form { + border-color: #0071C5 !important; +} + +.btn-primary { + color: #ffffff; + background-color: #0071C5; + border-color: #0071C5; +} + +.navbar-inverse .navbar-nav > .active > a, .navbar-inverse .navbar-nav > .active > a:hover, .navbar-inverse .navbar-nav > .active > a:focus { + background-color: #0071C5; +} + +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { + background-color: #0071C5; + border-color: #0071C5; +} + +.printTitle { + color: #015CAE !important; +} + +body.print h1 {color: #015CAE !important; font-size:28px !important;} +body.print h2 {color: #595959 !important; font-size:20px !important;} +body.print h3 {color: #E50E51 !important; font-size:14px !important;} +body.print h4 {color: #679DCE !important; font-size:14px; font-style: italic !important;} + +.anchorjs-link:hover { + color: #216f9b; +} + +div.sidebarTitle { + color: #015CAE; +} + +li.sidebarTitle { + margin-top:20px; + font-weight:normal; + font-size:130%; + color: #0071C5; + margin-bottom:10px; + margin-left: 5px; + +} + +.navbar-inverse .navbar-toggle:focus, .navbar-inverse .navbar-toggle:hover { + background-color: #015CAE; +} + +.navbar-inverse .navbar-toggle { + border-color: #015CAE; +} diff --git a/docs/css/theme-green.css b/docs/css/theme-green.css new file mode 100755 index 0000000..4991586 --- /dev/null +++ b/docs/css/theme-green.css @@ -0,0 +1,110 @@ +.summary { + color: #808080; + border-left: 5px solid #E50E51; + font-size:16px; +} + + +h3 {color: #E50E51; } +h4 {color: #808080; } + +.nav-tabs > li.active > a, .nav-tabs > li.active > a:hover, .nav-tabs > li.active > a:focus { + background-color: #248ec2; + color: white; +} + +.nav > li.active > a { + background-color: #72ac4a; +} + +.nav > li > a:hover { + background-color: #72ac4a; +} + +div.navbar-collapse .dropdown-menu > li > a:hover { + background-color: #72ac4a; +} + +.navbar-inverse .navbar-nav>li>a, .navbar-inverse .navbar-brand { + color: white; +} + +.navbar-inverse .navbar-nav>li>a:hover, a.fa.fa-home.fa-lg.navbar-brand:hover { + color: #f0f0f0; +} + +.nav li.thirdlevel > a { + background-color: #FAFAFA !important; + color: #72ac4a; + font-weight: bold; +} + +a[data-toggle="tooltip"] { + color: #649345; + font-style: italic; + cursor: default; +} + +.navbar-inverse { + background-color: #72ac4a; + border-color: #5b893c; +} + +.navbar-inverse .navbar-nav > .open > a, .navbar-inverse .navbar-nav > .open > a:hover, .navbar-inverse .navbar-nav > .open > a:focus { + color: #5b893c; +} + +.navbar-inverse .navbar-nav > .open > a, .navbar-inverse .navbar-nav > .open > a:hover, .navbar-inverse .navbar-nav > .open > a:focus { + background-color: #5b893c; + color: #ffffff; +} + +/* not sure if using this ...*/ +.navbar-inverse .navbar-collapse, .navbar-inverse .navbar-form { + border-color: #72ac4a !important; +} + +.btn-primary { + color: #ffffff; + background-color: #5b893c; + border-color: #5b893c; +} + +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.open .dropdown-toggle.btn-primary { + background-color: #72ac4a; + border-color: #5b893c; +} + +.printTitle { + color: #5b893c !important; +} + +body.print h1 {color: #5b893c !important; font-size:28px;} +body.print h2 {color: #595959 !important; font-size:24px;} +body.print h3 {color: #E50E51 !important; font-size:14px;} +body.print h4 {color: #679DCE !important; font-size:14px; font-style: italic;} + +.anchorjs-link:hover { + color: #4f7233; +} + +div.sidebarTitle { + color: #E50E51; +} + +li.sidebarTitle { + margin-top:20px; + font-weight:normal; + font-size:130%; + color: #ED1951; + margin-bottom:10px; + margin-left: 5px; +} + +.navbar-inverse .navbar-toggle:focus, .navbar-inverse .navbar-toggle:hover { + background-color: #E50E51; +} diff --git a/docs/docker.html b/docs/docker.html index c5ece43..619ffb8 100644 --- a/docs/docker.html +++ b/docs/docker.html @@ -1,39 +1,502 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +Installation and Configuration with Docker | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Installation and Configuration with Docker + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + + +
  • + + Examples +
  • + + + + + + +
  • + + Release Notes +
  • + + + + + + +
  • + + Support +
  • + + + + + + + + + -
    +
    + + -

    Using the Intel® Movidius™ Neural Compute SDK with Docker

    + +
    +

    Installation and Configuration with Docker

    -

    NOTE: This feature is only available with Intel® Movidius™ Neural Compute SDK 2.x.

    +
    This feature is only available with Intel® Movidius™ Neural Compute SDK 2.x.

    Docker is an open-source platform for the creation of lightweight operating-system-level virtualizations called containers for building, distributing, and running applications. Docker images are packages that include everything needed to run the container and its applications, and Docker containers are runtime instances of these images. You can read more about basic Docker concepts here.

    @@ -41,7 +504,7 @@

    Using the Intel

    This document will tell you how to use the NCSDK with Docker. These instructions assume that you will be using a neural compute device that is connected to your host machine via USB.

    -

    Install Docker on an Ubuntu host

    +

    Install Docker on an Ubuntu host

    Go to https://docs.docker.com/install/linux/docker-ce/ubuntu/ and follow the instructions to install docker-ce on Ubuntu.

    @@ -65,7 +528,7 @@

    Other Operating Systems

    These instructions can be done in an Ubuntu virtual machine.

    -

    Create a Docker container for the NCSDK

    +

    Create a Docker container for the NCSDK

    We have provided a Dockerfile to build an Ubuntu-based Docker image that has the NCSDK installed.

    @@ -106,7 +569,7 @@

    4. Exit the container

    $ exit
     
    -

    Use your NCSDK container

    +

    Use your NCSDK container

    Starting the container

    The Docker run command creates a new container instance each time that is used. If you want to use your existing container, use the start command. @@ -174,15 +637,23 @@

    Other useful Docker commands

    docker commit CONTAINER_ID [REPOSITORY_NAME[:TAG]]
     
    - - +
    + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/docker_proxy.html b/docs/docker_proxy.html index e7ebbce..3816758 100644 --- a/docs/docker_proxy.html +++ b/docs/docker_proxy.html @@ -1,45 +1,508 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +Configuring Docker For Use With a Proxy | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Configuring Docker For Use With a Proxy + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + API + +
  • + + + + + + +
  • + + Examples +
  • + + + + + + +
  • + + Release Notes +
  • + + + + + + +
  • + + Support +
  • + + + + + + -
    + + -

    Configuring Docker For Use With a Proxy

    +
    + + -

    NOTE: Docker support is only available with Intel® Movidius™ Neural Compute SDK 2.x.

    + +
    +

    Configuring Docker For Use With a Proxy

    -

    See Using the Intel® Movidius™ Neural Compute SDK with Docker for general information about using Docker with the NCSDK.

    +
    Docker support is only available with Intel® Movidius™ Neural Compute SDK 2.x.

    If you are using Docker behind a proxy, you will need to configure your Docker client and services to use proxy settings in order to complete the NCSDK installation or build examples.

    -

    Official Docker proxy documentation:

    + + +

    Official Docker Proxy Documentation

    • Configure Docker to use a proxy server
    • Control Docker with systemd - HTTP/HTTPS proxy
    • @@ -50,7 +513,7 @@

      Proxy Setup on Ubuntu 16.04

      The following steps show one example of a possible configuration for Docker proxy settings on Ubuntu 16.04 with docker-ce 18.03.1~ce-0-ubuntu. Refer to the official Docker documentation to configure your specific environment.

      -
      1. Create a docker config file at ~/.docker/config.json
      +

      1. Create a docker config file at ~/.docker/config.json

      Enter the following into the config file (replace the example proxy info with your proxy info):

      {
      @@ -64,7 +527,7 @@ 
      1. Create a docker co }
      -
      2. Edit /etc/default/docker
      +

      2. Edit /etc/default/docker

      Change the line that says this:

      #export http_proxy="http://127.0.0.1:3128/"
      @@ -73,7 +536,7 @@ 
      2. Edit /etc/de
      http_proxy="http://proxy.example.com:80"
       
      -
      3. Edit /lib/systemd/system/docker.service
      +

      3. Edit /lib/systemd/system/docker.service

      Add this line to the Services section:

      EnvironmentFile=/etc/default/docker
      @@ -102,15 +565,23 @@ 

      6. Test

      $ sudo docker pull ubuntu:16.04
       
      - - +
      + +
      + +
      +
      -
      - - -
      - - - + + +
      +
      + +
      +
      + diff --git a/docs/examples.html b/docs/examples.html new file mode 100755 index 0000000..00e1ecb --- /dev/null +++ b/docs/examples.html @@ -0,0 +1,569 @@ + + + + + + + + +Examples | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Examples + + + + + + + + + + + + + + + + + + + + + +
      +
      + +
      + + + +
      + + + + + + + +
      + + + + +
      +

      Examples

      + +

      Base Examples

      + +

      There are several example applications and networks included with the NCSDK:

      + +
        +
      • Apps +
          +
        • hello_ncs_py
        • +
        • hello_ncs_cpp
        • +
        • multistick_cpp
        • +
        +
      • +
      • Caffe +
          +
        • GoogLeNet
        • +
        • AlexNet
        • +
        • SqueezeNet
        • +
        +
      • +
      • TensorFlow* +
          +
        • Inception v1
        • +
        • Inception v3
        • +
        +
      • +
      + +

      Usage

      + +

      Use the following command in your ncsdk directory to download necessary prerequisites and models and build all examples:

      + +
      make examples
      +
      + +

      You must have a neural compute device attached to your system to build the examples.

      + +

      Building Individual Examples

      +

      Each example comes with its own Makefile that will install only that specific example and any prerequisites that it requires. To build and run an example, run the following command within that example’s directory:

      + +
      make run
      +
      + +

      The Makefile for each example also has a ‘help’ target that will display all possible make targets:

      + +
      make help
      +
      + +

      Neural Compute App Zoo

      + +

      Many more examples, including user-submitted networks and applications, can be found at our Neural Compute App Zoo GitHub repository.

      + +
      + +
      + +
      + +
      + + + +
      +
      + +
      +
      + + diff --git a/docs/fonts/IntelClear-Bold-webfont.eot b/docs/fonts/IntelClear-Bold-webfont.eot new file mode 100755 index 0000000..9c58eb2 Binary files /dev/null and b/docs/fonts/IntelClear-Bold-webfont.eot differ diff --git a/docs/fonts/IntelClear-Bold-webfont.ttf b/docs/fonts/IntelClear-Bold-webfont.ttf new file mode 100755 index 0000000..7f18a45 Binary files /dev/null and b/docs/fonts/IntelClear-Bold-webfont.ttf differ diff --git a/docs/fonts/IntelClear-Bold-webfont.woff b/docs/fonts/IntelClear-Bold-webfont.woff new file mode 100755 index 0000000..6b283ca Binary files /dev/null and b/docs/fonts/IntelClear-Bold-webfont.woff differ diff --git a/docs/fonts/IntelClear-Light-webfont.eot b/docs/fonts/IntelClear-Light-webfont.eot new file mode 100755 index 0000000..f8a08e9 Binary files /dev/null and b/docs/fonts/IntelClear-Light-webfont.eot differ diff --git a/docs/fonts/IntelClear-Light-webfont.ttf b/docs/fonts/IntelClear-Light-webfont.ttf new file mode 100755 index 0000000..561e65d Binary files /dev/null and b/docs/fonts/IntelClear-Light-webfont.ttf differ diff --git a/docs/fonts/IntelClear-Light-webfont.woff b/docs/fonts/IntelClear-Light-webfont.woff new file mode 100755 index 0000000..62d15c8 Binary files /dev/null and b/docs/fonts/IntelClear-Light-webfont.woff differ diff --git a/docs/fonts/IntelClear-Regular-webfont.eot b/docs/fonts/IntelClear-Regular-webfont.eot new file mode 100755 index 0000000..f2860ce Binary files /dev/null and b/docs/fonts/IntelClear-Regular-webfont.eot differ diff --git a/docs/fonts/IntelClear-Regular-webfont.ttf b/docs/fonts/IntelClear-Regular-webfont.ttf new file mode 100755 index 0000000..75d5979 Binary files /dev/null and b/docs/fonts/IntelClear-Regular-webfont.ttf differ diff --git a/docs/fonts/IntelClear-Regular-webfont.woff b/docs/fonts/IntelClear-Regular-webfont.woff new file mode 100755 index 0000000..814028f Binary files /dev/null and b/docs/fonts/IntelClear-Regular-webfont.woff differ diff --git a/docs/fonts/Intelicon.eot b/docs/fonts/Intelicon.eot new file mode 100755 index 0000000..d3c6090 Binary files /dev/null and b/docs/fonts/Intelicon.eot differ diff --git a/docs/fonts/Intelicon.svg b/docs/fonts/Intelicon.svg new file mode 100755 index 0000000..2392289 --- /dev/null +++ b/docs/fonts/Intelicon.svg @@ -0,0 +1,593 @@ + + + +Generated by IcoMoon + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/fonts/Intelicon.ttf b/docs/fonts/Intelicon.ttf new file mode 100755 index 0000000..cc320a8 Binary files /dev/null and b/docs/fonts/Intelicon.ttf differ diff --git a/docs/fonts/Intelicon.woff b/docs/fonts/Intelicon.woff new file mode 100755 index 0000000..2135fd3 Binary files /dev/null and b/docs/fonts/Intelicon.woff differ diff --git a/docs/fonts/glyphicons-halflings-regular.eot b/docs/fonts/glyphicons-halflings-regular.eot new file mode 100755 index 0000000..b93a495 Binary files /dev/null and b/docs/fonts/glyphicons-halflings-regular.eot differ diff --git a/docs/fonts/glyphicons-halflings-regular.svg b/docs/fonts/glyphicons-halflings-regular.svg new file mode 100755 index 0000000..94fb549 --- /dev/null +++ b/docs/fonts/glyphicons-halflings-regular.svg @@ -0,0 +1,288 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/fonts/glyphicons-halflings-regular.ttf b/docs/fonts/glyphicons-halflings-regular.ttf new file mode 100755 index 0000000..1413fc6 Binary files /dev/null and b/docs/fonts/glyphicons-halflings-regular.ttf differ diff --git a/docs/fonts/glyphicons-halflings-regular.woff b/docs/fonts/glyphicons-halflings-regular.woff new file mode 100755 index 0000000..9e61285 Binary files /dev/null and b/docs/fonts/glyphicons-halflings-regular.woff differ diff --git a/docs/images/favicon.ico b/docs/images/favicon.ico new file mode 100755 index 0000000..9169874 Binary files /dev/null and b/docs/images/favicon.ico differ diff --git a/docs/index.html b/docs/index.html index dadd2ea..0cfe7ed 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,158 +1,568 @@ - - - + + + - - - - - - - - - - -
      -
      -

      Intel® Movidius™ Neural Compute SDK

      - -

      View the Project on GitHub

      - -
      + + + + +Introduction | Intel® Movidius™ Neural Compute SDK Documentation + -
      + + + + + + + + + -

      -

      Introduction

      -

      The Intel® Movidius™ Neural Compute SDK (Intel® Movidius™ NCSDK) enables rapid prototyping and deployment of deep neural networks (DNNs) on compatible neural compute devices like the Intel® Movidius™ Neural Compute Stick. The NCSDK includes a set of software tools to compile, profile, and validate (check) DNNs as well as the Neural Compute API (NCAPI) for application development in C/C++ or Python.

      + -

      The NCSDK has two general usages:

      -
        -
      • Profiling, tuning, and compiling a DNN model on a development computer (host system) with the tools provided in the NCSDK.
      • -
      • Prototyping a user application on a development computer (host system), which accesses the neural compute device hardware to accelerate DNN inferences via the NCAPI.
      • -
      + + -

      The following diagram shows the typical workflow for development with the NCSDK:

      -

      + + + + + + -

      Note that network training phase does not utilize the NCSDK.

      + -

      -

      Frameworks

      + + + + +Introduction + + + + + + + + + -

      The NCSDK currently supports two deep learning frameworks:

      -
        -
      1. Caffe from Berkeley Vision Labs
      2. -
      3. TensorFlow™ from Google
      4. -
      + + + + -

      -

      NCAPI

      + + + + + + +
      +
      + +
      + + + +
      + + + - + + + + + + +
    • + Frameworks + +
    • + + + + + +
    • + Toolkit + +
    • + + + + + +
    • + API + +
    • + + + + + + +
    • + + Examples +
    • + + + + + + +
    • + + Release Notes +
    • + + + + + + +
    • + + Support +
    • + + + + +
    -

    -

    Installation

    + + + +
    + + + + +
    +

    Introduction

    + +

    The Intel® Movidius™ Neural Compute SDK (Intel® Movidius™ NCSDK) enables rapid prototyping and deployment of deep neural networks (DNNs) on compatible neural compute devices like the Intel® Movidius™ Neural Compute Stick. +The NCSDK includes a set of software tools to compile, profile, and check (validate) DNNs as well as the Intel® Movidius™ Neural Compute API (Intel® Movidius™ NCAPI) for application development in C/C++ or Python.

    -

    View the NCSDK installation instructions or choose an alternate installation method:

    +

    The NCSDK has two general usages:

    -

    -

    Base Examples

    +

    The following diagram shows the typical workflow for development with the NCSDK:

    + +

    + +

    Note that network training phase does not utilize the NCSDK.

    -

    There are several example applications and networks included with the NCSDK:

    +

    NCSDK2

    +

    NCSDK 2.x introduces several new features:

      -
    • Caffe -
        -
      • GoogLeNet
      • -
      • AlexNet
      • -
      • SqueezeNet
      • -
      -
    • -
    • TensorFlow™ -
        -
      • Inception v1
      • -
      • Inception v3
      • -
      -
    • -
    • Apps +
    • NCAPI v2 - a more flexible API that supports multiple graphs on the same device, queued input and output, and 32FP data types. Note: NCAPI v2 is not backward compatible with NCAPI v1.
    • +
    • New installation options:
    -

    Each example contains a Makefile. Running make help in the example’s base directory will give possible make targets. Running make examples in the base ncsdk directory will build all examples.

    - -

    -

    Neural Compute App Zoo

    -

    Many more examples, including user-submitted networks and applications, can be found at our Neural Compute App Zoo GitHub repository.

    +

    Documentation Overview

    -

    -

    Release Notes

    +

    Installation

    +

    Instructions for basic installation of the NCSDK and NCAPI as well as instructions for installation with virtualenv or in a Docker container or virtual machine.

    -

    See the latest Release Notes.

    +

    Frameworks

    +

    Instructions for compiling Caffe or TensorFlow* networks for use with the NCSDK.

    -

    +

    Toolkit

    +

    Documentation for the tools included with the NCSDK - mvNCCheck, mvNCCompile, and mvNCProfile.

    -

    Intel® Movidius™ User Forum

    +

    API

    +

    Documentation for the NCAPI.

    -

    There is an active user forum for users of the NCSDK to discuss ideas and seek troubleshooting help at https://ncsforum.movidius.com.

    +

    Examples

    +

    An overview of examples included with the NCSDK. Additional examples can be found on our Neural Compute App Zoo GitHub repository.

    +

    Release Notes

    +

    The latest NCSDK release notes.

    +

    Support

    +

    Troubleshooting and support information.

    - +
    + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/install.html b/docs/install.html index 03ec2b3..09f777e 100644 --- a/docs/install.html +++ b/docs/install.html @@ -1,39 +1,502 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +Basic Installation and Configuration | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Basic Installation and Configuration + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Frameworks + +
  • + + + + + +
  • + Toolkit + +
  • + + + + + +
  • + API + +
  • + + + + + + +
  • + + Examples +
  • + + + + + + +
  • + + Release Notes +
  • + + + + + + +
  • + + Support +
  • + + + + + + + + + -
    +
    + + -

    Intel® Movidius™ Neural Compute SDK Installation and Configuration

    + +
    +

    Basic Installation and Configuration

    -

    This guide will tell you how to install the Intel® Movidius™ Neural Compute SDK (Intel® Movidius™ NCSDK) and build the included examples.

    +

    This page provides guidance for installing the Intel® Movidius™ Neural Compute SDK (Intel® Movidius™ NCSDK).

    Prerequisites

    @@ -61,12 +524,6 @@

    Prerequisites

    -

    Upgrading from NCSDK 1.x to NCSDK 2.x

    - -

    If you currently have NCSDK 1.x installed and you are installing NCSDK 2.x, the Neural Compute API (NCAPI) will be upgraded from v1 to v2. NCAPI v2 is not backwards-compatible with NCAPI v1 (i.e. programs written with NCAPI v1 will not compile or run with NCAPI v2). However, all of your NCAPI v1 files will be moved to /opt/movidius/ncsdk1.

    - -

    For more information about NCAPI changes, see the Neural Compute API overview.

    -

    Installation

    To perform the typical installation of the NCSDK, use the following command on your host machine:

    @@ -76,11 +533,12 @@

    Installation

    The -b ncsdk2 option checks out the latest version of NCSDK 2 from the ncsdk2 branch. If you omit this option you will install the NCSDK version on the master branch, which is currently NCSDK 1.x.

    -

    Caffe Users: If you are installing on a host machine that already has Caffe installed and its directory is already in the PYTHONPATH environment variable, you must remove the existing Caffe directory from the PYTHONPATH environment variable prior to installing the NCSDK. You will need to manually modify the PYTHONPATH to match your development needs such that it points to the Caffe version installed with the NCSDK when using the NCSDK and it points to other Caffe versions when you wish to use those.

    - -

    Note: The installation will only set the PYTHONPATH environment variable for the current user. It will do so by modifying the .bashrc file for that user. To use the NCSDK as another user on the host machine you will need to manually set the PYTHONPATH for that user.

    +


    + + + -

    Raspberry Pi Installation Notes

    +

    Raspberry Pi Installation

    We recommend a 16GB SD card for a full NCSDK installation.

    @@ -94,44 +552,32 @@

    Raspberry Pi Installation Notes

    sudo /etc/init.d/dphys-swapfile restart
     
    -

    After you have installed the NCSDK (and optionally OpenCV), you should change the swapfile size back to 100 MB.

    - -

    Examples

    +

    Proceed with installation as shown above. After you have installed the NCSDK (and optionally OpenCV), you should change the swapfile size back to 100 MB.

    -

    Use the following command in your ncsdk directory to download necessary prerequisites and models and build all examples:

    - -
    make examples
    -
    - -

    You must have a neural compute device attached to your system to build the examples.

    - -

    Building Individual Examples

    -

    Each example comes with its own Makefile that will install only that specific example and any prerequisites that it requires. To build and run an example, run the following command within that example’s directory:

    - -
    make run
    -
    - -

    The Makefile for each example also has a ‘help’ target that will display all possible make targets:

    - -
    make help
    -
    - -

    Uninstallation

    +

    Uninstallation

    To uninstall the NCSDK, type the following command:

    make uninstall
     
     
    - - +
    + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/js/customscripts.js b/docs/js/customscripts.js new file mode 100755 index 0000000..42c7a54 --- /dev/null +++ b/docs/js/customscripts.js @@ -0,0 +1,54 @@ +$('#mysidebar').height($(".nav").height()); + + +$( document ).ready(function() { + + //this script says, if the height of the viewport is greater than 800px, then insert affix class, which makes the nav bar float in a fixed + // position as your scroll. if you have a lot of nav items, this height may not work for you. + var h = $(window).height(); + //console.log (h); + if (h > 600) { + $( "#mysidebar" ).attr("class", "nav affix"); + } + // activate tooltips. although this is a bootstrap js function, it must be activated this way in your theme. + $('[data-toggle="tooltip"]').tooltip({ + placement : 'top' + }); + + /** + * AnchorJS + */ + anchors.add('h2,h3,h4,h5'); + +}); + +// needed for nav tabs on pages. See Formatting > Nav tabs for more details. +// script from http://stackoverflow.com/questions/10523433/how-do-i-keep-the-current-tab-active-with-twitter-bootstrap-after-a-page-reload +$(function() { + var json, tabsState; + $('a[data-toggle="pill"], a[data-toggle="tab"]').on('shown.bs.tab', function(e) { + var href, json, parentId, tabsState; + + tabsState = localStorage.getItem("tabs-state"); + json = JSON.parse(tabsState || "{}"); + parentId = $(e.target).parents("ul.nav.nav-pills, ul.nav.nav-tabs").attr("id"); + href = $(e.target).attr('href'); + json[parentId] = href; + + return localStorage.setItem("tabs-state", JSON.stringify(json)); + }); + + tabsState = localStorage.getItem("tabs-state"); + json = JSON.parse(tabsState || "{}"); + + $.each(json, function(containerId, href) { + return $("#" + containerId + " a[href=" + href + "]").tab('show'); + }); + + $("ul.nav.nav-pills, ul.nav.nav-tabs").each(function() { + var $this = $(this); + if (!json[$this.attr("id")]) { + return $this.find("a[data-toggle=tab]:first, a[data-toggle=pill]:first").tab("show"); + } + }); +}); diff --git a/docs/js/jekyll-search.js b/docs/js/jekyll-search.js new file mode 100755 index 0000000..d7a3cde --- /dev/null +++ b/docs/js/jekyll-search.js @@ -0,0 +1,215 @@ +!function e(t, n, r) { + function s(o, u) { + if (!n[o]) { + if (!t[o]) { + var a = "function" == typeof require && require; + if (!u && a) return a(o, !0); + if (i) return i(o, !0); + throw new Error("Cannot find module '" + o + "'") + } + var f = n[o] = {exports: {}}; + t[o][0].call(f.exports, function (e) { + var n = t[o][1][e]; + return s(n ? n : e) + }, f, f.exports, e, t, n, r) + } + return n[o].exports + } + + for (var i = "function" == typeof require && require, o = 0; o < r.length; o++) s(r[o]); + return s +}({ + 1: [function (require, module) { + module.exports = function () { + function receivedResponse(xhr) { + return 200 == xhr.status && 4 == xhr.readyState + } + + function handleResponse(xhr, callback) { + xhr.onreadystatechange = function () { + if (receivedResponse(xhr)) try { + callback(null, JSON.parse(xhr.responseText)) + } catch (err) { + callback(err, null) + } + } + } + + var self = this; + self.load = function (location, callback) { + var xhr = window.XMLHttpRequest ? new XMLHttpRequest : new ActiveXObject("Microsoft.XMLHTTP"); + xhr.open("GET", location, !0), handleResponse(xhr, callback), xhr.send() + } + } + }, {}], 2: [function (require, module) { + function FuzzySearchStrategy() { + function createFuzzyRegExpFromString(string) { + return new RegExp(string.split("").join(".*?"), "gi") + } + + var self = this; + self.matches = function (string, crit) { + return "string" != typeof string ? !1 : (string = string.trim(), !!string.match(createFuzzyRegExpFromString(crit))) + } + } + + module.exports = new FuzzySearchStrategy + }, {}], 3: [function (require, module) { + function LiteralSearchStrategy() { + function doMatch(string, crit) { + return string.toLowerCase().indexOf(crit.toLowerCase()) >= 0 + } + + var self = this; + self.matches = function (string, crit) { + return "string" != typeof string ? !1 : (string = string.trim(), doMatch(string, crit)) + } + } + + module.exports = new LiteralSearchStrategy + }, {}], 4: [function (require, module) { + module.exports = function () { + function findMatches(store, crit, strategy) { + for (var data = store.get(), i = 0; i < data.length && matches.length < limit; i++) findMatchesInObject(data[i], crit, strategy); + return matches + } + + function findMatchesInObject(obj, crit, strategy) { + for (var key in obj) if (key != "display" && key != "url" && strategy.matches(obj[key], crit)) { + matches.push(obj); + break + } + } + + function getSearchStrategy() { + return fuzzy ? fuzzySearchStrategy : literalSearchStrategy + } + + var self = this, matches = [], fuzzy = !1, limit = 10, + fuzzySearchStrategy = require("./SearchStrategies/fuzzy"), + literalSearchStrategy = require("./SearchStrategies/literal"); + self.setFuzzy = function (_fuzzy) { + fuzzy = !!_fuzzy + }, self.setLimit = function (_limit) { + limit = parseInt(_limit, 10) || limit + }, self.search = function (data, crit) { + return crit ? (matches.length = 0, findMatches(data, crit, getSearchStrategy())) : [] + } + } + }, {"./SearchStrategies/fuzzy": 2, "./SearchStrategies/literal": 3}], 5: [function (require, module) { + module.exports = function (_store) { + function isObject(obj) { + return !!obj && "[object Object]" == Object.prototype.toString.call(obj) + } + + function isArray(obj) { + return !!obj && "[object Array]" == Object.prototype.toString.call(obj) + } + + function addObject(data) { + return store.push(data), data + } + + function addArray(data) { + for (var added = [], i = 0; i < data.length; i++) isObject(data[i]) && added.push(addObject(data[i])); + return added + } + + var self = this, store = []; + isArray(_store) && addArray(_store), self.clear = function () { + return store.length = 0, store + }, self.get = function () { + return store + }, self.put = function (data) { + return isObject(data) ? addObject(data) : isArray(data) ? addArray(data) : void 0 + } + } + }, {}], 6: [function (require, module) { + module.exports = function () { + var self = this, templatePattern = /\{(.*?)\}/g; + self.setTemplatePattern = function (newTemplatePattern) { + templatePattern = newTemplatePattern + }, self.render = function (t, data) { + return t.replace(templatePattern, function (match, prop) { + return data[prop] || match + }) + } + } + }, {}], 7: [function (require) { + !function (window) { + "use strict"; + + function SimpleJekyllSearch() { + function initWithJSON() { + store.put(opt.dataSource), registerInput() + } + + function initWithURL(url) { + jsonLoader.load(url, function (err, json) { + err ? throwError("failed to get JSON (" + url + ")") : (store.put(json), registerInput()) + }) + } + + function throwError(message) { + throw new Error("SimpleJekyllSearch --- " + message) + } + + function validateOptions(_opt) { + for (var i = 0; i < requiredOptions.length; i++) { + var req = requiredOptions[i]; + _opt[req] || throwError("You must specify a " + req) + } + } + + function assignOptions(_opt) { + for (var option in opt) opt[option] = _opt[option] || opt[option] + } + + function isJSON(json) { + try { + return json instanceof Object && JSON.parse(JSON.stringify(json)) + } catch (e) { + return !1 + } + } + + function emptyResultsContainer() { + opt.resultsContainer.innerHTML = "" + } + + function appendToResultsContainer(text) { + opt.resultsContainer.innerHTML += text + } + + function registerInput() { + opt.searchInput.addEventListener("keyup", function (e) { + return 0 == e.target.value.length ? void emptyResultsContainer() : void render(searcher.search(store, e.target.value)) + }) + } + + function render(results) { + if (emptyResultsContainer(), 0 == results.length) return appendToResultsContainer(opt.noResultsText); + for (var i = 0; i < results.length; i++) appendToResultsContainer(templater.render(opt.searchResultTemplate, results[i])) + } + + var self = this, requiredOptions = ["searchInput", "resultsContainer", "dataSource"], opt = { + searchInput: null, + resultsContainer: null, + dataSource: [], + searchResultTemplate: '
  • {title}
  • ', + noResultsText: "No results found", + limit: 10, + fuzzy: !1 + }; + self.init = function (_opt) { + validateOptions(_opt), assignOptions(_opt), isJSON(opt.dataSource) ? initWithJSON(opt.dataSource) : initWithURL(opt.dataSource) + } + } + + var Searcher = require("./Searcher"), Templater = require("./Templater"), Store = require("./Store"), + JSONLoader = require("./JSONLoader"), searcher = new Searcher, templater = new Templater, + store = new Store, jsonLoader = new JSONLoader; + window.SimpleJekyllSearch = new SimpleJekyllSearch + }(window, document) + }, {"./JSONLoader": 1, "./Searcher": 4, "./Store": 5, "./Templater": 6}] +}, {}, [7]); diff --git a/docs/js/jquery.ba-throttle-debounce.min.js b/docs/js/jquery.ba-throttle-debounce.min.js new file mode 100755 index 0000000..0720550 --- /dev/null +++ b/docs/js/jquery.ba-throttle-debounce.min.js @@ -0,0 +1,9 @@ +/* + * jQuery throttle / debounce - v1.1 - 3/7/2010 + * http://benalman.com/projects/jquery-throttle-debounce-plugin/ + * + * Copyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + */ +(function(b,c){var $=b.jQuery||b.Cowboy||(b.Cowboy={}),a;$.throttle=a=function(e,f,j,i){var h,d=0;if(typeof f!=="boolean"){i=j;j=f;f=c}function g(){var o=this,m=+new Date()-d,n=arguments;function l(){d=+new Date();j.apply(o,n)}function k(){h=c}if(i&&!h){l()}h&&clearTimeout(h);if(i===c&&m>e){l()}else{if(f!==true){h=setTimeout(i?k:l,i===c?e-m:e)}}}if($.guid){g.guid=j.guid=j.guid||$.guid++}return g};$.debounce=function(d,e,f){return f===c?a(d,e,false):a(d,f,e!==false)}})(this); \ No newline at end of file diff --git a/docs/js/jquery.navgoco.min.js b/docs/js/jquery.navgoco.min.js new file mode 100755 index 0000000..4ba4475 --- /dev/null +++ b/docs/js/jquery.navgoco.min.js @@ -0,0 +1,8 @@ +/* + * jQuery Navgoco Menus Plugin v0.2.1 (2014-04-11) + * https://github.com/tefra/navgoco + * + * Copyright (c) 2014 Chris T (@tefra) + * BSD - https://github.com/tefra/navgoco/blob/master/LICENSE-BSD + */ +!function(a){"use strict";var b=function(b,c,d){return this.el=b,this.$el=a(b),this.options=c,this.uuid=this.$el.attr("id")?this.$el.attr("id"):d,this.state={},this.init(),this};b.prototype={init:function(){var b=this;b._load(),b.$el.find("ul").each(function(c){var d=a(this);d.attr("data-index",c),b.options.save&&b.state.hasOwnProperty(c)?(d.parent().addClass(b.options.openClass),d.show()):d.parent().hasClass(b.options.openClass)?(d.show(),b.state[c]=1):d.hide()});var c=a("").prepend(b.options.caretHtml),d=b.$el.find("li > a");b._trigger(c,!1),b._trigger(d,!0),b.$el.find("li:has(ul) > a").prepend(c)},_trigger:function(b,c){var d=this;b.on("click",function(b){b.stopPropagation();var e=c?a(this).next():a(this).parent().next(),f=!1;if(c){var g=a(this).attr("href");f=void 0===g||""===g||"#"===g}if(e=e.length>0?e:!1,d.options.onClickBefore.call(this,b,e),!c||e&&f)b.preventDefault(),d._toggle(e,e.is(":hidden")),d._save();else if(d.options.accordion){var h=d.state=d._parents(a(this));d.$el.find("ul").filter(":visible").each(function(){var b=a(this),c=b.attr("data-index");h.hasOwnProperty(c)||d._toggle(b,!1)}),d._save()}d.options.onClickAfter.call(this,b,e)})},_toggle:function(b,c){var d=this,e=b.attr("data-index"),f=b.parent();if(d.options.onToggleBefore.call(this,b,c),c){if(f.addClass(d.options.openClass),b.slideDown(d.options.slide),d.state[e]=1,d.options.accordion){var g=d.state=d._parents(b);g[e]=d.state[e]=1,d.$el.find("ul").filter(":visible").each(function(){var b=a(this),c=b.attr("data-index");g.hasOwnProperty(c)||d._toggle(b,!1)})}}else f.removeClass(d.options.openClass),b.slideUp(d.options.slide),d.state[e]=0;d.options.onToggleAfter.call(this,b,c)},_parents:function(b,c){var d={},e=b.parent(),f=e.parents("ul");return f.each(function(){var b=a(this),e=b.attr("data-index");return e?void(d[e]=c?b:1):!1}),d},_save:function(){if(this.options.save){var b={};for(var d in this.state)1===this.state[d]&&(b[d]=1);c[this.uuid]=this.state=b,a.cookie(this.options.cookie.name,JSON.stringify(c),this.options.cookie)}},_load:function(){if(this.options.save){if(null===c){var b=a.cookie(this.options.cookie.name);c=b?JSON.parse(b):{}}this.state=c.hasOwnProperty(this.uuid)?c[this.uuid]:{}}},toggle:function(b){var c=this,d=arguments.length;if(1>=d)c.$el.find("ul").each(function(){var d=a(this);c._toggle(d,b)});else{var e,f={},g=Array.prototype.slice.call(arguments,1);d--;for(var h=0;d>h;h++){e=g[h];var i=c.$el.find('ul[data-index="'+e+'"]').first();if(i&&(f[e]=i,b)){var j=c._parents(i,!0);for(var k in j)f.hasOwnProperty(k)||(f[k]=j[k])}}for(e in f)c._toggle(f[e],b)}c._save()},destroy:function(){a.removeData(this.$el),this.$el.find("li:has(ul) > a").unbind("click"),this.$el.find("li:has(ul) > a > span").unbind("click")}},a.fn.navgoco=function(c){if("string"==typeof c&&"_"!==c.charAt(0)&&"init"!==c)var d=!0,e=Array.prototype.slice.call(arguments,1);else c=a.extend({},a.fn.navgoco.defaults,c||{}),a.cookie||(c.save=!1);return this.each(function(f){var g=a(this),h=g.data("navgoco");h||(h=new b(this,d?a.fn.navgoco.defaults:c,f),g.data("navgoco",h)),d&&h[c].apply(h,e)})};var c=null;a.fn.navgoco.defaults={caretHtml:"",accordion:!1,openClass:"open",save:!0,cookie:{name:"navgoco",expires:!1,path:"/"},slide:{duration:400,easing:"swing"},onClickBefore:a.noop,onClickAfter:a.noop,onToggleBefore:a.noop,onToggleAfter:a.noop}}(jQuery); \ No newline at end of file diff --git a/docs/js/jquery.shuffle.min.js b/docs/js/jquery.shuffle.min.js new file mode 100755 index 0000000..d103127 --- /dev/null +++ b/docs/js/jquery.shuffle.min.js @@ -0,0 +1,1588 @@ +/*! + * Shuffle.js by @Vestride + * Categorize, sort, and filter a responsive grid of items. + * Dependencies: jQuery 1.9+, Modernizr 2.6.2+ + * @license MIT license + * @version 3.0.0 + */ + +/* Modernizr 2.6.2 (Custom Build) | MIT & BSD + * Build: http://modernizr.com/download/#-csstransforms-csstransforms3d-csstransitions-cssclasses-prefixed-teststyles-testprop-testallprops-prefixes-domprefixes + */ +window.Modernizr=function(a,b,c){function z(a){j.cssText=a}function A(a,b){return z(m.join(a+";")+(b||""))}function B(a,b){return typeof a===b}function C(a,b){return!!~(""+a).indexOf(b)}function D(a,b){for(var d in a){var e=a[d];if(!C(e,"-")&&j[e]!==c)return b=="pfx"?e:!0}return!1}function E(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:B(f,"function")?f.bind(d||b):f}return!1}function F(a,b,c){var d=a.charAt(0).toUpperCase()+a.slice(1),e=(a+" "+o.join(d+" ")+d).split(" ");return B(b,"string")||B(b,"undefined")?D(e,b):(e=(a+" "+p.join(d+" ")+d).split(" "),E(e,b,c))}var d="2.6.2",e={},f=!0,g=b.documentElement,h="modernizr",i=b.createElement(h),j=i.style,k,l={}.toString,m=" -webkit- -moz- -o- -ms- ".split(" "),n="Webkit Moz O ms",o=n.split(" "),p=n.toLowerCase().split(" "),q={},r={},s={},t=[],u=t.slice,v,w=function(a,c,d,e){var f,i,j,k,l=b.createElement("div"),m=b.body,n=m||b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:h+(d+1),l.appendChild(j);return f=["­",'"].join(""),l.id=h,(m?l:n).innerHTML+=f,n.appendChild(l),m||(n.style.background="",n.style.overflow="hidden",k=g.style.overflow,g.style.overflow="hidden",g.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),g.style.overflow=k),!!i},x={}.hasOwnProperty,y;!B(x,"undefined")&&!B(x.call,"undefined")?y=function(a,b){return x.call(a,b)}:y=function(a,b){return b in a&&B(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=u.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(u.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(u.call(arguments)))};return e}),q.csstransforms=function(){return!!F("transform")},q.csstransforms3d=function(){var a=!!F("perspective");return a&&"webkitPerspective"in g.style&&w("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}",function(b,c){a=b.offsetLeft===9&&b.offsetHeight===3}),a},q.csstransitions=function(){return F("transition")};for(var G in q)y(q,G)&&(v=G.toLowerCase(),e[v]=q[G](),t.push((e[v]?"":"no-")+v));return e.addTest=function(a,b){if(typeof a=="object")for(var d in a)y(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof f!="undefined"&&f&&(g.className+=" "+(b?"":"no-")+a),e[a]=b}return e},z(""),i=k=null,e._version=d,e._prefixes=m,e._domPrefixes=p,e._cssomPrefixes=o,e.testProp=function(a){return D([a])},e.testAllProps=F,e.testStyles=w,e.prefixed=function(a,b,c){return b?F(a,b,c):F(a,"pfx")},g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+t.join(" "):""),e}(this,this.document); + +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['jquery', 'modernizr'], factory); + } else { + window.Shuffle = factory(window.jQuery, window.Modernizr); + } +})(function($, Modernizr, undefined) { + +'use strict'; + + +// Validate Modernizr exists. +// Shuffle requires `csstransitions`, `csstransforms`, `csstransforms3d`, +// and `prefixed` to exist on the Modernizr object. +if (typeof Modernizr !== 'object') { + throw new Error('Shuffle.js requires Modernizr.\n' + + 'http://vestride.github.io/Shuffle/#dependencies'); +} + + +/** + * Returns css prefixed properties like `-webkit-transition` or `box-sizing` + * from `transition` or `boxSizing`, respectively. + * @param {(string|boolean)} prop Property to be prefixed. + * @return {string} The prefixed css property. + */ +function dashify( prop ) { + if (!prop) { + return ''; + } + + // Replace upper case with dash-lowercase, + // then fix ms- prefixes because they're not capitalized. + return prop.replace(/([A-Z])/g, function( str, m1 ) { + return '-' + m1.toLowerCase(); + }).replace(/^ms-/,'-ms-'); +} + +// Constant, prefixed variables. +var TRANSITION = Modernizr.prefixed('transition'); +var TRANSITION_DELAY = Modernizr.prefixed('transitionDelay'); +var TRANSITION_DURATION = Modernizr.prefixed('transitionDuration'); + +// Note(glen): Stock Android 4.1.x browser will fail here because it wrongly +// says it supports non-prefixed transitions. +// https://github.com/Modernizr/Modernizr/issues/897 +var TRANSITIONEND = { + 'WebkitTransition' : 'webkitTransitionEnd', + 'transition' : 'transitionend' +}[ TRANSITION ]; + +var TRANSFORM = Modernizr.prefixed('transform'); +var CSS_TRANSFORM = dashify(TRANSFORM); + +// Constants +var CAN_TRANSITION_TRANSFORMS = Modernizr.csstransforms && Modernizr.csstransitions; +var HAS_TRANSFORMS_3D = Modernizr.csstransforms3d; +var SHUFFLE = 'shuffle'; +var COLUMN_THRESHOLD = 0.3; + +// Configurable. You can change these constants to fit your application. +// The default scale and concealed scale, however, have to be different values. +var ALL_ITEMS = 'all'; +var FILTER_ATTRIBUTE_KEY = 'groups'; +var DEFAULT_SCALE = 1; +var CONCEALED_SCALE = 0.001; + + +// Underscore's throttle function. +function throttle(func, wait, options) { + var context, args, result; + var timeout = null; + var previous = 0; + options = options || {}; + var later = function() { + previous = options.leading === false ? 0 : $.now(); + timeout = null; + result = func.apply(context, args); + context = args = null; + }; + return function() { + var now = $.now(); + if (!previous && options.leading === false) { + previous = now; + } + var remaining = wait - (now - previous); + context = this; + args = arguments; + if (remaining <= 0 || remaining > wait) { + clearTimeout(timeout); + timeout = null; + previous = now; + result = func.apply(context, args); + context = args = null; + } else if (!timeout && options.trailing !== false) { + timeout = setTimeout(later, remaining); + } + return result; + }; +} + +function each(obj, iterator, context) { + for (var i = 0, length = obj.length; i < length; i++) { + if (iterator.call(context, obj[i], i, obj) === {}) { + return; + } + } +} + +function defer(fn, context, wait) { + return setTimeout( $.proxy( fn, context ), wait ); +} + +function arrayMax( array ) { + return Math.max.apply( Math, array ); +} + +function arrayMin( array ) { + return Math.min.apply( Math, array ); +} + + +/** + * Always returns a numeric value, given a value. + * @param {*} value Possibly numeric value. + * @return {number} `value` or zero if `value` isn't numeric. + * @private + */ +function getNumber(value) { + return $.isNumeric(value) ? value : 0; +} + + +/** + * Represents a coordinate pair. + * @param {number} [x=0] X. + * @param {number} [y=0] Y. + */ +var Point = function(x, y) { + this.x = getNumber( x ); + this.y = getNumber( y ); +}; + + +/** + * Whether two points are equal. + * @param {Point} a Point A. + * @param {Point} b Point B. + * @return {boolean} + */ +Point.equals = function(a, b) { + return a.x === b.x && a.y === b.y; +}; + + +// Used for unique instance variables +var id = 0; +var $window = $( window ); + + +/** + * Categorize, sort, and filter a responsive grid of items. + * + * @param {Element} element An element which is the parent container for the grid items. + * @param {Object} [options=Shuffle.options] Options object. + * @constructor + */ +var Shuffle = function( element, options ) { + options = options || {}; + $.extend( this, Shuffle.options, options, Shuffle.settings ); + + this.$el = $(element); + this.element = element; + this.unique = 'shuffle_' + id++; + + this._fire( Shuffle.EventType.LOADING ); + this._init(); + + // Dispatch the done event asynchronously so that people can bind to it after + // Shuffle has been initialized. + defer(function() { + this.initialized = true; + this._fire( Shuffle.EventType.DONE ); + }, this, 16); +}; + + +/** + * Events the container element emits with the .shuffle namespace. + * For example, "done.shuffle". + * @enum {string} + */ +Shuffle.EventType = { + LOADING: 'loading', + DONE: 'done', + LAYOUT: 'layout', + REMOVED: 'removed' +}; + + +/** @enum {string} */ +Shuffle.ClassName = { + BASE: SHUFFLE, + SHUFFLE_ITEM: 'shuffle-item', + FILTERED: 'filtered', + CONCEALED: 'concealed' +}; + + +// Overrideable options +Shuffle.options = { + group: ALL_ITEMS, // Initial filter group. + speed: 250, // Transition/animation speed (milliseconds). + easing: 'ease-out', // CSS easing function to use. + itemSelector: '', // e.g. '.picture-item'. + sizer: null, // Sizer element. Use an element to determine the size of columns and gutters. + gutterWidth: 0, // A static number or function that tells the plugin how wide the gutters between columns are (in pixels). + columnWidth: 0, // A static number or function that returns a number which tells the plugin how wide the columns are (in pixels). + delimeter: null, // If your group is not json, and is comma delimeted, you could set delimeter to ','. + buffer: 0, // Useful for percentage based heights when they might not always be exactly the same (in pixels). + initialSort: null, // Shuffle can be initialized with a sort object. It is the same object given to the sort method. + throttle: throttle, // By default, shuffle will throttle resize events. This can be changed or removed. + throttleTime: 300, // How often shuffle can be called on resize (in milliseconds). + sequentialFadeDelay: 150, // Delay between each item that fades in when adding items. + supported: CAN_TRANSITION_TRANSFORMS // Whether to use transforms or absolute positioning. +}; + + +// Not overrideable +Shuffle.settings = { + useSizer: false, + itemCss : { // default CSS for each item + position: 'absolute', + top: 0, + left: 0, + visibility: 'visible' + }, + revealAppendedDelay: 300, + lastSort: {}, + lastFilter: ALL_ITEMS, + enabled: true, + destroyed: false, + initialized: false, + _animations: [], + styleQueue: [] +}; + + +// Expose for testing. +Shuffle.Point = Point; + + +/** + * Static methods. + */ + +/** + * If the browser has 3d transforms available, build a string with those, + * otherwise use 2d transforms. + * @param {Point} point X and Y positions. + * @param {number} scale Scale amount. + * @return {string} A normalized string which can be used with the transform style. + * @private + */ +Shuffle._getItemTransformString = function(point, scale) { + if ( HAS_TRANSFORMS_3D ) { + return 'translate3d(' + point.x + 'px, ' + point.y + 'px, 0) scale3d(' + scale + ', ' + scale + ', 1)'; + } else { + return 'translate(' + point.x + 'px, ' + point.y + 'px) scale(' + scale + ')'; + } +}; + + +/** + * Retrieve the computed style for an element, parsed as a float. This should + * not be used for width or height values because jQuery mangles them and they + * are not precise enough. + * @param {Element} element Element to get style for. + * @param {string} style Style property. + * @return {number} The parsed computed value or zero if that fails because IE + * will return 'auto' when the element doesn't have margins instead of + * the computed style. + * @private + */ +Shuffle._getNumberStyle = function( element, style ) { + return Shuffle._getFloat( $( element ).css( style ) ); +}; + + +/** + * Parse a string as an integer. + * @param {string} value String integer. + * @return {number} The string as an integer or zero. + * @private + */ +Shuffle._getInt = function(value) { + return getNumber( parseInt( value, 10 ) ); +}; + +/** + * Parse a string as an float. + * @param {string} value String float. + * @return {number} The string as an float or zero. + * @private + */ +Shuffle._getFloat = function(value) { + return getNumber( parseFloat( value ) ); +}; + + +/** + * Returns the outer width of an element, optionally including its margins. + * The `offsetWidth` property must be used because having a scale transform + * on the element affects the bounding box. Sadly, Firefox doesn't return an + * integer value for offsetWidth (yet). + * @param {Element} element The element. + * @param {boolean} [includeMargins] Whether to include margins. Default is false. + * @return {number} The width. + */ +Shuffle._getOuterWidth = function( element, includeMargins ) { + var width = element.offsetWidth; + + // Use jQuery here because it uses getComputedStyle internally and is + // cross-browser. Using the style property of the element will only work + // if there are inline styles. + if ( includeMargins ) { + var marginLeft = Shuffle._getNumberStyle( element, 'marginLeft'); + var marginRight = Shuffle._getNumberStyle( element, 'marginRight'); + width += marginLeft + marginRight; + } + + return width; +}; + + +/** + * Returns the outer height of an element, optionally including its margins. + * @param {Element} element The element. + * @param {boolean} [includeMargins] Whether to include margins. Default is false. + * @return {number} The height. + */ +Shuffle._getOuterHeight = function( element, includeMargins ) { + var height = element.offsetHeight; + + if ( includeMargins ) { + var marginTop = Shuffle._getNumberStyle( element, 'marginTop'); + var marginBottom = Shuffle._getNumberStyle( element, 'marginBottom'); + height += marginTop + marginBottom; + } + + return height; +}; + + +/** + * Change a property or execute a function which will not have a transition + * @param {Element} element DOM element that won't be transitioned + * @param {Function} callback A function which will be called while transition + * is set to 0ms. + * @param {Object} [context] Optional context for the callback function. + * @private + */ +Shuffle._skipTransition = function( element, callback, context ) { + var duration = element.style[ TRANSITION_DURATION ]; + + // Set the duration to zero so it happens immediately + element.style[ TRANSITION_DURATION ] = '0ms'; // ms needed for firefox! + + callback.call( context ); + + // Force reflow + var reflow = element.offsetWidth; + // Avoid jshint warnings: unused variables and expressions. + reflow = null; + + // Put the duration back + element.style[ TRANSITION_DURATION ] = duration; +}; + + +/** + * Instance methods. + */ + +Shuffle.prototype._init = function() { + this.$items = this._getItems(); + + this.sizer = this._getElementOption( this.sizer ); + + if ( this.sizer ) { + this.useSizer = true; + } + + // Add class and invalidate styles + this.$el.addClass( Shuffle.ClassName.BASE ); + + // Set initial css for each item + this._initItems(); + + // Bind resize events + // http://stackoverflow.com/questions/1852751/window-resize-event-firing-in-internet-explorer + $window.on('resize.' + SHUFFLE + '.' + this.unique, this._getResizeFunction()); + + // Get container css all in one request. Causes reflow + var containerCSS = this.$el.css(['position', 'overflow']); + var containerWidth = Shuffle._getOuterWidth( this.element ); + + // Add styles to the container if it doesn't have them. + this._validateStyles( containerCSS ); + + // We already got the container's width above, no need to cause another reflow getting it again... + // Calculate the number of columns there will be + this._setColumns( containerWidth ); + + // Kick off! + this.shuffle( this.group, this.initialSort ); + + // The shuffle items haven't had transitions set on them yet + // so the user doesn't see the first layout. Set them now that the first layout is done. + if ( this.supported ) { + defer(function() { + this._setTransitions(); + this.element.style[ TRANSITION ] = 'height ' + this.speed + 'ms ' + this.easing; + }, this); + } +}; + + +/** + * Returns a throttled and proxied function for the resize handler. + * @return {Function} + * @private + */ +Shuffle.prototype._getResizeFunction = function() { + var resizeFunction = $.proxy( this._onResize, this ); + return this.throttle ? + this.throttle( resizeFunction, this.throttleTime ) : + resizeFunction; +}; + + +/** + * Retrieve an element from an option. + * @param {string|jQuery|Element} option The option to check. + * @return {?Element} The plain element or null. + * @private + */ +Shuffle.prototype._getElementOption = function( option ) { + // If column width is a string, treat is as a selector and search for the + // sizer element within the outermost container + if ( typeof option === 'string' ) { + return this.$el.find( option )[0] || null; + + // Check for an element + } else if ( option && option.nodeType && option.nodeType === 1 ) { + return option; + + // Check for jQuery object + } else if ( option && option.jquery ) { + return option[0]; + } + + return null; +}; + + +/** + * Ensures the shuffle container has the css styles it needs applied to it. + * @param {Object} styles Key value pairs for position and overflow. + * @private + */ +Shuffle.prototype._validateStyles = function(styles) { + // Position cannot be static. + if ( styles.position === 'static' ) { + this.element.style.position = 'relative'; + } + + // Overflow has to be hidden + if ( styles.overflow !== 'hidden' ) { + this.element.style.overflow = 'hidden'; + } +}; + + +/** + * Filter the elements by a category. + * @param {string} [category] Category to filter by. If it's given, the last + * category will be used to filter the items. + * @param {ArrayLike} [$collection] Optionally filter a collection. Defaults to + * all the items. + * @return {jQuery} Filtered items. + * @private + */ +Shuffle.prototype._filter = function( category, $collection ) { + category = category || this.lastFilter; + $collection = $collection || this.$items; + + var set = this._getFilteredSets( category, $collection ); + + // Individually add/remove concealed/filtered classes + this._toggleFilterClasses( set.filtered, set.concealed ); + + // Save the last filter in case elements are appended. + this.lastFilter = category; + + // This is saved mainly because providing a filter function (like searching) + // will overwrite the `lastFilter` property every time its called. + if ( typeof category === 'string' ) { + this.group = category; + } + + return set.filtered; +}; + + +/** + * Returns an object containing the filtered and concealed elements. + * @param {string|Function} category Category or function to filter by. + * @param {ArrayLike.} $items A collection of items to filter. + * @return {!{filtered: jQuery, concealed: jQuery}} + * @private + */ +Shuffle.prototype._getFilteredSets = function( category, $items ) { + var $filtered = $(); + var $concealed = $(); + + // category === 'all', add filtered class to everything + if ( category === ALL_ITEMS ) { + $filtered = $items; + + // Loop through each item and use provided function to determine + // whether to hide it or not. + } else { + each($items, function( el ) { + var $item = $(el); + if ( this._doesPassFilter( category, $item ) ) { + $filtered = $filtered.add( $item ); + } else { + $concealed = $concealed.add( $item ); + } + }, this); + } + + return { + filtered: $filtered, + concealed: $concealed + }; +}; + + +/** + * Test an item to see if it passes a category. + * @param {string|Function} category Category or function to filter by. + * @param {jQuery} $item A single item, wrapped with jQuery. + * @return {boolean} Whether it passes the category/filter. + * @private + */ +Shuffle.prototype._doesPassFilter = function( category, $item ) { + if ( $.isFunction( category ) ) { + return category.call( $item[0], $item, this ); + + // Check each element's data-groups attribute against the given category. + } else { + var groups = $item.data( FILTER_ATTRIBUTE_KEY ); + var keys = this.delimeter && !$.isArray( groups ) ? + groups.split( this.delimeter ) : + groups; + return $.inArray(category, keys) > -1; + } +}; + + +/** + * Toggles the filtered and concealed class names. + * @param {jQuery} $filtered Filtered set. + * @param {jQuery} $concealed Concealed set. + * @private + */ +Shuffle.prototype._toggleFilterClasses = function( $filtered, $concealed ) { + $filtered + .removeClass( Shuffle.ClassName.CONCEALED ) + .addClass( Shuffle.ClassName.FILTERED ); + $concealed + .removeClass( Shuffle.ClassName.FILTERED ) + .addClass( Shuffle.ClassName.CONCEALED ); +}; + + +/** + * Set the initial css for each item + * @param {jQuery} [$items] Optionally specifiy at set to initialize + */ +Shuffle.prototype._initItems = function( $items ) { + $items = $items || this.$items; + $items.addClass([ + Shuffle.ClassName.SHUFFLE_ITEM, + Shuffle.ClassName.FILTERED + ].join(' ')); + $items.css( this.itemCss ).data('point', new Point()).data('scale', DEFAULT_SCALE); +}; + + +/** + * Updates the filtered item count. + * @private + */ +Shuffle.prototype._updateItemCount = function() { + this.visibleItems = this._getFilteredItems().length; +}; + + +/** + * Sets css transform transition on a an element. + * @param {Element} element Element to set transition on. + * @private + */ +Shuffle.prototype._setTransition = function( element ) { + element.style[ TRANSITION ] = CSS_TRANSFORM + ' ' + this.speed + 'ms ' + + this.easing + ', opacity ' + this.speed + 'ms ' + this.easing; +}; + + +/** + * Sets css transform transition on a group of elements. + * @param {ArrayLike.} $items Elements to set transitions on. + * @private + */ +Shuffle.prototype._setTransitions = function( $items ) { + $items = $items || this.$items; + each($items, function( el ) { + this._setTransition( el ); + }, this); +}; + + +/** + * Sets a transition delay on a collection of elements, making each delay + * greater than the last. + * @param {ArrayLike.} $collection Array to iterate over. + */ +Shuffle.prototype._setSequentialDelay = function( $collection ) { + if ( !this.supported ) { + return; + } + + // $collection can be an array of dom elements or jquery object + each($collection, function( el, i ) { + // This works because the transition-property: transform, opacity; + el.style[ TRANSITION_DELAY ] = '0ms,' + ((i + 1) * this.sequentialFadeDelay) + 'ms'; + }, this); +}; + + +Shuffle.prototype._getItems = function() { + return this.$el.children( this.itemSelector ); +}; + + +Shuffle.prototype._getFilteredItems = function() { + return this.$items.filter('.' + Shuffle.ClassName.FILTERED); +}; + + +Shuffle.prototype._getConcealedItems = function() { + return this.$items.filter('.' + Shuffle.ClassName.CONCEALED); +}; + + +/** + * Returns the column size, based on column width and sizer options. + * @param {number} containerWidth Size of the parent container. + * @param {number} gutterSize Size of the gutters. + * @return {number} + * @private + */ +Shuffle.prototype._getColumnSize = function( containerWidth, gutterSize ) { + var size; + + // If the columnWidth property is a function, then the grid is fluid + if ( $.isFunction( this.columnWidth ) ) { + size = this.columnWidth(containerWidth); + + // columnWidth option isn't a function, are they using a sizing element? + } else if ( this.useSizer ) { + size = Shuffle._getOuterWidth(this.sizer); + + // if not, how about the explicitly set option? + } else if ( this.columnWidth ) { + size = this.columnWidth; + + // or use the size of the first item + } else if ( this.$items.length > 0 ) { + size = Shuffle._getOuterWidth(this.$items[0], true); + + // if there's no items, use size of container + } else { + size = containerWidth; + } + + // Don't let them set a column width of zero. + if ( size === 0 ) { + size = containerWidth; + } + + return size + gutterSize; +}; + + +/** + * Returns the gutter size, based on gutter width and sizer options. + * @param {number} containerWidth Size of the parent container. + * @return {number} + * @private + */ +Shuffle.prototype._getGutterSize = function( containerWidth ) { + var size; + if ( $.isFunction( this.gutterWidth ) ) { + size = this.gutterWidth(containerWidth); + } else if ( this.useSizer ) { + size = Shuffle._getNumberStyle(this.sizer, 'marginLeft'); + } else { + size = this.gutterWidth; + } + + return size; +}; + + +/** + * Calculate the number of columns to be used. Gets css if using sizer element. + * @param {number} [theContainerWidth] Optionally specify a container width if it's already available. + */ +Shuffle.prototype._setColumns = function( theContainerWidth ) { + var containerWidth = theContainerWidth || Shuffle._getOuterWidth( this.element ); + var gutter = this._getGutterSize( containerWidth ); + var columnWidth = this._getColumnSize( containerWidth, gutter ); + var calculatedColumns = (containerWidth + gutter) / columnWidth; + + // Widths given from getComputedStyle are not precise enough... + if ( Math.abs(Math.round(calculatedColumns) - calculatedColumns) < COLUMN_THRESHOLD ) { + // e.g. calculatedColumns = 11.998876 + calculatedColumns = Math.round( calculatedColumns ); + } + + this.cols = Math.max( Math.floor(calculatedColumns), 1 ); + this.containerWidth = containerWidth; + this.colWidth = columnWidth; +}; + +/** + * Adjust the height of the grid + */ +Shuffle.prototype._setContainerSize = function() { + this.$el.css( 'height', this._getContainerSize() ); +}; + + +/** + * Based on the column heights, it returns the biggest one. + * @return {number} + * @private + */ +Shuffle.prototype._getContainerSize = function() { + return arrayMax( this.positions ); +}; + + +/** + * Fire events with .shuffle namespace + */ +Shuffle.prototype._fire = function( name, args ) { + this.$el.trigger( name + '.' + SHUFFLE, args && args.length ? args : [ this ] ); +}; + + +/** + * Zeros out the y columns array, which is used to determine item placement. + * @private + */ +Shuffle.prototype._resetCols = function() { + var i = this.cols; + this.positions = []; + while (i--) { + this.positions.push( 0 ); + } +}; + + +/** + * Loops through each item that should be shown and calculates the x, y position. + * @param {Array.} items Array of items that will be shown/layed out in order in their array. + * Because jQuery collection are always ordered in DOM order, we can't pass a jq collection. + * @param {boolean} [isOnlyPosition=false] If true this will position the items with zero opacity. + */ +Shuffle.prototype._layout = function( items, isOnlyPosition ) { + each(items, function( item ) { + this._layoutItem( item, !!isOnlyPosition ); + }, this); + + // `_layout` always happens after `_shrink`, so it's safe to process the style + // queue here with styles from the shrink method. + this._processStyleQueue(); + + // Adjust the height of the container. + this._setContainerSize(); +}; + + +/** + * Calculates the position of the item and pushes it onto the style queue. + * @param {Element} item Element which is being positioned. + * @param {boolean} isOnlyPosition Whether to position the item, but with zero + * opacity so that it can fade in later. + * @private + */ +Shuffle.prototype._layoutItem = function( item, isOnlyPosition ) { + var $item = $(item); + var itemData = $item.data(); + var currPos = itemData.point; + var currScale = itemData.scale; + var itemSize = { + width: Shuffle._getOuterWidth( item, true ), + height: Shuffle._getOuterHeight( item, true ) + }; + var pos = this._getItemPosition( itemSize ); + + // If the item will not change its position, do not add it to the render + // queue. Transitions don't fire when setting a property to the same value. + if ( Point.equals(currPos, pos) && currScale === DEFAULT_SCALE ) { + return; + } + + // Save data for shrink + itemData.point = pos; + itemData.scale = DEFAULT_SCALE; + + this.styleQueue.push({ + $item: $item, + point: pos, + scale: DEFAULT_SCALE, + opacity: isOnlyPosition ? 0 : 1, + skipTransition: isOnlyPosition, + callfront: function() { + if ( !isOnlyPosition ) { + $item.css( 'visibility', 'visible' ); + } + }, + callback: function() { + if ( isOnlyPosition ) { + $item.css( 'visibility', 'hidden' ); + } + } + }); +}; + + +/** + * Determine the location of the next item, based on its size. + * @param {{width: number, height: number}} itemSize Object with width and height. + * @return {Point} + * @private + */ +Shuffle.prototype._getItemPosition = function( itemSize ) { + var columnSpan = this._getColumnSpan( itemSize.width, this.colWidth, this.cols ); + + var setY = this._getColumnSet( columnSpan, this.cols ); + + // Finds the index of the smallest number in the set. + var shortColumnIndex = this._getShortColumn( setY, this.buffer ); + + // Position the item + var point = new Point( + Math.round( this.colWidth * shortColumnIndex ), + Math.round( setY[shortColumnIndex] )); + + // Update the columns array with the new values for each column. + // e.g. before the update the columns could be [250, 0, 0, 0] for an item + // which spans 2 columns. After it would be [250, itemHeight, itemHeight, 0]. + var setHeight = setY[shortColumnIndex] + itemSize.height; + var setSpan = this.cols + 1 - setY.length; + for ( var i = 0; i < setSpan; i++ ) { + this.positions[ shortColumnIndex + i ] = setHeight; + } + + return point; +}; + + +/** + * Determine the number of columns an items spans. + * @param {number} itemWidth Width of the item. + * @param {number} columnWidth Width of the column (includes gutter). + * @param {number} columns Total number of columns + * @return {number} + * @private + */ +Shuffle.prototype._getColumnSpan = function( itemWidth, columnWidth, columns ) { + var columnSpan = itemWidth / columnWidth; + + // If the difference between the rounded column span number and the + // calculated column span number is really small, round the number to + // make it fit. + if ( Math.abs(Math.round( columnSpan ) - columnSpan ) < COLUMN_THRESHOLD ) { + // e.g. columnSpan = 4.0089945390298745 + columnSpan = Math.round( columnSpan ); + } + + // Ensure the column span is not more than the amount of columns in the whole layout. + return Math.min( Math.ceil( columnSpan ), columns ); +}; + + +/** + * Retrieves the column set to use for placement. + * @param {number} columnSpan The number of columns this current item spans. + * @param {number} columns The total columns in the grid. + * @return {Array.} An array of numbers represeting the column set. + * @private + */ +Shuffle.prototype._getColumnSet = function( columnSpan, columns ) { + // The item spans only one column. + if ( columnSpan === 1 ) { + return this.positions; + + // The item spans more than one column, figure out how many different + // places it could fit horizontally. + // The group count is the number of places within the positions this block + // could fit, ignoring the current positions of items. + // Imagine a 2 column brick as the second item in a 4 column grid with + // 10px height each. Find the places it would fit: + // [10, 0, 0, 0] + // | | | + // * * * + // + // Then take the places which fit and get the bigger of the two: + // max([10, 0]), max([0, 0]), max([0, 0]) = [10, 0, 0] + // + // Next, find the first smallest number (the short column). + // [10, 0, 0] + // | + // * + // + // And that's where it should be placed! + } else { + var groupCount = columns + 1 - columnSpan; + var groupY = []; + + // For how many possible positions for this item there are. + for ( var i = 0; i < groupCount; i++ ) { + // Find the bigger value for each place it could fit. + groupY[i] = arrayMax( this.positions.slice( i, i + columnSpan ) ); + } + + return groupY; + } +}; + + +/** + * Find index of short column, the first from the left where this item will go. + * + * @param {Array.} positions The array to search for the smallest number. + * @param {number} buffer Optional buffer which is very useful when the height + * is a percentage of the width. + * @return {number} Index of the short column. + * @private + */ +Shuffle.prototype._getShortColumn = function( positions, buffer ) { + var minPosition = arrayMin( positions ); + for (var i = 0, len = positions.length; i < len; i++) { + if ( positions[i] >= minPosition - buffer && positions[i] <= minPosition + buffer ) { + return i; + } + } + return 0; +}; + + +/** + * Hides the elements that don't match our filter. + * @param {jQuery} $collection jQuery collection to shrink. + * @private + */ +Shuffle.prototype._shrink = function( $collection ) { + var $concealed = $collection || this._getConcealedItems(); + + each($concealed, function( item ) { + var $item = $(item); + var itemData = $item.data(); + + // Continuing would add a transitionend event listener to the element, but + // that listener would not execute because the transform and opacity would + // stay the same. + if ( itemData.scale === CONCEALED_SCALE ) { + return; + } + + itemData.scale = CONCEALED_SCALE; + + this.styleQueue.push({ + $item: $item, + point: itemData.point, + scale : CONCEALED_SCALE, + opacity: 0, + callback: function() { + $item.css( 'visibility', 'hidden' ); + } + }); + }, this); +}; + + +/** + * Resize handler. + * @private + */ +Shuffle.prototype._onResize = function() { + // If shuffle is disabled, destroyed, don't do anything + if ( !this.enabled || this.destroyed || this.isTransitioning ) { + return; + } + + // Will need to check height in the future if it's layed out horizontaly + var containerWidth = Shuffle._getOuterWidth( this.element ); + + // containerWidth hasn't changed, don't do anything + if ( containerWidth === this.containerWidth ) { + return; + } + + this.update(); +}; + + +/** + * Returns styles for either jQuery animate or transition. + * @param {Object} opts Transition options. + * @return {!Object} Transforms for transitions, left/top for animate. + * @private + */ +Shuffle.prototype._getStylesForTransition = function( opts ) { + var styles = { + opacity: opts.opacity + }; + + if ( this.supported ) { + styles[ TRANSFORM ] = Shuffle._getItemTransformString( opts.point, opts.scale ); + } else { + styles.left = opts.point.x; + styles.top = opts.point.y; + } + + return styles; +}; + + +/** + * Transitions an item in the grid + * + * @param {Object} opts options. + * @param {jQuery} opts.$item jQuery object representing the current item. + * @param {Point} opts.point A point object with the x and y coordinates. + * @param {number} opts.scale Amount to scale the item. + * @param {number} opts.opacity Opacity of the item. + * @param {Function} opts.callback Complete function for the animation. + * @param {Function} opts.callfront Function to call before transitioning. + * @private + */ +Shuffle.prototype._transition = function( opts ) { + var styles = this._getStylesForTransition( opts ); + this._startItemAnimation( opts.$item, styles, opts.callfront || $.noop, opts.callback || $.noop ); +}; + + +Shuffle.prototype._startItemAnimation = function( $item, styles, callfront, callback ) { + // Transition end handler removes its listener. + function handleTransitionEnd( evt ) { + // Make sure this event handler has not bubbled up from a child. + if ( evt.target === evt.currentTarget ) { + $( evt.target ).off( TRANSITIONEND, handleTransitionEnd ); + callback(); + } + } + + callfront(); + + // Transitions are not set until shuffle has loaded to avoid the initial transition. + if ( !this.initialized ) { + $item.css( styles ); + callback(); + return; + } + + // Use CSS Transforms if we have them + if ( this.supported ) { + $item.css( styles ); + $item.on( TRANSITIONEND, handleTransitionEnd ); + + // Use jQuery to animate left/top + } else { + // Save the deferred object which jQuery returns. + var anim = $item.stop( true ).animate( styles, this.speed, 'swing', callback ); + // Push the animation to the list of pending animations. + this._animations.push( anim.promise() ); + } +}; + + +/** + * Execute the styles gathered in the style queue. This applies styles to elements, + * triggering transitions. + * @param {boolean} noLayout Whether to trigger a layout event. + * @private + */ +Shuffle.prototype._processStyleQueue = function( noLayout ) { + var $transitions = $(); + + // Iterate over the queue and keep track of ones that use transitions. + each(this.styleQueue, function( transitionObj ) { + if ( transitionObj.skipTransition ) { + this._styleImmediately( transitionObj ); + } else { + $transitions = $transitions.add( transitionObj.$item ); + this._transition( transitionObj ); + } + }, this); + + + if ( $transitions.length > 0 && this.initialized ) { + // Set flag that shuffle is currently in motion. + this.isTransitioning = true; + + if ( this.supported ) { + this._whenCollectionDone( $transitions, TRANSITIONEND, this._movementFinished ); + + // The _transition function appends a promise to the animations array. + // When they're all complete, do things. + } else { + this._whenAnimationsDone( this._movementFinished ); + } + + // A call to layout happened, but none of the newly filtered items will + // change position. Asynchronously fire the callback here. + } else if ( !noLayout ) { + defer( this._layoutEnd, this ); + } + + // Remove everything in the style queue + this.styleQueue.length = 0; +}; + + +/** + * Apply styles without a transition. + * @param {Object} opts Transitions options object. + * @private + */ +Shuffle.prototype._styleImmediately = function( opts ) { + Shuffle._skipTransition(opts.$item[0], function() { + opts.$item.css( this._getStylesForTransition( opts ) ); + }, this); +}; + +Shuffle.prototype._movementFinished = function() { + this.isTransitioning = false; + this._layoutEnd(); +}; + +Shuffle.prototype._layoutEnd = function() { + this._fire( Shuffle.EventType.LAYOUT ); +}; + +Shuffle.prototype._addItems = function( $newItems, addToEnd, isSequential ) { + // Add classes and set initial positions. + this._initItems( $newItems ); + + // Add transition to each item. + this._setTransitions( $newItems ); + + // Update the list of + this.$items = this._getItems(); + + // Shrink all items (without transitions). + this._shrink( $newItems ); + each(this.styleQueue, function( transitionObj ) { + transitionObj.skipTransition = true; + }); + + // Apply shrink positions, but do not cause a layout event. + this._processStyleQueue( true ); + + if ( addToEnd ) { + this._addItemsToEnd( $newItems, isSequential ); + } else { + this.shuffle( this.lastFilter ); + } +}; + + +Shuffle.prototype._addItemsToEnd = function( $newItems, isSequential ) { + // Get ones that passed the current filter + var $passed = this._filter( null, $newItems ); + var passed = $passed.get(); + + // How many filtered elements? + this._updateItemCount(); + + this._layout( passed, true ); + + if ( isSequential && this.supported ) { + this._setSequentialDelay( passed ); + } + + this._revealAppended( passed ); +}; + + +/** + * Triggers appended elements to fade in. + * @param {ArrayLike.} $newFilteredItems Collection of elements. + * @private + */ +Shuffle.prototype._revealAppended = function( newFilteredItems ) { + defer(function() { + each(newFilteredItems, function( el ) { + var $item = $( el ); + this._transition({ + $item: $item, + opacity: 1, + point: $item.data('point'), + scale: DEFAULT_SCALE + }); + }, this); + + this._whenCollectionDone($(newFilteredItems), TRANSITIONEND, function() { + $(newFilteredItems).css( TRANSITION_DELAY, '0ms' ); + this._movementFinished(); + }); + }, this, this.revealAppendedDelay); +}; + + +/** + * Execute a function when an event has been triggered for every item in a collection. + * @param {jQuery} $collection Collection of elements. + * @param {string} eventName Event to listen for. + * @param {Function} callback Callback to execute when they're done. + * @private + */ +Shuffle.prototype._whenCollectionDone = function( $collection, eventName, callback ) { + var done = 0; + var items = $collection.length; + var self = this; + + function handleEventName( evt ) { + if ( evt.target === evt.currentTarget ) { + $( evt.target ).off( eventName, handleEventName ); + done++; + + // Execute callback if all items have emitted the correct event. + if ( done === items ) { + callback.call( self ); + } + } + } + + // Bind the event to all items. + $collection.on( eventName, handleEventName ); +}; + + +/** + * Execute a callback after jQuery `animate` for a collection has finished. + * @param {Function} callback Callback to execute when they're done. + * @private + */ +Shuffle.prototype._whenAnimationsDone = function( callback ) { + $.when.apply( null, this._animations ).always( $.proxy( function() { + this._animations.length = 0; + callback.call( this ); + }, this )); +}; + + +/** + * Public Methods + */ + +/** + * The magic. This is what makes the plugin 'shuffle' + * @param {string|Function} [category] Category to filter by. Can be a function + * @param {Object} [sortObj] A sort object which can sort the filtered set + */ +Shuffle.prototype.shuffle = function( category, sortObj ) { + if ( !this.enabled || this.isTransitioning ) { + return; + } + + if ( !category ) { + category = ALL_ITEMS; + } + + this._filter( category ); + + // How many filtered elements? + this._updateItemCount(); + + // Shrink each concealed item + this._shrink(); + + // Update transforms on .filtered elements so they will animate to their new positions + this.sort( sortObj ); +}; + + +/** + * Gets the .filtered elements, sorts them, and passes them to layout. + * @param {Object} opts the options object for the sorted plugin + */ +Shuffle.prototype.sort = function( opts ) { + if ( this.enabled && !this.isTransitioning ) { + this._resetCols(); + + var sortOptions = opts || this.lastSort; + var items = this._getFilteredItems().sorted( sortOptions ); + + this._layout( items ); + + this.lastSort = sortOptions; + } +}; + + +/** + * Reposition everything. + * @param {boolean} isOnlyLayout If true, column and gutter widths won't be + * recalculated. + */ +Shuffle.prototype.update = function( isOnlyLayout ) { + if ( this.enabled && !this.isTransitioning ) { + + if ( !isOnlyLayout ) { + // Get updated colCount + this._setColumns(); + } + + // Layout items + this.sort(); + } +}; + + +/** + * Use this instead of `update()` if you don't need the columns and gutters updated + * Maybe an image inside `shuffle` loaded (and now has a height), which means calculations + * could be off. + */ +Shuffle.prototype.layout = function() { + this.update( true ); +}; + + +/** + * New items have been appended to shuffle. Fade them in sequentially + * @param {jQuery} $newItems jQuery collection of new items + * @param {boolean} [addToEnd=false] If true, new items will be added to the end / bottom + * of the items. If not true, items will be mixed in with the current sort order. + * @param {boolean} [isSequential=true] If false, new items won't sequentially fade in + */ +Shuffle.prototype.appended = function( $newItems, addToEnd, isSequential ) { + this._addItems( $newItems, addToEnd === true, isSequential !== false ); +}; + + +/** + * Disables shuffle from updating dimensions and layout on resize + */ +Shuffle.prototype.disable = function() { + this.enabled = false; +}; + + +/** + * Enables shuffle again + * @param {boolean} [isUpdateLayout=true] if undefined, shuffle will update columns and gutters + */ +Shuffle.prototype.enable = function( isUpdateLayout ) { + this.enabled = true; + if ( isUpdateLayout !== false ) { + this.update(); + } +}; + + +/** + * Remove 1 or more shuffle items + * @param {jQuery} $collection A jQuery object containing one or more element in shuffle + * @return {Shuffle} The shuffle object + */ +Shuffle.prototype.remove = function( $collection ) { + + // If this isn't a jquery object, exit + if ( !$collection.length || !$collection.jquery ) { + return; + } + + function handleRemoved() { + // Remove the collection in the callback + $collection.remove(); + + // Update things now that elements have been removed. + this.$items = this._getItems(); + this._updateItemCount(); + + this._fire( Shuffle.EventType.REMOVED, [ $collection, this ] ); + + // Let it get garbage collected + $collection = null; + } + + // Hide collection first. + this._toggleFilterClasses( $(), $collection ); + this._shrink( $collection ); + + this.sort(); + + this.$el.one( Shuffle.EventType.LAYOUT + '.' + SHUFFLE, $.proxy( handleRemoved, this ) ); +}; + + +/** + * Destroys shuffle, removes events, styles, and classes + */ +Shuffle.prototype.destroy = function() { + // If there is more than one shuffle instance on the page, + // removing the resize handler from the window would remove them + // all. This is why a unique value is needed. + $window.off('.' + this.unique); + + // Reset container styles + this.$el + .removeClass( SHUFFLE ) + .removeAttr('style') + .removeData( SHUFFLE ); + + // Reset individual item styles + this.$items + .removeAttr('style') + .removeData('point') + .removeData('scale') + .removeClass([ + Shuffle.ClassName.CONCEALED, + Shuffle.ClassName.FILTERED, + Shuffle.ClassName.SHUFFLE_ITEM + ].join(' ')); + + // Null DOM references + this.$items = null; + this.$el = null; + this.sizer = null; + this.element = null; + + // Set a flag so if a debounced resize has been triggered, + // it can first check if it is actually destroyed and not doing anything + this.destroyed = true; +}; + + +// Plugin definition +$.fn.shuffle = function( opts ) { + var args = Array.prototype.slice.call( arguments, 1 ); + return this.each(function() { + var $this = $( this ); + var shuffle = $this.data( SHUFFLE ); + + // If we don't have a stored shuffle, make a new one and save it + if ( !shuffle ) { + shuffle = new Shuffle( this, opts ); + $this.data( SHUFFLE, shuffle ); + } else if ( typeof opts === 'string' && shuffle[ opts ] ) { + shuffle[ opts ].apply( shuffle, args ); + } + }); +}; + + +// http://stackoverflow.com/a/962890/373422 +function randomize( array ) { + var tmp, current; + var top = array.length; + + if ( !top ) { + return array; + } + + while ( --top ) { + current = Math.floor( Math.random() * (top + 1) ); + tmp = array[ current ]; + array[ current ] = array[ top ]; + array[ top ] = tmp; + } + + return array; +} + + +// You can return `undefined` from the `by` function to revert to DOM order +// This plugin does NOT return a jQuery object. It returns a plain array because +// jQuery sorts everything in DOM order. +$.fn.sorted = function(options) { + var opts = $.extend({}, $.fn.sorted.defaults, options); + var arr = this.get(); + var revert = false; + + if ( !arr.length ) { + return []; + } + + if ( opts.randomize ) { + return randomize( arr ); + } + + // Sort the elements by the opts.by function. + // If we don't have opts.by, default to DOM order + if ( $.isFunction( opts.by ) ) { + arr.sort(function(a, b) { + + // Exit early if we already know we want to revert + if ( revert ) { + return 0; + } + + var valA = opts.by($(a)); + var valB = opts.by($(b)); + + // If both values are undefined, use the DOM order + if ( valA === undefined && valB === undefined ) { + revert = true; + return 0; + } + + if ( valA < valB || valA === 'sortFirst' || valB === 'sortLast' ) { + return -1; + } + + if ( valA > valB || valA === 'sortLast' || valB === 'sortFirst' ) { + return 1; + } + + return 0; + }); + } + + // Revert to the original array if necessary + if ( revert ) { + return this.get(); + } + + if ( opts.reverse ) { + arr.reverse(); + } + + return arr; +}; + + +$.fn.sorted.defaults = { + reverse: false, // Use array.reverse() to reverse the results + by: null, // Sorting function + randomize: false // If true, this will skip the sorting and return a randomized order in the array +}; + +return Shuffle; + +}); \ No newline at end of file diff --git a/docs/js/toc.js b/docs/js/toc.js new file mode 100755 index 0000000..a54d172 --- /dev/null +++ b/docs/js/toc.js @@ -0,0 +1,82 @@ +// https://github.com/ghiculescu/jekyll-table-of-contents +(function($){ + $.fn.toc = function(options) { + var defaults = { + noBackToTopLinks: false, + title: '', + minimumHeaders: 3, + headers: 'h1, h2, h3, h4', + listType: 'ol', // values: [ol|ul] + showEffect: 'show', // values: [show|slideDown|fadeIn|none] + showSpeed: 'slow' // set to 0 to deactivate effect + }, + settings = $.extend(defaults, options); + + var headers = $(settings.headers).filter(function() { + // get all headers with an ID + var previousSiblingName = $(this).prev().attr( "name" ); + if (!this.id && previousSiblingName) { + this.id = $(this).attr( "id", previousSiblingName.replace(/\./g, "-") ); + } + return this.id; + }), output = $(this); + if (!headers.length || headers.length < settings.minimumHeaders || !output.length) { + return; + } + + if (0 === settings.showSpeed) { + settings.showEffect = 'none'; + } + + var render = { + show: function() { output.hide().html(html).show(settings.showSpeed); }, + slideDown: function() { output.hide().html(html).slideDown(settings.showSpeed); }, + fadeIn: function() { output.hide().html(html).fadeIn(settings.showSpeed); }, + none: function() { output.html(html); } + }; + + var get_level = function(ele) { return parseInt(ele.nodeName.replace("H", ""), 10); } + var highest_level = headers.map(function(_, ele) { return get_level(ele); }).get().sort()[0]; + var return_to_top = ' '; + + var level = get_level(headers[0]), + this_level, + html = settings.title + " <"+settings.listType+">"; + headers.on('click', function() { + if (!settings.noBackToTopLinks) { + window.location.hash = this.id; + } + }) + .addClass('clickable-header') + .each(function(_, header) { + this_level = get_level(header); + if (!settings.noBackToTopLinks && this_level === highest_level) { + $(header).addClass('top-level-header').after(return_to_top); + } + if (this_level === level) // same level as before; same indenting + html += "
  • " + header.innerHTML + ""; + else if (this_level <= level){ // higher level than before; end parent ol + for(i = this_level; i < level; i++) { + html += "
  • " + } + html += "
  • " + header.innerHTML + ""; + } + else if (this_level > level) { // lower level than before; expand the previous to contain a ol + for(i = this_level; i > level; i--) { + html += "<"+settings.listType+">
  • " + } + html += "" + header.innerHTML + ""; + } + level = this_level; // update for the next one + }); + html += ""; + if (!settings.noBackToTopLinks) { + $(document).on('click', '.back-to-top', function() { + $(window).scrollTop(0); + window.location.hash = ''; + }); + } + + render[settings.showEffect](); + }; +})(jQuery); \ No newline at end of file diff --git a/docs/licenses/LICENSE b/docs/licenses/LICENSE new file mode 100755 index 0000000..e04b3d0 --- /dev/null +++ b/docs/licenses/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2016 Tom Johnson + +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. diff --git a/docs/licenses/LICENSE-BSD-NAVGOCO.txt b/docs/licenses/LICENSE-BSD-NAVGOCO.txt new file mode 100755 index 0000000..7fdefc3 --- /dev/null +++ b/docs/licenses/LICENSE-BSD-NAVGOCO.txt @@ -0,0 +1,27 @@ +/* This license pertains to the Navgoco jQuery component used for the sidebar. */ + +Copyright (c) 2013, Christodoulos Tsoulloftas, http://www.komposta.net +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. + * Neither the name of the nor the names of its + contributors may be used to endorse or promote products derived from this + software without specific prior written permission. + +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. \ No newline at end of file diff --git a/docs/ncapi/c_api_migration.html b/docs/ncapi/c_api_migration.html index c562db0..67b3271 100644 --- a/docs/ncapi/c_api_migration.html +++ b/docs/ncapi/c_api_migration.html @@ -1,45 +1,500 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +Migrating C/C++ Applications from NCAPI v1 to NCAPI v2 | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Migrating C/C++ Applications from NCAPI v1 to NCAPI v2 + + + + + + + + + + + + + + + + + + + + + +
    + +
    + -
    + -

    Migrating C/C++ Applications from NCAPI v1 to NCAPI v2

    + + -

    Sections:

    +
    + + - + +
    +

    Migrating C/C++ Applications from NCAPI v1 to NCAPI v2

    @@ -56,9 +511,6 @@

    Sections:

    -

    -

    Significant Changes

    -

    FIFO queues

    In the Intel® Movidius™ Neural Compute SDK (Intel® Movidius NCSDK) v1, mvncLoadTensor() was used to load an input tensor to a neural compute device and trigger an inference. mvncGetResult() was used to read the output inference result.

    @@ -74,7 +526,7 @@

    FIFO queues

  • After usage, free FIFO resources with ncFifoDestroy().
  • -

    See the Example Code Comparison section below for example FIFO usage.

    +

    See the Example Code Comparison section below for example FIFO usage.

    Input/output data types

    @@ -87,9 +539,6 @@

    Input/output data types

    Other changes

    Most function names and signatures were updated. Please reference the NCAPI v2 documentation for correct usage.

    -

    Top

    - -

    Equivalent API Calls

    Enumerations

    @@ -158,6 +607,11 @@

    Enumerations

    ncDeviceHwVersion_t This is a new enumeration in NCAPI v2 containing device hardware versions. + + n/a + ncLogLevel_t + This is a new enumeration in NCAPI v2 containing application logging levels. + @@ -299,9 +753,6 @@

    Functions

    -

    Top

    - -

    Example Code Comparison

    NCAPI v1:

    @@ -489,17 +940,23 @@

    Example Code Comparison

    }
    -

    Top

    + + + + + + + + - - -
    - - -
    - +
    +
    + +
    +
    - - diff --git a/docs/ncapi/ncapi1/c_api/mvncAllocateGraph.html b/docs/ncapi/ncapi1/c_api/mvncAllocateGraph.html index 9fc26da..7f9f178 100644 --- a/docs/ncapi/ncapi1/c_api/mvncAllocateGraph.html +++ b/docs/ncapi/ncapi1/c_api/mvncAllocateGraph.html @@ -1,37 +1,365 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +mvncAllocateGraph() [C NCAPI v1] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +mvncAllocateGraph() [C NCAPI v1] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + + + + + -
    +
    + + -

    mvncAllocateGraph()

    + +
    +

    mvncAllocateGraph()

    @@ -156,15 +484,23 @@

    Example

    - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi1/c_api/mvncCloseDevice.html b/docs/ncapi/ncapi1/c_api/mvncCloseDevice.html index 0289371..592c0ed 100644 --- a/docs/ncapi/ncapi1/c_api/mvncCloseDevice.html +++ b/docs/ncapi/ncapi1/c_api/mvncCloseDevice.html @@ -1,37 +1,365 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +mvncCloseDevice() [C NCAPI v1] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +mvncCloseDevice() [C NCAPI v1] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Functions + +
  • + + + + + + + + + -
    +
    + + -

    mvncCloseDevice()

    + +
    +

    mvncCloseDevice()

    @@ -134,15 +462,23 @@

    Example

    } - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi1/c_api/mvncDeallocateGraph.html b/docs/ncapi/ncapi1/c_api/mvncDeallocateGraph.html index a65d415..18b62e2 100644 --- a/docs/ncapi/ncapi1/c_api/mvncDeallocateGraph.html +++ b/docs/ncapi/ncapi1/c_api/mvncDeallocateGraph.html @@ -1,37 +1,365 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +mvncDeallocateGraph() [C NCAPI v1] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +mvncDeallocateGraph() [C NCAPI v1] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Functions + +
  • + + + + + + + + + -
    +
    + + -

    mvncDeallocateGraph()

    + +
    +

    mvncDeallocateGraph()

    @@ -140,15 +468,23 @@

    Example

    } - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi1/c_api/mvncDeviceOptions.html b/docs/ncapi/ncapi1/c_api/mvncDeviceOptions.html index a86caf5..becb3f2 100644 --- a/docs/ncapi/ncapi1/c_api/mvncDeviceOptions.html +++ b/docs/ncapi/ncapi1/c_api/mvncDeviceOptions.html @@ -1,37 +1,365 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +mvncDeviceOptions enum [C NCAPI v1] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +mvncDeviceOptions enum [C NCAPI v1] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Functions + +
  • + + + + + + + + + -
    +
    + + -

    mvncDeviceOptions enumeration

    + +
    +

    mvncDeviceOptions enumeration

    @@ -81,15 +409,23 @@

    Overview

    - - +
    + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi1/c_api/mvncGetDeviceName.html b/docs/ncapi/ncapi1/c_api/mvncGetDeviceName.html index 2f3439c..4c39549 100644 --- a/docs/ncapi/ncapi1/c_api/mvncGetDeviceName.html +++ b/docs/ncapi/ncapi1/c_api/mvncGetDeviceName.html @@ -1,37 +1,365 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +mvncGetDeviceName() [C NCAPI v1] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +mvncGetDeviceName() [C NCAPI v1] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Functions + +
  • + + + + + + + + + -
    +
    + + -

    mvncGetDeviceName()

    + +
    +

    mvncGetDeviceName()

    @@ -135,15 +463,23 @@

    Example

    Total number of NCS devices found: 2 - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi1/c_api/mvncGetDeviceOption.html b/docs/ncapi/ncapi1/c_api/mvncGetDeviceOption.html index 90db78b..8a574af 100644 --- a/docs/ncapi/ncapi1/c_api/mvncGetDeviceOption.html +++ b/docs/ncapi/ncapi1/c_api/mvncGetDeviceOption.html @@ -1,37 +1,365 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +mvncGetDeviceOption() [C NCAPI v1] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +mvncGetDeviceOption() [C NCAPI v1] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Functions + +
  • + + + + + + + + + -
    +
    + + -

    mvncGetDeviceOption()

    + +
    +

    mvncGetDeviceOption()

    @@ -114,15 +442,23 @@

    Example

    TBD
     
    - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi1/c_api/mvncGetGlobalOption.html b/docs/ncapi/ncapi1/c_api/mvncGetGlobalOption.html index 6b03bb7..c04b729 100644 --- a/docs/ncapi/ncapi1/c_api/mvncGetGlobalOption.html +++ b/docs/ncapi/ncapi1/c_api/mvncGetGlobalOption.html @@ -1,37 +1,365 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +mvncGetGlobalOption() [C NCAPI v1] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +mvncGetGlobalOption() [C NCAPI v1] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Functions + +
  • + + + + + + + + + -
    +
    + + -

    mvncGetGlobalOption()

    + +
    +

    mvncGetGlobalOption()

    @@ -112,15 +440,23 @@

    Example

    // loggingLevel has the option value now. - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi1/c_api/mvncGetGraphOption.html b/docs/ncapi/ncapi1/c_api/mvncGetGraphOption.html index 49f5c6b..293a926 100644 --- a/docs/ncapi/ncapi1/c_api/mvncGetGraphOption.html +++ b/docs/ncapi/ncapi1/c_api/mvncGetGraphOption.html @@ -1,37 +1,365 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +mvncGetGraphOption() [C NCAPI v1] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +mvncGetGraphOption() [C NCAPI v1] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Functions + +
  • + + + + + + + + + -
    +
    + + -

    mvncGetGraphOption()

    + +
    +

    mvncGetGraphOption()

    @@ -139,15 +467,23 @@

    Example

    - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi1/c_api/mvncGetResult.html b/docs/ncapi/ncapi1/c_api/mvncGetResult.html index a80a1b9..32bbe0d 100644 --- a/docs/ncapi/ncapi1/c_api/mvncGetResult.html +++ b/docs/ncapi/ncapi1/c_api/mvncGetResult.html @@ -1,37 +1,365 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +mvncGetResult() [C NCAPI v1] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +mvncGetResult() [C NCAPI v1] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Functions + +
  • + + + + + + + + + -
    +
    + + -

    mvncGetResult()

    + +
    +

    mvncGetResult()

    @@ -183,15 +511,23 @@

    Example

    - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi1/c_api/mvncGlobalOptions.html b/docs/ncapi/ncapi1/c_api/mvncGlobalOptions.html index 377095c..56c3f47 100644 --- a/docs/ncapi/ncapi1/c_api/mvncGlobalOptions.html +++ b/docs/ncapi/ncapi1/c_api/mvncGlobalOptions.html @@ -1,37 +1,365 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +mvncGlobalOptions enum [C NCAPI v1] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +mvncGlobalOptions enum [C NCAPI v1] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Functions + +
  • + + + + + + + + + -
    +
    + + -

    mvncGlobalOptions enumeration

    + +
    +

    mvncGlobalOptions enumeration

    @@ -81,15 +409,23 @@

    Overview

    - - +
    + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi1/c_api/mvncGraphOptions.html b/docs/ncapi/ncapi1/c_api/mvncGraphOptions.html index 2bdfd70..09f260e 100644 --- a/docs/ncapi/ncapi1/c_api/mvncGraphOptions.html +++ b/docs/ncapi/ncapi1/c_api/mvncGraphOptions.html @@ -1,37 +1,365 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +mvncGraphOptions enum [C NCAPI v1] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +mvncGraphOptions enum [C NCAPI v1] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Functions + +
  • + + + + + + + + + -
    +
    + + -

    mvncGraphOptions enumeration

    + +
    +

    mvncGraphOptions enumeration

    @@ -95,15 +423,23 @@

    Overview

    - - +
    + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi1/c_api/mvncLoadTensor.html b/docs/ncapi/ncapi1/c_api/mvncLoadTensor.html index 2ee4989..70ad735 100644 --- a/docs/ncapi/ncapi1/c_api/mvncLoadTensor.html +++ b/docs/ncapi/ncapi1/c_api/mvncLoadTensor.html @@ -1,37 +1,365 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +mvncLoadTensor() [C NCAPI v1] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +mvncLoadTensor() [C NCAPI v1] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Functions + +
  • + + + + + + + + + -
    +
    + + -

    mvncLoadTensor()

    + +
    +

    mvncLoadTensor()

    @@ -168,15 +496,23 @@

    Example

    - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi1/c_api/mvncOpenDevice.html b/docs/ncapi/ncapi1/c_api/mvncOpenDevice.html index 7deaab4..837c8f4 100644 --- a/docs/ncapi/ncapi1/c_api/mvncOpenDevice.html +++ b/docs/ncapi/ncapi1/c_api/mvncOpenDevice.html @@ -1,37 +1,365 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +mvncOpenDevice() [C NCAPI v1] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +mvncOpenDevice() [C NCAPI v1] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Functions + +
  • + + + + + + + + + -
    +
    + + -

    mvncOpenDevice()

    + +
    +

    mvncOpenDevice()

    @@ -141,15 +469,23 @@

    Example

    - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi1/c_api/mvncSetDeviceOption.html b/docs/ncapi/ncapi1/c_api/mvncSetDeviceOption.html index 9d25a38..4329afc 100644 --- a/docs/ncapi/ncapi1/c_api/mvncSetDeviceOption.html +++ b/docs/ncapi/ncapi1/c_api/mvncSetDeviceOption.html @@ -1,37 +1,365 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +mvncSetDeviceOption() [C NCAPI v1] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +mvncSetDeviceOption() [C NCAPI v1] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Functions + +
  • + + + + + + + + + -
    +
    + + -

    mvncSetDeviceOption()

    + +
    +

    mvncSetDeviceOption()

    @@ -114,15 +442,23 @@

    Example

    TBD
     
    - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi1/c_api/mvncSetGlobalOption.html b/docs/ncapi/ncapi1/c_api/mvncSetGlobalOption.html index 724b672..3b0b546 100644 --- a/docs/ncapi/ncapi1/c_api/mvncSetGlobalOption.html +++ b/docs/ncapi/ncapi1/c_api/mvncSetGlobalOption.html @@ -1,37 +1,365 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +mvncSetGlobalOption() [C NCAPI v1] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +mvncSetGlobalOption() [C NCAPI v1] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Functions + +
  • + + + + + + + + + -
    +
    + + -

    mvncSetGlobalOption()

    + +
    +

    mvncSetGlobalOption()

    @@ -111,15 +439,23 @@

    Example

    - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi1/c_api/mvncSetGraphOption.html b/docs/ncapi/ncapi1/c_api/mvncSetGraphOption.html index 5629881..6de024c 100644 --- a/docs/ncapi/ncapi1/c_api/mvncSetGraphOption.html +++ b/docs/ncapi/ncapi1/c_api/mvncSetGraphOption.html @@ -1,37 +1,365 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +mvncSetGraphOption() [C NCAPI v1] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +mvncSetGraphOption() [C NCAPI v1] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Functions + +
  • + + + + + + + + + -
    +
    + + -

    mvncSetGraphOption()

    + +
    +

    mvncSetGraphOption()

    @@ -151,15 +479,23 @@

    Example

    . - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi1/c_api/mvncStatus.html b/docs/ncapi/ncapi1/c_api/mvncStatus.html index 95acf46..f962433 100644 --- a/docs/ncapi/ncapi1/c_api/mvncStatus.html +++ b/docs/ncapi/ncapi1/c_api/mvncStatus.html @@ -1,37 +1,365 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +mvncStatus enum [C NCAPI v1] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +mvncStatus enum [C NCAPI v1] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Functions + +
  • + + + + + + + + + -
    +
    + + -

    mvncStatus enumeration

    + +
    +

    mvncStatus enumeration

    @@ -118,15 +446,23 @@

    Overview

    - - +
    + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi1/c_api/readme.html b/docs/ncapi/ncapi1/c_api/readme.html index 2b7110c..45ab08a 100644 --- a/docs/ncapi/ncapi1/c_api/readme.html +++ b/docs/ncapi/ncapi1/c_api/readme.html @@ -1,37 +1,365 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +Intel® Movidius™ Neural Compute SDK C API v1 | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Intel® Movidius™ Neural Compute SDK C API v1 + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + + + + + -
    +
    + + -

    Intel® Movidius™ Neural Compute SDK C API

    + +
    +

    Intel® Movidius™ Neural Compute SDK C API v1

    The SDK comes with a C language API that enables developers to create applications in C or C++ that utilize hardware-accelerated Deep Neural Networks via the Intel® Movidius™ Neural Compute Stick (Intel® Movidius™ NCS). The C API is provided as a header file (mvnc.h) and an associated library file (libmvnc.so), both of which are placed on the development computer when the SDK is installed. Details of the C API are provided below and within the documentation avilable via the link in each line.

    @@ -61,15 +389,23 @@

    Functions

    - - +
    + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi1/py_api/Device.AllocateGraph.html b/docs/ncapi/ncapi1/py_api/Device.AllocateGraph.html index 32e4f26..c13f056 100644 --- a/docs/ncapi/ncapi1/py_api/Device.AllocateGraph.html +++ b/docs/ncapi/ncapi1/py_api/Device.AllocateGraph.html @@ -1,37 +1,407 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +Device.AllocateGraph() [Python NCAPI v1] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Device.AllocateGraph() [Python NCAPI v1] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + + -
    + + -

    Device.AllocateGraph()

    +
    + + + + +
    +

    Device.AllocateGraph()

    @@ -112,15 +482,23 @@

    Example

    #close device - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi1/py_api/Device.CloseDevice.html b/docs/ncapi/ncapi1/py_api/Device.CloseDevice.html index 4173948..c516dcd 100644 --- a/docs/ncapi/ncapi1/py_api/Device.CloseDevice.html +++ b/docs/ncapi/ncapi1/py_api/Device.CloseDevice.html @@ -1,37 +1,407 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +Device.CloseDevice() [Python NCAPI v1] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Device.CloseDevice() [Python NCAPI v1] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + + -
    + + -

    Device.CloseDevice()

    +
    + + + + +
    +

    Device.CloseDevice()

    @@ -91,15 +461,23 @@

    Example

    firstDevice.CloseDevice() - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi1/py_api/Device.GetDeviceOption.html b/docs/ncapi/ncapi1/py_api/Device.GetDeviceOption.html index 4c892fd..a4fc769 100644 --- a/docs/ncapi/ncapi1/py_api/Device.GetDeviceOption.html +++ b/docs/ncapi/ncapi1/py_api/Device.GetDeviceOption.html @@ -1,37 +1,407 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +Device.GetDeviceOption() [Python NCAPI v1] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Device.GetDeviceOption() [Python NCAPI v1] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + + -
    + + -

    Device.GetDeviceOption()

    +
    + + + + +
    +

    Device.GetDeviceOption()

    @@ -99,15 +469,23 @@

    Example

    - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi1/py_api/Device.OpenDevice.html b/docs/ncapi/ncapi1/py_api/Device.OpenDevice.html index 75e5545..1feeeb0 100644 --- a/docs/ncapi/ncapi1/py_api/Device.OpenDevice.html +++ b/docs/ncapi/ncapi1/py_api/Device.OpenDevice.html @@ -1,37 +1,407 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +Device.OpenDevice() [Python NCAPI v1] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Device.OpenDevice() [Python NCAPI v1] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + + -
    + + -

    Device.OpenDevice()

    +
    + + + + +
    +

    Device.OpenDevice()

    @@ -104,15 +474,23 @@

    Example

    - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi1/py_api/Device.SetDeviceOption.html b/docs/ncapi/ncapi1/py_api/Device.SetDeviceOption.html index caa0259..7b5411a 100644 --- a/docs/ncapi/ncapi1/py_api/Device.SetDeviceOption.html +++ b/docs/ncapi/ncapi1/py_api/Device.SetDeviceOption.html @@ -1,37 +1,407 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +Device.SetDeviceOption() [Python NCAPI v1] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Device.SetDeviceOption() [Python NCAPI v1] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + + -
    + + -

    Device.SetDeviceOption()

    +
    + + + + +
    +

    Device.SetDeviceOption()

    @@ -98,15 +468,23 @@

    Example

    - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi1/py_api/Device.__init__.html b/docs/ncapi/ncapi1/py_api/Device.__init__.html index 49124d9..e742c99 100644 --- a/docs/ncapi/ncapi1/py_api/Device.__init__.html +++ b/docs/ncapi/ncapi1/py_api/Device.__init__.html @@ -1,37 +1,407 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +Device.__init__() [Python NCAPI v1] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Device.init() [Python NCAPI v1] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + + -
    + + -

    Device.__init__()

    +
    + + + + +
    +

    Device.__init__()

    @@ -103,15 +473,23 @@

    Example

    - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi1/py_api/Device.html b/docs/ncapi/ncapi1/py_api/Device.html index c9d3a76..34c7776 100644 --- a/docs/ncapi/ncapi1/py_api/Device.html +++ b/docs/ncapi/ncapi1/py_api/Device.html @@ -1,37 +1,407 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +Device class [Python NCAPI v1] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Device class [Python NCAPI v1] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Classes + +
  • + + + + + + -
    + + -

    Device Class

    +
    + + + + +
    +

    Device Class

    The Device class represents the Intel® Movidius™ Neural Compute Stick (Intel® Movidius™ NCS) device. Typically one instance of this class is created for each physical NCS device that is plugged into the system, so multiple instances may exist if you have multiple devices attached to your system.

    @@ -48,15 +418,23 @@

    Device methods

  • AllocateGraph
  • - - +
    + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi1/py_api/DeviceOption.html b/docs/ncapi/ncapi1/py_api/DeviceOption.html index f6b583b..9672043 100644 --- a/docs/ncapi/ncapi1/py_api/DeviceOption.html +++ b/docs/ncapi/ncapi1/py_api/DeviceOption.html @@ -1,37 +1,407 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +DeviceOption enum [Python NCAPI v1] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +DeviceOption enum [Python NCAPI v1] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + + -
    + + -

    DeviceOption Enumeration Class

    +
    + + + + +
    +

    DeviceOption Enumeration Class

    @@ -85,15 +455,23 @@

    Overview

    - - +
    + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi1/py_api/EnumerateDevices.html b/docs/ncapi/ncapi1/py_api/EnumerateDevices.html index aab816b..ddd0943 100644 --- a/docs/ncapi/ncapi1/py_api/EnumerateDevices.html +++ b/docs/ncapi/ncapi1/py_api/EnumerateDevices.html @@ -1,37 +1,407 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +EnumerateDevices() [Python NCAPI v1] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +EnumerateDevices() [Python NCAPI v1] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + + -
    + + -

    EnumerateDevices()

    +
    + + + + +
    +

    EnumerateDevices()

    @@ -93,15 +463,23 @@

    Example

    device.CloseDevice() - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi1/py_api/GetGlobalOption.html b/docs/ncapi/ncapi1/py_api/GetGlobalOption.html index 3b244cf..d428300 100644 --- a/docs/ncapi/ncapi1/py_api/GetGlobalOption.html +++ b/docs/ncapi/ncapi1/py_api/GetGlobalOption.html @@ -1,37 +1,407 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +GetGlobalOption() [Python NCAPI v1] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +GetGlobalOption() [Python NCAPI v1] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + + -
    + + -

    GetGlobalOption

    +
    + + + + +
    +

    GetGlobalOption

    @@ -99,15 +469,23 @@

    Example

    print("The current global logging level is: ", logLevel) - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi1/py_api/GlobalOption.html b/docs/ncapi/ncapi1/py_api/GlobalOption.html index 7949cf3..7350925 100644 --- a/docs/ncapi/ncapi1/py_api/GlobalOption.html +++ b/docs/ncapi/ncapi1/py_api/GlobalOption.html @@ -1,37 +1,407 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +GlobalOption enum [Python NCAPI v1] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +GlobalOption enum [Python NCAPI v1] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + + -
    + + -

    GlobalOption Enumeration Class

    +
    + + + + +
    +

    GlobalOption Enumeration Class

    @@ -85,15 +455,23 @@

    Overview

    - - +
    + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi1/py_api/Graph.DeallocateGraph.html b/docs/ncapi/ncapi1/py_api/Graph.DeallocateGraph.html index 18ad684..0d395c6 100644 --- a/docs/ncapi/ncapi1/py_api/Graph.DeallocateGraph.html +++ b/docs/ncapi/ncapi1/py_api/Graph.DeallocateGraph.html @@ -1,37 +1,407 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +Graph.DeallocateGraph() [Python NCAPI v1] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Graph.DeallocateGraph() [Python NCAPI v1] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + + -
    + + -

    Graph.DeallocateGraph()

    +
    + + + + +
    +

    Graph.DeallocateGraph()

    @@ -97,15 +467,23 @@

    Example

    device.CloseDevice() - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi1/py_api/Graph.GetGraphOption.html b/docs/ncapi/ncapi1/py_api/Graph.GetGraphOption.html index 84d1b1e..80ff772 100644 --- a/docs/ncapi/ncapi1/py_api/Graph.GetGraphOption.html +++ b/docs/ncapi/ncapi1/py_api/Graph.GetGraphOption.html @@ -1,37 +1,407 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +Graph.GetGraphOption() [Python NCAPI v1] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Graph.GetGraphOption() [Python NCAPI v1] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + + -
    + + -

    Graph.GetGraphOption()

    +
    + + + + +
    +

    Graph.GetGraphOption()

    @@ -108,15 +478,23 @@

    Example

    - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi1/py_api/Graph.GetResult.html b/docs/ncapi/ncapi1/py_api/Graph.GetResult.html index da520b9..4ca87cd 100644 --- a/docs/ncapi/ncapi1/py_api/Graph.GetResult.html +++ b/docs/ncapi/ncapi1/py_api/Graph.GetResult.html @@ -1,37 +1,407 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +Graph.GetResult() [Python NCAPI v1] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Graph.GetResult() [Python NCAPI v1] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + + -
    + + -

    Graph.GetResult()

    +
    + + + + +
    +

    Graph.GetResult()

    @@ -87,15 +457,23 @@

    Example

    - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi1/py_api/Graph.LoadTensor.html b/docs/ncapi/ncapi1/py_api/Graph.LoadTensor.html index c26a6ea..c59b84a 100644 --- a/docs/ncapi/ncapi1/py_api/Graph.LoadTensor.html +++ b/docs/ncapi/ncapi1/py_api/Graph.LoadTensor.html @@ -1,37 +1,407 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +Graph.LoadTensor() [Python NCAPI v1] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Graph.LoadTensor() [Python NCAPI v1] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + + -
    + + -

    Graph.LoadTensor()

    +
    + + + + +
    +

    Graph.LoadTensor()

    @@ -109,15 +479,23 @@

    Example

    # Deallocate the graph and Close the device - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi1/py_api/Graph.SetGraphOption.html b/docs/ncapi/ncapi1/py_api/Graph.SetGraphOption.html index b338d70..a10dfc7 100644 --- a/docs/ncapi/ncapi1/py_api/Graph.SetGraphOption.html +++ b/docs/ncapi/ncapi1/py_api/Graph.SetGraphOption.html @@ -1,37 +1,407 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +Graph.SetGraphOption() [Python NCAPI v1] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Graph.SetGraphOption() [Python NCAPI v1] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + + -
    + + -

    Graph.SetGraphOption()

    +
    + + + + +
    +

    Graph.SetGraphOption()

    @@ -108,15 +478,23 @@

    Example

    ncsDevice.CloseDevice() - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi1/py_api/Graph.html b/docs/ncapi/ncapi1/py_api/Graph.html index 0b91ae8..e46e612 100644 --- a/docs/ncapi/ncapi1/py_api/Graph.html +++ b/docs/ncapi/ncapi1/py_api/Graph.html @@ -1,37 +1,407 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +Graph class [Python NCAPI v1] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Graph class [Python NCAPI v1] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Classes + +
  • + + + + + + -
    + + -

    Graph Class

    +
    + + + + +
    +

    Graph Class

    The Graph class is a container for a neural network graph file that is associated with a particular Intel® Movidius™ Neural Compute Stick (Intel® Movidius™ NCS) device.

    @@ -47,15 +417,23 @@

    Graph methods

  • GetResult
  • - - +
    + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi1/py_api/GraphOption.html b/docs/ncapi/ncapi1/py_api/GraphOption.html index 0dbe62e..2581bfa 100644 --- a/docs/ncapi/ncapi1/py_api/GraphOption.html +++ b/docs/ncapi/ncapi1/py_api/GraphOption.html @@ -1,37 +1,407 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +GraphOption enum [Python NCAPI v1] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +GraphOption enum [Python NCAPI v1] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + + -
    + + -

    GraphOption Enumeration Class

    +
    + + + + +
    +

    GraphOption Enumeration Class

    @@ -98,15 +468,23 @@

    Overview

    - - +
    + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi1/py_api/SetGlobalOption.html b/docs/ncapi/ncapi1/py_api/SetGlobalOption.html index 4a29123..c68660e 100644 --- a/docs/ncapi/ncapi1/py_api/SetGlobalOption.html +++ b/docs/ncapi/ncapi1/py_api/SetGlobalOption.html @@ -1,37 +1,407 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +SetGlobalOption() [Python NCAPI v1] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +SetGlobalOption() [Python NCAPI v1] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + + -
    + + -

    SetGlobalOption

    +
    + + + + +
    +

    SetGlobalOption

    @@ -98,15 +468,23 @@

    Example

    ncs.SetGlobalOption(ncs.GlobalOption.LOGLEVEL, 2) - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi1/py_api/Status.html b/docs/ncapi/ncapi1/py_api/Status.html index cafa59e..267f95a 100644 --- a/docs/ncapi/ncapi1/py_api/Status.html +++ b/docs/ncapi/ncapi1/py_api/Status.html @@ -1,37 +1,407 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +Status enum [Python NCAPI v1] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Status enum [Python NCAPI v1] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + + -
    + + -

    Status Enumeration Class

    +
    + + + + +
    +

    Status Enumeration Class

    @@ -123,15 +493,23 @@

    Overview

    - - +
    + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi1/py_api/readme.html b/docs/ncapi/ncapi1/py_api/readme.html index 87285fa..dd7dae2 100644 --- a/docs/ncapi/ncapi1/py_api/readme.html +++ b/docs/ncapi/ncapi1/py_api/readme.html @@ -1,37 +1,407 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +Intel® Movidius™ Neural Compute SDK Python API v1 | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Intel® Movidius™ Neural Compute SDK Python API v1 + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Classes + +
  • + + + + + + -
    + + -

    Intel® Movidius™ Neural Compute SDK Python API

    +
    + + + + +
    +

    Intel® Movidius™ Neural Compute SDK Python API v1

    The Intel® Movidius™ Neural Compute SDK comes with a Python3 Language API that enables applications that utilize hardware accelerated Deep Neural Networks via the Intel® Movidius™ Neural Compute Stick (Intel® Movidius™ NCS). The API is provided as a single Python script (mvncapi.py), which is placed on the development computer when the SDK is installed. Details of the Python API are provided below and within the documents linked from here.

    @@ -64,15 +434,23 @@

    Classes

    - - +
    + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi1/readme.html b/docs/ncapi/ncapi1/readme.html index fb84996..10453cf 100644 --- a/docs/ncapi/ncapi1/readme.html +++ b/docs/ncapi/ncapi1/readme.html @@ -1,47 +1,516 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + + | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Frameworks + +
  • + + + + + +
  • + Toolkit + +
  • + + + + + +
  • + API + +
  • + + + + + + +
  • + + Examples +
  • + + + + + + +
  • + + Release Notes +
  • + + + + + + +
  • + + Support +
  • + + + + + + -
    + + - +
    + + + +
    + - +
    + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/c_api/ncDeviceClose.html b/docs/ncapi/ncapi2/c_api/ncDeviceClose.html index 5982b03..70a66e5 100644 --- a/docs/ncapi/ncapi2/c_api/ncDeviceClose.html +++ b/docs/ncapi/ncapi2/c_api/ncDeviceClose.html @@ -1,37 +1,521 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +ncDeviceClose() [C NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ncDeviceClose() [C NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Device Functions + +
  • + + + + + +
  • + Fifo Functions +
      + +
    +
  • + + + + + +
  • + Graph Functions + +
  • + + + + + + -
    + + -

    ncDeviceClose()

    +
    + + + + +
    +

    ncDeviceClose()

    @@ -123,15 +607,23 @@

    Example

    } - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/c_api/ncDeviceCreate.html b/docs/ncapi/ncapi2/c_api/ncDeviceCreate.html index 5a55b18..66c58c9 100644 --- a/docs/ncapi/ncapi2/c_api/ncDeviceCreate.html +++ b/docs/ncapi/ncapi2/c_api/ncDeviceCreate.html @@ -1,37 +1,521 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +ncDeviceCreate() [C NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ncDeviceCreate() [C NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + + -
    + + -

    ncDeviceCreate()

    +
    + + + + +
    +

    ncDeviceCreate()

    @@ -133,15 +617,23 @@

    Example

    } - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/c_api/ncDeviceDestroy.html b/docs/ncapi/ncapi2/c_api/ncDeviceDestroy.html index b17aeb6..e4550e8 100644 --- a/docs/ncapi/ncapi2/c_api/ncDeviceDestroy.html +++ b/docs/ncapi/ncapi2/c_api/ncDeviceDestroy.html @@ -1,37 +1,521 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +ncDeviceDestroy() [C NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ncDeviceDestroy() [C NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Device Functions + +
  • + + + + + +
  • + Fifo Functions +
      + +
    +
  • + + + + + +
  • + Graph Functions + +
  • + + + + + + -
    + + -

    ncDeviceDestroy()

    +
    + + + + +
    +

    ncDeviceDestroy()

    @@ -116,15 +600,23 @@

    Example

    } - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/c_api/ncDeviceGetOption.html b/docs/ncapi/ncapi2/c_api/ncDeviceGetOption.html index 58b898a..5d06784 100644 --- a/docs/ncapi/ncapi2/c_api/ncDeviceGetOption.html +++ b/docs/ncapi/ncapi2/c_api/ncDeviceGetOption.html @@ -1,37 +1,521 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +ncDeviceGetOption() [C NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ncDeviceGetOption() [C NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Device Functions + +
  • + + + + + +
  • + Fifo Functions +
      + +
    +
  • + + + + + +
  • + Graph Functions + +
  • + + + + + + -
    + + -

    ncDeviceGetOption()

    +
    + + + + +
    +

    ncDeviceGetOption()

    @@ -198,15 +682,23 @@

    Example

    } - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/c_api/ncDeviceHandle_t.html b/docs/ncapi/ncapi2/c_api/ncDeviceHandle_t.html index b1ba877..c72b412 100644 --- a/docs/ncapi/ncapi2/c_api/ncDeviceHandle_t.html +++ b/docs/ncapi/ncapi2/c_api/ncDeviceHandle_t.html @@ -1,37 +1,521 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +ncDeviceHandle_t struct [C NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ncDeviceHandle_t struct [C NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Device Functions + +
  • + + + + + +
  • + Fifo Functions +
      + +
    +
  • + + + + + +
  • + Graph Functions + +
  • + + + + + + -
    + + -

    struct ncDeviceHandle_t

    +
    + + + + +
    +

    struct ncDeviceHandle_t

    @@ -70,15 +554,23 @@

    Typical Usage

    See the C API Overview for more information about typical API usage.

    - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/c_api/ncDeviceHwVersion_t.html b/docs/ncapi/ncapi2/c_api/ncDeviceHwVersion_t.html index 004559c..280c214 100644 --- a/docs/ncapi/ncapi2/c_api/ncDeviceHwVersion_t.html +++ b/docs/ncapi/ncapi2/c_api/ncDeviceHwVersion_t.html @@ -1,37 +1,521 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +ncDeviceHwVersion_t enum [C NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ncDeviceHwVersion_t enum [C NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Device Functions + +
  • + + + + + +
  • + Fifo Functions +
      + +
    +
  • + + + + + +
  • + Graph Functions + +
  • + + + + + + -
    + + -

    enum ncDeviceHwVersion_t

    +
    + + + + +
    +

    enum ncDeviceHwVersion_t

    @@ -79,15 +563,23 @@

    Overview

    - - +
    + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/c_api/ncDeviceOpen.html b/docs/ncapi/ncapi2/c_api/ncDeviceOpen.html index d2f33b2..195589f 100644 --- a/docs/ncapi/ncapi2/c_api/ncDeviceOpen.html +++ b/docs/ncapi/ncapi2/c_api/ncDeviceOpen.html @@ -1,37 +1,521 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +ncDeviceOpen() [C NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ncDeviceOpen() [C NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Device Functions + +
  • + + + + + +
  • + Fifo Functions +
      + +
    +
  • + + + + + +
  • + Graph Functions + +
  • + + + + + + -
    + + -

    ncDeviceOpen()

    +
    + + + + +
    +

    ncDeviceOpen()

    @@ -128,15 +612,23 @@

    Example

    } - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/c_api/ncDeviceOption_t.html b/docs/ncapi/ncapi2/c_api/ncDeviceOption_t.html index 05842d0..33f175d 100644 --- a/docs/ncapi/ncapi2/c_api/ncDeviceOption_t.html +++ b/docs/ncapi/ncapi2/c_api/ncDeviceOption_t.html @@ -1,37 +1,521 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +ncDeviceOption_t enum [C NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ncDeviceOption_t enum [C NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Device Functions + +
  • + + + + + +
  • + Fifo Functions +
      + +
    +
  • + + + + + +
  • + Graph Functions + +
  • + + + + + + -
    + + -

    enum ncDeviceOption_t

    +
    + + + + +
    +

    enum ncDeviceOption_t

    @@ -74,7 +558,7 @@

    Overview

    - + @@ -175,15 +659,23 @@

    Notes

  • Options prefixed with ‘NC_RO’ have read-only permission and are only gettable.
  • - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/c_api/ncDeviceSetOption.html b/docs/ncapi/ncapi2/c_api/ncDeviceSetOption.html index 5d94ce6..8c490aa 100644 --- a/docs/ncapi/ncapi2/c_api/ncDeviceSetOption.html +++ b/docs/ncapi/ncapi2/c_api/ncDeviceSetOption.html @@ -1,37 +1,521 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +ncDeviceSetOption() [C NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ncDeviceSetOption() [C NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Device Functions + +
  • + + + + + +
  • + Fifo Functions +
      + +
    +
  • + + + + + +
  • + Graph Functions + +
  • + + + + + + -
    + + -

    ncDeviceSetOption()

    +
    + + + + +
    +

    ncDeviceSetOption()

    NC_RO_DEVICE_THERMAL_STATS float[ ] AnyDevice temperatures in degrees Celsius. The size of this array is NC_THERMAL_BUFFER_SIZE.Device temperatures in degrees Celsius. These temperatures are the maximum temperatures for the last NC_THERMAL_BUFFER_SIZE seconds. The size of this array is also NC_THERMAL_BUFFER_SIZE.
    NC_RO_THERMAL_THROTTLING_LEVEL
    @@ -113,15 +597,23 @@

    Notes

    Example

    N/A

    - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/c_api/ncDeviceState_t.html b/docs/ncapi/ncapi2/c_api/ncDeviceState_t.html index 77be338..e73debc 100644 --- a/docs/ncapi/ncapi2/c_api/ncDeviceState_t.html +++ b/docs/ncapi/ncapi2/c_api/ncDeviceState_t.html @@ -1,37 +1,521 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +ncDeviceState_t enum [C NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ncDeviceState_t enum [C NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Device Functions + +
  • + + + + + +
  • + Fifo Functions +
      + +
    +
  • + + + + + +
  • + Graph Functions + +
  • + + + + + + -
    + + -

    enum ncDeviceState_t

    +
    + + + + +
    +

    enum ncDeviceState_t

    @@ -83,15 +567,23 @@

    Overview

    - - +
    + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/c_api/ncFifoAllocate.html b/docs/ncapi/ncapi2/c_api/ncFifoAllocate.html index 1d382f5..d6c9d50 100644 --- a/docs/ncapi/ncapi2/c_api/ncFifoAllocate.html +++ b/docs/ncapi/ncapi2/c_api/ncFifoAllocate.html @@ -1,37 +1,521 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +ncFifoAllocate() [C NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ncFifoAllocate() [C NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Device Functions + +
  • + + + + + +
  • + Fifo Functions +
      + +
    +
  • + + + + + +
  • + Graph Functions + +
  • + + + + + + -
    + + -

    ncFifoAllocate()

    +
    + + + + +
    +

    ncFifoAllocate()

    @@ -95,7 +579,7 @@

    Parameters

    - + @@ -164,15 +648,23 @@

    Example

    } - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/c_api/ncFifoCreate.html b/docs/ncapi/ncapi2/c_api/ncFifoCreate.html index 111576b..36fe837 100644 --- a/docs/ncapi/ncapi2/c_api/ncFifoCreate.html +++ b/docs/ncapi/ncapi2/c_api/ncFifoCreate.html @@ -1,37 +1,521 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +ncFifoCreate() [C NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ncFifoCreate() [C NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Device Functions + +
  • + + + + + +
  • + Fifo Functions +
      + +
    +
  • + + + + + +
  • + Graph Functions + +
  • + + + + + + -
    + + -

    ncFifoCreate()

    +
    + + + + +
    +

    ncFifoCreate()

    tensorDesc struct ncTensorDescriptor_t*A pointer to an ncTensorDescriptor_t struct that describes the expected shape of the elements of the FIFO.A pointer to an ncTensorDescriptor_t struct that describes the expected shape of the elements of the FIFO. You should use ncGraphGetOption() to get arrays of input or output ncTensorDescriptor_t structs that are appropriate for the associated graph.
    numElem
    @@ -147,15 +631,23 @@

    Example

    } - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/c_api/ncFifoDataType_t.html b/docs/ncapi/ncapi2/c_api/ncFifoDataType_t.html index 7dc2092..150ee96 100644 --- a/docs/ncapi/ncapi2/c_api/ncFifoDataType_t.html +++ b/docs/ncapi/ncapi2/c_api/ncFifoDataType_t.html @@ -1,37 +1,521 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +ncFifoDataType_t enum [C NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ncFifoDataType_t enum [C NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Device Functions + +
  • + + + + + +
  • + Fifo Functions +
      + +
    +
  • + + + + + +
  • + Graph Functions + +
  • + + + + + + -
    + + -

    enum ncFifoDataType_t

    +
    + + + + +
    +

    enum ncFifoDataType_t

    @@ -81,15 +565,23 @@

    Overview

    - - +
    + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/c_api/ncFifoDestroy.html b/docs/ncapi/ncapi2/c_api/ncFifoDestroy.html index b0823e8..50b0203 100644 --- a/docs/ncapi/ncapi2/c_api/ncFifoDestroy.html +++ b/docs/ncapi/ncapi2/c_api/ncFifoDestroy.html @@ -1,37 +1,521 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +ncFifoDestroy() [C NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ncFifoDestroy() [C NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Device Functions + +
  • + + + + + +
  • + Fifo Functions +
      + +
    +
  • + + + + + +
  • + Graph Functions + +
  • + + + + + + -
    + + -

    ncFifoDestroy()

    +
    + + + + +
    +

    ncFifoDestroy()

    @@ -158,15 +642,23 @@

    Example

    } - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/c_api/ncFifoGetOption.html b/docs/ncapi/ncapi2/c_api/ncFifoGetOption.html index 6cc67ed..c8f265b 100644 --- a/docs/ncapi/ncapi2/c_api/ncFifoGetOption.html +++ b/docs/ncapi/ncapi2/c_api/ncFifoGetOption.html @@ -1,37 +1,521 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +ncFifoGetOption() [C NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ncFifoGetOption() [C NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Device Functions + +
  • + + + + + +
  • + Fifo Functions +
      + +
    +
  • + + + + + +
  • + Graph Functions + +
  • + + + + + + -
    + + -

    ncFifoGetOption()

    +
    + + + + +
    +

    ncFifoGetOption()

    @@ -221,15 +705,23 @@

    Example

    } - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/c_api/ncFifoHandle_t.html b/docs/ncapi/ncapi2/c_api/ncFifoHandle_t.html index 0125330..649b614 100644 --- a/docs/ncapi/ncapi2/c_api/ncFifoHandle_t.html +++ b/docs/ncapi/ncapi2/c_api/ncFifoHandle_t.html @@ -1,37 +1,521 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +ncFifoHandle_t struct [C NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ncFifoHandle_t struct [C NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Device Functions + +
  • + + + + + +
  • + Fifo Functions +
      + +
    +
  • + + + + + +
  • + Graph Functions + +
  • + + + + + + -
    + + -

    struct ncFifoHandle_t

    +
    + + + + +
    +

    struct ncFifoHandle_t

    @@ -73,15 +557,23 @@

    Typical Usage

    See the C API Overview for more information about typical API usage.

    - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/c_api/ncFifoOption_t.html b/docs/ncapi/ncapi2/c_api/ncFifoOption_t.html index 5788d54..0bdfa79 100644 --- a/docs/ncapi/ncapi2/c_api/ncFifoOption_t.html +++ b/docs/ncapi/ncapi2/c_api/ncFifoOption_t.html @@ -1,37 +1,521 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +ncFifoOption_t enum [C NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ncFifoOption_t enum [C NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Structures + +
  • + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Device Functions + +
  • + + + + + +
  • + Fifo Functions +
      + +
    +
  • + + + + + +
  • + Graph Functions + +
  • + + + + + + + + + -
    +
    + + -

    enum ncFifoOption_t

    + +
    +

    enum ncFifoOption_t

    @@ -113,10 +597,10 @@

    Overview

    - + - + @@ -136,6 +620,12 @@

    Overview

    + + + + + +
    The number of tensors (FIFO elements) in the queue for a writable FIFO.
    NC_RO_FIFO_TENSOR_DESCRIPTORNC_RO_FIFO_GRAPH_TENSOR_DESCRIPTOR struct ncTensorDescriptor_t* N/AA pointer to the FIFO’s ncTensorDescriptor_t struct, which describes the shape of tensors that this FIFO will hold. This is set with ncGraphAllocateWithFifos() or ncFifoAllocate().A pointer to a ncTensorDescriptor_t struct, which describes the shape of tensors that this FIFO will hold. This is set with ncGraphAllocateWithFifos() or ncFifoAllocate().
    NC_RO_FIFO_STATE Unbounded positive int The data size of one FIFO element in bytes.
    NC_RW_FIFO_HOST_TENSOR_DESCRIPTORstruct ncTensorDescriptor_t*N/AA pointer to the application tensor descriptor. This defaults to none strided channel minor.
    @@ -143,18 +633,26 @@

    Notes

    • Options prefixed with ‘NC_RW’ have read/write permission and are both gettable and settable.
    • Options prefixed with ‘NC_RO’ have read-only permission and are only gettable.
    • -
    • All settable FIFO options must be set before ncFifoAllocate() is called for the ncFifoHandle_t struct.
    • +
    • All settable FIFO options except for NC_RW_FIFO_HOST_TENSOR_DESCRIPTOR must be set before ncFifoAllocate() is called for the ncFifoHandle_t struct.
    - - +
    + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/c_api/ncFifoReadElem.html b/docs/ncapi/ncapi2/c_api/ncFifoReadElem.html index 8d5ad1e..bcba571 100644 --- a/docs/ncapi/ncapi2/c_api/ncFifoReadElem.html +++ b/docs/ncapi/ncapi2/c_api/ncFifoReadElem.html @@ -1,37 +1,521 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +ncFifoReadElem() [C NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ncFifoReadElem() [C NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Device Functions + +
  • + + + + + +
  • + Fifo Functions +
      + +
    +
  • + + + + + +
  • + Graph Functions + +
  • + + + + + + -
    + + -

    ncFifoReadElem()

    +
    + + + + +
    +

    ncFifoReadElem()

    @@ -196,15 +680,23 @@

    Example

    } - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/c_api/ncFifoRemoveElem.html b/docs/ncapi/ncapi2/c_api/ncFifoRemoveElem.html index 28f7526..ffbc72b 100644 --- a/docs/ncapi/ncapi2/c_api/ncFifoRemoveElem.html +++ b/docs/ncapi/ncapi2/c_api/ncFifoRemoveElem.html @@ -1,37 +1,521 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +ncFifoRemoveElem() [C NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ncFifoRemoveElem() [C NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Device Functions + +
  • + + + + + +
  • + Fifo Functions +
      + +
    +
  • + + + + + +
  • + Graph Functions + +
  • + + + + + + -
    + + -

    ncFifoRemoveElem()

    +
    + + + + +
    +

    ncFifoRemoveElem()

    @@ -103,15 +587,23 @@

    Notes

    Example

    N/A

    - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/c_api/ncFifoSetOption.html b/docs/ncapi/ncapi2/c_api/ncFifoSetOption.html index f382766..3fb3126 100644 --- a/docs/ncapi/ncapi2/c_api/ncFifoSetOption.html +++ b/docs/ncapi/ncapi2/c_api/ncFifoSetOption.html @@ -1,37 +1,521 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +ncFifoSetOption() [C NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ncFifoSetOption() [C NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Device Functions + +
  • + + + + + +
  • + Fifo Functions +
      + +
    +
  • + + + + + +
  • + Graph Functions + +
  • + + + + + + -
    + + -

    ncFifoSetOption()

    +
    + + + + +
    +

    ncFifoSetOption()

    @@ -175,15 +659,23 @@

    Example

    } - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/c_api/ncFifoState_t.html b/docs/ncapi/ncapi2/c_api/ncFifoState_t.html index e274ca2..f6b58f7 100644 --- a/docs/ncapi/ncapi2/c_api/ncFifoState_t.html +++ b/docs/ncapi/ncapi2/c_api/ncFifoState_t.html @@ -1,37 +1,521 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +ncFifoState_t enum [C NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ncFifoState_t enum [C NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Device Functions + +
  • + + + + + +
  • + Fifo Functions +
      + +
    +
  • + + + + + +
  • + Graph Functions + +
  • + + + + + + -
    + + -

    enum ncFifoState_t

    +
    + + + + +
    +

    enum ncFifoState_t

    @@ -79,15 +563,23 @@

    Overview

    - - +
    + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/c_api/ncFifoType_t.html b/docs/ncapi/ncapi2/c_api/ncFifoType_t.html index e9c2d92..a4c143f 100644 --- a/docs/ncapi/ncapi2/c_api/ncFifoType_t.html +++ b/docs/ncapi/ncapi2/c_api/ncFifoType_t.html @@ -1,37 +1,521 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +ncFifoType_t enum [C NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ncFifoType_t enum [C NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Device Functions + +
  • + + + + + +
  • + Fifo Functions +
      + +
    +
  • + + + + + +
  • + Graph Functions + +
  • + + + + + + -
    + + -

    enum ncFifoType_t

    +
    + + + + +
    +

    enum ncFifoType_t

    @@ -79,15 +563,23 @@

    Overview

    - - +
    + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/c_api/ncFifoWriteElem.html b/docs/ncapi/ncapi2/c_api/ncFifoWriteElem.html index 5f8c229..dda5f5b 100644 --- a/docs/ncapi/ncapi2/c_api/ncFifoWriteElem.html +++ b/docs/ncapi/ncapi2/c_api/ncFifoWriteElem.html @@ -1,37 +1,521 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +ncFifoWriteElem() [C NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ncFifoWriteElem() [C NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Device Functions + +
  • + + + + + +
  • + Fifo Functions +
      + +
    +
  • + + + + + +
  • + Graph Functions + +
  • + + + + + + -
    + + -

    ncFifoWriteElem()

    +
    + + + + +
    +

    ncFifoWriteElem()

    @@ -193,15 +677,23 @@

    Example

    } - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/c_api/ncGlobalGetOption.html b/docs/ncapi/ncapi2/c_api/ncGlobalGetOption.html index ca45e4c..52be55f 100644 --- a/docs/ncapi/ncapi2/c_api/ncGlobalGetOption.html +++ b/docs/ncapi/ncapi2/c_api/ncGlobalGetOption.html @@ -1,37 +1,521 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +ncGlobalGetOption() [C NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ncGlobalGetOption() [C NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Device Functions + +
  • + + + + + +
  • + Fifo Functions +
      + +
    +
  • + + + + + +
  • + Graph Functions + +
  • + + + + + + -
    + + -

    ncGlobalGetOption()

    +
    + + + + +
    +

    ncGlobalGetOption()

    @@ -184,15 +668,23 @@

    Example

    } - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/c_api/ncGlobalOption_t.html b/docs/ncapi/ncapi2/c_api/ncGlobalOption_t.html index 9e96e5d..2519baa 100644 --- a/docs/ncapi/ncapi2/c_api/ncGlobalOption_t.html +++ b/docs/ncapi/ncapi2/c_api/ncGlobalOption_t.html @@ -1,37 +1,521 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +ncGlobalOption_t enum [C NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ncGlobalOption_t enum [C NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Device Functions + +
  • + + + + + +
  • + Fifo Functions +
      + +
    +
  • + + + + + +
  • + Graph Functions + +
  • + + + + + + -
    + + -

    enum ncGlobalOption_t

    +
    + + + + +
    +

    enum ncGlobalOption_t

    @@ -58,7 +542,7 @@

    enum ncGlobalOption_t

    Overview

    -

    The ncGlobalOption_t enumeration defines application-level options that can be read with ncGlobalGetOpion() or set with ncGlobalSetOption().

    +

    The ncGlobalOption_t enumeration defines application-level options that can be read with ncGlobalGetOption() or set with ncGlobalSetOption().

    @@ -73,8 +557,8 @@

    Overview

    - - + + @@ -91,15 +575,23 @@

    Notes

  • Options prefixed with ‘NC_RO’ have read-only permission and are only gettable.
  • - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/c_api/ncGlobalSetOption.html b/docs/ncapi/ncapi2/c_api/ncGlobalSetOption.html index 30dce87..35256d6 100644 --- a/docs/ncapi/ncapi2/c_api/ncGlobalSetOption.html +++ b/docs/ncapi/ncapi2/c_api/ncGlobalSetOption.html @@ -1,37 +1,521 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +ncGlobalSetOption() [C NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ncGlobalSetOption() [C NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + + -
    + + -

    ncGlobalSetOption()

    +
    + + + + +
    +

    ncGlobalSetOption()

    NC_RW_LOG_LEVEL int0, 1, 2, 3, 4The logging level for the application:
    0 = MVLOG_DEBUG, debug and above (full verbosity)
    1 = MVLOG_INFO, info and above
    2 = MVLOG_WARN, warnings and above (default)
    3 = MVLOG_ERROR, errors and above
    4 = MVLOG_FATAL, fatal only
    Values in the ncLogLevel_t enumerationThe logging level for the application.
    NC_RO_API_VERSION
    @@ -108,9 +592,9 @@

    Example

    intmain(intargc,char**argv){ - intloggingLevel=0; - unsignedintlen=sizeof(int);ncStatus_tstatus; + intloggingLevel=NC_LOG_DEBUG; + unsignedintlen=sizeof(int);status=ncGlobalSetOption(NC_RW_LOG_LEVEL,&loggingLevel,sizeof(int));if(status==NC_OK) @@ -118,25 +602,26 @@

    Example

    // loggingLevel option successfully set.printf("Logging level set to: %d\n",loggingLevel);} - - status=ncGlobalGetOption(NC_RW_LOG_LEVEL,&loggingLevel,&len); - if(status==NC_OK) - { - // loggingLevel should be set to the option value now. - printf("Logging level is: %d\n",loggingLevel); - }} - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/c_api/ncGraphAllocate.html b/docs/ncapi/ncapi2/c_api/ncGraphAllocate.html index 46f971a..9e590a0 100644 --- a/docs/ncapi/ncapi2/c_api/ncGraphAllocate.html +++ b/docs/ncapi/ncapi2/c_api/ncGraphAllocate.html @@ -1,37 +1,521 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +ncGraphAllocate() [C NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ncGraphAllocate() [C NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Device Functions + +
  • + + + + + +
  • + Fifo Functions +
      + +
    +
  • + + + + + +
  • + Graph Functions + +
  • + + + + + + -
    + + -

    ncGraphAllocate()

    +
    + + + + +
    +

    ncGraphAllocate()

    @@ -154,15 +638,23 @@

    Example

    } - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/c_api/ncGraphAllocateWithFifos.html b/docs/ncapi/ncapi2/c_api/ncGraphAllocateWithFifos.html index aad6e5e..96c1c2e 100644 --- a/docs/ncapi/ncapi2/c_api/ncGraphAllocateWithFifos.html +++ b/docs/ncapi/ncapi2/c_api/ncGraphAllocateWithFifos.html @@ -1,37 +1,521 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +ncGraphAllocateWithFifos() [C NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ncGraphAllocateWithFifos() [C NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Device Functions + +
  • + + + + + +
  • + Fifo Functions +
      + +
    +
  • + + + + + +
  • + Graph Functions + +
  • + + + + + + -
    + + -

    ncGraphAllocateWithFifos()

    +
    + + + + +
    +

    ncGraphAllocateWithFifos()

    @@ -199,15 +683,23 @@

    Example

    } - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/c_api/ncGraphAllocateWithFifosEx.html b/docs/ncapi/ncapi2/c_api/ncGraphAllocateWithFifosEx.html index 93ebd8e..e680aee 100644 --- a/docs/ncapi/ncapi2/c_api/ncGraphAllocateWithFifosEx.html +++ b/docs/ncapi/ncapi2/c_api/ncGraphAllocateWithFifosEx.html @@ -1,37 +1,521 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +ncGraphAllocateWithFifosEx() [C NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ncGraphAllocateWithFifosEx() [C NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Device Functions + +
  • + + + + + +
  • + Fifo Functions +
      + +
    +
  • + + + + + +
  • + Graph Functions + +
  • + + + + + + -
    + + -

    ncGraphAllocateWithFifosEx()

    +
    + + + + +
    +

    ncGraphAllocateWithFifosEx()

    @@ -229,15 +713,23 @@

    Example

    } - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/c_api/ncGraphCreate.html b/docs/ncapi/ncapi2/c_api/ncGraphCreate.html index 5d40163..2a1622e 100644 --- a/docs/ncapi/ncapi2/c_api/ncGraphCreate.html +++ b/docs/ncapi/ncapi2/c_api/ncGraphCreate.html @@ -1,37 +1,521 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +ncGraphCreate() [C NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ncGraphCreate() [C NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Device Functions + +
  • + + + + + +
  • + Fifo Functions +
      + +
    +
  • + + + + + +
  • + Graph Functions + +
  • + + + + + + -
    + + -

    ncGraphCreate()

    +
    + + + + +
    +

    ncGraphCreate()

    @@ -137,15 +621,23 @@

    Example

    } - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/c_api/ncGraphDestroy.html b/docs/ncapi/ncapi2/c_api/ncGraphDestroy.html index 4af3077..70b6cab 100644 --- a/docs/ncapi/ncapi2/c_api/ncGraphDestroy.html +++ b/docs/ncapi/ncapi2/c_api/ncGraphDestroy.html @@ -1,37 +1,521 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +ncGraphDestroy() [C NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ncGraphDestroy() [C NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Device Functions + +
  • + + + + + +
  • + Fifo Functions +
      + +
    +
  • + + + + + +
  • + Graph Functions + +
  • + + + + + + -
    + + -

    ncGraphDestroy()

    +
    + + + + +
    +

    ncGraphDestroy()

    @@ -123,15 +607,23 @@

    Example

    } - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/c_api/ncGraphGetOption.html b/docs/ncapi/ncapi2/c_api/ncGraphGetOption.html index 2eca509..6f9e791 100644 --- a/docs/ncapi/ncapi2/c_api/ncGraphGetOption.html +++ b/docs/ncapi/ncapi2/c_api/ncGraphGetOption.html @@ -1,37 +1,521 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +ncGraphGetOption() [C NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ncGraphGetOption() [C NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Device Functions + +
  • + + + + + +
  • + Fifo Functions +
      + +
    +
  • + + + + + +
  • + Graph Functions + +
  • + + + + + + -
    + + -

    ncGraphGetOption()

    +
    + + + + +
    +

    ncGraphGetOption()

    @@ -194,15 +678,23 @@

    Example

    } - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/c_api/ncGraphHandle_t.html b/docs/ncapi/ncapi2/c_api/ncGraphHandle_t.html index ae56674..d17efd5 100644 --- a/docs/ncapi/ncapi2/c_api/ncGraphHandle_t.html +++ b/docs/ncapi/ncapi2/c_api/ncGraphHandle_t.html @@ -1,37 +1,521 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +ncGraphHandle_t struct [C NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ncGraphHandle_t struct [C NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Device Functions + +
  • + + + + + +
  • + Fifo Functions +
      + +
    +
  • + + + + + +
  • + Graph Functions + +
  • + + + + + + -
    + + -

    struct ncGraphHandle_t

    +
    + + + + +
    +

    struct ncGraphHandle_t

    @@ -77,15 +561,23 @@

    Typical Usage

    See the C API Overview for more information about typical API usage.

    - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/c_api/ncGraphOption_t.html b/docs/ncapi/ncapi2/c_api/ncGraphOption_t.html index 6962f95..74c3005 100644 --- a/docs/ncapi/ncapi2/c_api/ncGraphOption_t.html +++ b/docs/ncapi/ncapi2/c_api/ncGraphOption_t.html @@ -1,37 +1,521 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +ncGraphOption_t enum [C NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ncGraphOption_t enum [C NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Device Functions + +
  • + + + + + +
  • + Fifo Functions +
      + +
    +
  • + + + + + +
  • + Graph Functions + +
  • + + + + + + -
    + + -

    ncGraphOption_t enumeration

    +
    + + + + +
    +

    ncGraphOption_t enumeration

    @@ -80,7 +564,7 @@

    Overview

    - + @@ -152,15 +636,23 @@

    Notes

  • Options prefixed with ‘NC_RO’ have read-only permission and are only gettable.
  • - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/c_api/ncGraphQueueInference.html b/docs/ncapi/ncapi2/c_api/ncGraphQueueInference.html index d3ed31d..fdfa1f9 100644 --- a/docs/ncapi/ncapi2/c_api/ncGraphQueueInference.html +++ b/docs/ncapi/ncapi2/c_api/ncGraphQueueInference.html @@ -1,37 +1,521 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +ncGraphQueueInference() [C NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ncGraphQueueInference() [C NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Device Functions + +
  • + + + + + +
  • + Fifo Functions +
      + +
    +
  • + + + + + +
  • + Graph Functions + +
  • + + + + + + -
    + + -

    ncGraphQueueInference()

    +
    + + + + +
    +

    ncGraphQueueInference()

    NC_RO_GRAPH_TIME_TAKEN float[ ] Positive floatsThe times taken per graph layer for the last inference. The size of this array is the value of the NC_RO_GRAPH_TIME_TAKEN_ARRAY_SIZE option.The times taken per graph layer for the last inference in milliseconds. The size of this array is the value of the NC_RO_GRAPH_TIME_TAKEN_ARRAY_SIZE option.
    NC_RO_GRAPH_INPUT_COUNT
    @@ -197,15 +681,23 @@

    Example

    } - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/c_api/ncGraphQueueInferenceWithFifoElem.html b/docs/ncapi/ncapi2/c_api/ncGraphQueueInferenceWithFifoElem.html index 551f87a..19293f4 100644 --- a/docs/ncapi/ncapi2/c_api/ncGraphQueueInferenceWithFifoElem.html +++ b/docs/ncapi/ncapi2/c_api/ncGraphQueueInferenceWithFifoElem.html @@ -1,37 +1,521 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +ncGraphQueueInferenceWithFifoElem() [C NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ncGraphQueueInferenceWithFifoElem() [C NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Device Functions + +
  • + + + + + +
  • + Fifo Functions +
      + +
    +
  • + + + + + +
  • + Graph Functions + +
  • + + + + + + -
    + + -

    ncGraphQueueInferenceWithFifoElem()

    +
    + + + + +
    +

    ncGraphQueueInferenceWithFifoElem()

    @@ -194,15 +678,23 @@

    Example

    } - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/c_api/ncGraphSetOption.html b/docs/ncapi/ncapi2/c_api/ncGraphSetOption.html index 88cb6f5..a1e2092 100644 --- a/docs/ncapi/ncapi2/c_api/ncGraphSetOption.html +++ b/docs/ncapi/ncapi2/c_api/ncGraphSetOption.html @@ -1,37 +1,521 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +ncGraphSetOption() [C NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ncGraphSetOption() [C NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Device Functions + +
  • + + + + + +
  • + Fifo Functions +
      + +
    +
  • + + + + + +
  • + Graph Functions + +
  • + + + + + + -
    + + -

    ncGraphSetOption()

    +
    + + + + +
    +

    ncGraphSetOption()

    @@ -114,15 +598,23 @@

    Notes

    Example

    N/A

    - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/c_api/ncGraphState_t.html b/docs/ncapi/ncapi2/c_api/ncGraphState_t.html index b87c6b0..cdbb2d9 100644 --- a/docs/ncapi/ncapi2/c_api/ncGraphState_t.html +++ b/docs/ncapi/ncapi2/c_api/ncGraphState_t.html @@ -1,37 +1,521 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +ncGraphState_t enum [C NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ncGraphState_t enum [C NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Device Functions + +
  • + + + + + +
  • + Fifo Functions +
      + +
    +
  • + + + + + +
  • + Graph Functions + +
  • + + + + + + -
    + + -

    enum ncGraphState_t

    +
    + + + + +
    +

    enum ncGraphState_t

    @@ -87,15 +571,23 @@

    Overview

    - - +
    + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/c_api/ncLogLevel_t.html b/docs/ncapi/ncapi2/c_api/ncLogLevel_t.html new file mode 100755 index 0000000..5d45033 --- /dev/null +++ b/docs/ncapi/ncapi2/c_api/ncLogLevel_t.html @@ -0,0 +1,595 @@ + + + + + + + + + | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + +
    + + + + + + + +
    + + + + +
    +

    enum ncLogLevel_t

    + + + + + + + + + + + + + + + + + + + + + + +
    InfoValue
    Headermvnc.h
    Version2.0
    See alsoncGlobalOption_t, ncGlobalGetOption(), ncGlobalSetOption()
    + +

    Overview

    + +

    The ncLogLevel_t enumeration defines application logging levels, which can be read with ncGlobalGetOption() or set with ncGlobalSetOption().

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    ConstantDescription
    NC_LOG_DEBUGDebug and above (full verbosity).
    NC_LOG_INFOInfo and above.
    NC_LOG_WARNWarning and above (default).
    NC_LOG_ERRORErrors and above.
    NC_LOG_FATALFatal only.
    + +
    + +
    + +
    + +
    + + + +
    +
    + +
    +
    + + diff --git a/docs/ncapi/ncapi2/c_api/ncStatus_t.html b/docs/ncapi/ncapi2/c_api/ncStatus_t.html index fc15f5f..ffca7db 100644 --- a/docs/ncapi/ncapi2/c_api/ncStatus_t.html +++ b/docs/ncapi/ncapi2/c_api/ncStatus_t.html @@ -1,37 +1,521 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +ncStatus_t enum [C NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ncStatus_t enum [C NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Device Functions + +
  • + + + + + +
  • + Fifo Functions +
      + +
    +
  • + + + + + +
  • + Graph Functions + +
  • + + + + + + -
    + + -

    enum ncStatus_t

    +
    + + + + +
    +

    enum ncStatus_t

    @@ -135,15 +619,23 @@

    Overview

    - - +
    + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/c_api/ncTensorDescriptor_t.html b/docs/ncapi/ncapi2/c_api/ncTensorDescriptor_t.html index c63472a..519f4b4 100644 --- a/docs/ncapi/ncapi2/c_api/ncTensorDescriptor_t.html +++ b/docs/ncapi/ncapi2/c_api/ncTensorDescriptor_t.html @@ -1,37 +1,521 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +ncTensorDescriptor_t struct [C NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ncTensorDescriptor_t struct [C NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Device Functions + +
  • + + + + + +
  • + Fifo Functions +
      + +
    +
  • + + + + + +
  • + Graph Functions + +
  • + + + + + + -
    + + -

    struct ncTensorDescriptor_t

    +
    + + + + +
    +

    struct ncTensorDescriptor_t

    @@ -71,45 +555,101 @@

    Overview

    - + - + - + - + - + + + + + + + + + + + + + + + + + + + + +
    n unsigned intThe number of images in the batch.The number of tensors in the batch.

    Only 1 currently supported.
    c unsigned intThe number of channels in the image. For image tensors, this is the number of channels per pixel.For image tensors, this is the number of channels per pixel. For non-image tensors, this is always 1.
    w unsigned intThe width of the image. For non-image tensors, this is always 1.For image tensors, this is the width in pixels. For non-image tensors, this is always 1.
    h unsigned intThe height of the image. For non-image tensors, this is always 1.The height of the tensor. For non-image tensors, this is always 1.
    totalSize unsigned intThe total size of the data. This is the number of bytes required to hold the entire tensor.For image tensors, this is the height in pixels. For non-image tensors, this is always 1.
    cStrideunsigned intStride (distance between elements in bytes) in the channel dimension.
    wStrideunsigned intStride (distance between elements in bytes) in the horizontal dimension.
    hStrideunsigned intStride (distance between elements in bytes) in the vertical dimension.
    dataTypencFifoDataType_tThe tensor’s data type (FP16 or FP32).

    Notes

    +

    Examples

    + +
    ... 
    +
    +// The n/c/w/h fields for the RW_HOST_TENSOR_DESCRIPTOR must match the dimensions of the RO_GRAPH_TENSOR_DESCRIPTOR, so start with that
    +struct ncTensorDescriptor_t inputTensorDesc;
    +unsigned int length = sizeof(struct ncTensorDescriptor_t);
    +ncGraphGetOption(graphHandle, NC_RO_GRAPH_INPUT_TENSOR_DESCRIPTORS, &inputTensorDesc,  &length);
    +struct ncTensorDescriptor_t hostTensorDesc = inputTensorDesc;
    +
    +// Set the tensor data type
    +hostTensorDesc.dataType = NC_FIFO_FP32;
    +
    +// For channel-minor data with FP32 data type, there are 4 bytes between each element of the channel
    +// The horizontal stride (wStride), vertical stride (hStride), and totalSize can be calculated from there
    +hostTensorDesc.cStride = sizeof(float); //FP32
    +hostTensorDesc.wStride = hostTensorDesc.cStride * hostTensorDesc.c;
    +hostTensorDesc.hStride = hostTensorDesc.wStride * hostTensorDesc.w;
    +hostTensorDesc.totalSize = hostTensorDesc.hStride * hostTensorDesc.h;
    +
    +// Set the option
    +length = sizeof(struct ncTensorDescriptor_t);
    +ncFifoSetOption(bufferIn, NC_RW_FIFO_HOST_TENSOR_DESCRIPTOR, &hostTensorDesc, length);
     
    -      
    +...
    +
    + +
    + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/c_api/readme.html b/docs/ncapi/ncapi2/c_api/readme.html index 4f1114d..53a1cd8 100644 --- a/docs/ncapi/ncapi2/c_api/readme.html +++ b/docs/ncapi/ncapi2/c_api/readme.html @@ -1,40 +1,527 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +Intel® Movidius™ Neural Compute SDK C API v2 | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Intel® Movidius™ Neural Compute SDK C API v2 + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + + + + + + +
    + + -
    + +
    +

    Intel® Movidius™ Neural Compute SDK C API v2

    -

    Intel® Movidius™ Neural Compute SDK C API

    +

    The Intel® Movidius™ Neural Compute SDK (Intel® Movidius™ NCSDK) comes with a C language API (API) that enables developers to create applications in C or C++ that utilize hardware-accelerated Deep Neural Networks via neural compute devices like the Intel® Movidius™ Neural Compute Stick.

    -

    The Intel® Movidius™ Neural Compute SDK (Intel® Movidius™ NCSDK) comes with a C language API (API) that enables developers to create applications in C or C++ that utilize hardware-accelerated Deep Neural Networks via neural compute devices like the Intel® Movidius™ Neural Compute Stick. -The C API is provided as a header file (mvnc.h) and an associated library file (libmvnc.so), both of which are placed on the development computer when the NCSDK is installed.

    +

    The C API is provided as a header file (mvnc.h) and an associated library file (libmvnc.so), both of which are placed on the development computer when the NCSDK is installed.

    + +

    Documentation

    @@ -86,6 +573,10 @@

    Documentation

    ncGraphState_t Contains network graph NCAPI states. + + ncLogLevel_t + Contains application logging levels. + ncStatus_t Contains status code return values for NCAPI functions. @@ -325,7 +816,7 @@

    2. Set up a neural compute device

    3. Set up a network graph and associated FIFO queues for the device

    The NCSDK requires a neural network graph file compiled with the mvNCCompile NCSDK tool. -Many network models from TensorFlow™ and Caffe are supported. +Many network models from TensorFlow* and Caffe are supported. See Configuring Your Network for the Intel® Movidius™ Neural Compute SDK for more information about preparing your network model for use with the NCSDK.

    When you have a compiled graph, load the graph file data to a buffer.

    @@ -446,15 +937,23 @@

    6. Clean up

    }
    - -
    + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/py_api/Device.close.html b/docs/ncapi/ncapi2/py_api/Device.close.html index 88fa392..77e51ce 100644 --- a/docs/ncapi/ncapi2/py_api/Device.close.html +++ b/docs/ncapi/ncapi2/py_api/Device.close.html @@ -1,37 +1,544 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +Device.close() [Python NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Device.close() [Python NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Structures + +
  • + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Classes + +
  • + + + + + + + + + -
    +
    + + -

    Device.close()

    + +
    +

    Device.close()

    @@ -105,15 +612,23 @@

    Example

    device.destroy() - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/py_api/Device.destroy.html b/docs/ncapi/ncapi2/py_api/Device.destroy.html index 269de5b..5903959 100644 --- a/docs/ncapi/ncapi2/py_api/Device.destroy.html +++ b/docs/ncapi/ncapi2/py_api/Device.destroy.html @@ -1,37 +1,544 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +Device.destroy() [Python NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Device.destroy() [Python NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Structures + +
  • + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Classes + +
  • + + + + + + + + + -
    +
    + + -

    Device.destroy()

    + +
    +

    Device.destroy()

    @@ -103,15 +610,23 @@

    Example

    device.destroy() - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/py_api/Device.get_option.html b/docs/ncapi/ncapi2/py_api/Device.get_option.html index 01509b4..d02126a 100644 --- a/docs/ncapi/ncapi2/py_api/Device.get_option.html +++ b/docs/ncapi/ncapi2/py_api/Device.get_option.html @@ -1,37 +1,544 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +Device.get_option() [Python NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Device.get_option() [Python NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Structures + +
  • + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Classes + +
  • + + + + + + + + + -
    +
    + + -

    Device.get_option()

    + +
    +

    Device.get_option()

    @@ -116,15 +623,23 @@

    Example

    device.destroy() - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/py_api/Device.html b/docs/ncapi/ncapi2/py_api/Device.html index c28cef7..ea06141 100644 --- a/docs/ncapi/ncapi2/py_api/Device.html +++ b/docs/ncapi/ncapi2/py_api/Device.html @@ -1,37 +1,544 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +Device class [Python NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Device class [Python NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Structures + +
  • + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Classes + +
  • + + + + + + + + + -
    +
    + + -

    class Device

    + +
    +

    class Device

    @@ -160,15 +667,23 @@

    Example

    device.destroy() - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/py_api/Device.open.html b/docs/ncapi/ncapi2/py_api/Device.open.html index a1182ef..01bf39a 100644 --- a/docs/ncapi/ncapi2/py_api/Device.open.html +++ b/docs/ncapi/ncapi2/py_api/Device.open.html @@ -1,37 +1,544 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +Device.open() [Python NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Device.open() [Python NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Structures + +
  • + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Classes + +
  • + + + + + + + + + -
    +
    + + -

    Device.open()

    + +
    +

    Device.open()

    @@ -107,15 +614,23 @@

    Example

    device.destroy() - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/py_api/Device.set_option.html b/docs/ncapi/ncapi2/py_api/Device.set_option.html index 2b02d4e..cf17065 100644 --- a/docs/ncapi/ncapi2/py_api/Device.set_option.html +++ b/docs/ncapi/ncapi2/py_api/Device.set_option.html @@ -1,37 +1,544 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +Device.set_option() [Python NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Device.set_option() [Python NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Structures + +
  • + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Classes + +
  • + + + + + + + + + -
    +
    + + -

    Device.set_option()

    + +
    +

    Device.set_option()

    @@ -107,15 +614,23 @@

    Notes

    Example

    N/A

    - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/py_api/DeviceHwVersion.html b/docs/ncapi/ncapi2/py_api/DeviceHwVersion.html index 2641660..6e335e3 100644 --- a/docs/ncapi/ncapi2/py_api/DeviceHwVersion.html +++ b/docs/ncapi/ncapi2/py_api/DeviceHwVersion.html @@ -1,37 +1,544 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +enum DeviceHwVersion [Python NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +enum DeviceHwVersion [Python NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Structures + +
  • + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Classes + +
  • + + + + + + + + + -
    +
    + + -

    class DeviceHwVersion(enum.Enum)

    + +
    +

    class DeviceHwVersion(enum.Enum)

    @@ -81,15 +588,23 @@

    class DeviceHwVersion(enum.Enum)

    - - +
    + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/py_api/DeviceOption.html b/docs/ncapi/ncapi2/py_api/DeviceOption.html index 977757c..198e99a 100644 --- a/docs/ncapi/ncapi2/py_api/DeviceOption.html +++ b/docs/ncapi/ncapi2/py_api/DeviceOption.html @@ -1,37 +1,544 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +enum DeviceOption [Python NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +enum DeviceOption [Python NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Structures + +
  • + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Classes + +
  • + + + + + + + + + -
    +
    + + -

    class DeviceOption(enum.Enum)

    + +
    +

    class DeviceOption(enum.Enum)

    @@ -76,7 +583,7 @@

    class DeviceOption(enum.Enum)

    - + @@ -177,15 +684,23 @@

    Notes

  • Options prefixed with ‘RO’ have read-only permission and are only gettable.
  • - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/py_api/DeviceState.html b/docs/ncapi/ncapi2/py_api/DeviceState.html index 7a4d44a..01a4494 100644 --- a/docs/ncapi/ncapi2/py_api/DeviceState.html +++ b/docs/ncapi/ncapi2/py_api/DeviceState.html @@ -1,37 +1,544 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +enum DeviceState [Python NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +enum DeviceState [Python NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Structures + +
  • + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Classes + +
  • + + + + + + + + + -
    +
    + + -

    class DeviceState(enum.Enum)

    + +
    +

    class DeviceState(enum.Enum)

    RO_THERMAL_STATS numpy.ndarray of floats AnyDevice temperatures in degrees Celsius.Device temperatures in degrees Celsius. These are the maximum temperatures for the last THERMAL_BUFFER_SIZE (global variable) seconds.
    RO_THERMAL_THROTTLING_LEVEL
    @@ -85,15 +592,23 @@

    class DeviceState(enum.Enum)

    - - +
    + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/py_api/Fifo.allocate.html b/docs/ncapi/ncapi2/py_api/Fifo.allocate.html index bae9731..6262d13 100644 --- a/docs/ncapi/ncapi2/py_api/Fifo.allocate.html +++ b/docs/ncapi/ncapi2/py_api/Fifo.allocate.html @@ -1,37 +1,544 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +Fifo.allocate() [Python NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Fifo.allocate() [Python NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Structures + +
  • + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Classes + +
  • + + + + + + + + + -
    +
    + + -

    Fifo.allocate()

    + +
    +

    Fifo.allocate()

    @@ -91,7 +598,7 @@

    Parameters

    - + @@ -143,15 +650,23 @@

    Example

    # - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/py_api/Fifo.destroy.html b/docs/ncapi/ncapi2/py_api/Fifo.destroy.html index 1719a6a..93f1152 100644 --- a/docs/ncapi/ncapi2/py_api/Fifo.destroy.html +++ b/docs/ncapi/ncapi2/py_api/Fifo.destroy.html @@ -1,37 +1,544 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +Fifo.destroy() [Python NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Fifo.destroy() [Python NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Structures + +
  • + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Classes + +
  • + + + + + + + + + -
    +
    + + -

    Fifo.destroy()

    + +
    +

    Fifo.destroy()

    tensor_desc TensorDescriptorA TensorDescriptor structure that describes the elements of the Fifo.

    Graph.get_option() with GraphOption.RO_INPUT_TENSOR_DESCRIPTORS or GraphOption.RO_OUTPUT_TENSOR_DESCRIPTORS will return a list of TensorDescriptors for that Graph.
    A TensorDescriptor structure that describes the elements that a Graph will read from this Fifo (for an input Fifo) or write to this Fifo (for an output Fifo). You should use Graph.get_option() to get lists of input or output TensorDescriptors that are appropriate for the associated Graph.
    n_elem
    @@ -110,15 +617,23 @@

    Example

    # - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/py_api/Fifo.get_option.html b/docs/ncapi/ncapi2/py_api/Fifo.get_option.html index 75bfd8b..b2c7baa 100644 --- a/docs/ncapi/ncapi2/py_api/Fifo.get_option.html +++ b/docs/ncapi/ncapi2/py_api/Fifo.get_option.html @@ -1,37 +1,544 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +Fifo.get_option() [Python NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Fifo.get_option() [Python NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Structures + +
  • + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Classes + +
  • + + + + + + + + + -
    +
    + + -

    Fifo.get_option()

    + +
    +

    Fifo.get_option()

    @@ -113,15 +620,23 @@

    Example

    fifo.destroy() - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/py_api/Fifo.html b/docs/ncapi/ncapi2/py_api/Fifo.html index 9af2f77..27a774e 100644 --- a/docs/ncapi/ncapi2/py_api/Fifo.html +++ b/docs/ncapi/ncapi2/py_api/Fifo.html @@ -1,37 +1,544 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +Fifo class [Python NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Fifo class [Python NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Classes + +
  • + + + + + + + + + -
    +
    + + -

    class Fifo

    + +
    +

    class Fifo

    @@ -233,15 +740,23 @@

    Examples

    # - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/py_api/Fifo.read_elem.html b/docs/ncapi/ncapi2/py_api/Fifo.read_elem.html index efbfcc3..1a2625a 100644 --- a/docs/ncapi/ncapi2/py_api/Fifo.read_elem.html +++ b/docs/ncapi/ncapi2/py_api/Fifo.read_elem.html @@ -1,37 +1,544 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +Fifo.read_elem() [Python NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Fifo.read_elem() [Python NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Structures + +
  • + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Classes + +
  • + + + + + + + + + -
    +
    + + -

    Fifo.read_elem()

    + +
    +

    Fifo.read_elem()

    @@ -124,15 +631,23 @@

    Example

    # - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/py_api/Fifo.remove_elem.html b/docs/ncapi/ncapi2/py_api/Fifo.remove_elem.html index c0aa8d3..540a84a 100644 --- a/docs/ncapi/ncapi2/py_api/Fifo.remove_elem.html +++ b/docs/ncapi/ncapi2/py_api/Fifo.remove_elem.html @@ -1,37 +1,544 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +Fifo.remove_elem() [Python NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Fifo.remove_elem() [Python NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Structures + +
  • + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Classes + +
  • + + + + + + + + + -
    +
    + + -

    Fifo.remove_elem()

    + +
    +

    Fifo.remove_elem()

    @@ -90,15 +597,23 @@

    Notes

    Example

    N/A

    - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/py_api/Fifo.set_option.html b/docs/ncapi/ncapi2/py_api/Fifo.set_option.html index 0250c03..33cdde6 100644 --- a/docs/ncapi/ncapi2/py_api/Fifo.set_option.html +++ b/docs/ncapi/ncapi2/py_api/Fifo.set_option.html @@ -1,37 +1,544 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +Fifo.set_option() [Python NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Fifo.set_option() [Python NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Structures + +
  • + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Classes + +
  • + + + + + + + + + -
    +
    + + -

    Fifo.set_option()

    + +
    +

    Fifo.set_option()

    @@ -120,15 +627,23 @@

    Example

    fifo.destroy() - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/py_api/Fifo.write_elem.html b/docs/ncapi/ncapi2/py_api/Fifo.write_elem.html index 7ac879f..1c4fdd5 100644 --- a/docs/ncapi/ncapi2/py_api/Fifo.write_elem.html +++ b/docs/ncapi/ncapi2/py_api/Fifo.write_elem.html @@ -1,37 +1,544 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +Fifo.write_elem() [Python NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Fifo.write_elem() [Python NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Structures + +
  • + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Classes + +
  • + + + + + + + + + -
    +
    + + -

    Fifo.write_elem()

    + +
    +

    Fifo.write_elem()

    @@ -142,15 +649,23 @@

    Example

    # - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/py_api/FifoDataType.html b/docs/ncapi/ncapi2/py_api/FifoDataType.html index 9b8d583..4d05f06 100644 --- a/docs/ncapi/ncapi2/py_api/FifoDataType.html +++ b/docs/ncapi/ncapi2/py_api/FifoDataType.html @@ -1,37 +1,544 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +FifoDataType enum [Python NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +FifoDataType enum [Python NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Structures + +
  • + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Classes + +
  • + + + + + + + + + -
    +
    + + -

    class FifoDataType(enum.Enum)

    + +
    +

    class FifoDataType(enum.Enum)

    @@ -83,15 +590,23 @@

    class FifoDataType(enum.Enum)

    - - +
    + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/py_api/FifoOption.html b/docs/ncapi/ncapi2/py_api/FifoOption.html index d252d0d..381290e 100644 --- a/docs/ncapi/ncapi2/py_api/FifoOption.html +++ b/docs/ncapi/ncapi2/py_api/FifoOption.html @@ -1,37 +1,544 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +FifoOption enum [Python NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +FifoOption enum [Python NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Structures + +
  • + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Classes + +
  • + + + + + + + + + -
    +
    + + -

    class FifoOption(enum.Enum)

    + +
    +

    class FifoOption(enum.Enum)

    @@ -115,10 +622,10 @@

    class FifoOption(enum.Enum)

    - + - + @@ -132,6 +639,12 @@

    class FifoOption(enum.Enum)

    + + + + + +
    The number of tensors (Fifo elements0 in the queue for a writable Fifo.
    RO_TENSOR_DESCRIPTORRO_GRAPH_TENSOR_DESCRIPTOR TensorDescriptor N/AThe Fifo’s TensorDescriptor, which describes the shape of tensors that this Fifo will hold. This is set with Graph.allocate_with_fifos() or Fifo.allocate().A TensorDescriptor, which describes the shape of tensors that this Fifo will hold. This is set with Graph.allocate_with_fifos() or Fifo.allocate().
    RO_STATE Fifo name string The name of the Fifo that was set when the Fifo was created.
    RW_HOST_TENSOR_DESCRIPTORTensorDescriptorN/AThe application tensor descriptor. This defaults to channel minor format (RGB/BGR) with 32FP FifoDataType. See TensorDescriptor for more information.
    @@ -139,18 +652,26 @@

    Notes

    • Options prefixed with ‘RW’ have read/write permission and are both gettable and settable.
    • Options prefixed with ‘RO’ have read-only permission and are only gettable.
    • -
    • All settable Fifo options must be set before Fifo.allocate() is called for this Fifo.
    • +
    • All settable Fifo options except for RW_HOST_TENSOR_DESCRIPTOR must be set before Fifo.allocate() is called for this Fifo.
    - - +
    + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/py_api/FifoState.html b/docs/ncapi/ncapi2/py_api/FifoState.html index a14244c..e420237 100644 --- a/docs/ncapi/ncapi2/py_api/FifoState.html +++ b/docs/ncapi/ncapi2/py_api/FifoState.html @@ -1,37 +1,544 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +FifoState enum [Python NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +FifoState enum [Python NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Structures + +
  • + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Classes + +
  • + + + + + + + + + -
    +
    + + -

    class FifoState(enum.Enum)

    + +
    +

    class FifoState(enum.Enum)

    @@ -81,15 +588,23 @@

    class FifoState(enum.Enum)

    - - +
    + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/py_api/FifoType.html b/docs/ncapi/ncapi2/py_api/FifoType.html index 60118da..86a1c3d 100644 --- a/docs/ncapi/ncapi2/py_api/FifoType.html +++ b/docs/ncapi/ncapi2/py_api/FifoType.html @@ -1,37 +1,544 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +FifoType enum [Python NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +FifoType enum [Python NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Structures + +
  • + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Classes + +
  • + + + + + + + + + -
    +
    + + -

    class FifoType(enum.Enum)

    + +
    +

    class FifoType(enum.Enum)

    @@ -81,15 +588,23 @@

    class FifoType(enum.Enum)

    - - +
    + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/py_api/GlobalOption.html b/docs/ncapi/ncapi2/py_api/GlobalOption.html index 81ca45c..cd7bc24 100644 --- a/docs/ncapi/ncapi2/py_api/GlobalOption.html +++ b/docs/ncapi/ncapi2/py_api/GlobalOption.html @@ -1,37 +1,544 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +GlobalOption enum [Python NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +GlobalOption enum [Python NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Structures + +
  • + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Classes + +
  • + + + + + + + + + -
    +
    + + -

    class GlobalOption(enum.Enum)

    + +
    +

    class GlobalOption(enum.Enum)

    @@ -75,8 +582,8 @@

    class GlobalOption(enum.Enum)

    - - + + @@ -93,15 +600,23 @@

    Notes

  • Options prefixed with ‘RO’ have read-only permission and are only gettable.
  • - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/py_api/Graph.allocate.html b/docs/ncapi/ncapi2/py_api/Graph.allocate.html index 9fffdec..53d7c80 100644 --- a/docs/ncapi/ncapi2/py_api/Graph.allocate.html +++ b/docs/ncapi/ncapi2/py_api/Graph.allocate.html @@ -1,37 +1,544 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +Graph.allocate() [Python NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Graph.allocate() [Python NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Structures + +
  • + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Classes + +
  • + + + + + + + + + -
    +
    + + -

    Graph.allocate()

    + +
    +

    Graph.allocate()

    RW_LOG_LEVEL int0, 1, 2, 3, 4The logging level for the application:
    0 = MVLOG_DEBUG, debug and above (full verbosity)
    1 = MVLOG_INFO, info and above
    2 = MVLOG_WARN, warnings and above (default)
    3 = MVLOG_ERROR, errors and above
    4 = MVLOG_FATAL, fatal only
    Values in the LogLevel enumerationThe logging level for the application.
    RO_API_VERSION
    @@ -138,15 +645,23 @@

    Example

    device.destroy() - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/py_api/Graph.allocate_with_fifos.html b/docs/ncapi/ncapi2/py_api/Graph.allocate_with_fifos.html index 7810440..b195643 100644 --- a/docs/ncapi/ncapi2/py_api/Graph.allocate_with_fifos.html +++ b/docs/ncapi/ncapi2/py_api/Graph.allocate_with_fifos.html @@ -1,37 +1,544 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +Graph.allocate_with_fifos() [Python NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Graph.allocate_with_fifos() [Python NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Structures + +
  • + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Classes + +
  • + + + + + + + + + -
    +
    + + -

    Graph.allocate_with_fifos()

    + +
    +

    Graph.allocate_with_fifos()

    @@ -191,15 +698,23 @@

    Example

    device.destroy() - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/py_api/Graph.destroy.html b/docs/ncapi/ncapi2/py_api/Graph.destroy.html index 44ea3fe..92b1600 100644 --- a/docs/ncapi/ncapi2/py_api/Graph.destroy.html +++ b/docs/ncapi/ncapi2/py_api/Graph.destroy.html @@ -1,37 +1,544 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +Graph.destroy() [Python NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Graph.destroy() [Python NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Structures + +
  • + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Classes + +
  • + + + + + + + + + -
    +
    + + -

    Graph.destroy()

    + +
    +

    Graph.destroy()

    @@ -90,15 +597,23 @@

    Example

    graph.destroy() - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/py_api/Graph.get_option.html b/docs/ncapi/ncapi2/py_api/Graph.get_option.html index d0fb92c..1543139 100644 --- a/docs/ncapi/ncapi2/py_api/Graph.get_option.html +++ b/docs/ncapi/ncapi2/py_api/Graph.get_option.html @@ -1,37 +1,544 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +Graph.get_option() [Python NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Graph.get_option() [Python NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Structures + +
  • + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Classes + +
  • + + + + + + + + + -
    +
    + + -

    Graph.get_option()

    + +
    +

    Graph.get_option()

    @@ -113,15 +620,23 @@

    Example

    graph.destroy() - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/py_api/Graph.html b/docs/ncapi/ncapi2/py_api/Graph.html index a87cde5..69f4e0f 100644 --- a/docs/ncapi/ncapi2/py_api/Graph.html +++ b/docs/ncapi/ncapi2/py_api/Graph.html @@ -1,37 +1,544 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +Graph class [Python NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Graph class [Python NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Structures + +
  • + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Classes + +
  • + + + + + + + + + -
    +
    + + -

    class Graph

    + +
    +

    class Graph

    @@ -186,15 +693,23 @@

    Examples

    device.destroy() - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/py_api/Graph.queue_inference.html b/docs/ncapi/ncapi2/py_api/Graph.queue_inference.html index a64f4a6..7222d27 100644 --- a/docs/ncapi/ncapi2/py_api/Graph.queue_inference.html +++ b/docs/ncapi/ncapi2/py_api/Graph.queue_inference.html @@ -1,37 +1,544 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +Graph.queue_inference() [Python NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Graph.queue_inference() [Python NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Structures + +
  • + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Classes + +
  • + + + + + + + + + -
    +
    + + -

    Graph.queue_inference()

    + +
    +

    Graph.queue_inference()

    @@ -147,15 +654,23 @@

    Example

    device.destroy() - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/py_api/Graph.queue_inference_with_fifo_elem.html b/docs/ncapi/ncapi2/py_api/Graph.queue_inference_with_fifo_elem.html index cfc2d83..61a6cd4 100644 --- a/docs/ncapi/ncapi2/py_api/Graph.queue_inference_with_fifo_elem.html +++ b/docs/ncapi/ncapi2/py_api/Graph.queue_inference_with_fifo_elem.html @@ -1,37 +1,544 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +Graph.queue_inference_with_fifo_elem() [Python NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Graph.queue_inference_with_fifo_elem() [Python NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Structures + +
  • + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Classes + +
  • + + + + + + + + + -
    +
    + + -

    Graph.queue_inference_with_fifo_elem()

    + +
    +

    Graph.queue_inference_with_fifo_elem()

    @@ -154,15 +661,23 @@

    Example

    device.destroy() - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/py_api/Graph.set_option.html b/docs/ncapi/ncapi2/py_api/Graph.set_option.html index a2b5c00..3fe4edf 100644 --- a/docs/ncapi/ncapi2/py_api/Graph.set_option.html +++ b/docs/ncapi/ncapi2/py_api/Graph.set_option.html @@ -1,37 +1,544 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +Graph.set_option() [Python NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Graph.set_option() [Python NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Structures + +
  • + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Classes + +
  • + + + + + + + + + -
    +
    + + -

    Graph.set_option()

    + +
    +

    Graph.set_option()

    @@ -117,15 +624,23 @@

    Example

    graph.destroy() - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/py_api/GraphOption.html b/docs/ncapi/ncapi2/py_api/GraphOption.html index 2e4395d..a9659a8 100644 --- a/docs/ncapi/ncapi2/py_api/GraphOption.html +++ b/docs/ncapi/ncapi2/py_api/GraphOption.html @@ -1,37 +1,544 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +GraphOption enum [Python NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +GraphOption enum [Python NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Structures + +
  • + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Classes + +
  • + + + + + + + + + -
    +
    + + -

    class GraphOption(enum.Enum)

    + +
    +

    class GraphOption(enum.Enum)

    @@ -82,7 +589,7 @@

    class GraphOption(enum.Enum)

    - + @@ -153,15 +660,23 @@

    Notes

  • Options prefixed with ‘RO’ have read-only permission and are only gettable.
  • - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/py_api/GraphState.html b/docs/ncapi/ncapi2/py_api/GraphState.html index fac49c2..494fb85 100644 --- a/docs/ncapi/ncapi2/py_api/GraphState.html +++ b/docs/ncapi/ncapi2/py_api/GraphState.html @@ -1,37 +1,544 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +GraphState enum [Python NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +GraphState enum [Python NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Structures + +
  • + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Classes + +
  • + + + + + + + + + -
    +
    + + -

    class GraphState(enum.Enum)

    + +
    +

    class GraphState(enum.Enum)

    RO_TIME_TAKEN numpy.ndarray of floats Unbounded positive floatsThe times taken per graph layer for the last inference.The times taken per graph layer for the last inference in milliseconds.
    RO_INPUT_COUNT
    @@ -89,15 +596,23 @@

    class GraphState(enum.Enum)

    - - +
    + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/py_api/LogLevel.html b/docs/ncapi/ncapi2/py_api/LogLevel.html new file mode 100755 index 0000000..f1ff70f --- /dev/null +++ b/docs/ncapi/ncapi2/py_api/LogLevel.html @@ -0,0 +1,620 @@ + + + + + + + + + | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + +
    + + + + + + + +
    + + + + +
    +

    class LogLevel(enum.Enum)

    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    InfoValue
    Packagemvnc
    Modulemvncapi
    Version2.0
    See alsoGlobalOption, global_set_option(), global_get_option()
    + +

    LogLevel is an enumeration that defines application logging levels, which can be read with global_get_option() or set with global_set_option().

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Enumeration MemberDescription
    DEBUGDebug and above (full verbosity).
    INFOInfo and above.
    WARNWarning and above (default).
    ERRORErrors and above.
    FATALFatal only.
    + +
    + +
    + +
    + +
    + + + +
    +
    + +
    +
    + + diff --git a/docs/ncapi/ncapi2/py_api/Status.html b/docs/ncapi/ncapi2/py_api/Status.html index 01805c4..042d319 100644 --- a/docs/ncapi/ncapi2/py_api/Status.html +++ b/docs/ncapi/ncapi2/py_api/Status.html @@ -1,37 +1,544 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +Status enum [Python NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Status enum [Python NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Structures + +
  • + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Classes + +
  • + + + + + + + + + -
    +
    + + -

    class Status(enum.Enum)

    + +
    +

    class Status(enum.Enum)

    @@ -133,15 +640,23 @@

    class Status(enum.Enum)

    - - +
    + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/py_api/TensorDescriptor.html b/docs/ncapi/ncapi2/py_api/TensorDescriptor.html index 179abb4..54f5011 100644 --- a/docs/ncapi/ncapi2/py_api/TensorDescriptor.html +++ b/docs/ncapi/ncapi2/py_api/TensorDescriptor.html @@ -1,37 +1,544 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +TensorDescriptor struct [Python NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +TensorDescriptor struct [Python NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Classes + +
  • + + + + + + -
    + + -

    class TensorDescriptor(ctypes.Structure)

    +
    + + + + +
    +

    class TensorDescriptor(ctypes.Structure)

    @@ -74,12 +581,12 @@

    class TensorDescriptor(ctypes.Str

    - + - + @@ -96,23 +603,90 @@

    class TensorDescriptor(ctypes.Str

    + + + + + + + + + + + + + + + + + + + +
    n intThe number of tensors in the batch.The number of tensors in the batch.

    Only 1 currently supported.
    c intThe number of channels per tensor data element. For image tensors, this is the number of channels per pixel.The number of channels per tensor data element. For image tensors, this is the number of channels per pixel. For non-image tensors, this is always 1.
    wint The total size of the data. This is the number of bytes required to hold the entire tensor.
    cStrideintStride (distance between elements in bytes) in the channel dimension.
    wStrideintStride (distance between elements in bytes) in the horizontal dimension.
    hStrideintStride (distance between elements in bytes) in the vertical dimension.
    dataTypeintThe tensor’s data type (FP16 or FP32).

    Notes

    +

    Examples

    + +

    Example 1: Get the input tensor descriptor list from a Graph.

    +
    import mvnc.mvncapi as mvnc
    +
    +# Create and open a device and create and allocate a graph...
    +
    +# Get a list of input TensorDescriptor objects from the graph
    +inputDescs = graph.get_option(mvnc.GraphOption.RO_INPUT_TENSOR_DESCRIPTORS)
    +
    +...
    +
    + +

    Example 2: Create and set a channel-minor host tensor descriptor for an input Fifo.

    - +
    import mvnc.mvncapi as mvnc
    +
    +# Create and open a device and create and allocate a graph with fifos...
    +
    +# The n/c/w/h fields for the RW_HOST_TENSOR_DESCRIPTOR must match the dimensions of the RO_GRAPH_TENSOR_DESCRIPTOR, so start with that
    +host_tensor_descriptor = fifoIn.get_option(mvnc.FifoOption.RO_GRAPH_TENSOR_DESCRIPTOR)
    +
    +# Set the tensor data type
    +host_tensor_descriptor.dataType = mvnc.FifoDataType.FP32.value
    +
    +# For channel-minor data with FP32 data type, there are 4 bytes between each element of the channel
    +# The horizontal stride (wStride), vertical stride (hStride), and totalSize can be calculated from there
    +host_tensor_descriptor.cStride = 4
    +host_tensor_descriptor.wStride = host_tensor_descriptor.cStride * host_tensor_descriptor.c
    +host_tensor_descriptor.hStride = host_tensor_descriptor.wStride * host_tensor_descriptor.w
    +host_tensor_descriptor.totalSize = host_tensor_descriptor.hStride * host_tensor_descriptor.h
    +
    +# Set the option
    +fifoIn.set_option(mvnc.FifoOption.RW_HOST_TENSOR_DESCRIPTOR, host_tensor_descriptor)
    +
    +...
    +
    + +
    + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/py_api/enumerate_devices.html b/docs/ncapi/ncapi2/py_api/enumerate_devices.html index bc0d613..0a0e06f 100644 --- a/docs/ncapi/ncapi2/py_api/enumerate_devices.html +++ b/docs/ncapi/ncapi2/py_api/enumerate_devices.html @@ -1,37 +1,544 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +enumerate_devices() [Python NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +enumerate_devices() [Python NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Structures + +
  • + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Classes + +
  • + + + + + + + + + -
    +
    + + -

    enumerate_devices()

    + +
    +

    enumerate_devices()

    @@ -91,15 +598,23 @@

    Example

    - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/py_api/global_get_option.html b/docs/ncapi/ncapi2/py_api/global_get_option.html index f4838e3..9705963 100644 --- a/docs/ncapi/ncapi2/py_api/global_get_option.html +++ b/docs/ncapi/ncapi2/py_api/global_get_option.html @@ -1,37 +1,544 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +global_get_option() [Python NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +global_get_option() [Python NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Structures + +
  • + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Classes + +
  • + + + + + + + + + -
    +
    + + -

    global_get_option()

    + +
    +

    global_get_option()

    @@ -105,15 +612,23 @@

    Example

    print('NCAPI Version:',mvncapi.global_get_option(mvncapi.GlobalOption.RO_API_VERSION)) - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/py_api/global_set_option.html b/docs/ncapi/ncapi2/py_api/global_set_option.html index 0ac15b6..f6970d7 100644 --- a/docs/ncapi/ncapi2/py_api/global_set_option.html +++ b/docs/ncapi/ncapi2/py_api/global_set_option.html @@ -1,37 +1,544 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +global_set_option() [Python NCAPI v2] | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +global_set_option() [Python NCAPI v2] + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Structures + +
  • + + + + + +
  • + Global Functions + +
  • + + + + + +
  • + Classes + +
  • + + + + + + + + + -
    +
    + + -

    global_set_option

    + +
    +

    global_set_option

    @@ -105,18 +612,26 @@

    Example

    from mvnc import mvncapi
     
     # Set the global logging level to debug (full verbosity)
    -mvncapi.global_set_option(mvncapi.GlobalOption.RW_LOG_LEVEL, 0)
    +mvncapi.global_set_option(mvncapi.GlobalOption.RW_LOG_LEVEL, mvncapi.LogLevel.DEBUG)
     
    - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/py_api/readme.html b/docs/ncapi/ncapi2/py_api/readme.html index 30a3ecf..fdc11ec 100644 --- a/docs/ncapi/ncapi2/py_api/readme.html +++ b/docs/ncapi/ncapi2/py_api/readme.html @@ -1,42 +1,551 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +Intel® Movidius™ Neural Compute SDK Python API v2 | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Intel® Movidius™ Neural Compute SDK Python API v2 + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Classes + +
  • + + + + + + -
    + + -

    Intel® Movidius™ Neural Compute SDK Python API

    +
    + + + + +
    +

    Intel® Movidius™ Neural Compute SDK Python API v2

    The Intel® Movidius™ Neural Compute SDK (Intel® Movidius™ NCSDK) comes with a Python Language API that enables applications that utilize hardware accelerated Deep Neural Networks via neural compute devices such as the Intel® Movidius™ Neural Compute Stick.

    The Python API is provided as a single Python module (mvncapi.py), which is placed on the development computer when the NCSDK is installed. It has been validated with Python 2.7 and 3.5.

    + +

    Python API Documentation

    @@ -87,6 +596,10 @@

    Python API Documentation

    + + + + @@ -193,7 +706,7 @@

    2. Set up a neural compute device

    3. Set up a network graph and associated FIFO queues for the device

    The NCSDK requires a neural network graph file compiled with the mvNCCompile NCSDK tool. -Many network models from TensorFlow™ and Caffe are supported. +Many network models from TensorFlow* and Caffe are supported. See Configuring Your Network for the Intel® Movidius™ Neural Compute SDK for more information about preparing your network model for use with the NCSDK.

    When you have a compiled graph, load the graph file data to a buffer.

    @@ -263,7 +776,7 @@

    5. Perform an inference

    When the inference is complete the input tensor will be removed from the input_fifo queue and the result tensor will be placed in the output_fifo queue. The third parameter must be None. The fourth parameter can be any object that you wish to have associated with this particular tensor when you read the inference results, such as the original tensor or a window handle, or None.

    # Write the tensor to the input_fifo and queue an inference
    -graph.queue_inference_with_fifo_elem(input_fifo, output_fifo, tensor, None, 'user object')
    +graph.queue_inference_with_fifo_elem(input_fifo, output_fifo, tensor, 'user object')
     

    If the input Fifo is full, this method call will block until there is room to write to the Fifo. @@ -289,15 +802,23 @@

    6. Clean up

    device.destroy() - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/ncapi2/readme.html b/docs/ncapi/ncapi2/readme.html index fb84996..9c9b459 100644 --- a/docs/ncapi/ncapi2/readme.html +++ b/docs/ncapi/ncapi2/readme.html @@ -1,47 +1,516 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + + | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Frameworks + +
  • + + + + + +
  • + Toolkit + +
  • + + + + + +
  • + API + +
  • + + + + + + +
  • + + Examples +
  • + + + + + + +
  • + + Release Notes +
  • + + + + + + +
  • + + Support +
  • + + + + + + -
    + + - +
    + + + +
    + - +
    + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncapi/python_api_migration.html b/docs/ncapi/python_api_migration.html index 920a031..fb176fe 100644 --- a/docs/ncapi/python_api_migration.html +++ b/docs/ncapi/python_api_migration.html @@ -1,46 +1,500 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +Migrating Python Applications from NCAPI v1 to NCAPI v2 | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Migrating Python Applications from NCAPI v1 to NCAPI v2 + + + + + + + + + + + + + + + + + + + + + +
    + +
    + -
    + -

    -

    Migrating Python Applications from NCAPI v1 to NCAPI v2

    + + -

    Sections:

    +
    + + - + +
    +

    Migrating Python Applications from NCAPI v1 to NCAPI v2

    Complete Python API documentation can be found here:

    @@ -59,8 +513,6 @@

    Sections:

    GraphState Contains network graph NCAPI states.
    LogLevelContains application logging levels.
    Status Contains status code return values for NCAPI functions.
    -

    Significant Changes

    -

    FIFO queues

    In the Intel® Movidius™ Neural Compute SDK (Intel® Movidius NCSDK) v1, the Graph class was used to load an input tensor to a neural compute device and to read the output inference result.

    @@ -76,7 +528,7 @@

    FIFO queues

  • After usage, free Fifo resources with Fifo.destroy().
  • -

    See the Example Code Comparison section below for example Fifo usage.

    +

    See the Example Code Comparison section below for example Fifo usage.

    Input/output data types

    @@ -92,9 +544,7 @@

    Input/output data types

    Other changes

    Most class and function names and signatures were updated. Please reference the NCAPI v2 documentation for correct usage.

    -

    Top

    - -

    Equivalent API Calls

    +

    Equivalent API Calls

    Enumerations

    @@ -162,6 +612,11 @@

    Enumerations

    DeviceHwVersion This is a new enumeration in NCAPI v2 containing neural compute device hardware versions. + + n/a + LogLevel + This is a new enumeration in NCAPI v2 containing application logging levels. + @@ -352,9 +807,7 @@

    Classes

    -

    Top

    - -

    Example Code Comparison

    +

    Example Code Comparison

    This section contains basic usage examples for NCAPI v1, NCAPI v2, and NCAPI v2 with convenience functions for comparison.

    @@ -480,17 +933,23 @@

    Example Code Comparisondevice.destroy()

    -

    Top

    + + + + + + + + - - -
    - - -
    - +
    +
    + +
    +
    - - diff --git a/docs/ncapi/readme.html b/docs/ncapi/readme.html index 552b3ac..8fec644 100644 --- a/docs/ncapi/readme.html +++ b/docs/ncapi/readme.html @@ -1,37 +1,501 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +Neural Compute API Overview | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Neural Compute API Overview + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Toolkit + +
  • + + + + + +
  • + API + +
  • + + + + + + +
  • + + Examples +
  • + + + + + + +
  • + + Release Notes +
  • + + + + + + +
  • + + Support +
  • + + + + + + + + + + +
    + + -
    + +
    +

    Neural Compute API Overview

    -

    Neural Compute API

    Applications for performing inferences with the Intel® Movidius™ Neural Compute SDK (Intel® Movidius™ NCSDK) can be developed in either C/C++ or Python. The Neural Compute API (NCAPI) provides a software interface to load network graphs and run inferences on neural compute devices.

    @@ -78,15 +542,23 @@

    Migrating Applications
  • Migrating C/C++ Applications from NCAPI v1 to NCAPI v2
  • - -

    + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/ncs.html b/docs/ncs.html index cc75801..23ad8ca 100644 --- a/docs/ncs.html +++ b/docs/ncs.html @@ -1,52 +1,512 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +Intel® Movidius™ Neural Compute Stick | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Intel® Movidius™ Neural Compute Stick + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Toolkit + +
  • + + + + + +
  • + API + +
  • + + + + + + +
  • + + Examples +
  • + + + + + + +
  • + + Release Notes +
  • + + + + + + +
  • + + Support +
  • + + + + + + -
    + + -

    -

    Introduction

    +
    + + + + +
    +

    Intel® Movidius™ Neural Compute Stick

    The Intel® Movidius™ Neural Compute Stick (Intel® Movidius™ NCS) enables rapid prototyping of deep neural networks (DNNs) with the Intel® Movidius™ Neural Compute SDK (NCSDK).

    - +

    To use the NCS, you will need to have the Intel® Movidius™ Neural Compute SDK (Intel® Movidius™ NCSDK) and/or Neural Compute API (NCAPI) installed on your development computer.

    -

    Connecting the NCS to a Host Machine

    +

    Connecting the NCS to a Host Machine

    The NCS connects to the host machine over a USB 2.0 High Speed interface. You may plug the NCS directly into a USB port on your host machine or into a USB hub that is plugged into your host machine.

    -

    Architecture

    +

    Architecture

    The NCS is powered by the Intel® Movidius™ Myriad™ 2 vision processing unit (VPU).

    @@ -60,15 +520,23 @@

    Architecture

    - - +
    + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/readme.md b/docs/readme.md new file mode 100755 index 0000000..03a3f67 --- /dev/null +++ b/docs/readme.md @@ -0,0 +1,4 @@ +------- +Documentation for the NCSDK is best viewed by pointing your browser here: https://movidius.github.io/ncsdk/ +------- +------- diff --git a/docs/release_notes.html b/docs/release_notes.html index 3b68652..6490771 100644 --- a/docs/release_notes.html +++ b/docs/release_notes.html @@ -1,50 +1,511 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +Release Notes | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Release Notes + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + + +
  • + Installation + +
  • + + + + + +
  • + Frameworks + +
  • + + + + + +
  • + Toolkit + +
  • + + + + + +
  • + API + +
  • + + + + + + +
  • + + Examples +
  • + + + + + + +
  • + + Release Notes +
  • + + + + + + +
  • + + Support +
  • + + + + + + -
    + + + +
    + + -

    ============================================================

    + +
    +

    ============================================================

    Movidius Neural Compute SDK Release Notes

    -

    V2.04.00 2018-05-04

    +

    V2.05.00 2018-06-07

    ============================================================

    -

    As of V2.04.00, SDK has been refactored and contains many new features and structural changes. It is recommended you read the documentation to familiarize with the new features and contents.

    +

    As of V2.05.00, SDK has been refactored and contains many new features and structural changes. It is recommended you read the documentation to familiarize with the new features and contents.

    SDK Notes:

    New features:

      -
    1. Tensorflow 1.6 supported. Tensorflow 1.6 is automatically installed on Ubuntu.
    2. -
    3. Multiple network graphs can be allocated to a single neural compute device (up to 10 graphs per device, limited by device memory)
    4. -
    5. 32 bit floating point (FP32) input/output is supported
    6. +
    7. Tensorflow 1.7 supported. Tensorflow 1.7 is automatically installed on Ubuntu.

    Networks:

    @@ -54,12 +515,11 @@

    Networks:

    Layers:

      -
    1. Support PlaceholderWithDefault nodes in TensorFlow models.
    2. +
    3. No change.

    API Notes:

      -
    1. API has been heavily refactored, please review NCAPI v1 vs. NCAPI v2 for feature comparison.
    2. Apps written with NCAPI v1 are not compatible with this release and need to be migrated to NCAPI v2, refer to Migrating Applications from NCAPI v1 to NCAPI v2 for information about migrating apps to the new API.
    @@ -74,8 +534,9 @@

    Caffe

  • CaffeNet
  • VGG (Sousmith VGG_A)
  • Alexnet
  • -
  • Ti1. nyYolo v1
  • -
  • VGG 16
  • +
  • TinyYolo v1
  • +
  • VGG 16 (Configuration D)
  • +
  • Resnet 18
  • Resnet 50
  • SSD Mobilenet v1
  • @@ -87,7 +548,7 @@

    Tensorflow r1.6

  • inception-v3
  • inception-v4
  • Inception ResNet v2
  • -
  • VGG 16
  • +
  • VGG 16 (Configuration D)
  • Mobilenet_V1_1.0 variants:
    • MobileNet_v1_1.0_224
    • @@ -146,7 +607,7 @@

      Firmware Features:

      Bug Fixes:

        -
      1. Fixed: Facenet and other network regression due to TensorFlow 1.6 changes.
      2. +
      3. Fixed: Facenet and other network regression due to TensorFlow 1.7 changes.

      Errata:

      @@ -160,23 +621,31 @@

      Errata:

    • Convolution may fail to find a solution for very large inputs.
    • Depth-wise convolution is tested for 3x3 kernels.
    • A TanH layer’s “top” & “bottom” blobs must have different names.  This is different from a ReLU layer, whose “top” & “bottom” should be named the same as its previous layer.
    • -
    • On upgrade from previous versions of SDK, the installer will detect if openCV 3.3.0 was installed, for example from http://github.com/movidius/ncappzoo/apps/stream_ty_gn/install-opencv-from_source.sh. For this release, the installer will prompt to uninstall this specific version of openCV. This is required for ssd-caffe to run correctly. After 2.04 installation is complete, openCV 3.3.0 can be re-installed and the ssd-caffe will continue to function.
    • +
    • On upgrade from previous versions of SDK, the installer will detect if openCV 3.3.0 was installed, for example from http://github.com/movidius/ncappzoo/apps/stream_ty_gn/install-opencv-from_source.sh. For this release, the installer will prompt to uninstall this specific version of openCV. This is required for ssd-caffe to run correctly. After 2.05 installation is complete, openCV 3.3.0 can be re-installed and the ssd-caffe will continue to function.
    • +
    • On upgrade from previous versions of SDK, the installer will detect if openCV 3.3.0 was installed, for example from http://github.com/movidius/ncappzoo/apps/stream_ty_gn/install-opencv-from_source.sh. For this release, the installer will prompt to uninstall this specific version of openCV. This is required for ssd-caffe to run correctly. After 2.05 installation is complete, openCV 3.3.0 can be re-installed and the ssd-caffe will continue to function.
    • The MTCNN network in the app zoo is showing unexpected behavior for this release, and is being investigated. To use MTCNN, please use version 1.12.00 of SDK.
    • Although mvNCCheck shows per-pixel error for some metrics for mobilenet_v1_224, classification results are not impacted.
    • Only Ubuntu 16.04 LTS is supported as a host OS for this release. Ubuntu 18.04 is being evaluated.
    • The visualization graph created by mvNCProfile may have an erroneous connection through the data layer.
    • -
    • Initial validation has been done on SSD Mobilenet, TinyYolo v1 and v2, but more thorough evaluation is underway.
    • - - +
  • + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/search.json b/docs/search.json new file mode 100755 index 0000000..cef2091 --- /dev/null +++ b/docs/search.json @@ -0,0 +1,1771 @@ +[ + + +{ +"title": "device.allocategraph() [ v1]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi1/py_api/Device.AllocateGraph.html", +"summary": "", +"display": "Device.AllocateGraph() [Python NCAPI v1]" +} +, + + + +{ +"title": "device.closedevice() [ v1]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi1/py_api/Device.CloseDevice.html", +"summary": "", +"display": "Device.CloseDevice() [Python NCAPI v1]" +} +, + + + +{ +"title": "device.getdeviceoption() [ v1]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi1/py_api/Device.GetDeviceOption.html", +"summary": "", +"display": "Device.GetDeviceOption() [Python NCAPI v1]" +} +, + + + +{ +"title": "device.opendevice() [ v1]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi1/py_api/Device.OpenDevice.html", +"summary": "", +"display": "Device.OpenDevice() [Python NCAPI v1]" +} +, + + + +{ +"title": "device.setdeviceoption() [ v1]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi1/py_api/Device.SetDeviceOption.html", +"summary": "", +"display": "Device.SetDeviceOption() [Python NCAPI v1]" +} +, + + + +{ +"title": "device.__init__() [ v1]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi1/py_api/Device.__init__.html", +"summary": "", +"display": "Device.__init__() [Python NCAPI v1]" +} +, + + + +{ +"title": "device.close() [ v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/py_api/Device.close.html", +"summary": "", +"display": "Device.close() [Python NCAPI v2]" +} +, + + + +{ +"title": "device.destroy() [ v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/py_api/Device.destroy.html", +"summary": "", +"display": "Device.destroy() [Python NCAPI v2]" +} +, + + + +{ +"title": "device.get_option() [ v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/py_api/Device.get_option.html", +"summary": "", +"display": "Device.get_option() [Python NCAPI v2]" +} +, + + + +{ +"title": "device class [ v1]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi1/py_api/Device.html", +"summary": "", +"display": "Device class [Python NCAPI v1]" +} +, + + + +{ +"title": "device class [ v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/py_api/Device.html", +"summary": "", +"display": "Device class [Python NCAPI v2]" +} +, + + + +{ +"title": "device.open() [ v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/py_api/Device.open.html", +"summary": "", +"display": "Device.open() [Python NCAPI v2]" +} +, + + + +{ +"title": "device.set_option() [ v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/py_api/Device.set_option.html", +"summary": "", +"display": "Device.set_option() [Python NCAPI v2]" +} +, + + + +{ +"title": "enum devicehwversion [ v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/py_api/DeviceHwVersion.html", +"summary": "", +"display": "enum DeviceHwVersion [Python NCAPI v2]" +} +, + + + +{ +"title": "deviceoption enum [ v1]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi1/py_api/DeviceOption.html", +"summary": "", +"display": "DeviceOption enum [Python NCAPI v1]" +} +, + + + +{ +"title": "enum deviceoption [ v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/py_api/DeviceOption.html", +"summary": "", +"display": "enum DeviceOption [Python NCAPI v2]" +} +, + + + +{ +"title": "enum devicestate [ v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/py_api/DeviceState.html", +"summary": "", +"display": "enum DeviceState [Python NCAPI v2]" +} +, + + + +{ +"title": "enumeratedevices() [ v1]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi1/py_api/EnumerateDevices.html", +"summary": "", +"display": "EnumerateDevices() [Python NCAPI v1]" +} +, + + + +{ +"title": "fifo.allocate() [ v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/py_api/Fifo.allocate.html", +"summary": "", +"display": "Fifo.allocate() [Python NCAPI v2]" +} +, + + + +{ +"title": "fifo.destroy() [ v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/py_api/Fifo.destroy.html", +"summary": "", +"display": "Fifo.destroy() [Python NCAPI v2]" +} +, + + + +{ +"title": "fifo.get_option() [ v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/py_api/Fifo.get_option.html", +"summary": "", +"display": "Fifo.get_option() [Python NCAPI v2]" +} +, + + + +{ +"title": "fifo class [ v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/py_api/Fifo.html", +"summary": "", +"display": "Fifo class [Python NCAPI v2]" +} +, + + + +{ +"title": "fifo.read_elem() [ v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/py_api/Fifo.read_elem.html", +"summary": "", +"display": "Fifo.read_elem() [Python NCAPI v2]" +} +, + + + +{ +"title": "fifo.remove_elem() [ v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/py_api/Fifo.remove_elem.html", +"summary": "", +"display": "Fifo.remove_elem() [Python NCAPI v2]" +} +, + + + +{ +"title": "fifo.set_option() [ v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/py_api/Fifo.set_option.html", +"summary": "", +"display": "Fifo.set_option() [Python NCAPI v2]" +} +, + + + +{ +"title": "fifo.write_elem() [ v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/py_api/Fifo.write_elem.html", +"summary": "", +"display": "Fifo.write_elem() [Python NCAPI v2]" +} +, + + + +{ +"title": "fifodatatype enum [ v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/py_api/FifoDataType.html", +"summary": "", +"display": "FifoDataType enum [Python NCAPI v2]" +} +, + + + +{ +"title": "fifooption enum [ v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/py_api/FifoOption.html", +"summary": "", +"display": "FifoOption enum [Python NCAPI v2]" +} +, + + + +{ +"title": "fifostate enum [ v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/py_api/FifoState.html", +"summary": "", +"display": "FifoState enum [Python NCAPI v2]" +} +, + + + +{ +"title": "fifotype enum [ v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/py_api/FifoType.html", +"summary": "", +"display": "FifoType enum [Python NCAPI v2]" +} +, + + + +{ +"title": "getglobaloption() [ v1]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi1/py_api/GetGlobalOption.html", +"summary": "", +"display": "GetGlobalOption() [Python NCAPI v1]" +} +, + + + +{ +"title": "globaloption enum [ v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/py_api/GlobalOption.html", +"summary": "", +"display": "GlobalOption enum [Python NCAPI v2]" +} +, + + + +{ +"title": "globaloption enum [ v1]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi1/py_api/GlobalOption.html", +"summary": "", +"display": "GlobalOption enum [Python NCAPI v1]" +} +, + + + +{ +"title": "graph.deallocategraph() [ v1]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi1/py_api/Graph.DeallocateGraph.html", +"summary": "", +"display": "Graph.DeallocateGraph() [Python NCAPI v1]" +} +, + + + +{ +"title": "graph.getgraphoption() [ v1]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi1/py_api/Graph.GetGraphOption.html", +"summary": "", +"display": "Graph.GetGraphOption() [Python NCAPI v1]" +} +, + + + +{ +"title": "graph.getresult() [ v1]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi1/py_api/Graph.GetResult.html", +"summary": "", +"display": "Graph.GetResult() [Python NCAPI v1]" +} +, + + + +{ +"title": "graph.loadtensor() [ v1]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi1/py_api/Graph.LoadTensor.html", +"summary": "", +"display": "Graph.LoadTensor() [Python NCAPI v1]" +} +, + + + +{ +"title": "graph.setgraphoption() [ v1]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi1/py_api/Graph.SetGraphOption.html", +"summary": "", +"display": "Graph.SetGraphOption() [Python NCAPI v1]" +} +, + + + +{ +"title": "graph.allocate() [ v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/py_api/Graph.allocate.html", +"summary": "", +"display": "Graph.allocate() [Python NCAPI v2]" +} +, + + + +{ +"title": "graph.allocate_with_fifos() [ v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/py_api/Graph.allocate_with_fifos.html", +"summary": "", +"display": "Graph.allocate_with_fifos() [Python NCAPI v2]" +} +, + + + +{ +"title": "graph.destroy() [ v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/py_api/Graph.destroy.html", +"summary": "", +"display": "Graph.destroy() [Python NCAPI v2]" +} +, + + + +{ +"title": "graph.get_option() [ v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/py_api/Graph.get_option.html", +"summary": "", +"display": "Graph.get_option() [Python NCAPI v2]" +} +, + + + +{ +"title": "graph class [ v1]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi1/py_api/Graph.html", +"summary": "", +"display": "Graph class [Python NCAPI v1]" +} +, + + + +{ +"title": "graph class [ v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/py_api/Graph.html", +"summary": "", +"display": "Graph class [Python NCAPI v2]" +} +, + + + +{ +"title": "graph.queue_inference() [ v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/py_api/Graph.queue_inference.html", +"summary": "", +"display": "Graph.queue_inference() [Python NCAPI v2]" +} +, + + + +{ +"title": "graph.queue_inference_with_fifo_elem() [ v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/py_api/Graph.queue_inference_with_fifo_elem.html", +"summary": "", +"display": "Graph.queue_inference_with_fifo_elem() [Python NCAPI v2]" +} +, + + + +{ +"title": "graph.set_option() [ v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/py_api/Graph.set_option.html", +"summary": "", +"display": "Graph.set_option() [Python NCAPI v2]" +} +, + + + +{ +"title": "graphoption enum [ v1]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi1/py_api/GraphOption.html", +"summary": "", +"display": "GraphOption enum [Python NCAPI v1]" +} +, + + + +{ +"title": "graphoption enum [ v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/py_api/GraphOption.html", +"summary": "", +"display": "GraphOption enum [Python NCAPI v2]" +} +, + + + +{ +"title": "graphstate enum [ v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/py_api/GraphState.html", +"summary": "", +"display": "GraphState enum [Python NCAPI v2]" +} +, + + + +{ +"title": "", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/py_api/LogLevel.html", +"summary": "", +"display": "" +} +, + + + +{ +"title": "setglobaloption() [ v1]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi1/py_api/SetGlobalOption.html", +"summary": "", +"display": "SetGlobalOption() [Python NCAPI v1]" +} +, + + + +{ +"title": "status enum [ v1]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi1/py_api/Status.html", +"summary": "", +"display": "Status enum [Python NCAPI v1]" +} +, + + + +{ +"title": "status enum [ v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/py_api/Status.html", +"summary": "", +"display": "Status enum [Python NCAPI v2]" +} +, + + + +{ +"title": "", +"tags": "", +"keywords": "", +"url": "/TOC.html", +"summary": "", +"display": "" +} +, + + + +{ +"title": "tensordescriptor struct [ v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/py_api/TensorDescriptor.html", +"summary": "", +"display": "TensorDescriptor struct [Python NCAPI v2]" +} +, + + + +{ +"title": "migrating c/ applications from v1 to v2", +"tags": "", +"keywords": "c++, ncapi", +"url": "/ncapi/c_api_migration.html", +"summary": "", +"display": "Migrating C/C++ Applications from NCAPI v1 to NCAPI v2" +} +, + + + +{ +"title": "caffe support", +"tags": "", +"keywords": "network, framework, model", +"url": "/caffe.html", +"summary": "", +"display": "Caffe Support" +} +, + + + +{ +"title": "mvnccheck", +"tags": "", +"keywords": "tool, toolkit", +"url": "/tools/check.html", +"summary": "", +"display": "mvNCCheck" +} +, + + + +{ +"title": "mvnccompile", +"tags": "", +"keywords": "tool, toolkit", +"url": "/tools/compile.html", +"summary": "", +"display": "mvNCCompile" +} +, + + + +{ +"title": "mvnccompile error codes", +"tags": "", +"keywords": "", +"url": "/compiler_error.html", +"summary": "", +"display": "mvNCCompile Error Codes" +} +, + + + +{ +"title": "configuring your network for the intel® movidius™ neural compute sdk", +"tags": "", +"keywords": "framework, model, tensorflow, caffe", +"url": "/configure_network.html", +"summary": "", +"display": "Configuring Your Network for the Intel® Movidius™ Neural Compute SDK" +} +, + + + +{ +"title": "installation and configuration with docker", +"tags": "", +"keywords": "", +"url": "/docker.html", +"summary": "", +"display": "Installation and Configuration with Docker" +} +, + + + +{ +"title": "configuring docker for use with a proxy", +"tags": "", +"keywords": "", +"url": "/docker_proxy.html", +"summary": "", +"display": "Configuring Docker For Use With a Proxy" +} +, + + + +{ +"title": "enumerate_devices() [ v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/py_api/enumerate_devices.html", +"summary": "", +"display": "enumerate_devices() [Python NCAPI v2]" +} +, + + + +{ +"title": "examples", +"tags": "", +"keywords": "apps, applications, ncappzoo, zoo", +"url": "/examples.html", +"summary": "", +"display": "Examples" +} +, + + + +{ +"title": "global_get_option() [ v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/py_api/global_get_option.html", +"summary": "", +"display": "global_get_option() [Python NCAPI v2]" +} +, + + + +{ +"title": "global_set_option() [ v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/py_api/global_set_option.html", +"summary": "", +"display": "global_set_option() [Python NCAPI v2]" +} +, + + + +{ +"title": "introduction", +"tags": "", +"keywords": "", +"url": "/", +"summary": "", +"display": "Introduction" +} +, + + + +{ +"title": "basic installation and configuration", +"tags": "", +"keywords": "raspberry, pi", +"url": "/install.html", +"summary": "", +"display": "Basic Installation and Configuration" +} +, + + + +{ +"title": "mvncallocategraph() [c v1]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi1/c_api/mvncAllocateGraph.html", +"summary": "", +"display": "mvncAllocateGraph() [C NCAPI v1]" +} +, + + + +{ +"title": "mvncclosedevice() [c v1]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi1/c_api/mvncCloseDevice.html", +"summary": "", +"display": "mvncCloseDevice() [C NCAPI v1]" +} +, + + + +{ +"title": "mvncdeallocategraph() [c v1]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi1/c_api/mvncDeallocateGraph.html", +"summary": "", +"display": "mvncDeallocateGraph() [C NCAPI v1]" +} +, + + + +{ +"title": "mvncdeviceoptions enum [c v1]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi1/c_api/mvncDeviceOptions.html", +"summary": "", +"display": "mvncDeviceOptions enum [C NCAPI v1]" +} +, + + + +{ +"title": "mvncgetdevicename() [c v1]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi1/c_api/mvncGetDeviceName.html", +"summary": "", +"display": "mvncGetDeviceName() [C NCAPI v1]" +} +, + + + +{ +"title": "mvncgetdeviceoption() [c v1]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi1/c_api/mvncGetDeviceOption.html", +"summary": "", +"display": "mvncGetDeviceOption() [C NCAPI v1]" +} +, + + + +{ +"title": "mvncgetglobaloption() [c v1]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi1/c_api/mvncGetGlobalOption.html", +"summary": "", +"display": "mvncGetGlobalOption() [C NCAPI v1]" +} +, + + + +{ +"title": "mvncgetgraphoption() [c v1]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi1/c_api/mvncGetGraphOption.html", +"summary": "", +"display": "mvncGetGraphOption() [C NCAPI v1]" +} +, + + + +{ +"title": "mvncgetresult() [c v1]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi1/c_api/mvncGetResult.html", +"summary": "", +"display": "mvncGetResult() [C NCAPI v1]" +} +, + + + +{ +"title": "mvncglobaloptions enum [c v1]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi1/c_api/mvncGlobalOptions.html", +"summary": "", +"display": "mvncGlobalOptions enum [C NCAPI v1]" +} +, + + + +{ +"title": "mvncgraphoptions enum [c v1]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi1/c_api/mvncGraphOptions.html", +"summary": "", +"display": "mvncGraphOptions enum [C NCAPI v1]" +} +, + + + +{ +"title": "mvncloadtensor() [c v1]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi1/c_api/mvncLoadTensor.html", +"summary": "", +"display": "mvncLoadTensor() [C NCAPI v1]" +} +, + + + +{ +"title": "mvncopendevice() [c v1]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi1/c_api/mvncOpenDevice.html", +"summary": "", +"display": "mvncOpenDevice() [C NCAPI v1]" +} +, + + + +{ +"title": "mvncsetdeviceoption() [c v1]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi1/c_api/mvncSetDeviceOption.html", +"summary": "", +"display": "mvncSetDeviceOption() [C NCAPI v1]" +} +, + + + +{ +"title": "mvncsetglobaloption() [c v1]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi1/c_api/mvncSetGlobalOption.html", +"summary": "", +"display": "mvncSetGlobalOption() [C NCAPI v1]" +} +, + + + +{ +"title": "mvncsetgraphoption() [c v1]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi1/c_api/mvncSetGraphOption.html", +"summary": "", +"display": "mvncSetGraphOption() [C NCAPI v1]" +} +, + + + +{ +"title": "mvncstatus enum [c v1]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi1/c_api/mvncStatus.html", +"summary": "", +"display": "mvncStatus enum [C NCAPI v1]" +} +, + + + +{ +"title": "ncdeviceclose() [c v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/c_api/ncDeviceClose.html", +"summary": "", +"display": "ncDeviceClose() [C NCAPI v2]" +} +, + + + +{ +"title": "ncdevicecreate() [c v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/c_api/ncDeviceCreate.html", +"summary": "", +"display": "ncDeviceCreate() [C NCAPI v2]" +} +, + + + +{ +"title": "ncdevicedestroy() [c v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/c_api/ncDeviceDestroy.html", +"summary": "", +"display": "ncDeviceDestroy() [C NCAPI v2]" +} +, + + + +{ +"title": "ncdevicegetoption() [c v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/c_api/ncDeviceGetOption.html", +"summary": "", +"display": "ncDeviceGetOption() [C NCAPI v2]" +} +, + + + +{ +"title": "ncdevicehandle_t struct [c v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/c_api/ncDeviceHandle_t.html", +"summary": "", +"display": "ncDeviceHandle_t struct [C NCAPI v2]" +} +, + + + +{ +"title": "ncdevicehwversion_t enum [c v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/c_api/ncDeviceHwVersion_t.html", +"summary": "", +"display": "ncDeviceHwVersion_t enum [C NCAPI v2]" +} +, + + + +{ +"title": "ncdeviceopen() [c v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/c_api/ncDeviceOpen.html", +"summary": "", +"display": "ncDeviceOpen() [C NCAPI v2]" +} +, + + + +{ +"title": "ncdeviceoption_t enum [c v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/c_api/ncDeviceOption_t.html", +"summary": "", +"display": "ncDeviceOption_t enum [C NCAPI v2]" +} +, + + + +{ +"title": "ncdevicesetoption() [c v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/c_api/ncDeviceSetOption.html", +"summary": "", +"display": "ncDeviceSetOption() [C NCAPI v2]" +} +, + + + +{ +"title": "ncdevicestate_t enum [c v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/c_api/ncDeviceState_t.html", +"summary": "", +"display": "ncDeviceState_t enum [C NCAPI v2]" +} +, + + + +{ +"title": "ncfifoallocate() [c v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/c_api/ncFifoAllocate.html", +"summary": "", +"display": "ncFifoAllocate() [C NCAPI v2]" +} +, + + + +{ +"title": "ncfifocreate() [c v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/c_api/ncFifoCreate.html", +"summary": "", +"display": "ncFifoCreate() [C NCAPI v2]" +} +, + + + +{ +"title": "ncfifodatatype_t enum [c v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/c_api/ncFifoDataType_t.html", +"summary": "", +"display": "ncFifoDataType_t enum [C NCAPI v2]" +} +, + + + +{ +"title": "ncfifodestroy() [c v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/c_api/ncFifoDestroy.html", +"summary": "", +"display": "ncFifoDestroy() [C NCAPI v2]" +} +, + + + +{ +"title": "ncfifogetoption() [c v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/c_api/ncFifoGetOption.html", +"summary": "", +"display": "ncFifoGetOption() [C NCAPI v2]" +} +, + + + +{ +"title": "ncfifohandle_t struct [c v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/c_api/ncFifoHandle_t.html", +"summary": "", +"display": "ncFifoHandle_t struct [C NCAPI v2]" +} +, + + + +{ +"title": "ncfifooption_t enum [c v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/c_api/ncFifoOption_t.html", +"summary": "", +"display": "ncFifoOption_t enum [C NCAPI v2]" +} +, + + + +{ +"title": "ncfiforeadelem() [c v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/c_api/ncFifoReadElem.html", +"summary": "", +"display": "ncFifoReadElem() [C NCAPI v2]" +} +, + + + +{ +"title": "ncfiforemoveelem() [c v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/c_api/ncFifoRemoveElem.html", +"summary": "", +"display": "ncFifoRemoveElem() [C NCAPI v2]" +} +, + + + +{ +"title": "ncfifosetoption() [c v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/c_api/ncFifoSetOption.html", +"summary": "", +"display": "ncFifoSetOption() [C NCAPI v2]" +} +, + + + +{ +"title": "ncfifostate_t enum [c v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/c_api/ncFifoState_t.html", +"summary": "", +"display": "ncFifoState_t enum [C NCAPI v2]" +} +, + + + +{ +"title": "ncfifotype_t enum [c v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/c_api/ncFifoType_t.html", +"summary": "", +"display": "ncFifoType_t enum [C NCAPI v2]" +} +, + + + +{ +"title": "ncfifowriteelem() [c v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/c_api/ncFifoWriteElem.html", +"summary": "", +"display": "ncFifoWriteElem() [C NCAPI v2]" +} +, + + + +{ +"title": "ncglobalgetoption() [c v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/c_api/ncGlobalGetOption.html", +"summary": "", +"display": "ncGlobalGetOption() [C NCAPI v2]" +} +, + + + +{ +"title": "ncglobaloption_t enum [c v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/c_api/ncGlobalOption_t.html", +"summary": "", +"display": "ncGlobalOption_t enum [C NCAPI v2]" +} +, + + + +{ +"title": "ncglobalsetoption() [c v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/c_api/ncGlobalSetOption.html", +"summary": "", +"display": "ncGlobalSetOption() [C NCAPI v2]" +} +, + + + +{ +"title": "ncgraphallocate() [c v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/c_api/ncGraphAllocate.html", +"summary": "", +"display": "ncGraphAllocate() [C NCAPI v2]" +} +, + + + +{ +"title": "ncgraphallocatewithfifos() [c v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/c_api/ncGraphAllocateWithFifos.html", +"summary": "", +"display": "ncGraphAllocateWithFifos() [C NCAPI v2]" +} +, + + + +{ +"title": "ncgraphallocatewithfifosex() [c v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/c_api/ncGraphAllocateWithFifosEx.html", +"summary": "", +"display": "ncGraphAllocateWithFifosEx() [C NCAPI v2]" +} +, + + + +{ +"title": "ncgraphcreate() [c v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/c_api/ncGraphCreate.html", +"summary": "", +"display": "ncGraphCreate() [C NCAPI v2]" +} +, + + + +{ +"title": "ncgraphdestroy() [c v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/c_api/ncGraphDestroy.html", +"summary": "", +"display": "ncGraphDestroy() [C NCAPI v2]" +} +, + + + +{ +"title": "ncgraphgetoption() [c v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/c_api/ncGraphGetOption.html", +"summary": "", +"display": "ncGraphGetOption() [C NCAPI v2]" +} +, + + + +{ +"title": "ncgraphhandle_t struct [c v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/c_api/ncGraphHandle_t.html", +"summary": "", +"display": "ncGraphHandle_t struct [C NCAPI v2]" +} +, + + + +{ +"title": "ncgraphoption_t enum [c v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/c_api/ncGraphOption_t.html", +"summary": "", +"display": "ncGraphOption_t enum [C NCAPI v2]" +} +, + + + +{ +"title": "ncgraphqueueinference() [c v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/c_api/ncGraphQueueInference.html", +"summary": "", +"display": "ncGraphQueueInference() [C NCAPI v2]" +} +, + + + +{ +"title": "ncgraphqueueinferencewithfifoelem() [c v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/c_api/ncGraphQueueInferenceWithFifoElem.html", +"summary": "", +"display": "ncGraphQueueInferenceWithFifoElem() [C NCAPI v2]" +} +, + + + +{ +"title": "ncgraphsetoption() [c v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/c_api/ncGraphSetOption.html", +"summary": "", +"display": "ncGraphSetOption() [C NCAPI v2]" +} +, + + + +{ +"title": "ncgraphstate_t enum [c v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/c_api/ncGraphState_t.html", +"summary": "", +"display": "ncGraphState_t enum [C NCAPI v2]" +} +, + + + +{ +"title": "", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/c_api/ncLogLevel_t.html", +"summary": "", +"display": "" +} +, + + + +{ +"title": "ncstatus_t enum [c v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/c_api/ncStatus_t.html", +"summary": "", +"display": "ncStatus_t enum [C NCAPI v2]" +} +, + + + +{ +"title": "nctensordescriptor_t struct [c v2]", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/c_api/ncTensorDescriptor_t.html", +"summary": "", +"display": "ncTensorDescriptor_t struct [C NCAPI v2]" +} +, + + + +{ +"title": "intel® movidius™ neural compute stick", +"tags": "", +"keywords": "NCS", +"url": "/ncs.html", +"summary": "", +"display": "Intel® Movidius™ Neural Compute Stick" +} +, + + + +{ +"title": "mvncprofile", +"tags": "", +"keywords": "tool, toolkit", +"url": "/tools/profile.html", +"summary": "", +"display": "mvNCProfile" +} +, + + + +{ +"title": "migrating applications from v1 to v2", +"tags": "", +"keywords": "python, ncapi", +"url": "/ncapi/python_api_migration.html", +"summary": "", +"display": "Migrating Python Applications from NCAPI v1 to NCAPI v2" +} +, + + + +{ +"title": "intel® movidius™ neural compute sdk api v2", +"tags": "", +"keywords": "python, ncapi", +"url": "/ncapi/ncapi2/py_api/readme.html", +"summary": "", +"display": "Intel® Movidius™ Neural Compute SDK Python API v2" +} +, + + + +{ +"title": "neural compute api overview", +"tags": "", +"keywords": "ncapi, python, c++", +"url": "/ncapi/readme.html", +"summary": "", +"display": "Neural Compute API Overview" +} +, + + + +{ +"title": "intel® movidius™ neural compute sdk c api v2", +"tags": "", +"keywords": "ncapi, c++", +"url": "/ncapi/ncapi2/c_api/readme.html", +"summary": "", +"display": "Intel® Movidius™ Neural Compute SDK C API v2" +} +, + + + +{ +"title": "intel® movidius™ neural compute sdk c api v1", +"tags": "", +"keywords": "ncapi, c++", +"url": "/ncapi/ncapi1/c_api/readme.html", +"summary": "", +"display": "Intel® Movidius™ Neural Compute SDK C API v1" +} +, + + + +{ +"title": "", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi1/readme.html", +"summary": "", +"display": "" +} +, + + + +{ +"title": "intel® movidius™ neural compute sdk api v1", +"tags": "", +"keywords": "ncapi, python", +"url": "/ncapi/ncapi1/py_api/readme.html", +"summary": "", +"display": "Intel® Movidius™ Neural Compute SDK Python API v1" +} +, + + + +{ +"title": "", +"tags": "", +"keywords": "", +"url": "/ncapi/ncapi2/readme.html", +"summary": "", +"display": "" +} +, + + + +{ +"title": "release notes", +"tags": "", +"keywords": "", +"url": "/release_notes.html", +"summary": "", +"display": "Release Notes" +} +, + + + + + + + +{ +"title": "support", +"tags": "", +"keywords": "issues, bugs, forum, feedback, troubleshooting", +"url": "/support.html", +"summary": "", +"display": "Support" +} +, + + + +{ +"title": "tensorflow support", +"tags": "", +"keywords": "network, framework, model", +"url": "/tensorflow.html", +"summary": "", +"display": "TensorFlow Support" +} +, + + + +{ +"title": "guidance for compiling tensorflow networks", +"tags": "", +"keywords": "", +"url": "/tf_compile_guidance.html", +"summary": "", +"display": "Guidance for Compiling TensorFlow Networks" +} +, + + + +{ +"title": "guidance for compiling tensorflow™ model zoo networks", +"tags": "", +"keywords": "", +"url": "/tf_modelzoo.html", +"summary": "", +"display": "Guidance for Compiling TensorFlow™ Model Zoo Networks" +} +, + + + +{ +"title": "guidance for compiling tensorflow-slim networks", +"tags": "", +"keywords": "", +"url": "/tf_slim.html", +"summary": "", +"display": "Guidance for Compiling TensorFlow-Slim Networks" +} +, + + + +{ +"title": "intel® movidius™ neural compute sdk toolkit", +"tags": "", +"keywords": "tool, toolkit", +"url": "/tools/tools_overview.html", +"summary": "", +"display": "Intel® Movidius™ Neural Compute SDK Toolkit" +} +, + + + +{ +"title": "installation and configuration with virtualenv", +"tags": "", +"keywords": "python, environment, virtual", +"url": "/virtualenv.html", +"summary": "", +"display": "Installation and Configuration with virtualenv" +} +, + + + +{ +"title": "installation and configuration with a virtual machine", +"tags": "", +"keywords": "vm", +"url": "/vm_config.html", +"summary": "", +"display": "Installation and Configuration with a Virtual Machine" +} + + + +] diff --git a/docs/sitemap.xml b/docs/sitemap.xml new file mode 100755 index 0000000..372b116 --- /dev/null +++ b/docs/sitemap.xml @@ -0,0 +1,893 @@ + + + + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi1/py_api/Device.AllocateGraph.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi1/py_api/Device.CloseDevice.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi1/py_api/Device.GetDeviceOption.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi1/py_api/Device.OpenDevice.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi1/py_api/Device.SetDeviceOption.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi1/py_api/Device.__init__.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/py_api/Device.close.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/py_api/Device.destroy.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/py_api/Device.get_option.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi1/py_api/Device.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/py_api/Device.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/py_api/Device.open.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/py_api/Device.set_option.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/py_api/DeviceHwVersion.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi1/py_api/DeviceOption.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/py_api/DeviceOption.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/py_api/DeviceState.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi1/py_api/EnumerateDevices.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/py_api/Fifo.allocate.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/py_api/Fifo.destroy.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/py_api/Fifo.get_option.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/py_api/Fifo.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/py_api/Fifo.read_elem.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/py_api/Fifo.remove_elem.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/py_api/Fifo.set_option.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/py_api/Fifo.write_elem.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/py_api/FifoDataType.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/py_api/FifoOption.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/py_api/FifoState.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/py_api/FifoType.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi1/py_api/GetGlobalOption.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/py_api/GlobalOption.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi1/py_api/GlobalOption.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi1/py_api/Graph.DeallocateGraph.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi1/py_api/Graph.GetGraphOption.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi1/py_api/Graph.GetResult.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi1/py_api/Graph.LoadTensor.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi1/py_api/Graph.SetGraphOption.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/py_api/Graph.allocate.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/py_api/Graph.allocate_with_fifos.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/py_api/Graph.destroy.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/py_api/Graph.get_option.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi1/py_api/Graph.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/py_api/Graph.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/py_api/Graph.queue_inference.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/py_api/Graph.queue_inference_with_fifo_elem.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/py_api/Graph.set_option.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi1/py_api/GraphOption.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/py_api/GraphOption.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/py_api/GraphState.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/py_api/LogLevel.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi1/py_api/SetGlobalOption.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi1/py_api/Status.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/py_api/Status.html + + + + + + https://movidius.github.io/ncsdk/TOC.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/py_api/TensorDescriptor.html + + + + + + https://movidius.github.io/ncsdk/ncapi/c_api_migration.html + + + + + + https://movidius.github.io/ncsdk/caffe.html + + + + + + https://movidius.github.io/ncsdk/tools/check.html + + + + + + https://movidius.github.io/ncsdk/tools/compile.html + + + + + + https://movidius.github.io/ncsdk/compiler_error.html + + + + + + https://movidius.github.io/ncsdk/configure_network.html + + + + + + https://movidius.github.io/ncsdk/docker.html + + + + + + https://movidius.github.io/ncsdk/docker_proxy.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/py_api/enumerate_devices.html + + + + + + https://movidius.github.io/ncsdk/examples.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/py_api/global_get_option.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/py_api/global_set_option.html + + + + + + https://movidius.github.io/ncsdk/ + + + + + + https://movidius.github.io/ncsdk/install.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi1/c_api/mvncAllocateGraph.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi1/c_api/mvncCloseDevice.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi1/c_api/mvncDeallocateGraph.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi1/c_api/mvncDeviceOptions.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi1/c_api/mvncGetDeviceName.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi1/c_api/mvncGetDeviceOption.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi1/c_api/mvncGetGlobalOption.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi1/c_api/mvncGetGraphOption.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi1/c_api/mvncGetResult.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi1/c_api/mvncGlobalOptions.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi1/c_api/mvncGraphOptions.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi1/c_api/mvncLoadTensor.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi1/c_api/mvncOpenDevice.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi1/c_api/mvncSetDeviceOption.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi1/c_api/mvncSetGlobalOption.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi1/c_api/mvncSetGraphOption.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi1/c_api/mvncStatus.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/c_api/ncDeviceClose.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/c_api/ncDeviceCreate.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/c_api/ncDeviceDestroy.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/c_api/ncDeviceGetOption.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/c_api/ncDeviceHandle_t.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/c_api/ncDeviceHwVersion_t.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/c_api/ncDeviceOpen.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/c_api/ncDeviceOption_t.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/c_api/ncDeviceSetOption.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/c_api/ncDeviceState_t.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/c_api/ncFifoAllocate.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/c_api/ncFifoCreate.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/c_api/ncFifoDataType_t.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/c_api/ncFifoDestroy.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/c_api/ncFifoGetOption.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/c_api/ncFifoHandle_t.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/c_api/ncFifoOption_t.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/c_api/ncFifoReadElem.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/c_api/ncFifoRemoveElem.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/c_api/ncFifoSetOption.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/c_api/ncFifoState_t.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/c_api/ncFifoType_t.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/c_api/ncFifoWriteElem.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/c_api/ncGlobalGetOption.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/c_api/ncGlobalOption_t.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/c_api/ncGlobalSetOption.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/c_api/ncGraphAllocate.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/c_api/ncGraphAllocateWithFifos.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/c_api/ncGraphAllocateWithFifosEx.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/c_api/ncGraphCreate.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/c_api/ncGraphDestroy.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/c_api/ncGraphGetOption.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/c_api/ncGraphHandle_t.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/c_api/ncGraphOption_t.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/c_api/ncGraphQueueInference.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/c_api/ncGraphQueueInferenceWithFifoElem.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/c_api/ncGraphSetOption.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/c_api/ncGraphState_t.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/c_api/ncLogLevel_t.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/c_api/ncStatus_t.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/c_api/ncTensorDescriptor_t.html + + + + + + https://movidius.github.io/ncsdk/ncs.html + + + + + + https://movidius.github.io/ncsdk/tools/profile.html + + + + + + https://movidius.github.io/ncsdk/ncapi/python_api_migration.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/py_api/readme.html + + + + + + https://movidius.github.io/ncsdk/ncapi/readme.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/c_api/readme.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi1/c_api/readme.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi1/readme.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi1/py_api/readme.html + + + + + + https://movidius.github.io/ncsdk/ncapi/ncapi2/readme.html + + + + + + https://movidius.github.io/ncsdk/release_notes.html + + + + + + + + + + https://movidius.github.io/ncsdk/support.html + + + + + + https://movidius.github.io/ncsdk/tensorflow.html + + + + + + https://movidius.github.io/ncsdk/tf_compile_guidance.html + + + + + + https://movidius.github.io/ncsdk/tf_modelzoo.html + + + + + + https://movidius.github.io/ncsdk/tf_slim.html + + + + + + https://movidius.github.io/ncsdk/tools/tools_overview.html + + + + + + https://movidius.github.io/ncsdk/virtualenv.html + + + + + + https://movidius.github.io/ncsdk/vm_config.html + + + + \ No newline at end of file diff --git a/docs/support.html b/docs/support.html new file mode 100755 index 0000000..0bd16a4 --- /dev/null +++ b/docs/support.html @@ -0,0 +1,522 @@ + + + + + + + + +Support | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Support + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + +
    + + + + + + + +
    + + + + +
    +

    Support

    + +

    There is an active user forum for users of the Intel® Movidius™ Neural Compute SDK to discuss ideas and seek troubleshooting help.

    + +

    Visit the forum here.

    + +
    + +
    + +
    + +
    + + + +
    +
    + +
    +
    + + diff --git a/docs/tensorflow.html b/docs/tensorflow.html index 78a8ec0..7316edc 100644 --- a/docs/tensorflow.html +++ b/docs/tensorflow.html @@ -1,55 +1,518 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +TensorFlow Support | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +TensorFlow Support + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + API + +
  • + + + + + + +
  • + + Examples +
  • + + + + + + +
  • + + Release Notes +
  • + + + + + + +
  • + + Support +
  • + + + + + + -
    + + + +
    + + -

    TensorFlow™ Support

    + +
    +

    TensorFlow Support

    -

    TensorFlow™ is a deep learning framework pioneered by Google. The Intel® Movidius™ Neural Compute SDK (Intel® Movidius™ NCSDK) introduced TensorFlow support with the NCSDK v1.09.xx release. TensorFlow validation for each release happens on the TensorFlow version noted in the release notes.

    +

    TensorFlow* is a deep learning framework pioneered by Google. The Intel® Movidius™ Neural Compute SDK (Intel® Movidius™ NCSDK) introduced TensorFlow support with the NCSDK v1.09.xx release. TensorFlow validation for each release happens on the TensorFlow version noted in the release notes.

    Default installation location: /opt/movidius/tensorflow

    -

    TensorFlow™ Model Zoo

    +

    TensorFlow Model Zoo

    -

    TensorFlow™ has a GitHub repository for models at https://github.com/tensorflow/models. It contains several models that are maintained by the respective authors.

    +

    TensorFlow has a GitHub repository for models at https://github.com/tensorflow/models. It contains several models that are maintained by the respective authors.

    -

    Compiling TensorFlow™ Networks

    +

    Compiling TensorFlow Networks

    -

    Supported Networks

    +

    Supported Networks

    • Inception v1
    • Inception v2
    • @@ -81,15 +544,23 @@

      Supported Networks

      See release notes for supported networks for a particular release.

      - - +
    + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/tf_compile_guidance.html b/docs/tf_compile_guidance.html index c2e5a98..e197c82 100644 --- a/docs/tf_compile_guidance.html +++ b/docs/tf_compile_guidance.html @@ -1,40 +1,504 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +Guidance for Compiling TensorFlow Networks | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Guidance for Compiling TensorFlow Networks + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + API + +
  • + + + + + + +
  • + + Examples +
  • + + + + + + +
  • + + Release Notes +
  • + + + + + + +
  • + + Support +
  • + + + + + + -
    + + -

    Guidance for Compiling TensorFlow™ Networks

    -

    Below you will find general guidance for compiling a TensorFlow™ network that was built for training rather than inference. The general guidance is illustrated with changes to make to the mnist_deep.py available from the TensorFlow™ GitHub repository. The changes are shown as typical diff output where a ‘-‘ at the front of a line indicates the line is removed, and a ‘+’ at the front of a line indicates the line should be added. Lines without a ‘-‘ or ‘+’ are unchanged and provided for context.

    +
    + + + + +
    +

    Guidance for Compiling TensorFlow Networks

    -

    In order to compile a TensorFlow™ network for use with the Neural Compute API you will need to save a version of the network that is specific to deployment/inference and omits the training features. The following list of steps includes what users need to do to compile a typical TensorFlow™ network. Every step may not apply to every network, but should be taken as general guidance.

    +

    Below you will find general guidance for compiling a TensorFlow* network that was built for training rather than inference. The general guidance is illustrated with changes to make to the mnist_deep.py available from the TensorFlow™ GitHub repository. The changes are shown as typical diff output where a ‘-‘ at the front of a line indicates the line is removed, and a ‘+’ at the front of a line indicates the line should be added. Lines without a ‘-‘ or ‘+’ are unchanged and provided for context.

    + +

    In order to compile a TensorFlow network for use with the Neural Compute API you will need to save a version of the network that is specific to deployment/inference and omits the training features. The following list of steps includes what users need to do to compile a typical TensorFlow™ network. Every step may not apply to every network, but should be taken as general guidance.

    • Make sure there is a name set for the first layer of the network. This is not strictly required but makes compiling much easier because if you don’t explicitly name the first and last layer you will need to determine what name those layers were given and provide those to the compiler. For mnist_deep.py you would make the following change for the first node to give it the name “input”:
    • @@ -46,7 +510,7 @@

      Guidance for Compiling Tenso

      -
    • Add TensorFlow™ code to save the trained network. For mnist_deep.py the change to save the trained network is:
    • +
    • Add TensorFlow code to save the trained network. For mnist_deep.py the change to save the trained network is:
    +  saver = tf.train.Saver()
    @@ -69,7 +533,7 @@ 

    Guidance for Compiling Tenso
  • mnist_model.meta
  • -
  • Remove training specific code from the network, and add code to read in the previously saved network to create an inference only version. For this step its advised that you copy the original TensorFlow™ code to a new file and modify the new file. For example if you are working with mnist_deep.py you could copy that to mnist_deep_inference.py. Things to remove from the inference code are: +
  • Remove training specific code from the network, and add code to read in the previously saved network to create an inference only version. For this step its advised that you copy the original TensorFlow code to a new file and modify the new file. For example if you are working with mnist_deep.py you could copy that to mnist_deep_inference.py. Things to remove from the inference code are:
    • Dropout layers
    • Training specific code @@ -182,21 +646,29 @@

      Guidance for Compiling Tenso
    • mnist_inference.meta
  • -
  • Compile the final saved network with the following command and if it all works you should see the mnist_inference.graph file created in the current directory. Note you pass in only the weights file prefix “mnist_inference” for the -w option for a TensorFlow™ network on the compile command line. The full command is below.
  • +
  • Compile the final saved network with the following command and if it all works you should see the mnist_inference.graph file created in the current directory. Note you pass in only the weights file prefix “mnist_inference” for the -w option for a TensorFlow network on the compile command line. The full command is below.
  • mvNCCompile mnist_inference.meta -s 12 -in input -on output -o mnist_inference.graph
     
    - - +

    + +
    + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/tf_modelzoo.html b/docs/tf_modelzoo.html index fd2ca9a..ca3dcf5 100644 --- a/docs/tf_modelzoo.html +++ b/docs/tf_modelzoo.html @@ -1,37 +1,500 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +Guidance for Compiling TensorFlow™ Model Zoo Networks | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Guidance for Compiling TensorFlow™ Model Zoo Networks + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + + +
  • + Installation + +
  • + + + + + +
  • + Frameworks + +
  • + + + + + +
  • + Toolkit + +
  • + + + + + +
  • + API + +
  • + + + + + + +
  • + + Examples +
  • + + + + + + +
  • + + Release Notes +
  • + + + + + + +
  • + + Support +
  • + + + + + + -
    + + + +
    + + -

    Guidance for Compiling TensorFlow™ Model Zoo Networks

    + +
    +

    Guidance for Compiling TensorFlow™ Model Zoo Networks

    You can easily compile models from the TensorFlow™ Model Zoo for use with the Intel® Movidius™ Neural Compute SDK (Intel® Movidius™ NCSDK) and Neural Compute API using scripts provided by TensorFlow™.

    @@ -114,15 +577,23 @@

    Example Using Inception v3 Model

    mvNCCompile -s 12 inception_v3_frozen.pb -in=input -on=InceptionV3/Predictions/Reshape_1
     
    - - +
    + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/tf_slim.html b/docs/tf_slim.html index 50a3485..ef32b83 100644 --- a/docs/tf_slim.html +++ b/docs/tf_slim.html @@ -1,37 +1,500 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +Guidance for Compiling TensorFlow-Slim Networks | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Guidance for Compiling TensorFlow-Slim Networks + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + + +
  • + Installation + +
  • + + + + + +
  • + Frameworks + +
  • + + + + + +
  • + Toolkit + +
  • + + + + + +
  • + API + +
  • + + + + + + +
  • + + Examples +
  • + + + + + + +
  • + + Release Notes +
  • + + + + + + +
  • + + Support +
  • + + + + + + -
    + + + +
    + + -

    Guidance for Compiling TensorFlow-Slim Networks

    + +
    +

    Guidance for Compiling TensorFlow-Slim Networks

    If you are compiling a TensorFlow-Slim network for use with the Intel® Movidius™ Neural Compute SDK (Intel® Movidius™ NCSDK) and Neural Compute API, you can follow these steps.

    @@ -67,15 +530,23 @@

    Guidance for Compiling

    - - + + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/tools/check.html b/docs/tools/check.html index 5b482c2..999aae3 100644 --- a/docs/tools/check.html +++ b/docs/tools/check.html @@ -1,73 +1,514 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +mvNCCheck | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +mvNCCheck + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + + +
  • + + Examples +
  • + + + + + + +
  • + + Release Notes +
  • + + + + + + +
  • + + Support +
  • + + + + + + -
    + + -

    mvNCCheck

    +
    + + - - - - - - - - - - - - - - - - - - - - - -
    TypeFunction
    LibraryCommand Line Tools
    OutputNone
    See alsomvNCCompile, mvNCProfile
    + +
    +

    mvNCCheck

    Overview

    -

    mvNCCheck is a command line tool that checks the validity of a Caffe or TensorFlow™ neural network on a neural compute device.

    + +

    mvNCCheck is a command line tool that checks the validity of a Caffe or TensorFlow* neural network on a neural compute device.

    The check is done by running an inference on both the device and in software on the host computer using the supplied network and appropriate framework libraries. The results for both inferences are compared to determine a if the network passes or fails. The top 5 inference results are provided as output. This tool works best with image classification networks.

    Syntax

    -

    Caffe

    +

    Caffe

    mvNCCheck network.prototxt [-w network.caffemodel] [-s max_number_of_shaves] [-in input_node_name] [-on output_node_name] [-is input_width input_height] [-i input_filename] [-id top1_validation_ID] [-S scale_factor] [-M mean_subtraction_number/npy_filename] [-cs color_sequence] [-es]
     
    -

    TensorFlow™

    +

    TensorFlow

    mvNCCheck network.meta [-s max_number_of_shaves] [-in input_node_name] [-on output_node_name] [-is input_width input_height] [-i input_filename] [-id top1_validation_ID] [-S scale_factor] [-M mean_subtraction_number/npy_filename] [-cs color_sequence] [-es]
     
    @@ -80,7 +521,7 @@

    TensorFlow™

    - Caffe:
    network.prototxt

    TensorFlow™:
    network.meta
    network.pb + Caffe:
    network.prototxt

    TensorFlow:
    network.meta
    network.pb Name of the network file (required). @@ -89,7 +530,7 @@

    TensorFlow™

    [-w weights_file] - Specify the weights filename from training. For Caffe this is the .caffemodel file. If omitted, zero weights will be used.

    This option is not to be used for TensorFlow™ networks. + Specify the weights filename from training. For Caffe this is the .caffemodel file. If omitted, zero weights will be used.

    This option is not to be used for TensorFlow networks. [-s max_number_of_shaves] @@ -97,11 +538,11 @@

    TensorFlow™

    [-in input_node_name] - Specify an alternative start point for the network. By default the network’s start point is the input layer. This option enables partial network processing. When used together with the -on option, the user can isolate one or more layers in a network for analysis.

    This option is required for TensorFlow™ networks. You can use the name parameter (available for most layers) when creating your network and pass that name into this option.
    To add a named node that doesn’t change the network you can use the following:
    x = tensorflow.identity(prev_tensor, name='new_node') + Specify an alternative start point for the network. By default the network’s start point is the input layer. This option enables partial network processing. When used together with the -on option, the user can isolate one or more layers in a network for analysis.

    This option is required for TensorFlow networks. You can use the name parameter (available for most layers) when creating your network and pass that name into this option.
    To add a named node that doesn’t change the network you can use the following:
    x = tensorflow.identity(prev_tensor, name='new_node') [-on output_node_name] - Specify an alternative end point for the network. By default the network’s end point is the output layer. This option enables partial network processing. When used together with the -in option, the user can isolate one or more layers in a network for analysis.

    Be aware that the parser will stop at the first instance of this node name (e.g., a Relu following a Conv will not be processed if it shares the same name).

    This option is required for TensorFlow™ networks. You can use the name parameter (available for most layers) when creating your network and pass that name into this option.
    To add a named node that doesn’t change the network you can use the following:
    x = tensorflow.identity(prev_tensor, name='new_node') + Specify an alternative end point for the network. By default the network’s end point is the output layer. This option enables partial network processing. When used together with the -in option, the user can isolate one or more layers in a network for analysis.

    Be aware that the parser will stop at the first instance of this node name (e.g., a Relu following a Conv will not be processed if it shares the same name).

    This option is required for TensorFlow networks. You can use the name parameter (available for most layers) when creating your network and pass that name into this option.
    To add a named node that doesn’t change the network you can use the following:
    x = tensorflow.identity(prev_tensor, name='new_node') [-is input_width input_height] @@ -136,11 +577,11 @@

    TensorFlow™

    Examples

    -

    Caffe

    +

    Caffe

    mvNCCheck deploy.prototxt -w bvlc_googlenet.caffemodel -s 12 -in input -on prob -is 224 224 -cs 2,1,0
     
    -

    TensorFlow™

    +

    TensorFlow

    mvNCCheck inception_v1.meta -s 12 -in=input -on=InceptionV1/Logits/Predictions/Reshape_1 -is 224 224 -cs 0,1,2
     
    @@ -150,15 +591,23 @@

    Further Reading

  • Using and Understanding the Neural Compute SDK: mvNCCheck
  • - - +
    + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/tools/compile.html b/docs/tools/compile.html index 08c9163..b8605d7 100644 --- a/docs/tools/compile.html +++ b/docs/tools/compile.html @@ -1,71 +1,514 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +mvNCCompile | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +mvNCCompile + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Toolkit + +
  • + + + + + +
  • + API + +
  • + + + + + + +
  • + + Examples +
  • + + + + + + +
  • + + Release Notes +
  • + + + + + + +
  • + + Support +
  • + + + + + + -
    + + -

    mvNCCompile

    +
    + + - - - - - - - - - - - - - - - - - - - - - -
    TypeFunction
    LibraryCommand Line Tools
    OutputCompiled graph file
    See alsomvNCProfile, mvNCCheck
    + +
    +

    mvNCCompile

    Overview

    -

    mvNCCompile is a command line tool that compiles network and weights files for Caffe or TensorFlow™ models into an Intel® Movidius™ graph file format that is compatible with the Intel® Movidius™ Neural Compute SDK (Intel® Movidius™ NCSDK) and Neural Compute API (NCAPI).

    + +

    mvNCCompile is a command line tool that compiles network and weights files for Caffe or TensorFlow* models into an Intel® Movidius™ graph file format that is compatible with the Intel® Movidius™ Neural Compute SDK (Intel® Movidius™ NCSDK) and Neural Compute API (NCAPI).

    + +

    Syntax

    -

    Caffe

    +

    Caffe

    mvNCCompile network.prototxt [-w network.caffemodel] [-s max_number_of_shaves] [-in input_node_name] [-on output_node_name] [-is input_width input_height] [-o output_graph_filename] [-ec]
     
    -

    TensorFlow™

    +

    TensorFlow

    mvNCCompile network.meta [-s max_number_of_shaves] [-in input_node_name] [-on output_node_name] [-is input_width input_height] [-o output_graph_filename] [-ec]
     
    @@ -78,7 +521,7 @@

    TensorFlow™

    - Caffe:
    network.prototxt

    TensorFlow™:
    network.meta
    network.pb + Caffe:
    network.prototxt

    TensorFlow:
    network.meta
    network.pb Name of the network file (required). @@ -87,7 +530,7 @@

    TensorFlow™

    [-w weights_file] - Specify the weights filename from training. For Caffe this is the .caffemodel file. If omitted, zero weights will be used.

    This option is not to be used for TensorFlow™ networks. + Specify the weights filename from training. For Caffe this is the .caffemodel file. If omitted, zero weights will be used.

    This option is not to be used for TensorFlow networks. [-s max_number_of_shaves] @@ -95,11 +538,11 @@

    TensorFlow™

    [-in input_node_name] - Specify an alternative start point for the network. By default the network’s start point is the input layer. This option enables partial network processing. When used together with the -on option, the user can isolate one or more layers in a network for analysis.

    This option is required for TensorFlow™ networks. You can use the name parameter (available for most layers) when creating your network and pass that name into this option.
    To add a named node that doesn’t change the network you can use the following:
    x = tensorflow.identity(prev_tensor, name='new_node') + Specify an alternative start point for the network. By default the network’s start point is the input layer. This option enables partial network processing. When used together with the -on option, the user can isolate one or more layers in a network for analysis.

    This option is required for TensorFlow networks. You can use the name parameter (available for most layers) when creating your network and pass that name into this option.
    To add a named node that doesn’t change the network you can use the following:
    x = tensorflow.identity(prev_tensor, name='new_node') [-on output_node_name] - Specify an alternative end point for the network. By default the network’s end point is the output layer. This option enables partial network processing. When used together with the -in option, the user can isolate one or more layers in a network for analysis.

    Be aware that the parser will stop at the first instance of this node name (e.g., a Relu following a Conv will not be processed if it shares the same name).

    This option is required for TensorFlow™ networks. You can use the name parameter (available for most layers) when creating your network and pass that name into this option.
    To add a named node that doesn’t change the network you can use the following:
    x = tensorflow.identity(prev_tensor, name='new_node') + Specify an alternative end point for the network. By default the network’s end point is the output layer. This option enables partial network processing. When used together with the -in option, the user can isolate one or more layers in a network for analysis.

    Be aware that the parser will stop at the first instance of this node name (e.g., a Relu following a Conv will not be processed if it shares the same name).

    This option is required for TensorFlow networks. You can use the name parameter (available for most layers) when creating your network and pass that name into this option.
    To add a named node that doesn’t change the network you can use the following:
    x = tensorflow.identity(prev_tensor, name='new_node') [-is input_width input_height] @@ -117,27 +560,32 @@

    TensorFlow™

    Example

    -

    Caffe

    + +

    Caffe

    mvNCCompile deploy.prototxt -w bvlc_googlenet.caffemodel -s 12 -in input -on prob -is 224 224 -o GoogLeNet.graph
     
    -

    TensorFlow™

    + +

    TensorFlow

    mvNCCompile inception-v1.meta -s 12 -in=input -on=InceptionV1/Logits/Predictions/Reshape_1 -is 224 224 -o InceptionV1.graph
     
    -

    Notes

    -
      -
    • A list of mvNCCompile error codes can be seen here.
    • -
    +
    + + + + + + + - - -
    - - -
    - +
    +
    + +
    +
    - - diff --git a/docs/tools/profile.html b/docs/tools/profile.html index dd26703..7812244 100644 --- a/docs/tools/profile.html +++ b/docs/tools/profile.html @@ -1,72 +1,516 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +mvNCProfile | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +mvNCProfile + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + + +
  • + + Examples +
  • + + + + + + +
  • + + Release Notes +
  • + + + + + + +
  • + + Support +
  • + + + + + + -
    + + -

    mvNCProfile

    +
    + + - - - - - - - - - - - - - - - - - - - - - -
    TypeFunction
    LibraryCommand Line Tools
    OutputProfile Data in HTML/graphic/Text Format
    See alsomvNCCompile, mvNCCheck
    + +
    +

    mvNCProfile

    Overview

    +

    mvNCProfile is a command line tool that compiles a network for use with the Intel® Movidius™ Neural Compute SDK (Intel® Movidius™ NCSDK), runs the network on a connected neural compute device, and outputs text and HTML profile reports.

    The profiling data contains layer-by-layer statistics about the performance of the network. This is helpful in determining how much time is spent on each layer to narrow down potential changes to the network to improve the total inference time.

    Syntax

    -

    Caffe

    +

    Caffe

    +
    mvNCProfile network.prototxt [-w network.caffemodel] [-s max_number_of_shaves] [-in input_node_name] [-on output_node_name] [-is input_width input_height] [-ec]
     
    -

    TensorFlow™

    + +

    TensorFlow*

    +
    mvNCProfile network.meta [-s max_number_of_shaves] [-in input_node_name] [-on output_node_name] [-is input_width input_height] [-ec]
     
    @@ -79,12 +523,12 @@

    TensorFlow™

    - Caffe:
    network.prototxt

    TensorFlow™:
    network.meta
    network.pb + Caffe:
    network.prototxt

    TensorFlow:
    network.meta
    network.pb Name of the network file (required). [-w weights_file] - Specify the weights filename from training. For Caffe this is the .caffemodel file. If omitted, zero weights will be used.

    This option is not to be used for TensorFlow™ networks. + Specify the weights filename from training. For Caffe this is the .caffemodel file. If omitted, zero weights will be used.

    This option is not to be used for TensorFlow networks. [-s max_number_of_shaves] @@ -92,11 +536,11 @@

    TensorFlow™

    [-in input_node_name] - Specify an alternative start point for the network. By default the network’s start point is the input layer. This option enables partial network processing. When used together with the -on option, the user can isolate one or more layers in a network for analysis.

    This option is required for TensorFlow™ networks. You can use the name parameter (available for most layers) when creating your network and pass that name into this option.
    To add a named node that doesn’t change the network you can use the following:
    x = tensorflow.identity(prev_tensor, name='new_node') + Specify an alternative start point for the network. By default the network’s start point is the input layer. This option enables partial network processing. When used together with the -on option, the user can isolate one or more layers in a network for analysis.

    This option is required for TensorFlow networks. You can use the name parameter (available for most layers) when creating your network and pass that name into this option.
    To add a named node that doesn’t change the network you can use the following:
    x = tensorflow.identity(prev_tensor, name='new_node') [-on output_node_name] - Specify an alternative end point for the network. By default the network’s end point is the output layer. This option enables partial network processing. When used together with the -in option, the user can isolate one or more layers in a network for analysis.

    Be aware that the parser will stop at the first instance of this node name (e.g., a Relu following a Conv will not be processed if it shares the same name).

    This option is required for TensorFlow™ networks. You can use the name parameter (available for most layers) when creating your network and pass that name into this option.
    To add a named node that doesn’t change the network you can use the following:
    x = tensorflow.identity(prev_tensor, name='new_node') + Specify an alternative end point for the network. By default the network’s end point is the output layer. This option enables partial network processing. When used together with the -in option, the user can isolate one or more layers in a network for analysis.

    Be aware that the parser will stop at the first instance of this node name (e.g., a Relu following a Conv will not be processed if it shares the same name).

    This option is required for TensorFlow networks. You can use the name parameter (available for most layers) when creating your network and pass that name into this option.
    To add a named node that doesn’t change the network you can use the following:
    x = tensorflow.identity(prev_tensor, name='new_node') [-is input_width input_height] @@ -110,16 +554,20 @@

    TensorFlow™

    Examples

    -

    Caffe

    + +

    Caffe

    +
    mvNCProfile deploy.prototxt -w bvlc_googlenet.caffemodel -s 12 -in input -on prob -is 224 224
     
    -

    TensorFlow™

    + +

    TensorFlow

    +
    mvNCProfile inception_v1.meta -s 12 -in input -on InceptionV1/Logits/Predictions/Reshape_1 -is 224 224
     
    -

    Example Profile Output for GoogLeNet

    +

    Example Profile Output for GoogLeNet

    -

    Text Format

    +

    Text Format

    Console output from the mvNCProfile tool is shown below.

    Detailed Per Layer Profile
     Layer      Name                                 MFLOPs    Bandwidth MB/s        time(ms)
    @@ -204,20 +652,27 @@ 

    Text Format

    ----------------------------------------------------------------------------------------
    -

    Graphical Format

    +

    Graphical Format

    The graphical representation of the profile information (saved as output_report.html and output.gv.svg files) is shown below.

    +
    + + + + + + + - - -
    - - -
    - +
    +
    + +
    +
    - - diff --git a/docs/tools/tools_overview.html b/docs/tools/tools_overview.html new file mode 100755 index 0000000..fcc38d6 --- /dev/null +++ b/docs/tools/tools_overview.html @@ -0,0 +1,546 @@ + + + + + + + + +Intel® Movidius™ Neural Compute SDK Toolkit | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Intel® Movidius™ Neural Compute SDK Toolkit + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + +
    + + + + + + + +
    + + + + +
    +

    Introduction

    + +

    The Intel® Movidius™ Neural Compute SDK provides tools for profiling, tuning, and compiling a deep neural network (DNN) model on a development computer (host system).

    + + + + + + + + + + + + + + + + + + + + + + +
    ToolDescription
    mvNCCompileConverts a Caffe/TensorFlow* network and associated weights to an internal Intel® Movidius™ compiled format for use with the Intel® Movidius™ Neural Compute API.
    mvNCProfileProvides layer-by-layer statistics to evaluate the performance of Caffe/TensorFlow networks on your neural compute device.
    mvNCCheckCompares the inference results from running the network on your neural compute device vs. Caffe/TensorFlow for network compilation validation.
    + +

    See the documentation for each tool for more information.

    + + +
    + +
    + +
    + +
    + + + +
    +
    + +
    +
    + + diff --git a/docs/virtualenv.html b/docs/virtualenv.html index 91bde91..ebc0118 100644 --- a/docs/virtualenv.html +++ b/docs/virtualenv.html @@ -1,46 +1,509 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +Installation and Configuration with virtualenv | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Installation and Configuration with virtualenv + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + API + +
  • + + + + + + +
  • + + Examples +
  • + + + + + + +
  • + + Release Notes +
  • + + + + + + +
  • + + Support +
  • + + + + + + + + + -
    +
    + + -

    Using the Intel® Movidius™ Neural Compute SDK with virtualenv

    + +
    +

    Installation and Configuration with virtualenv

    -

    NOTE: This feature is only available with Intel® Movidius™ Neural Compute SDK 2.x.

    +
    This feature is only available with Intel® Movidius™ Neural Compute SDK 2.x.

    virtualenv is a tool to create isolated Python environments that help avoid issues caused by conflicting package dependencies for different applications.

    -

    To use virtualenv with the Intel® Movidius™ Neural Compute SDK (Intel® Movidius™ NCSDK), you must enable virtualenv in the NCSDK configuration before installing the NCSDK.

    -

    Enabling virtualenv

    + +

    Before running the ncsdk/install.sh script, open ncsdk/ncsdk.conf for editing and set USE_VIRTUALENV=yes (by default it will say USE_VIRTUALENV=no).

    Save the change and then proceed with NCSDK installation.

    @@ -84,15 +547,23 @@

    Troubleshooting

    - - +
    + + + + + -
    - - -
    - - - + + +
    +
    + +
    +
    + diff --git a/docs/vm_config.html b/docs/vm_config.html index 8d8a538..3810b16 100644 --- a/docs/vm_config.html +++ b/docs/vm_config.html @@ -1,41 +1,504 @@ - - - + + + - - - - - - - - - - -
    -
    -

    Intel® Movidius™ Neural Compute SDK

    + + + + +Installation and Configuration with a Virtual Machine | Intel® Movidius™ Neural Compute SDK Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Installation and Configuration with a Virtual Machine + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    -

    View the Project on GitHub

    -
    + + + + + + +
  • + Frameworks + +
  • + + + + + +
  • + Toolkit + +
  • + + + + + +
  • + API + +
  • + + + + + + +
  • + + Examples +
  • + + + + + + +
  • + + Release Notes +
  • + + + + + + +
  • + + Support +
  • + + + + + + -
    + + + +
    + + -

    Virtual Machine Configuration

    + +
    +

    Installation and Configuration with a Virtual Machine

    The Intel® Movidius™ Neural Compute SDK (Intel® Movidius™ NCSDK) can be installed on a virtual machine. This allows you to run the NCSDK on an unsupported host OS and/or to keep the NCSDK installation isolated from your host system.

    -

    We have validated the installation with VirtualBox but other virtual machine products may also work with customization specific to that product.

    +
    We have validated the installation with VirtualBox but other virtual machine products may also work with customization specific to that product.

    General Requirements

      @@ -60,7 +523,7 @@

      General Requirements

      Installation

      -

      Virtual Machine Creation

      +

      Virtual Machine Creation

      Use an existing Ubuntu virtual machine that meets installation requirements, or set up a new virtual machine with the following settings:

      @@ -95,14 +558,14 @@

      Virtual Machine Creation

    • File location and size
      • Use the default location or choose another.
      • -
      • 10.00+ GB
      • +
      • 15.00+ GB

    If necessary, download an Ubuntu 16.04 Desktop .iso image file on your host machine. Then, start the virtual machine and follow prompts to install Ubuntu 16.04.

    -

    USB Configuration

    +

    USB Configuration

    You must enable a USB 3.0 controller and create USB whitelist filters for the virtual machine. The USB 3.0 feature requires the VirtualBox Extension Pack.

    @@ -130,20 +593,28 @@

    USB Configuration

    -

    Install the NCSDK

    +

    Install the NCSDK

    Start the virtual machine. In the virtual machine, follow Intel® Movidius™ Neural Compute SDK Installation and Configuration directions to install the NCSDK.

    - - +
    + + + + + -
    - - -
    - - - + + + + diff --git a/examples/Makefile b/examples/Makefile index 301ba9b..c1dc89e 100644 --- a/examples/Makefile +++ b/examples/Makefile @@ -6,7 +6,6 @@ endif TOPTARGETS := all clean check profile compile run SUBDIRS := $(wildcard */.) -SUBDIRS := $(filter-out win/., $(SUBDIRS)) $(TOPTARGETS): $(SUBDIRS) $(SUBDIRS): diff --git a/examples/apps/Makefile b/examples/apps/Makefile index 3eebe57..daddcac 100644 --- a/examples/apps/Makefile +++ b/examples/apps/Makefile @@ -6,6 +6,7 @@ endif TOPTARGETS := all clean SUBDIRS := $(wildcard */.) +SUBDIRS := $(filter-out win/., $(SUBDIRS)) $(TOPTARGETS): $(SUBDIRS) $(SUBDIRS): diff --git a/examples/apps/multistick_cpp/cpp/multistick.cpp b/examples/apps/multistick_cpp/cpp/multistick.cpp index d7ea48f..0758771 100644 --- a/examples/apps/multistick_cpp/cpp/multistick.cpp +++ b/examples/apps/multistick_cpp/cpp/multistick.cpp @@ -258,7 +258,7 @@ bool DoInferenceOnImageFile(struct ncGraphHandle_t *graphHandle, struct ncDevice // Read descriptor for input tensor length = sizeof(struct ncTensorDescriptor_t); - retCode = ncFifoGetOption(bufferIn, NC_RO_FIFO_TENSOR_DESCRIPTOR, &td, &length); + retCode = ncFifoGetOption(bufferIn, NC_RO_FIFO_GRAPH_TENSOR_DESCRIPTOR, &td, &length); if (retCode || length != sizeof(td)){ printf("ncFifoGetOption failed, retCode=%d\n", retCode); return false; diff --git a/examples/caffe/AlexNet/Makefile b/examples/caffe/AlexNet/Makefile index d089e91..25e3d9c 100644 --- a/examples/caffe/AlexNet/Makefile +++ b/examples/caffe/AlexNet/Makefile @@ -83,7 +83,7 @@ compile: prototxt caffemodel check: prototxt caffemodel @echo "\nmaking check" #-${NCCHECK} -w ${CAFFEMODEL_FILENAME} -i ../../data/images/cat.jpg -s 12 -id 281 ${PROTOTXT_FILENAME} -S 255 -M ../../data/ilsvrc12/ilsvrc_2012_mean.npy - -${NCCHECK} -w ${CAFFEMODEL_FILENAME} -i ../../data/images/cat.jpg -s 12 -id 281 ${PROTOTXT_FILENAME} -M 110 -S 255 -metric top1 + -${NCCHECK} -w ${CAFFEMODEL_FILENAME} -i ../../data/images/cat.jpg -s 12 -id 281 ${PROTOTXT_FILENAME} -M 120 -S 255 -metric top1 .PHONY: run run: compile diff --git a/examples/tensorflow/inception_v1/Makefile b/examples/tensorflow/inception_v1/Makefile index 0b9c057..c7be2fb 100644 --- a/examples/tensorflow/inception_v1/Makefile +++ b/examples/tensorflow/inception_v1/Makefile @@ -7,8 +7,6 @@ NCCOMPILE = mvNCCompile NCPROFILE = mvNCProfile NCCHECK = mvNCCheck -.IGNORE: profile check compile - WEIGHTS_FILENAME = inception_v1_2016_08_28.tar.gz GET_WEIGHTS = (wget http://download.tensorflow.org/models/${WEIGHTS_FILENAME} && tar zxf ${WEIGHTS_FILENAME} && rm ${WEIGHTS_FILENAME}) @@ -52,7 +50,7 @@ compile: weights .PHONY: check check: weights - -${NCCHECK} -s 12 ${MODEL_FILENAME} ${INPUT_NODE_FLAG} ${OUTPUT_NODE_FLAG} -i ../../data/images/cat.jpg -id 829 -S 2 -M 128 -cs 0,1,2 -metric top1 + ${NCCHECK} -s 12 ${MODEL_FILENAME} ${INPUT_NODE_FLAG} ${OUTPUT_NODE_FLAG} -i ../../data/images/cat.jpg -metric top1 -cs 2,1,0 .PHONY: run run: compile diff --git a/examples/tensorflow/inception_v3/Makefile b/examples/tensorflow/inception_v3/Makefile index 5872dc1..7c6fce0 100644 --- a/examples/tensorflow/inception_v3/Makefile +++ b/examples/tensorflow/inception_v3/Makefile @@ -7,8 +7,6 @@ NCCOMPILE = mvNCCompile NCPROFILE = mvNCProfile NCCHECK = mvNCCheck -.IGNORE: profile check compile - WEIGHTS_FILENAME = inception_v3_2016_08_28.tar.gz GET_WEIGHTS = (wget http://download.tensorflow.org/models/${WEIGHTS_FILENAME} && tar zxf ${WEIGHTS_FILENAME} && rm ${WEIGHTS_FILENAME}) @@ -48,7 +46,7 @@ compile: weights .PHONY: check check: weights - -${NCCHECK} -s 4 ${MODEL_FILENAME} ${INPUT_NODE_FLAG} ${OUTPUT_NODE_FLAG} -i ../../data/images/cat.jpg -id 917 -M 128 -S 2 -cs 0,1,2 -metric top1 + -${NCCHECK} -s 4 ${MODEL_FILENAME} ${INPUT_NODE_FLAG} ${OUTPUT_NODE_FLAG} -i ../../data/images/cat.jpg -metric top1 -cs 0,1,2 .PHONY: run run: compile diff --git a/install-opencv.sh b/install-opencv.sh index 85c8310..0e58b04 100755 --- a/install-opencv.sh +++ b/install-opencv.sh @@ -98,20 +98,24 @@ function install_opencv() fi else echo "Installing opencv python for non-Raspbian"; - - # check if pip3 is available on the system via 'command' + # check if pip2 & pip3 are available on the system via 'command' RC=0 command -v pip3 > /dev/null || RC=$? if [ $RC -ne 0 ] ; then exec_and_search_errors "$SUDO_PREFIX apt-get $APT_QUIET update -y" exec_and_search_errors "$SUDO_PREFIX apt-get $APT_QUIET install -y python3-pip" fi + command -v pip2 > /dev/null || RC=$? + if [ $RC -ne 0 ] ; then + exec_and_search_errors "$SUDO_PREFIX apt-get $APT_QUIET install -y python-pip" + fi PIP_QUIET=--quiet [ "${VERBOSE}" = "yes" ] && PIP_QUIET="" - exec_and_search_errors "$PIP_PREFIX pip3 install $PIP_QUIET opencv-python>=3.4.0.12" exec_and_search_errors "$PIP_PREFIX pip3 install $PIP_QUIET opencv-contrib-python>=3.4.0.12" + exec_and_search_errors "$PIP_PREFIX pip2 install $PIP_QUIET opencv-python>=3.4.0.12" + exec_and_search_errors "$PIP_PREFIX pip2 install $PIP_QUIET opencv-contrib-python>=3.4.0.12" fi } diff --git a/install.sh b/install.sh index 8385e28..675d7f4 100755 --- a/install.sh +++ b/install.sh @@ -187,7 +187,7 @@ function download_and_copy_files() download_filename="NCSDK-${NCSDK_VERSION}.tar.gz" if [ ! -f ${download_filename} ] ; then echo "Downloading ${download_filename}" - ncsdk_link="https://downloadmirror.intel.com/27738/eng/NCSDK-2.04.00.06.tar.gz" + ncsdk_link="https://downloadmirror.intel.com/27839/eng/NCSDK-2.05.00.02.tar.gz" exec_and_search_errors "wget --no-cache -O ${download_filename} $ncsdk_link" fi # ncsdk_pkg is the filename without the .tar.gz extension @@ -350,12 +350,44 @@ function install_python_dependencies() exec_and_search_errors "$PIP_PREFIX pip2 install $PIP_QUIET --trusted-host files.pythonhosted.org Enum34>=1.1.6" exec_and_search_errors "$PIP_PREFIX pip2 install $PIP_QUIET --trusted-host files.pythonhosted.org --upgrade numpy>=1.13.0,<=1.13.3" + # verify python3 import scipy._lib.decorator working, a potential problem on Ubuntu only. First check python3 import scipy. + RC=0 + python3 -c "import scipy" >& /dev/null || RC=$? + if [ ${RC} -ne 0 ] ; then + echo -e "${RED}Error, cannot import scipy into python3. Error on line $LINENO. Will exit${NC}" + exit 1 + fi + RC=0 + python3 -c "import scipy._lib.decorator" >& /dev/null || RC=$? + if [ ${RC} -ne 0 ] ; then + echo -e "${YELLOW}Problem importing scipy._lib.decorator into python3. Attempting to fix${NC}" + # Get the location of scipy to get the location of decorator.py + RC=0 + SCIPY_FILE=$(python3 -c "import scipy; print(scipy.__file__)") || RC=$? + if [ ${RC} -eq 0 ] ; then + # Get directory decorator.py is in from SCIPY_FILE. If decorator.py isn't a readable file, i.e. from a broken softlink, reinstall via apt + [ ! -f $(dirname $SCIPY_FILE)/decorator.py ] && $SUDO_PREFIX apt install --reinstall python*-decorator + RC=0 + python3 -c "import scipy._lib.decorator" >& /dev/null || RC=$? + if [ ${RC} -ne 0 ] ; then + echo -e "${RED}Error, cannot import scipy._lib.decorator even after trying to fix this problem. Error on line $LINENO. Will exit${NC}" + exit 1 + else + echo "Resolved problem importing scipy._lib.decorator into python3." + echo "" + fi + else + echo -e "${RED}Error in python3 importing scipy / printing scipy.__file__. Error on line $LINENO. Will exit${NC}" + exit 1 + fi + fi + elif [ "${OS_DISTRO,,}" = "raspbian" ] ; then # for Raspian, use apt with python3-* if available exec_and_search_errors "$SUDO_PREFIX apt-get $APT_QUIET install -y $(cat "$DIR/requirements_apt_raspbian.txt")" exec_and_search_errors "$PIP_PREFIX pip3 install $PIP_QUIET --trusted-host files.pythonhosted.org Cython graphviz scikit-image" exec_and_search_errors "$PIP_PREFIX pip3 install $PIP_QUIET --trusted-host files.pythonhosted.org --upgrade numpy==1.13.1" - exec_and_search_errors "$PIP_PREFIX pip3 install $PIP_QUIET --trusted-host files.pythonhosted.org pygraphviz Enum34>=1.1.6" + exec_and_search_errors "$PIP_PREFIX pip3 install $PIP_QUIET --trusted-host files.pythonhosted.org pygraphviz Enum34>=1.1.6 networkx>=2.1,<=2.1" # Install packages for python 2.x, required for NCSDK python API exec_and_search_errors "$PIP_PREFIX pip2 install $PIP_QUIET --trusted-host files.pythonhosted.org Enum34>=1.1.6" exec_and_search_errors "$PIP_PREFIX pip2 install $PIP_QUIET --trusted-host files.pythonhosted.org --upgrade numpy==1.13.1" @@ -370,7 +402,7 @@ function install_python_dependencies() # sets FIND_TENSORFLOW__FOUND_SUPPORTED_VERSION=2 when TensorFlow isn't installed function find_tensorflow() { - SUPPORTED_TENSORFLOW_VERSION=1.6.0 + SUPPORTED_TENSORFLOW_VERSION=1.7.0 RC=0 $PIP_PREFIX pip3 show $1 1> /dev/null || RC=$? if [ $RC -eq 0 ]; then @@ -416,8 +448,13 @@ function install_tensorflow() # install TensorFlow if needed if [ "${INSTALL_TF}" = "yes" ] ; then echo "Couldn't find a supported tensorflow version, downloading TensorFlow $SUPPORTED_TENSORFLOW_VERSION" - WHEEL=tensorflow-1.6.0-cp35-none-any.whl - $SUDO_PREFIX wget https://storage.googleapis.com/download.tensorflow.org/deps/pi/2018_03_22/${WHEEL} + # rename wheel for python 3.5 + WHEEL_DOWNLOAD=tensorflow-1.7.0-cp34-none-any.whl + WHEEL=tensorflow-1.7.0-cp35-none-any.whl + [ -f "${WHEEL_DOWNLOAD}" ] && sudo mv -f ${WHEEL_DOWNLOAD} ${WHEEL_DOWNLOAD}.save + $SUDO_PREFIX wget https://storage.googleapis.com/download.tensorflow.org/deps/pi/2018_05_21/${WHEEL_DOWNLOAD} + [ -f "${WHEEL}" ] && $SUDO_PREFIX mv -f ${WHEEL} ${WHEEL}.save + $SUDO_PREFIX mv ${WHEEL_DOWNLOAD} ${WHEEL} echo "Installing TensorFlow" exec_and_search_errors "$PIP_PREFIX pip3 install --quiet ${WHEEL}" echo "Finished installing TensorFlow" @@ -680,10 +717,15 @@ function install_api() # Copy C API to destination $SUDO_PREFIX cp $SDK_DIR/api/c/mvnc.h $SYS_INSTALL_DIR/include/mvnc2 $SUDO_PREFIX cp $SDK_DIR/api/c/libmvnc.so.0 $SYS_INSTALL_DIR/lib/mvnc/ - $SUDO_PREFIX cp $SDK_DIR/api/c/libmvnc_highclass.so.0 $SYS_INSTALL_DIR/lib/mvnc/ + + if [ -f $SDK_DIR/api/c/libmvnc_highclass.so.0 ] ; then + $SUDO_PREFIX cp $SDK_DIR/api/c/ncHighClass.h $SYS_INSTALL_DIR/include/mvnc2 + $SUDO_PREFIX cp $SDK_DIR/api/c/libmvnc_highclass.so.0 $SYS_INSTALL_DIR/lib/mvnc/ + fi echo "NCS Include files have been installed in $SYS_INSTALL_DIR/include" check_and_remove_file $SYS_INSTALL_DIR/include/mvnc.h + check_and_remove_file $SYS_INSTALL_DIR/include/ncHighClass.h $SUDO_PREFIX ln -s $SYS_INSTALL_DIR/include/mvnc2/mvnc.h $SYS_INSTALL_DIR/include/mvnc.h check_and_remove_file $SYS_INSTALL_DIR/lib/libmvnc.so.0 @@ -691,7 +733,10 @@ function install_api() check_and_remove_file $SYS_INSTALL_DIR/lib/libmvnc_highclass.so $SUDO_PREFIX ln -s $SYS_INSTALL_DIR/lib/mvnc/libmvnc.so.0 $SYS_INSTALL_DIR/lib/libmvnc.so.0 $SUDO_PREFIX ln -s $SYS_INSTALL_DIR/lib/mvnc/libmvnc.so.0 $SYS_INSTALL_DIR/lib/libmvnc.so - $SUDO_PREFIX ln -s $SYS_INSTALL_DIR/lib/mvnc/libmvnc_highclass.so.0 $SYS_INSTALL_DIR/lib/libmvnc_highclass.so + if [ -f $SYS_INSTALL_DIR/lib/mvnc/libmvnc_highclass.so.0 ] ; then + $SUDO_PREFIX ln -s $SYS_INSTALL_DIR/include/mvnc2/ncHighClass.h $SYS_INSTALL_DIR/include/ncHighClass.h + $SUDO_PREFIX ln -s $SYS_INSTALL_DIR/lib/mvnc/libmvnc_highclass.so.0 $SYS_INSTALL_DIR/lib/libmvnc_highclass.so + fi $SUDO_PREFIX ldconfig diff --git a/requirements.txt b/requirements.txt index 3d1436f..69a25b2 100644 --- a/requirements.txt +++ b/requirements.txt @@ -12,6 +12,6 @@ python-dateutil>=2.4.2,<=2.6.1 scikit-image>=0.11.3,<=0.13.0 scipy>=0.14.1,<=0.19.1 six>=1.10.0 -networkx>=1.10,<=1.11 +networkx>=2.1,<=2.1 pygraphviz>=1.3.1 Enum34>=1.1.6 diff --git a/version.txt b/version.txt index ce4879c..2e86a85 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -2.04.00.06 +2.05.00.02