Quantcast
Channel: Intel Developer Zone Articles
Viewing all 3384 articles
Browse latest View live

Baidu Deep Neural Network Click-Through Rate on Intel® Xeon® Processors E5 v4

$
0
0

Background

Every day people are searching the Web looking for information due to the business they are in, watching videos, or buying something. According to Hubspot,8 “…75% of users never scroll past the first page of search results.” If the ads of those products they are looking for happen to appear at the top of the search, those ads are very likely to get visited. In order for an ad to appear in the first couple of search pages, that ad must be very popular, which normally takes years to happen. An ad can also appear at the top because it talks about information or products that is widely known or it contains popular keywords.

How do new web sites selling products or services appear at the top of the search list? The key is to use the right keywords that people might use to search for their products or services.

Baidu1 is the most popular search engine in China. Ad companies can pay Baidu so that their ads appear at the top of the search list. The company whose ads are visited/clicked by users will pay Baidu. The paid model can be pay per click (PPC) or paying a fixed amount of money for a certain period of time regardless of how many times a user clicks an ad.

To choose the right keywords for the search, Baidu employs machine learning2 in the core service of the ad platform of Baidu and their other applications. The heart of that engine is the click-through rate (CTR)3 module.

The next sections discuss Baidu CTR and how the Intel® Xeon® processor E5 v4 family helps improve the performance of the Baidu CTR module.

What is a Click-Through Rate?

CTR, according to Wikipedia, is the ratio of users who click a specific link to the number of total users who view a page, email, or advertisement.

Click-through rate

CTR helps predict which ads are relevant enough to get users to click the ads as many times as possible, since the ad companies get charged each time their ads are clicked.

In order to do that, Baidu employs Deep Neural Networks (DNNs).3 DNNs are used not only to predict the relevance of an ad but also to improve user experience when a user visits the Web. The user experience is improved by increasing the accuracy of speech and image recognition.

Deep Neural Networks

A definition of DNN,4 from Wikipedia: A deep neural network (DNN) is an artificial neural network (ANN) with multiple hidden layers of units between the input and output layers.

A neural network (NN) is a system that approximates the operation of the human brain by modeling the neuronal structure of the cerebral cortex on a much smaller scale. An NN consists of three layers: the input, hidden, and output. To train an NN, a pattern (training data set) is fed to the input layer and based on the NN’s rules, it will modify the weights of the connections according to the input patterns. DNN is an NN with many more hidden layers. Each time the information goes from one hidden layer to the next, it combines into something more complex. This way, DNNs can much more accurately model the input pattern compared to that of NNs.

Baidu-webops-2271-fig1

Figure 1:Diagram of deep neural networks.

Figure 1 shows a diagram of a typical DNN with four layers in the hidden layer. In general, more hidden layers and larger training data sets result in more accurately predicting the outcomes. Baidu is using very large data sets for their DNN. For example, it uses more than 10 billion training samples for voice recognition and about 100 million images to train its image recognition engine.


Baidu CTR and Intel® Xeon® Processor E5 v4 Family – A Good Match

Baidu uses large data sets to train its DNN module. Sometimes it takes weeks to complete the training process. Heavy computing power is needed to reduce the training time. Baidu’s DNN makes heavy use of DGEMM.5 DGEMM is the matrix multiplication function for floating-point numbers. It is the core operation for computing the two sample’s similarity in Baidu’s DNN full-connected layer for computing the CTR.

Baidu’s DNN uses the DGEMM function in the Intel® Math Kernel Library (Intel® MKL)6 to replace its DGEMM code. The Intel Xeon processor E5 v4 family supports Intel® Advanced Vector Extensions 2 (Intel® AVX2),7 and Intel MKL is highly optimized for performance using Intel AVX2. This results in performance improvement of Baidu’s DNN. The other benefit of using Intel MKL is that it is not necessary to change the code to take advantage of new features in future Intel® Xeon® processors since Intel MKL will auto-detect new features and makes use of them, if applicable. Just make sure to link the application to the latest version of Intel MKL.

Performance Test Procedure

To prove that the Baidu DNN gains performance due to Intel AVX2 and better hardware, we performed tests on two platforms. One system was equipped with the Intel® Xeon® processor E5-2699 v3 and the other with the Intel® Xeon® processor E5-2699 v4.

Test Configuration

System equipped with the Intel Xeon processor E5-2699 v4

  • System: Preproduction
  • Processors: Intel Xeon processor E5-2699 v4 @2.2GHz
  • Cache: 55 MB
  • Memory: 128 GB DDR4-2133MT/s

System equipped with Intel Xeonprocessor E5-2699 v3

  • System: Preproduction
  • Processors: Intel Xeon processor E5-2699 v3 @2.3GHz
  • Cache: 45 MB
  • Memory: 128 GB DDR4-2133 MT/s

Operating System: CentOS*

Software:

  • GNU* C Compiler Collection 4.8
  • Intel MKL 2016 Update 1

Application: Baidu Machine Learning Deep Neural Network CTR

Test Results

The Intel Xeon processor E5-2699 v4 computing capability helps Baidu reduce the training time of its DDN CTR module and helps provide a better user experience.

Figure 2

Figure 2: Comparison between the application using Intel® Advanced Vector Extensions (Intel® AVX) and Intel® Advanced Vector Extensions 2 (Intel® AVX2).

Figure 2 shows the results between the application using Intel® Advanced Vector Extensions (Intel® AVX) and Intel AVX2 on system equipped with the Intel Xeon processor E5-2699 v4. Intel AVX2 allows the Baidu CTR search engine to increase the performance by 67 percent.

Figure 3

Figure 3: Comparison between the application using Intel® Xeon® processor E5-2699 v3 and the Intel® Xeon® processor E5-2699 v4.

Figure 3 shows the results on a system equipped with the Intel Xeon processor E5-2699 v3 and on a system equipped with the Intel Xeon processor E5-2699 v4. The performance improved by 23 percent due to Intel AVX2 and the additional cores on the Intel Xeon processor E5-2699 v4.

Note:Software and workloads used in performance tests may have been optimized for performance only on Intel® microprocessors. Performance tests, such as SYSmark* and MobileMark*, are measured using specific computer systems, components, software, operations and functions. Any change to any of those factors may cause the results to vary. You should consult other information and performance tests to assist you in fully evaluating your contemplated purchases, including the performance of that product when combined with other products. For more information go to http://www.intel.com/performance

Conclusion

Optimizing the CTR core module helps speed up the Baidu machine learning module. Since the Baidu machine learning module is being used in the ad platform and other Baidu applications, optimizing it will definitely improve the performance of those applications. By using the DGEMM function that comes with Intel MKL and running systems equipped with the Intel Xeon processor E5 v4 family, the performance of the CTR module was significantly improved.

References

  1. baidu company information
  2. Machine Learning
  3. Click-through Rate
  4. Deep Neural Networks
  5. DGEMM
  6. Intel® Math Kernel Library
  7. Intel® AVX2
  8. http://blog.hubspot.com/insiders/inbound-marketing-stats

Visual Coding Framework - Beta Closed

$
0
0

The Intel® Visual Coding Framework (Intel® VCF) team thank you for your interest in the Beta product.

The Intel® VCF Beta is now closed but if you have a specific request or need to access the Beta, please contact petter.larsson@intel.com and we will contact you.

Regards,
The VCF Team

 

How ANSYS Mechanical* v17.0 Improves Performance on Intel® Xeon® Processors E5 v4

$
0
0

Background

In aircraft design and design optimization, engineers take into account static and dynamic loads and modes of vibration. Similarly, engineers need to study the deformation of the car’s frame under both normal and extreme loads in order to better protect the car passengers. Biomechanical engineers need to evaluate the stress generated within a stented arterial blood vessel. It is important to study the risk of a product or process before actually manufacturing the product or implementing the process. In order to evaluate or study all the events mentioning above, engineers often build a physical prototype. The problems with building physical prototypes involve cost and time. Sometimes it is difficult or impossible to fine-tune prototypes to closely match the real objects or events. For example, how do you build a prototype of the bridge damaged by the San Francisco earthquake in 1989 in order to study its structure so that newer bridges can be built that are less prone to collapse during an earthquake?

Simulation was created to answer engineering design questions. Simulation helps reduce costs related to building prototypes and physical testing. It is possible to study many computational prototypes rapidly to understand the behavior of specific materials in order to make a better choice of materials for certain products. Simulation not only helps reduce costs related to building prototypes and testing, it also eliminates the cost involved in correcting post-manufacturing design errors. Simulation helps optimize product design, predict performance, and examine a product’s behavior. 

This article will discuss software simulation from ANSYS1 called ANSYS Mechanical v17.02 and how ANSYS Mechanical software is able to gain performance boost when running on a system equipped with Intel® Xeon® processor E5 v4.

ANSYS Mechanical

From the ANSYS website: “ANSYS Mechanical software is a comprehensive finite element analysis (FEA)3 tool for structural analysis, including linear, nonlinear, dynamic, hydrodynamic and explicit studies. It provides a complete set of elements behavior, material models and equation solvers for a wide range of mechanical design problems. In addition, ANSYS Mechanical Enterprise offers thermal analysis and coupled-physics capabilities involving acoustic, piezoelectric, thermal–structural and thermo-electric analysis.”

FEA is a computerized method of simulating the behavior of engineering structures and components under a variety of conditions. It works by dividing a model into a number of finite elements. Each element is represented by a set of equations. By integrating all the element’s equations, the whole object can be mathematically modeled.

In general, FEA consists of three steps: preprocessing, analysis, and postprocessing. In the preprocessing step, the object (the spoon in this case) is divided into multiple elements to create a mesh. The next step is to feed the information creating from the preprocessing step to the analysis step to create a mathematical model of that object. This model consists of a set of linear or nonlinear algebraic equations. At the end of the analysis step, the solution of this equation set is solved and the results are passed to the next step, postprocessing. At the postprocessing step, the results are displayed in a form that is easy to understand and evaluate.

Picture 1 shows the head of the spoon. The spoon has been discretized as shown in Picture 2.

 Object to be analyzed.
Picture 1: Object to be analyzed.

 The object has been discretized.
Picture 2: The object has been discretized.

Benefit of Running ANSYS Mechanical 17 on Intel® Xeon® Processor E5 v4

ANSYS Mechanical utilizes FEA to construct a set of equations to be solved, and among the solvers available in the solution phase is the sparse direct solver4. The sparse direct solver may be called hundreds or thousands of times in the solution phase in order to solve increasingly accurate linear approximations to the overall nonlinear set of equations. Any improvement to the performance of the sparse direct solver will boost the overall performance of ANSYS Mechanical.

In ANSYS Mechanical, the sparse direct solver makes frequent calls to the function DGEMM (Double-Precision General Matrix Multiplication)5. ANSYS Mechanical makes use of a version of the DGEMM function available in the Intel® Math Kernel Library (Intel® MKL)6. Intel MKL and functions, including DGEMM, are optimized to use Intel® Advanced Vector Extensions 2 7, and so run optimally on the Intel® Xeon® processor E5-2600 v4 product family. By incorporating Intel MKL function calls, ANSYS Mechanical can update the sparse direct solver for the latest Intel® architecture by simply updating the Intel MKL distributed with their product.

Performance test procedure

To prove that ANSYS Mechanical v17.0 performs better on newer Intel® processor-based systems, we performed tests on two platforms. One system was equipped with Intel® Xeon® processor E5-2697 v3 and the other with Intel® Xeon® processor E5-2697 v4. The latest generation Intel Xeon processor E5-2600 v4 product family features a higher core count, faster memory, larger cache, and other improvements.

Test configurations

System equipped with Intel Xeon processor E5-2697 v4

  • System: Preproduction
  • Processors: Intel Xeon processor E5-2697 v4 @2.3 GHz
  • Cache: 45 MB
  • Cores: 18
  • Memory: 128 GB DDR4-2133MT/s

System equipped with Intel Xeon processor E5-2697 v3

  • System: Preproduction
  • Processors: Intel Xeon processor E5-2697 v3 @2.6 GHz
  • Cores: 14
  • Cache: 35 MB
  • Memory: 128 GB DDR4-2400 MT/s

Operating system: Red Hat Enterprise Linux* 6.4

Software:

  • Intel MKL

Application: V17SP-5

Test results

 Comparison between the Intel® Xeon® processor E5-2697 v3 and the Intel® Xeon® processor E5-2697 v4.
Figure 1: Comparison between the Intel® Xeon® processor E5-2697 v3 and the Intel® Xeon® processor E5-2697 v4.

Figure 1 shows the results on a system equipped with the Intel Xeon processor E5-2697 v3 and on a system equipped with the Intel Xeon processor E5-2697 v4. On the Intel Xeon processor E5-2697 v4, a performance improvement of 70 percent was achieved due to more cores, faster memory, and core improvements.

Note: Software and workloads used in performance tests may have been optimized for performance only on Intel® microprocessors. Performance tests, such as SYSmark* and MobileMark*, are measured using specific computer systems, components, software, operations and functions. Any change to any of those factors may cause the results to vary. You should consult other information and performance tests to assist you in fully evaluating your contemplated purchases, including the performance of that product when combined with other products. For more information go to http://www.intel.com/performance

Conclusion

Simulation helps build prototypes faster and reduce cost involved by replacing physical prototypes and physical testing with computational prototypes and testing. The simulation engine in ANSYS Mechanical gains performance by running on a system equipped with the Intel Xeon processor E5 v4 compared to running on a system equipped with the Intel Xeon processor E5 v3 due to improved hardware architecture, more cores per socket, larger cache size, and faster DDR4 memory.

References

1ANSYS Web Site

2ANSYS Mechanical Software

3Finite Element Analysis

4Sparse Direct Solver

5DGEMM

6Intel® Math Kernel Library

7Intel® Advanced Vector Extensions 2

Watertight Ray Traversal with Reduced Precision

$
0
0

By K. Vaidyanathan, T. Akenine-Möller, and M. Salvi
Intel Corporation

Reduced precision bounding volume hierarchies and ray traversal can significantly improve the efficiency of ray tracing through low-cost dedicated hardware. A key approach to enabling reduced precision computations during traversal is to translate the ray origin closer to the bounding volume hierarchy node after each traversal step. However, this approach precludes sharing of intersection computations between a parent node and its two children, which is an important optimization. In this paper, we introduce a novel traversal algorithm that addresses this limitation and achieves a significant reduction in the computational complexity of traversal compared to previous approaches. We also include an analysis that shows how our algorithm guarantees watertight intersections which is a key requirement for robust image quality, especially with reduced precision traversal where numerical errors can be large.

Bandwidth-Efficient BVH Layout for Incremental Hardware Traversal

$
0
0

By G. Liktor and K. Vaidyanathan
Intel Corporation

The memory footprint of bounding volume hierarchies (BVHs) can be significantly reduced using incremental encoding, which enables the coarse quantization of bounding volumes. However, this compression alone does not necessarily yield a comparable improvement in memory bandwidth. While the bounding volumes of the BVH nodes can be aggressively quantized, the size of the child node pointers remains a significant overhead. Moreover, as BVH nodes become comparably small to practical cache line sizes, the BVH is cached less efficiently. In this paper we introduce a novel memory layout and node addressing scheme and map it to a system architecture for fixed-function ray traversal. We evaluate this scheme using an architecture simulator and demonstrate a significant reduction in memory bandwidth, compared to previous approaches.

How am I notified of updates for my registered products?

$
0
0

Problem :
How am I notified of updates for my registered products?

Resolution :

  1. Login to the Intel® Registration Center by entering your Login ID and Password in the Registered Users Login section  of  the web page. You will see a list of all products you have subscribed;
  2. Click on My account/Change notification preference on My products page below.
  3. You will be directed to the page below, check the box of Yes, I would like to receive Intel® Software Product update notifications.
  4. Click Save Notification Prefences.

You will then receive the registered product update notifications.

Intel® XDK FAQs - General

$
0
0

How can I get started with Intel XDK?

There are plenty of videos and articles that you can go through here to get started. You could also start with some of our demo apps. It may also help to read Five Useful Tips on Getting Started Building Cordova Mobile Apps with the Intel XDK, which will help you understand some of the differences between developing for a traditional server-based environment and developing for the Intel XDK hybrid Cordova app environment.

Having prior understanding of how to program using HTML, CSS and JavaScript* is crucial to using the Intel XDK. The Intel XDK is primarily a tool for visualizing, debugging and building an app package for distribution.

You can do the following to access our demo apps:

  • Select Project tab
  • Select "Start a New Project"
  • Select "Samples and Demos"
  • Create a new project from a demo

If you have specific questions following that, please post it to our forums.

Can I use an external editor for development in Intel® XDK?

Yes, you can open your files and edit them in your favorite editor. However, note that you must use Brackets* to use the "Live Layout Editing" feature. Also, if you are using App Designer (the UI layout tool in Intel XDK) it will make many automatic changes to your index.html file, so it is best not to edit that file externally at the same time you have App Designer open.

Some popular editors among our users include:

  • Sublime Text* (Refer to this article for information on the Intel XDK plugin for Sublime Text*)
  • Notepad++* for a lighweight editor
  • Jetbrains* editors (Webstorm*)
  • Vim* the editor

How do I get code refactoring capability in Brackets* (the Intel XDK code editor)?

...to be written...

Why doesn’t my app show up in Google* play for tablets?

...to be written...

What is the global-settings.xdk file and how do I locate it?

global-settings.xdk contains information about all your projects in the Intel XDK, along with many of the settings related to panels under each tab (Emulate, Debug etc). For example, you can set the emulator to auto-refresh or no-auto-refresh. Modify this file at your own risk and always keep a backup of the original!

You can locate global-settings.xdk here:

  • Mac OS X*
    ~/Library/Application Support/XDK/global-settings.xdk
  • Microsoft Windows*
    %LocalAppData%\XDK
  • Linux*
    ~/.config/XDK/global-settings.xdk

If you are having trouble locating this file, you can search for it on your system using something like the following:

  • Windows:
    > cd /
    > dir /s global-settings.xdk
  • Mac and Linux:
    $ sudo find / -name global-settings.xdk

When do I use the intelxdk.js, xhr.js and cordova.js libraries?

The intelxdk.js and xhr.js libraries were only required for use with the Intel XDK legacy build tiles (which have been retired). The cordova.js library is needed for all Cordova builds. When building with the Cordova tiles, any references to intelxdk.js and xhr.js libraries in your index.html file are ignored.

How do I get my Android (and Crosswalk) keystore file?

New with release 3088 of the Intel XDK, you may now download your build certificates (aka keystore) using the new certificate manager that is built into the Intel XDK. Please read the initial paragraphs of Managing Certificates for your Intel XDK Account and the section titled "Convert a Legacy Android Certificate" in that document, for details regarding how to do this.

It may also help to review this short, quick overview video (there is no audio) that shows how you convert your existing "legacy" certificates to the "new" format that allows you to directly manage your certificates using the certificate management tool that is built into the Intel XDK. This conversion process is done only once.

If the above fails, please send an email to html5tools@intel.com requesting help. It is important that you send that email from the email address associated with your Intel XDK account.

How do I rename my project that is a duplicate of an existing project?

See this FAQ: How do I make a copy of an existing Intel XDK project?

How do I recover when the Intel XDK hangs or won't start?

  • If you are running Intel XDK on Windows* it must be Windows* 7 or higher. It will not run reliably on earlier versions.
  • Delete the "project-name.xdk" file from the project directory that Intel XDK is trying to open when it starts (it will try to open the project that was open during your last session), then try starting Intel XDK. You will have to "import" your project into Intel XDK again. Importing merely creates the "project-name.xdk" file in your project directory and adds that project to the "global-settings.xdk" file.
  • Rename the project directory Intel XDK is trying to open when it starts. Create a new project based on one of the demo apps. Test Intel XDK using that demo app. If everything works, restart Intel XDK and try it again. If it still works, rename your problem project folder back to its original name and open Intel XDK again (it should now open the sample project you previously opened). You may have to re-select your problem project (Intel XDK should have forgotten that project during the previous session).
  • Clear Intel XDK's program cache directories and files.

    On a Windows machine this can be done using the following on a standard command prompt (administrator is not required):

    > cd %AppData%\..\Local\XDK
    > del *.* /s/q

    To locate the "XDK cache" directory on [OS X*] and [Linux*] systems, do the following:

    $ sudo find / -name global-settings.xdk
    $ cd <dir found above>
    $ sudo rm -rf *

    You might want to save a copy of the "global-settings.xdk" file before you delete that cache directory and copy it back before you restart Intel XDK. Doing so will save you the effort of rebuilding your list of projects. Please refer to this question for information on how to locate the global-settings.xdk file.
  • If you save the "global-settings.xdk" file and restored it in the step above and you're still having hang troubles, try deleting the directories and files above, along with the "global-settings.xdk" file and try it again.
  • Do not store your project directories on a network share (Intel XDK currently has issues with network shares that have not yet been resolved). This includes folders shared between a Virtual machine (VM) guest and its host machine (for example, if you are running Windows* in a VM running on a Mac* host). This network share issue is a known issue with a fix request in place.
  • There have also been issues with running behind a corporate network proxy or firewall. To check them try running Intel XDK from your home network where, presumably, you have a simple NAT router and no proxy or firewall. If things work correctly there then your corporate firewall or proxy may be the source of the problem.
  • Issues with Intel XDK account logins can also cause Intel XDK to hang. To confirm that your login is working correctly, go to the Intel XDK App Center and confirm that you can login with your Intel XDK account. While you are there you might also try deleting the offending project(s) from the App Center.

If you can reliably reproduce the problem, please send us a copy of the "xdk.log" file that is stored in the same directory as the "global-settings.xdk" file to html5tools@intel.com.

Is Intel XDK an open source project? How can I contribute to the Intel XDK community?

No, It is not an open source project. However, it utilizes many open source components that are then assembled into Intel XDK. While you cannot contribute directly to the Intel XDK integration effort, you can contribute to the many open source components that make up Intel XDK.

The following open source components are the major elements that are being used by Intel XDK:

  • Node-Webkit
  • Chromium
  • Ripple* emulator
  • Brackets* editor
  • Weinre* remote debugger
  • Crosswalk*
  • Cordova*
  • App Framework*

How do I configure Intel XDK to use 9 patch png for Android* apps splash screen?

Intel XDK does support the use of 9 patch png for Android* apps splash screen. You can read up more at https://software.intel.com/en-us/xdk/articles/android-splash-screens-using-nine-patch-png on how to create a 9 patch png image and link to an Intel XDK sample using 9 patch png images.

How do I stop AVG from popping up the "General Behavioral Detection" window when Intel XDK is launched?

You can try adding nw.exe as the app that needs an exception in AVG.

What do I specify for "App ID" in Intel XDK under Build Settings?

Your app ID uniquely identifies your app. For example, it can be used to identify your app within Apple’s application services allowing you to use things like in-app purchasing and push notifications.

Here are some useful articles on how to create an App ID:

Is it possible to modify the Android Manifest or iOS plist file with the Intel XDK?

You cannot modify the AndroidManifest.xml file directly with our build system, as it only exists in the cloud. However, you may do so by creating a dummy plugin that only contains a plugin.xml file containing directives that can be used to add lines to the AndroidManifest.xml file during the build process. In essence, you add lines to the AndroidManifest.xml file via a local plugin.xml file. Here is an example of a plugin that does just that:

<?xml version="1.0" encoding="UTF-8"?><plugin xmlns="http://apache.org/cordova/ns/plugins/1.0" id="my-custom-intents-plugin" version="1.0.0"><name>My Custom Intents Plugin</name><description>Add Intents to the AndroidManifest.xml</description><license>MIT</license><engines><engine name="cordova" version=">=3.0.0" /></engines><!-- android --><platform name="android"><config-file target="AndroidManifest.xml" parent="/manifest/application"><activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/app_name" android:launchMode="singleTop" android:name="testa" android:theme="@android:style/Theme.Black.NoTitleBar"><intent-filter><action android:name="android.intent.action.SEND" /><category android:name="android.intent.category.DEFAULT" /><data android:mimeType="*/*" /></intent-filter></activity></config-file></platform></plugin>

You can inspect the AndroidManifest.xml created in an APK, using apktool with the following command line:

$ apktool d my-app.apk
$ cd my-app
$ more AndroidManifest.xml

This technique exploits the config-file element that is described in the Cordova Plugin Specification docs and can also be used to add lines to iOS plist files. See the Cordova plugin documentation link for additional details.

Here is an example of such a plugin for modifying the iOS plist file, specifically for adding a BIS key to the plist file:

<?xml version="1.0" encoding="UTF-8"?><plugin
    xmlns="http://apache.org/cordova/ns/plugins/1.0"
    id="my-custom-bis-plugin"
    version="0.0.2"><name>My Custom BIS Plugin</name><description>Add BIS info to iOS plist file.</description><license>BSD-3</license><preference name="BIS_KEY" /><engines><engine name="cordova" version=">=3.0.0" /></engines><!-- ios --><platform name="ios"><config-file target="*-Info.plist" parent="CFBundleURLTypes"><array><dict><key>ITSAppUsesNonExemptEncryption</key><true/><key>ITSEncryptionExportComplianceCode</key><string>$BIS_KEY</string></dict></array></config-file></platform></plugin>

How can I share my Intel XDK app build?

You can send a link to your project via an email invite from your project settings page. However, a login to your account is required to access the file behind the link. Alternatively, you can download the build from the build page, onto your workstation, and push that built image to some location from which you can send a link to that image.

Why does my iOS build fail when I am able to test it successfully on a device and the emulator?

Common reasons include:

  • Your App ID specified in the project settings do not match the one you specified in Apple's developer portal.
  • The provisioning profile does not match the cert you uploaded. Double check with Apple's developer site that you are using the correct and current distribution cert and that the provisioning profile is still active. Download the provisioning profile again and add it to your project to confirm.
  • In Project Build Settings, your App Name is invalid. It should be modified to include only alpha, space and numbers.

How do I add multiple domains in Domain Access?

Here is the primary doc source for that feature.

If you need to insert multiple domain references, then you will need to add the extra references in the intelxdk.config.additions.xml file. This StackOverflow entry provides a basic idea and you can see the intelxdk.config.*.xml files that are automatically generated with each build for the <access origin="xxx" /> line that is generated based on what you provide in the "Domain Access" field of the "Build Settings" panel on the Project Tab.

How do I build more than one app using the same Apple developer account?

On Apple developer, create a distribution certificate using the "iOS* Certificate Signing Request" key downloaded from Intel XDK Build tab only for the first app. For subsequent apps, reuse the same certificate and import this certificate into the Build tab like you usually would.

How do I include search and spotlight icons as part of my app?

Please refer to this article in the Intel XDK documentation. Create anintelxdk.config.additions.xml file in your top level directory (same location as the otherintelxdk.*.config.xml files) and add the following lines for supporting icons in Settings and other areas in iOS*.

<!-- Spotlight Icon --><icon platform="ios" src="res/ios/icon-40.png" width="40" height="40" /><icon platform="ios" src="res/ios/icon-40@2x.png" width="80" height="80" /><icon platform="ios" src="res/ios/icon-40@3x.png" width="120" height="120" /><!-- iPhone Spotlight and Settings Icon --><icon platform="ios" src="res/ios/icon-small.png" width="29" height="29" /><icon platform="ios" src="res/ios/icon-small@2x.png" width="58" height="58" /><icon platform="ios" src="res/ios/icon-small@3x.png" width="87" height="87" /><!-- iPad Spotlight and Settings Icon --><icon platform="ios" src="res/ios/icon-50.png" width="50" height="50" /><icon platform="ios" src="res/ios/icon-50@2x.png" width="100" height="100" />

For more information related to these configurations, visit http://cordova.apache.org/docs/en/3.5.0/config_ref_images.md.html#Icons%20and%20Splash%20Screens.

For accurate information related to iOS icon sizes, visit https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/MobileHIG/IconMatrix.html

NOTE: The iPhone 6 icons will only be available if iOS* 7 or 8 is the target.

Cordova iOS* 8 support JIRA tracker: https://issues.apache.org/jira/browse/CB-7043

Does Intel XDK support Modbus TCP communication?

No, since Modbus is a specialized protocol, you need to write either some JavaScript* or native code (in the form of a plugin) to handle the Modbus transactions and protocol.

How do I sign an Android* app using an existing keystore?

New with release 3088 of the Intel XDK, you may now import your existing keystore into Intel XDK using the new certificate manager that is built into the Intel XDK. Please read the initial paragraphs of Managing Certificates for your Intel XDK Account and the section titled "Import an Android Certificate Keystore" in that document, for details regarding how to do this.

If the above fails, please send an email to html5tools@intel.com requesting help. It is important that you send that email from the email address associated with your Intel XDK account.

How do I build separately for different Android* versions?

Under the Projects Panel, you can select the Target Android* version under the Build Settings collapsible panel. You can change this value and build your application multiple times to create numerous versions of your application that are targeted for multiple versions of Android*.

How do I display the 'Build App Now' button if my display language is not English?

If your display language is not English and the 'Build App Now' button is proving to be troublesome, you may change your display language to English which can be downloaded by a Windows* update. Once you have installed the English language, proceed to Control Panel > Clock, Language and Region > Region and Language > Change Display Language.

How do I update my Intel XDK version?

When an Intel XDK update is available, an Update Version dialog box lets you download the update. After the download completes, a similar dialog lets you install it. If you did not download or install an update when prompted (or on older versions), click the package icon next to the orange (?) icon in the upper-right to download or install the update. The installation removes the previous Intel XDK version.

How do I import my existing HTML5 app into the Intel XDK?

If your project contains an Intel XDK project file (<project-name>.xdk) you should use the "Open an Intel XDK Project" option located at the bottom of the Projects List on the Projects tab (lower left of the screen, round green "eject" icon, on the Projects tab). This would be the case if you copied an existing Intel XDK project from another system or used a tool that exported a complete Intel XDK project.

If your project does not contain an Intel XDK project file (<project-name>.xdk) you must "import" your code into a new Intel XDK project. To import your project, use the "Start a New Project" option located at the bottom of the Projects List on the Projects tab (lower left of the screen, round blue "plus" icon, on theProjects tab). This will open the "Samples, Demos and Templates" page, which includes an option to "Import Your HTML5 Code Base." Point to the root directory of your project. The Intel XDK will attempt to locate a file named index.html in your project and will set the "Source Directory" on the Projects tab to point to the directory that contains this file.

If your imported project did not contain an index.html file, your project may be unstable. In that case, it is best to delete the imported project from the Intel XDK Projects tab ("x" icon in the upper right corner of the screen), rename your "root" or "main" html file to index.html and import the project again. Several components in the Intel XDK depend on this assumption that the main HTML file in your project is named index.hmtl. See Introducing Intel® XDK Development Tools for more details.

It is highly recommended that your "source directory" be located as a sub-directory inside your "project directory." This insures that non-source files are not included as part of your build package when building your application. If the "source directory" and "project directory" are the same it results in longer upload times to the build server and unnecessarily large application executable files returned by the build system. See the following images for the recommended project file layout.

I am unable to login to App Preview with my Intel XDK password.

On some devices you may have trouble entering your Intel XDK login password directly on the device in the App Preview login screen. In particular, sometimes you may have trouble with the first one or two letters getting lost when entering your password.

Try the following if you are having such difficulties:

  • Reset your password, using the Intel XDK, to something short and simple.

  • Confirm that this new short and simple password works with the XDK (logout and login to the Intel XDK).

  • Confirm that this new password works with the Intel Developer Zone login.

  • Make sure you have the most recent version of Intel App Preview installed on your devices. Go to the store on each device to confirm you have the most recent copy of App Preview installed.

  • Try logging into Intel App Preview on each device with this short and simple password. Check the "show password" box so you can see your password as you type it.

If the above works, it confirms that you can log into your Intel XDK account from App Preview (because App Preview and the Intel XDK go to the same place to authenticate your login). When the above works, you can go back to the Intel XDK and reset your password to something else, if you do not like the short and simple password you used for the test.

How do I completely uninstall the Intel XDK from my system?

Take the following steps to completely uninstall the XDK from your Windows system:

  • From the Windows Control Panel, remove the Intel XDK, using the Windows uninstall tool.

  • Then:
    > cd %LocalAppData%\Intel\XDK
    > del *.* /s/q

  • Then:
    > cd %LocalAppData%\XDK
    > copy global-settings.xdk %UserProfile%
    > del *.* /s/q
    > copy %UserProfile%\global-settings.xdk .

  • Then:
    -- Goto xdk.intel.com and select the download link.
    -- Download and install the new XDK.

To do the same on a Linux or Mac system:

  • On a Linux machine, run the uninstall script, typically /opt/intel/XDK/uninstall.sh.
     
  • Remove the directory into which the Intel XDK was installed.
    -- Typically /opt/intel or your home (~) directory on a Linux machine.
    -- Typically in the /Applications/Intel XDK.app directory on a Mac.
     
  • Then:
    $ find ~ -name global-settings.xdk
    $ cd <result-from-above> (for example ~/Library/Application Support/XDK/ on a Mac)
    $ cp global-settings.xdk ~
    $ rm -Rf *
    $ mv ~/global-settings.xdk .

     
  • Then:
    -- Goto xdk.intel.com and select the download link.
    -- Download and install the new XDK.

Is there a tool that can help me highlight syntax issues in Intel XDK?

Yes, you can use the various linting tools that can be added to the Brackets editor to review any syntax issues in your HTML, CSS and JS files. Go to the "File > Extension Manager..." menu item and add the following extensions: JSHint, CSSLint, HTMLHint, XLint for Intel XDK. Then, review your source files by monitoring the small yellow triangle at the bottom of the edit window (a green check mark indicates no issues).

How do I delete built apps and test apps from the Intel XDK build servers?

You can manage them by logging into: https://appcenter.html5tools-software.intel.com/csd/controlpanel.aspx. This functionality will eventually be available within Intel XDK after which access to app center will be removed.

I need help with the App Security API plugin; where do I find it?

Visit the primary documentation book for the App Security API and see this forum post for some additional details.

When I install my app or use the Debug tab Avast antivirus flags a possible virus, why?

If you are receiving a "Suspicious file detected - APK:CloudRep [Susp]" message from Avast anti-virus installed on your Android device it is due to the fact that you are side-loading the app (or the Intel XDK Debug modules) onto your device (using a download link after building or by using the Debug tab to debug your app), or your app has been installed from an "untrusted" Android store. See the following official explanation from Avast:

Your application was flagged by our cloud reputation system. "Cloud rep" is a new feature of Avast Mobile Security, which flags apks when the following conditions are met:

  1. The file is not prevalent enough; meaning not enough users of Avast Mobile Security have installed your APK.
  2. The source is not an established market (Google Play is an example of an established market).

If you distribute your app using Google Play (or any other trusted market) your users should not see any warning from Avast.

Following are some of the Avast anti-virus notification screens you might see on your device. All of these are perfectly normal, they are due to the fact that you must enable the installation of "non-market" apps in order to use your device for debug and the App IDs associated with your never published app or the custom debug modules that the Debug tab in the Intel XDK builds and installs on your device will not be found in a "established" (aka "trusted") market, such as Google Play.

If you choose to ignore the "Suspicious app activity!" threat you will not receive a threat for that debug module any longer. It will show up in the Avast 'ignored issues' list. Updates to an existing, ignored, custom debug module should continue to be ignored by Avast. However, new custom debug modules (due to a new project App ID or a new version of Crosswalk selected in your project's Build Settings) will result in a new warning from the Avast anti-virus tool.

  

  

How do I add a Brackets extension to the editor that is part of the Intel XDK?

The number of Brackets extensions that are provided in the built-in edition of the Brackets editor are limited to insure stability of the Intel XDK product. Not all extensions are compatible with the edition of Brackets that is embedded within the Intel XDK. Adding incompatible extensions can cause the Intel XDK to quit working.

Despite this warning, there are useful extensions that have not been included in the editor and which can be added to the Intel XDK. Adding them is temporary, each time you update the Intel XDK (or if you reinstall the Intel XDK) you will have to "re-add" your Brackets extension. To add a Brackets extension, use the following procedure:

  • exit the Intel XDK
  • download a ZIP file of the extension you wish to add
  • on Windows, unzip the extension here:
    %LocalAppData%\Intel\XDK\xdk\brackets\b\extensions\dev
  • on Mac OS X, unzip the extension here:
    /Applications/Intel\ XDK.app/Contents/Resources/app.nw/brackets/b/extensions/dev
  • start the Intel XDK

Note that the locations given above are subject to change with new releases of the Intel XDK.

Why does my app or game require so many permissions on Android when built with the Intel XDK?

When you build your HTML5 app using the Intel XDK for Android or Android-Crosswalk you are creating a Cordova app. It may seem like you're not building a Cordova app, but you are. In order to package your app so it can be distributed via an Android store and installed on an Android device, it needs to be built as a hybrid app. The Intel XDK uses Cordova to create that hybrid app.

A pure Cordova app requires the NETWORK permission, it's needed to "jump" between your HTML5 environment and the native Android environment. Additional permissions will be added by any Cordova plugins you include with your application; which permissions are includes are a function of what that plugin does and requires.

Crosswalk for Android builds also require the NETWORK permission, because the Crosswalk image built by the Intel XDK includes support for Cordova. In addition, current versions of Crosswalk (12 and 14 at the time this FAQ was written)also require NETWORK STATE and WIFI STATE. There is an extra permission in some versions of Crosswalk (WRITE EXTERNAL STORAGE) that is only needed by the shared model library of Crosswalk, we have asked the Crosswalk project to remove this permission in a future Crosswalk version.

If you are seeing more than the following five permissions in your XDK-built Crosswalk app:

  • android.permission.INTERNET
  • android.permission.ACCESS_NETWORK_STATE
  • android.permission.ACCESS_WIFI_STATE
  • android.permission.INTERNET
  • android.permission.WRITE_EXTERNAL_STORAGE

then you are seeing permissions that have been added by some plugins. Each plugin is different, so there is no hard rule of thumb. The two "default" core Cordova plugins that are added by the Intel XDK blank templates (device and splash screen) do not require any Android permissions.

BTW: the permission list above comes from a Crosswalk 14 build. Crosswalk 12 builds do not included the last permission; it was added when the Crosswalk project introduced the shared model library option, which started with Crosswalk 13 (the Intel XDK does not support 13 builds).

How do I make a copy of an existing Intel XDK project?

If you just need to make a backup copy of an existing project, and do not plan to open that backup copy as a project in the Intel XDK, do the following:

  • Exit the Intel XDK.
  • Copy the entire project directory:
    • on Windows, use File Explorer to "right-click" and "copy" your project directory, then "right-click" and "paste"
    • on Mac use Finder to "right-click" and then "duplicate" your project directory
    • on Linux, open a terminal window, "cd" to the folder that contains your project, and type "cp -a old-project/ new-project/" at the terminal prompt (where "old-project/" is the folder name of your existing project that you want to copy and "new-project/" is the name of the new folder that will contain a copy of your existing project)

If you want to use an existing project as the starting point of a new project in the Intel XDK. The process described below will insure that the build system does not confuse the ID in your old project with that stored in your new project. If you do not follow the procedure below you will have multiple projects using the same project ID (a special GUID that is stored inside the Intel XDK <project-name>.xdk file in the root directory of your project). Each project in your account must have a unique project ID.

  • Exit the Intel XDK.
  • Make a copy of your existing project using the process described above.
  • Inside the new project that you made (that is, your new copy of your old project), make copies of the <project-name>.xdk file and <project-name>.xdke files and rename those copies to something like project-new.xdk and project-new.xdke (anything you like, just something different than the original project name, preferably the same name as the new project folder in which you are making this new project).
  • Using a TEXT EDITOR (only) (such as Notepad or Sublime or Brackets or some other TEXT editor), open your new "project-new.xdk" file (whatever you named it) and find the projectGuid line, it will look something like this:
    "projectGuid": "a863c382-ca05-4aa4-8601-375f9f209b67",
  • Change the "GUID" to all zeroes, like this: "00000000-0000-0000-000000000000"
  • Save the modified "project-new.xdk" file.
  • Open the Intel XDK.
  • Goto the Projects tab.
  • Select "Open an Intel XDK Project" (the green button at the bottom left of the Projects tab).
  • To open this new project, locate the new "project-new.xdk" file inside the new project folder you copied above.
  • Don't forget to change the App ID in your new project. This is necessary to avoid conflicts with the project you copied from, in the store and when side-loading onto a device.

My project does not include a www folder. How do I fix it so it includes a www or source directory?

The Intel XDK HTML5 and Cordova project file structures are meant to mimic a standard Cordova project. In a Cordova (or PhoneGap) project there is a subdirectory (or folder) named www that contains all of the HTML5 source code and asset files that make up your application. For best results, it is advised that you follow this convention, of putting your source inside a "source directory" inside of your project folder.

This most commonly happens as the result of exporting a project from an external tool, such as Construct2, or as the result of importing an existing HTML5 web app that you are converting into a hybrid mobile application (eg., an Intel XDK Corodova app). If you would like to convert an existing Intel XDK project into this format, follow the steps below:

  • Exit the Intel XDK.
  • Copy the entire project directory:
    • on Windows, use File Explorer to "right-click" and "copy" your project directory, then "right-click" and "paste"
    • on Mac use Finder to "right-click" and then "duplicate" your project directory
    • on Linux, open a terminal window, "cd" to the folder that contains your project, and type "cp -a old-project/ new-project/" at the terminal prompt (where "old-project/" is the folder name of your existing project that you want to copy and "new-project/" is the name of the new folder that will contain a copy of your existing project)
  • Create a "www" directory inside the new duplicate project you just created above.
  • Move your index.html and other source and asset files to the "www" directory you just created -- this is now your "source" directory, located inside your "project" directory (do not move the <project-name>.xdk and xdke files and any intelxdk.config.*.xml files, those must stay in the root of the project directory)
  • Inside the new project that you made above (by making a copy of the old project), rename the <project-name>.xdk file and <project-name>.xdke files to something like project-copy.xdk and project-copy.xdke (anything you like, just something different than the original project, preferably the same name as the new project folder in which you are making this new project).
  • Using a TEXT EDITOR (only) (such as Notepad or Sublime or Brackets or some other TEXT editor), open the new "project-copy.xdk" file (whatever you named it) and find the line named projectGuid, it will look something like this:
    "projectGuid": "a863c382-ca05-4aa4-8601-375f9f209b67",
  • Change the "GUID" to all zeroes, like this: "00000000-0000-0000-000000000000"
  • A few lines down find: "sourceDirectory": "",
  • Change it to this: "sourceDirectory": "www",
  • Save the modified "project-copy.xdk" file.
  • Open the Intel XDK.
  • Goto the Projects tab.
  • Select "Open an Intel XDK Project" (the green button at the bottom left of the Projects tab).
  • To open this new project, locate the new "project-copy.xdk" file inside the new project folder you copied above.

Can I install more than one copy of the Intel XDK onto my development system?

Yes, you can install more than one version onto your development system. However, you cannot run multiple instances of the Intel XDK at the same time. Be aware that new releases sometimes change the project file format, so it is a good idea, in these cases, to make a copy of your project if you need to experiment with a different version of the Intel XDK. See the instructions in a FAQ entry above regarding how to make a copy of your Intel XDK project.

Follow the instructions in this forum post to install more than one copy of the Intel XDK onto your development system.

On Apple OS X* and Linux* systems, does the Intel XDK need the OpenSSL* library installed?

Yes. Several features of the Intel XDK require the OpenSSL library, which typically comes pre-installed on Linux and OS X systems. If the Intel XDK reports that it could not find libssl, go to https://www.openssl.org to download and install it.

I have a web application that I would like to distribute in app stores without major modifications. Is this possible using the Intel XDK?

Yes, if you have a true web app or “client app” that only uses HTML, CSS and JavaScript, it is usually not too difficult to convert it to a Cordova hybrid application (this is what the Intel XDK builds when you create an HTML5 app). If you rely heavily on PHP or other server scripting languages embedded in your pages you will have more work to do. Because your Cordova app is not associated with a server, you cannot rely on server-based programming techniques; instead, you must rewrite any such code to user RESTful APIs that your app interacts with using, for example, AJAX calls.

What is the best training approach to using the Intel XDK for a newbie?

First, become well-versed in the art of client web apps, apps that rely only on HTML, CSS and JavaScript and utilize RESTful APIs to talk to network services. With that you will have mastered 80% of the problem. After that, it is simply a matter of understanding how Cordova plugins are able to extend the JavaScript API for access to features of the platform. For HTML5 training there are many sites providing tutorials. It may also help to read Five Useful Tips on Getting Started Building Cordova Mobile Apps with the Intel XDK, which will help you understand some of the differences between developing for a traditional server-based environment and developing for the Intel XDK hybrid Cordova app environment.

What is the best platform to start building an app with the Intel XDK? And what are the important differences between the Android, iOS and other mobile platforms?

There is no one most important difference between the Android, iOS and other platforms. It is important to understand that the HTML5 runtime engine that executes your app on each platform will vary as a function of the platform. Just as there are differences between Chrome and Firefox and Safari and Internet Explorer, there are differences between iOS 9 and iOS 8 and Android 4 and Android 5, etc. Android has the most significant differences between vendors and versions of Android. This is one of the reasons the Intel XDK offers the Crosswalk for Android build option, to normalize and update the Android issues.

In general, if you can get your app working well on Android (or Crosswalk for Android) first you will generally have fewer issues to deal with when you start to work on the iOS and Windows platforms. In addition, the Android platform has the most flexible and useful debug options available, so it is the easiest platform to use for debugging and testing your app.

Is my password encrypted and why is it limited to fifteen characters?

Yes, your password is stored encrypted and is managed by https://signin.intel.com. Your Intel XDK userid and password can also be used to log into the Intel XDK forum as well as the Intel Developer Zone. the Intel XDK does not store nor does it manage your userid and password.

The rules regarding allowed userids and passwords are answered on this Sign In FAQ page, where you can also find help on recovering and changing your password.

Why does the Intel XDK take a long time to start on Linux or Mac?

...and why am I getting this error message? "Attempt to contact authentication server is taking a long time. You can wait, or check your network connection and try again."

At startup, the Intel XDK attempts to automatically determine the proxy settings for your machine. Unfortunately, on some system configurations it is unable to reliably detect your system proxy settings. As an example, you might see something like this image when starting the Intel XDK.

On some systems you can get around this problem by setting some proxy environment variables and then starting the Intel XDK from a command-line that includes those configured environment variables. To set those environment variables, similar to the following:

$ export no_proxy="localhost,127.0.0.1/8,::1"
$ export NO_PROXY="localhost,127.0.0.1/8,::1"
$ export http_proxy=http://proxy.mydomain.com:123/
$ export HTTP_PROXY=http://proxy.mydomain.com:123/
$ export https_proxy=http://proxy.mydomain.com:123/
$ export HTTPS_PROXY=http://proxy.mydomain.com:123/

IMPORTANT! The name of your proxy server and the port (or ports) that your proxy server requires will be different than those shown in the example above. Please consult with your IT department to find out what values are appropriate for your site. Intel has no way of knowing what configuration is appropriate for your network.

If you use the Intel XDK in multiple locations (at work and at home), you may have to change the proxy settings before starting the Intel XDK after switching to a new network location. For example, many work networks use a proxy server, but most home networks do not require such a configuration. In that case, you need to be sure to "unset" the proxy environment variables before starting the Intel XDK on a non-proxy network.

After you have successfully configured your proxy environment variables, you can start the Intel XDK manually, from the command-line.

On a Mac, where the Intel XDK is installed in the default location, type the following (from a terminal window that has the above environment variables set):

$ open /Applications/Intel\ XDK.app/

On a Linux machine, assuming the Intel XDK has been installed in the ~/intel/XDK directory, type the following (from a terminal window that has the above environment variables set):

$ ~/intel/XDK/xdk.sh &

In the Linux case, you will need to adjust the directory name that points to the xdk.sh file in order to start. The example above assumes a local install into the ~/intel/XDK directory. Since Linux installations have more options regarding the installation directory, you will need to adjust the above to suit your particular system and install directory.

How do I generate a P12 file on a Windows machine?

See these articles:

How do I change the default dir for creating new projects in the Intel XDK?

You can change the default new project location manually by modifying a field in the global-settings.xdk file. Locate the global-settings.xdk file on your system (the precise location varies as a function of the OS) and find this JSON object inside that file:

"projects-tab": {"defaultPath": "/Users/paul/Documents/XDK","LastSortType": "descending|Name","lastSortType": "descending|Opened","thirdPartyDisclaimerAcked": true
  },

The example above came from a Mac. On a Mac the global-settings.xdk file is located in the "~/Library/Application Support/XDK" directory.

On a Windows machine the global-settings.xdk file is normally found in the "%LocalAppData%\XDK" directory. The part you are looking for will look something like this:

"projects-tab": {"thirdPartyDisclaimerAcked": false,"LastSortType": "descending|Name","lastSortType": "descending|Opened","defaultPath": "C:\\Users\\paul/Documents"
  },

Obviously, it's the defaultPath part you want to change.

BE CAREFUL WHEN YOU EDIT THE GLOBAL-SETTINGS.XDK FILE!! You've been warned...

Make sure the result is proper JSON when you are done, or it may cause your XDK to cough and hack loudly. Make a backup copy of global-settings.xdk before you start, just in case.

Where I can find recent and upcoming webinars list?

How can I change the email address associated with my Intel XDK login?

Login to the Intel Developer Zone with your Intel XDK account userid and password and then locate your "account dashboard." Click the "pencil icon" next to your name to open the "Personal Profile" section of your account, where you can edit your "Name & Contact Info," including the email address associated with your account, under the "Private" section of your profile.

What network addresses must I enable in my firewall to insure the Intel XDK will work on my restricted network?

Normally, access to the external servers that the Intel XDK uses is handled automatically by your proxy server. However, if you are working in an environment that has restricted Internet access and you need to provide your IT department with a list of URLs that you need access to in order to use the Intel XDK, then please provide them with the following list of domain names:

  • appcenter.html5tools-software.intel.com (for communication with the build servers)
  • s3.amazonaws.com (for downloading sample apps and built apps)
  • download.xdk.intel.com (for getting XDK updates)
  • debug-software.intel.com (for using the Test tab weinre debug feature)
  • xdk-feed-proxy.html5tools-software.intel.com (for receiving the tweets in the upper right corner of the XDK)
  • signin.intel.com (for logging into the XDK)
  • sfederation.intel.com (for logging into the XDK)

Normally this should be handled by your network proxy (if you're on a corporate network) or should not be an issue if you are working on a typical home network.

I cannot create a login for the Intel XDK, how do I create a userid and password to use the Intel XDK?

If you have downloaded and installed the Intel XDK but are having trouble creating a login, you can create the login outside the Intel XDK. To do this, go to the Intel Developer Zone and push the "Join Today" button. After you have created your Intel Developer Zone login you can return to the Intel XDK and use that userid and password to login to the Intel XDK. This same userid and password can also be used to login to the Intel XDK forum.

Installing the Intel XDK on Windows fails with a "Package signature verification failed." message.

If you receive a "Package signature verification failed" message (see image below) when installing the Intel XDK on your system, it is likely due to one of the following two reasons:

  • Your system does not have a properly installed "root certificate" file, which is needed to confirm that the install package is good.
  • The install package is corrupt and failed the verification step.

The first case can happen if you are attempting to install the Intel XDK on an unsupported version of Windows. The Intel XDK is only supported on Microsoft Windows 7 and higher. If you attempt to install on Windows Vista (or earlier) you may see this verification error. The workaround is to install the Intel XDK on a Windows 7 or greater machine.

The second case is likely due to a corruption of the install package during download or due to tampering. The workaround is to re-download the install package and attempt another install.

If you are installing on a Windows 7 (or greater) machine and you see this message it is likely due to a missing or bad root certificate on your system. To fix this you may need to start the "Certificate Propagation" service. Open the Windows "services.msc" panel and then start the "Certificate Propagation" service. Additional links related to this problem can be found here > https://technet.microsoft.com/en-us/library/cc754841.aspx

See this forum thread for additional help regarding this issue > https://software.intel.com/en-us/forums/intel-xdk/topic/603992

Troubles installing the Intel XDK on a Linux or Ubuntu system, which option should I choose?

Choose the local user option, not root or sudo, when installing the Intel XDK on your Linux or Ubuntu system. This is the most reliable and trouble-free option and is the default installation option. This will insure that the Intel XDK has all the proper permissions necessary to execute properly on your Linux system. The Intel XDK will be installed in a subdirectory of your home (~) directory.

Inactive account/ login issue/ problem updating an APK in store, How do I request account transfer?

As of June 26, 2015 we migrated all of Intel XDK accounts to the more secure intel.com login system (the same login system you use to access this forum).

We have migrated nearly all active users to the new login system. Unfortunately, there are a few active user accounts that we could not automatically migrate to intel.com, primarily because the intel.com login system does not allow the use of some characters in userids that were allowed in the old login system.

If you have not used the Intel XDK for a long time prior to June 2015, your account may not have been automatically migrated. If you own an "inactive" account it will have to be manually migrated -- please try logging into the Intel XDK with your old userid and password, to determine if it no longer works. If you find that you cannot login to your existing Intel XDK account, and still need access to your old account, please send a message to html5tools@intel.com and include your userid and the email address associated with that userid, so we can guide you through the steps required to reactivate your old account.

Alternatively, you can create a new Intel XDK account. If you have submitted an app to the Android store from your old account you will need access to that old account to retrieve the Android signing certificates in order to upgrade that app on the Android store; in that case, send an email to html5tools@intel.com with your old account username and email and new account information.

Connection Problems? -- Intel XDK SSL certificates update

On January 26, 2016 we updated the SSL certificates on our back-end systems to SHA2 certificates. The existing certificates were due to expire in February of 2016. We have also disabled support for obsolete protocols.

If you are experiencing persistent connection issues (since Jan 26, 2016), please post a problem report on the forum and include in your problem report:

  • the operation that failed
  • the version of your XDK
  • the version of your operating system
  • your geographic region
  • and a screen capture

How do I resolve build failure: "libpng error: Not a PNG file"?  

f you are experiencing build failures with CLI 5 Android builds, and the detailed error log includes a message similar to the following:

Execution failed for task ':mergeArmv7ReleaseResources'.> Error: Failed to run command: /Developer/android-sdk-linux/build-tools/22.0.1/aapt s -i .../platforms/android/res/drawable-land-hdpi/screen.png -o .../platforms/android/build/intermediates/res/armv7/release/drawable-land-hdpi-v4/screen.png

Error Code: 42

Output: libpng error: Not a PNG file

You need to change the format of your icon and/or splash screen images to PNG format.

The error message refers to a file named "screen.png" -- which is what each of your splash screens were renamed to before they were moved into the build project resource directories. Unfortunately, JPG images were supplied for use as splash screen images, not PNG images. So the files were renamed and found by the build system to be invalid.

Convert your splash screen images to PNG format. Renaming JPG images to PNG will not work! You must convert your JPG images into PNG format images using an appropriate image editing tool. The Intel XDK does not provide any such conversion tool.

Beginning with Cordova CLI 5, all icons and splash screen images must be supplied in PNG format. This applies to all supported platforms. This is an undocumented "new feature" of the Cordova CLI 5 build system that was implemented by the Apache Cordova project.

Why do I get a "Parse Error" when I try to install my built APK on my Android device?

Because you have built an "unsigned" Android APK. You must click the "signed" box in the Android Build Settings section of the Projects tab if you want to install an APK on your device. The only reason you would choose to create an "unsigned" APK is if you need to sign it manually. This is very rare and not the normal situation.

My converted legacy keystore does not work. Google Play is rejecting my updated app.

The keystore you converted when you updated to 3088 (now 3240 or later) is the same keystore you were using in 2893. When you upgraded to 3088 (or later) and "converted" your legacy keystore, you re-signed and renamed your legacy keystore and it was transferred into a database to be used with the Intel XDK certificate management tool. It is still the same keystore, but with an alias name and password assigned by you and accessible directly by you through the Intel XDK.

If you kept the converted legacy keystore in your account following the conversion you can download that keystore from the Intel XDK for safe keeping (do not delete it from your account or from your system). Make sure you keep track of the new password(s) you assigned to the converted keystore.

There are two problems we have experienced with converted legacy keystores at the time of the 3088 release (April, 2016):

  • Using foreign (non-ASCII) characters in the new alias name and passwords were being corrupted.
  • Final signing of your APK by the build system was being done with RSA256 rather than SHA1.

Both of the above items have been resolved and should no longer be an issue.

If you are currently unable to complete a build with your converted legacy keystore (i.e., builds fail when you use the converted legacy keystore but they succeed when you use a new keystore) the first bullet above is likely the reason your converted keystore is not working. In that case we can reset your converted keystore and give you the option to convert it again. You do this by requesting that your legacy keystore be "reset" by filling out this form. For 100% surety during that second conversion, use only 7-bit ASCII characters in the alias name you assign and for the password(s) you assign.

IMPORTANT: using the legacy certificate to build your Android app is ONLY necessary if you have already published an app to an Android store and need to update that app. If you have never published an app to an Android store using the legacy certificate you do not need to concern yourself with resetting and reconverting your legacy keystore. It is easier, in that case, to create a new Android keystore and use that new keystore.

If you ARE able to successfully build your app with the converted legacy keystore, but your updated app (in the Google store) does not install on some older Android 4.x devices (typically a subset of Android 4.0-4.2 devices), the second bullet cited above is likely the reason for the problem. The solution, in that case, is to rebuild your app and resubmit it to the store (that problem was a build-system problem that has been resolved).

How can I have others beta test my app using Intel App Preview?

Apps that you sync to your Intel XDK account, using the Test tab's green "Push Files" button, can only be accessed by logging into Intel App Preview with the same Intel XDK account credentials that you used to push the files to the cloud. In other words, you can only download and run your app for testing with Intel App Preview if you log into the same account that you used to upload that test app. This restriction applies to downloading your app into Intel App Preview via the "Server Apps" tab, at the bottom of the Intel App Preview screen, or by scanning the QR code displayed on the Intel XDK Test tab using the camera icon in the upper right corner of Intel App Preview.

If you want to allow others to test your app, using Intel App Preview, it means you must use one of two options:

  • give them your Intel XDK userid and password
  • create an Intel XDK "test account" and provide your testers with that userid and password

For security sake, we highly recommend you use the second option (create an Intel XDK "test account"). 

A "test account" is simply a second Intel XDK account that you do not plan to use for development or builds. Do not use the same email address for your "test account" as you are using for your main development account. You should use a "throw away" email address for that "test account" (an email address that you do not care about).

Assuming you have created an Intel XDK "test account" and have instructed your testers to download and install Intel App Preview; have provided them with your "test account" userid and password; and you are ready to have them test:

  • sign out of your Intel XDK "development account" (using the little "man" icon in the upper right)
  • sign into your "test account" (again, using the little "man" icon in the Intel XDK toolbar)
  • make sure you have selected the project that you want users to test, on the Projects tab
  • goto the Test tab
  • make sure "MOBILE" is selected (upper left of the Test tab)
  • push the green "PUSH FILES" button on the Test tab
  • log out of your "test account"
  • log into your development account

Then, tell your beta testers to log into Intel App Preview with your "test account" credentials and instruct them to choose the "Server Apps" tab at the bottom of the Intel App Preview screen. From there they should see the name of the app you synced using the Test tab and can simply start it by touching the app name (followed by the big blue and white "Launch This App" button). Staring the app this way is actually easier than sending them a copy of the QR code. The QR code is very dense and is hard to read with some devices, dependent on the quality of the camera in their device.

Note that when running your test app inside of Intel App Preview they cannot test any features associated with third-party plugins, only core Cordova plugins. Thus, you need to insure that those parts of your apps that depend on non-core Cordova plugins have been disabled or have exception handlers to prevent your app from either crashing or freezing.

I'm having trouble making Google Maps work with my Intel XDK app. What can I do?

There are many reasons that can cause your attempt to use Google Maps to fail. Mostly it is due to the fact that you need to download the Google Maps API (JavaScript library) at runtime to make things work. However, there is no guarantee that you will have a good network connection, so if you do it the way you are used to doing it, in a browser...

<script src="https://maps.googleapis.com/maps/api/js?key=API_KEY&sensor=true"></script>

...you may get yourself into trouble, in an Intel XDK Cordova app. See Loading Google Maps in Cordova the Right Way for an excellent tutorial on why this is a problem and how to deal with it. Also, it may help to read Five Useful Tips on Getting Started Building Cordova Mobile Apps with the Intel XDK, especially item #3, to get a better understanding of why you shouldn't use the "browser technique" you're familiar with.

An alternative is to use a mapping tool that allows you to include the JavaScript directly in your app, rather than downloading it over the network each time your app starts. Several Intel XDK developers have reported very good luck with the open-source JavaScript library named LeafletJS that uses OpenStreet as it's map database source.

You can also search the Cordova Plugin Database for Cordova plugins that implement mapping features, in some cases using native SDKs and libraries.

How do I fix "Cannot find the Intel XDK. Make sure your device and intel XDK are on the same wireless network." error messages?

You can either disable your firewall or allow access through the firewall for the Intel XDK. To allow access through the Windows firewall goto the Windows Control Panel and search for the Firewall (Control Panel > System and Security > Windows Firewall > Allowed Apps) and enable Node Webkit (nw or nw.exe) through the firewall

See the image below (this image is from a Windows 8.1 system).

Google Services needs my SHA1 fingerprint. Where do I get my app's SHA fingerprint?

Your app's SHA fingerprint is part of your build signing certificate. Specifically, it is part of the signing certificate that you used to build your app. The Intel XDK provides a way to download your build certificates directly from within the Intel XDK application (see the Intel XDK documentation for details on how to manage your build certificates). Once you have downloaded your build certificate you can use these instructions provided by Google, to extract the fingerprint, or simply search the Internet for "extract fingerprint from android build certificate" to find many articles detailing this process.

Why am I unable to test or build or connect to the old build server with Intel XDK version 2893?

This is an Important Note Regarding the use of Intel XDK Versions 2893 and Older!!

As of June 13, 2016, versions of the Intel XDK released prior to March 2016 (2893 and older) can no longer use the Build tab, the Test tab or Intel App Preview; and can no longer create custom debug modules for use with the Debug and Profile tabs. This change was necessary to improve the security and performance of our Intel XDK cloud-based build system. If you are using version 2893 or older, of the Intel XDK, you must upgrade to version 3088 or greater to continue to develop, debug and build Intel XDK Cordova apps.

The error message you see below, "NOTICE: Internet Connection and Login Required," when trying to use the Build tab is due to the fact that the cloud-based component that was used by those older versions of the Intel XDK work has been retired and is no longer present. The error message appears to be misleading, but is the easiest way to identify this condition. 

Back to FAQs Main

Using Intel® Data Analytics Acceleration Library to Improve the Performance of Naïve Bayes Algorithm in Python*

$
0
0

Introduction

How is Netflix able to recommend videos for customers to view? How does Amazon know which products to suggest to potential buyers? How does Microsoft Outlook* categorize an email as spam?

How do they do it? Netflix is able to recommend videos to customers from past viewing experience. Amazon uses data from shopper viewing and buying histories to suggests products that shoppers might likely to buy. Microsoft analyzes a huge amount of emails to determine whether or not an email is junk or spam.

It seems like Netflix, Amazon, and Microsoft have done some kind of analysis on the historical databases of some kind to come up with decisions to assist their customers with their needs. With the availability of a huge amount of data (video, audio, and text) on social media and on the Internet, there needs to be an efficient way to handle these big sets of data with minimum human intervention in order to gain more insight into how people think, behave, and interact with society and our environment.

This has led to what we call machine learning [1].

This article discusses machine learning and describes a machine learning method/algorithm called Naïve Bayes (NB) [2]. It also describes how to use Intel® Data Analytics Acceleration Library (Intel® DAAL) [3] to improve the performance of an NB algorithm.

What is Machine Learning?

Machine learning (ML) is a data analysis method that is used to create an analytical model base on a set of data. That analytic model has the ability to learn without being explicitly programmed as new data is being fed to it. ML has been around for quite some time, but only recently has it proved to be useful due to the following:

  • The growing volumes and varieties of available data from social media and on the Internet are increasingly available.
  • Computer systems are getting more powerful.
  • Data storages are getting larger and cheaper.

The two most common types of ML are supervised learning [4] and unsupervised learning [5].

With supervised learning, algorithms are trained using a set of input data and a set of labels (known results.) Each time algorithms learn by comparing the results of the input data with the label and adjust the machine learning model. Classification is considered supervised learning.

Unlike supervised learning, with unsupervised learning algorithms have no labels to learn from. Instead, they have to look through input data and detect patterns on their own. For example, to categorize which region in the world a person belongs to, the algorithms have to look at the population data, identify races, religions, languages, and so on. 

Figure 1: Simplified machine learning diagram.

Figure 1 shows a simplified diagram of how ML works. First, an ML algorithm gets trained using a training data set and creates an ML model. That model processes the testing data set and, finally, the result will be predicted.

The next section discusses a type of supervised learning algorithm, the Naïve Bayes algorithm.

Naïve Bayes Algorithm

The Naive Bayes (NB) algorithm is a classification method based on Bayes’ theorem [6] with the assumption that all features are independent of each other.

Bayes’ theorem is represented by the following equation:

Where X and Y are features

  • P(Y|X) is the probability of Y given X.
  • P(X|Y) is the probability of X given Y.
  • P(Y) is the prior probability of Y.
  • P(X) is the prior probability of X.

 

From [2], the NB equation can be written as follows:

Where X = (x1, x2,… xn) represents a vector of n features.

The NB algorithm is commonly used in detecting email sorting, document categorization, email spam detection, and so on.

The diagram in Figure 2 shows how the NB algorithm works:

Figure 2: Machine learning diagram with Naïve Bayes algorithm.

Figure 2 shows that the training data set consists of two sets: the training labels and the training data. The training labels are the correct outputs of the training data. These two sets are needed to build the classifier. After that, the testing data set will be fed to the classifier to be evaluated. 

Figure 3: Email spam detection using Naïve Bayes algorithm.

Figure 3 shows the flow diagram of the NB algorithm detecting email spam. The known spam email goes through the NB algorithm to build the email classifier. After that, unknown emails go through the email classifier to check whether or not an email is spam.

Applications of NB

The following are some NB applications:

  • Taking advantage of its speed to make predictions in real time
  • Multiclass/multinomial classification, such as classifying many types of flowers
  • Detecting spam emails
  • Classifying text

Advantages and Disadvantages of NB

The following are some of the advantages and disadvantages of NB.

Advantages

  • Training the model can be done quickly.
  • NB does well with multi-class prediction.

Disadvantages

  • If the data has no label in the training data set, NB cannot make a prediction.
  • NB does not work well with large data sets.
  • Features/events are not always completely independent.

It takes a considerable amount of time to train the model with a large data set. It can take weeks and even months to train a particular model. To help optimize this training step, Intel developed Intel DAAL.

Intel® Data Analytics Acceleration Library

Intel DAAL is a library that consists of many basic building blocks that are optimized for data analytics and machine learning. These basic building blocks are highly optimized for the latest features of the latest Intel® processors. More about Intel DAAL can be found at [7]. Multinomial Naïve Bayes classifier is one of the classification algorithms that DAAL provides. In this article, we use PyDAAL, the Python API of DAAL, to build a basic Naïve Bayes classifier. To install PyDAAL, follow instructions in [10].

Using the NB Method in the Intel Data Analytics Acceleration Library

This section shows how to invoke the multinomial NB algorithm [8] in Python [9] using Intel DAAL.

Do the following steps to invoke the NB algorithm from Intel DAAL:

     1) Import the necessary packages using the commands from and import

           a) Import Numpy using the command:

                      import numpy as np

            b) Import the Intel DAAL numeric table using the following command:

                      from daal.data_management import HomogenNumericTable

            c) Import the NB algorithm using the following commands:

                      from daal.algorithms.multinomial_naive_bayes import prediction, training

                      from daal.algorithms import classifier

     2) Create a function to split the input data set into the training data, label, and test data.

Basically, split the input data set array into two arrays. For example, for a dataset with 100 rows, split it into 80/20: 80 percent of the data for training and 20 percent for testing. The training data will contain the first 80 lines of the array input dataset, and the testing data will contain the remaining 20 lines of the input dataset.

     3) Restructure the training and testing dataset so it can be read by Intel DAAL.

Use the commands to reformat the data as followed (We treat ‘trainLabels’ and ‘testLabels’ as n-by-1 tables, where n is the number of lines in the corresponding datasets):

                        trainInput = HomogenNumericTable(trainingData)

                        trainLabels = HomogenNumericTable(trainGroundTruth.reshape(trainGroundTruth.shape[0],1))

                        testInput = HomogenNumericTable(testingData)

                        testLabels = HomogenNumericTable(testGroundTruth.reshape(testGroundTruth.shape[0],1))

       Where:

                        trainInput: Training data has been reformatted to Intel DAAL numeric tables.

                        trainLabels: Training labels has been reformatted to Intel DAAL numeric tables .

                        testInput: Testing data has been reformatted to Intel DAAL numeric tables.

                        testLabels: Testing labels has been reformatted to Intel DAAL numeric table

     4) Create a function to train the model

          a) First create an algorithm object to train the model using the following command:

                        algorithm = training.Batch_Float64DefaultDense(nClasses)                    

           b) Pass the training data and label to the algorithm using the following commands:

                        algorithm.input.set(classifier.training.data, trainInput)

                        algorithm.input.set(classifier.training.labels, trainLabels)

            where:

                        algorithm: The algorithm object as defined in step a above.

                        trainInput: Training data.

                        trainLabels: Training labels.

          c) Train the model using the following command:

                         Model = algorithm.compute()

              where:

algorithm: The algorithm object as defined in step a above.

     5) Create a function to test the model.

          a) First create an algorithm object to test/predict the model using the following command:

                         algorithm = prediction.Batch_Float64DefaultDense(nClasses)                

          b) Pass the testing data and the train model to the model using the following commands:

                         algorithm.input.setTable(classifier.prediction.data, testInput)

                         algorithm.input.setModel(classifier.prediction.model, model.get(classifier.training.model))

              where:

                        algorithm: The algorithm object as defined in step a above.

                        testInput: Testing data.

                        model: Name of the model object.

          c) Test/predict the model using the following command:

                       Prediction = algorithm.compute()

               where:

                        algorithm: The algorithm object as defined in step a above.

                        prediction: Prediction result that contains predicted labels for test data.

Conclusion

Using Intel DAAL algorithms can help simplify and improve the performance of your ML-related applications since those algorithms are highly optimized using the latest features of the latest Intel processors. Using Intel DAAL also mean that you don’t have to modify your code to take advantage of new features of new Intel processors. You only need to link to the latest version of Intel DAAL.

The next article will explore another Intel DAAL algorithm like support vector machine (SVM).

Authors

Khang Nguyen

Zhang Zhang

 

References

[1] Machine Learning

[2] Naïve Bayes

[3] Intel Data Analytics Acceleration Library

[4] Supervised Learning         

[5] Unsupervised Learning

[6] Bayes’ Theorem

[7] Introduction to Intel Data Analytics Acceleration Library

[8] Multinomial Naïve Bayes

[9] Python website

 

Notices

Intel technologies’ features and benefits depend on system configuration and may require enabled hardware, software or service activation. Performance varies depending on system configuration. Check with your system manufacturer or retailer or learn more at intel.com.

No license (express or implied, by estoppel or otherwise) to any intellectual property rights is granted by this document.

Intel disclaims all express and implied warranties, including without limitation, the implied warranties of merchantability, fitness for a particular purpose, and non-infringement, as well as any warranty arising from course of performance, course of dealing, or usage in trade.

This document contains information on products, services and/or processes in development. All information provided here is subject to change without notice. Contact your Intel representative to obtain the latest forecast, schedule, specifications and roadmaps.

The products and services described may contain defects or errors known as errata which may cause deviations from published specifications. Current characterized errata are available on request.

Copies of documents which have an order number and are referenced in this document may be obtained by calling 1-800-548-4725 or by visiting www.intel.com/design/literature.htm.

Intel and the Intel logo are trademarks of Intel Corporation in the U.S. and/or other countries.

*Other names and brands may be claimed as the property of others.

© 2016 Intel Corporation.


Stanford HPC Center Summer Speaker Series: Introduction to High Performance Computing Tools

$
0
0

The Stanford High Performance Computing Center is proud to present the Stanford HPC Summer Speaker Series. This years focus is on the tools of HPC. The series runs Tuesday June 28th through Tuesday July 26th. The sessions are open to all, free of charge, fully supported by Intel and the Stanford HPC Center.

Link to abstracts here 

Intel Distribution for Python: A Scalability Story in Production Environments
Tuesday, June 28, 2016 - 12:00PM-1:30PM

3 Tuning Secrets for Better OpenMP Performance Using VTune Amplifier XE
Tuesday, July 12, 2016 - 12:00PM-1:30PM

Guided Code Vectorization with Intel® Advisor XE
Tuesday, July 19, 2016 - 12:00PM-1:30PM

Building Faster Machine Learning Applications with Intel Performance Libraries
Tuesday, July 19, 2016 - 12:00PM-1:30PM

When:
Tuesday, Jun 28, 2016 12:00 PM
Tuesday, Jul 12, 2016 12:00 PM
Tuesday, Jul 19, 2016 12:00 PM
Tuesday, Jul 26, 2016 12:00 PM
Where:
"the d.School" Thomas F. Peterson Engineering Laboratory, 550 Panama Mall Building 550, Room 200 Stanford, CA 94305 Map
Admission:

Registration is required for each session here

Scale-Up Implementation of a Transportation Network Using Ant Colony Optimization (ACO)

$
0
0

Table of Contents

Introduction

Transportation networks have always been used with the goal of making it easy to move goods from one location to another using the most effective means available. During the last few decades, the definition of “means” has changed to not only include the cost in terms of money but also other factors like environmental impact, energy costs, and time. With the globalization of business and supply chains, the size and complexity of such transportation networks has increased considerably. As a result the problem of optimizing transportation networks is now categorized as an NP-hard problem for which a deterministic solution is often not applicable.

With the rise of multi-core and distributed architectures, optimization techniques based on heuristics including ant colony optimization (ACO) are being developed and applied. In this paper, we baseline and analyze the bottlenecks of one such implementation of ACO and introduce additional improvements we deployed, achieving near theoretical scaling on a four-socket Intel® Xeon® processor-based system. The paper is structured as follows:

  • Background of an ACO algorithm
  • Baseline implementation with benchmark results and VTune™ Amplifier analysis
  • Optimization 1: Using Hybrid MPI-OpenMP* with VTune Amplifier
  • Optimization 2: Using Intel® Threading Building Blocks (Intel® TBB) - Dynamic Memory Allocation
  • Optimization 3: Combining/Balancing MPI Ranks and OpenMP Threads
  • Summary

Background: The ACO Algorithm

When ants search for food, they deposit pheromones along their paths, which attract more ants. But these pheromones evaporate, which degrades longer paths more easily than shorter and/or faster paths meaning more ants are attracted to the shorter, faster paths where they deposit more pheromones and increase the attractiveness of the path.  

Figure 1: Ant colony optimization.

Simple computer agents within a network can probabilistically build solutions using the ACO principle. In the past we have seen the following parallel software implementations for the ACO algorithm but with some limitations.

  • M. Randall et al. (Randall & Lewis, 2002) developed a simple parallel version of the ACO algorithm that showed acceptable speedup, but it incurred a large amount of communication to maintain the pheromone matrix. When they used fine-grained parallelism across multiple ants, performance was limited by the Message Passing Interface (MPI) communication between ants.
  • Veluscek, M. et al. (Veluscek, 2015) implemented composite goal methods for their transportation network optimization algorithm using an OpenMP-based shared memory parallelism, but it is best run on systems with relatively few cores using a low number of threads.

Baseline Implementation of ACO

The overall parallel architecture of our baseline ACO software is represented using the flowchart shown in Figure 2.

ACO_Baseline_Flowchart

Figure 2: Non-optimized baseline flowchart.

For every month of the year, a large number of iterations are run in which an ant population is released to construct the pheromone matrix contributing to a solution. Each iteration is run entirely independent of the others.

A static distribution of work was used where each OpenMP thread ran its portion of iterations in parallel and found a thread-local solution. Once all the threads completed their search, a master thread compared all the thread-local solutions and picked a global solution.

Benchmark Results - Baseline Implementation

One of the quickest ways to find out whether an application is scaling efficiently with an increasing number of cores is to baseline it using a one-socket/NUMA node and then compare that to the performance when run on multiple sockets with and without hyper-threading. In an ideal scenario, two-socket systems would show double and four-socket systems would show quadruple the single-socket performance (ruling out the effects from other limitations). However, as shown in Figure 3, in our baseline tests, the application did not scale well beyond two sockets (48 cores), let alone 192 cores.

Fig3_Preoptimized_Baseline_Scaling_Results

Figure 3: Pre-optimized baseline scaling results.

VTune Amplifier XE Analysis - Baseline Implementation

To find the scaling issue, we used the hotspots feature of VTune Amplifier XE 2016.[1] In Figure 4, the VTune Amplifier summary window shows Top Hotspots and Serial Time spent spinning  on serial execution of the network optimization application.

Figure_4_Pre-optimized baseline – Top Hotspots

Figure 4: Pre-optimized baseline – Top Hotspots.

From Figure 4, it can be inferred that the application spends a large amount of time executing serially, which directly impacts the parallel CPU usage. The biggest hotspot is the string allocator from the standard string library, which did not scale well to high core counts. This makes sense since OpenMP uses a single shared pool of memory, and a huge number of thread parallel calls to string constructor or object allocator (using operatornew) tends to create a memory bottleneck. And if we look at CPU Usage in the bottom-up tab (Figure 5), we find that the application uses all 96 cores, but only for short spurts.

 

Figure_5_Pre-optimized baseline – CPU utilization

Figure 5: Pre-optimized baseline – CPU utilization.

Figure_6_Pre-optimized baseline – Load imbalance

Figure 6: Pre-optimized baseline – Load imbalance.

And when mapping the algorithm to the time line, the load imbalance chart (Figure 6), shows that at the end of every month, there is a small time frame where the master thread is doing useful computations but the rest of the threads end up spinning or sleeping.

Optimization 1: Adding Hybrid MPI-OpenMP 

To avoid the large pool of OpenMP threads found in the baseline implementation, we used a generic master-slave approach and launched multiple processes[2] across iterations. For each process (MPI rank) a relatively small number of OpenMP threads were spawned. The overload of string and object allocation is now distributed among multiple MPI processes (ranks). This hybrid MPI-OpenMP implementation of the ACO software is represented by the flowchart shown in Figure 7.

Optimized_MPI_Implementation_Flowchart

Figure 7: Optimized implementation #1 – flowchart.

VTune Amplifier XE Analysis of Optimization 1

Using the VTune Amplifier hotspot feature, we analyzed the hybrid MPI-OpenMP implementation.

In the summary window (Figure 8) we can see that the application now spends comparatively less time in string allocations with improved CPU utilization (Figure 9a and 9b).

Figure_8_Optimization 1 implementation – Top Hotspots

Figure 8: Optimization 1 implementation – Top Hotspots

 

Figure_9_Pre-optimized_baseline implementation – CPU usage histogram

Figure 9: Pre-optimized baseline and optimization # 1 implementation – CPU usage histogram

 

Figure_10_Optimization #1 implementation – elapsed time line

Figure 10: Optimization #1implementation – elapsed time line.

Figure 10 shows that the resulting load imbalance between the master and worker threads has decreased significantly. Figure 11 shows that the CPU usage is close to 96 cores throughout the time line.

Figure_11_Optimization #1 implementation – CPU utilization

Figure 11: Optimization #1 implementation – CPU utilization.

Unfortunately, we still see too much time spent in the spinning of OpenMP threads and MPI communication when the winner rank (the rank that finds the global solution) sent its solution to the master rank to update the result files. We theorized that this was due to the overhead of MPI communication. The MPI uses a distributed memory interface wherein each process (rank) works on a separate pool of memory. As a result, modification of objects and data structures by one rank is not transparent to the other ranks and so data must be shared between ranks using MPI Send and Receive, including the monthly global solution, which must be sent to the master.[3] This global solution is a complex C++ object, which consists of a number of derived class objects, some smart pointers with data, and other STL template objects. Since by default MPI communication does not support exchanging complex C++ objects, MPI Send and Receive requires serialization to convert the C++ object into a stream of bytes before sending and then deserialization to convert the stream back into objects upon receiving. Figure 11 shows this overhead in yellow (MPI communication) and red (Spin and Overhead).

Results of Optimization 1

The hybrid MPI-OpenMP version showed better load-balancing characteristics between the MPI ranks and OpenMP threads and much more efficient CPU utilization for high core count Intel® Xeon® processor E7-8890 v4 systems. Figure 12 shows it significantly improved scaling over multiple sockets (cores), including with hyper-threading.

Figure12_Optimization 2 – scaling comparison

Figure 12: Optimization 2 – scaling comparison.

Optimization 2: Using Intel® Threading Building Blocks Dynamic Memory Allocation

Looking at the top hotspots for the hybrid MPI-OpenMP runs, we saw that a significant portion of execution time was used by the standard string allocation library. We thought it would be interesting to see if the dynamic memory allocation library from Intel TBB would be beneficial. Intel TBB provides several memory allocator templates that are similar to the standard template library (STL) template class std::allocator, including scalable_allocator<T> and cache_aligned_allocator<T>. These address two critical issues in parallel programming:

Scalability issues, which occur because memory allocators sometimes have to compete for a single shared pool in a way that allows only one thread to allocate at a time (due to the original serial program design).

False sharing problems, which arise when two threads access different words in the same cache line. Because the smallest unit of information exchanged between processor caches is a cache line, a line will be moved between processors, even if each processor is dealing with a different word within that line. False sharing can hurt performance because cache lines moves can take hundreds of clocks.

Steps to use Intel Threading Building Blocks Dynamic Memory Allocation

One of the easiest ways to find out whether the application can benefit from Intel TBB dynamic memory allocation is to replace the standard dynamic memory allocation functions with the release version of the Intel TBB proxy library - libtbbmalloc_proxy.so.2. Simply load the proxy library at program load time using the LD_PRELOAD environment variable (without changing the executable file), or link the main executable file with the proxy library.

Link with the TBB malloc proxy library: -ltbbmalloc_proxy
OR
Set LD_PRELOAD environment variable to load the Intel® TBB malloc proxy library
       $ export LD_PRELOAD=libtbbmalloc_proxy.so.2

 

Results of Optimization 2

Addressing the critical issue of scalability of default memory allocators, the Intel TBB dynamic memory allocation proxy library provides an additional 6 percent gain over the optimized scale-up hybrid MPI-OpenMP version (Figure 13).

 

Figure_13_Scale-up implementation – Intel® Threading Building Blocks improvements

Figure 13: Scale-up implementation – Intel® Threading Building Blocks improvements.

Optimization 3: Combining MPI Ranks and OpenMP Threads

Finally, further tuning was run which experimented with different combinations of MPI ranks and OpenMP threads running the same workload. With hyperthreading turned ON, we ran the workload while maximizing the total system usage, that is, using all of the 192 logical cores.   Figure 14 shows the maximum throughput achieved when we ran a combination of 64 MPI ranks each running 3 OpenMP threads.

Figure_14_Optimization 3– comparison of rank and thread count combinations

Figure 14: Optimization 3– comparison of rank and thread count combinations.

Summary

The baseline parallel software implementation of network management with ACO demonstrated thread-scaling issues with string allocators and object constructors. With Optimization 1, we achieved better CPU usage but the portion of execution time spent in string allocators was still high. With Optimization 2, the Intel TBB dynamic memory allocation proxy library supplied an additional 6 percent gain over the hybrid MPI-OpenMP version. With Optimization 3 using 64 MPI ranks each using 3 OpenMP threads, additional true scaling up to 192 cores was seen that had increased the final performance gain up to 5.30x indicating time spent with VTune Amplifier and Intel TBB was well worthwhile.

 

Figure_15_Overall performance comparison

Figure 15: Overall performance comparison.

Appendix A: System Configuration

Performance testing results provided in the tables in this paper were achieved from the following test system. For more information, go to http://www.intel.com/performance.

System

Four-Socket Server

Host Processor

Intel® Xeon® processor E7-8890 v4 @ 2.20 GHz

Cores/Threads

96/192

Host Memory

512 GB DDR-1600 MHz

Compiler

Intel® Parallel Studio XE 2016 U2

Profiler

VTune Amplifier XE 2016 Update 2

Host OS

Linux*; version 3.10.0-327.el7.x86_64

 

Appendix B: References

 

About The Author


Sunny GogarSunny Gogar
Software Engineer

Sunny Gogar received a Master’s degree in Electrical and Computer Engineering from the University of Florida, Gainesville, and a Bachelor’s degree in Electronics and Telecommunications from the University of Mumbai, India. He is currently a software engineer with Intel Corporation's Software and Services Group. His interests include parallel programming and optimization for multi-core and many-core processor architectures.

 

Notices

Intel technologies’ features and benefits depend on system configuration and may require enabled hardware, software or service activation. Performance varies depending on system configuration. Check with your system manufacturer or retailer or learn more at intel.com.

No license (express or implied, by estoppel or otherwise) to any intellectual property rights is granted by this document.

Intel disclaims all express and implied warranties, including without limitation, the implied warranties of merchantability, fitness for a particular purpose, and non-infringement, as well as any warranty arising from course of performance, course of dealing, or usage in trade.

This document contains information on products, services and/or processes in development. All information provided here is subject to change without notice. Contact your Intel representative to obtain the latest forecast, schedule, specifications and roadmaps.

The products and services described may contain defects or errors known as errata which may cause deviations from published specifications. Current characterized errata are available on request.

Copies of documents which have an order number and are referenced in this document may be obtained by calling 1-800-548-4725 or by visiting www.intel.com/design/literature.htm.

This sample source code is released under the Intel Sample Source Code License Agreement.

Intel, the Intel logo, VTune, and Xeon are trademarks of Intel Corporation in the U.S. and/or other countries.

*Other names and brands may be claimed as the property of others.

© 2016 Intel Corporation


[1] Reduced workload (384 iterations) was used with VTune Amplifier to limit the size of collected sampling data. All the other benchmarking numbers presented here in this paper were generated using a full workload (1,000 iterations).

[2] MPI Process or MPI Rank are interchangeable here.

[3] The serialization overhead is constant, that is, O(1) occurring at maximum once per month (or skipped if the master (rank 0) finds the global solution), irrespective of the number of MPI processes launched. This is critical in order to keep the MPI communication limited when we scale-up across multiple nodes

What's New? Intel® SDK for OpenCL™ Applications 2016, R2

$
0
0
  • OpenCL 2.1 and SPIR-V support
    •  OpenCL 2.1 development environment with the experimental CPU-only runtime for OpenCL 2.1
    • SPIR-V generation support with Code Builder Offline Compiler and Kernel Development Framework including textual representing of SPIR-V binaries
  • New features in Kernel Development Framework
    • Host C++ code generator – generates full OpenCL application host C++ code for a given session.
    • Lightweight “Run” option to execute the kernel and get immediate results. You can later run a full analysis on the kernel execution session.
    • Output validation – assign reference to an output buffer or image object and get immediate results if the reference does or does not match the output variable.
    • Command line interface – enables you to perform most of the tasks that are available through the IDE, including: capture a kernel execution from an OpenCL application, execute a kernel and view its results, view the kernel’s performance analysis results, and more.
    • Advanced buffers and images viewer with pixel overlay presentation, show image as buffer options, compare mode and more
  • Beta2 release of Source and Assembly level GPU Kernel Debugging on Windows* operating system including bug fixes and improvements.
  • Latency analysis on 6th Generation Intel Core™ Processors with Intel Iris™, Intel Iris Pro and HD Graphics.
  • Intel® SDK for OpenCL™ Applications 2016 R2 includes all the features for OpenCL development for Windows* and Android* previously available in Intel® INDE OpenCL™ Code Builder 2015 R2 and all features for Linux* development which available in Code Builder for Intel® Media Server Studio.

[Inforgraphic] How To Be A Tech Savvy AND Business Savvy Developer

Introducing the Intel® Software Guard Extensions Tutorial Series

$
0
0

Today we are launching a multi-part tutorial series aimed at software developers who want to learn how to integrate Intel® Software Guard Extensions (Intel® SGX) into their applications. The intent of the series is to cover every aspect of the software development cycle when building an Intel SGX application, beginning at application design and running through development, testing, packaging, and deployment. While isolated code samples and individual articles are valuable, this in-depth look at enabling Intel SGX in a single application provides developers with a hands-on and holistic view of the technology as it is woven into a real-world application.

This tutorial will consist of several parts—currently 12 articles are planned, though the exact number may change—each covering a specific topic. While a precise schedule has not been set, each part in the series should be published every two to three weeks and in these broad phases:

  1. Concepts and design
  2. Application development and Intel SGX integration
  3. Validation and testing
  4. Packaging and deployment
  5. Disposition

Source code will accompany relevant sections of the series and will be distributed under the Intel Sample Source Code license. Don’t expect to start seeing source code for a few weeks, however. The first phase of the tutorial will cover the early fundamentals of Intel SGX application development.

Goals

At the end of the series, the developer will know how to:

  • Identify an application’s secrets
  • Apply the principles of enclave design
  • Use trusted libraries in an enclave
  • Build support for dual code paths in an application (to provide legacy support for platforms without Intel SGX capabilities)
  • Use the Intel SGX debugger
  • Create an Intel SGX application installer package

The sample application

Throughout the series we will be developing a basic password manager. The final product is not meant to be a commercially viable application, but rather one with sufficient functionality to make it a reasonable performer that follows smart security practice. This application is simple enough to be reasonably covered in the tutorial without being so simple that it’s not a useful example.

What you’ll need

Developers who want to work with the source code as it is released will require the following:

Hardware requirements

HardwareHard RequirementComments
Intel® processor with Intel® Secure Key technologyYesThe password manager will make extensive use of the digital random number generator provided by Intel Secure Key technology. See http://ark.intel.com to find specific processor models with Intel Secure Key technology support.
6th generation Intel® Core™ processor with Intel® Software Guard Extensions (Intel® SGX) enabled BIOSNoTo get the most out of the tutorial, a processor that supports Intel SGX is necessary, but the application development can take place on a lesser system and Intel SGX applications can be run in the simulator provided with the SDK.

 

Software requirements

These software requirements are based on the current, public release of the Intel SGX Software Developer’s Kit (SDK). As newer versions of the SDK are released, the requirements may change.

SoftwareHard RequirementComments
Intel® Software Guard Extensions (Intel® SGX) SDK v1.1YesRequired for developing Intel SGX applications.
Microsoft Visual Studio* 2012 Professional EditionYesRequired for the SDK. Each SDK release is tied to specific versions of Visual Studio in order to enable the wizards, developer tools, and various integration components.
Intel® Parallel Studio XE 2013 Professional Edition for Windows* No

This is a soft requirement for the SDK, but it is not strictly necessary for Intel SGX SDK development.

The compiler included in Visual Studio 2012 does not provide intrinsics for the RDSEED instruction, but a fallback code path exists.

Coming soon

Part 1 of the series, Intel SGX Foundations, will post in the next couple of weeks. In it, we will provide an overview of the technology and lay the groundwork for the rest of the tutorial.

Stay tuned

This series will cover every aspect of the software development cycle when building an Intel SGX application, beginning at application design, and running through development, testing, packaging, and deployment. The tutorials will cover concepts and design, application development and Intel SGX integration, validation and testing, packaging and deployment, and disposition.

We’re excited to be launching this series and are looking forward to having you join us!

Getting Started With Node-Red* and Arduino 101* with the Grove* Shield

$
0
0

Overview

Node-RED* is a tool for wiring together hardware devices, APIs and online services in new and interesting ways. It provides a browser-based flow editor that makes it easy to wire together flows using the wide range nodes in the palette. Flows can be then deployed to the runtime in a single click. The lightweight runtime is built on Node.js*, taking full advantage of its event-driven, nonblocking model. This makes it ideal to run at the edge of the network.

Arduino 101* is the ideal successor of the UNO, updated with the latest technologies including the Intel® Curie™ processor. It recognizes gestures, and features a six-axis accelerometer and gyroscope.

Grove* is a modulated, ready-to-use tool set. Much like Legos, it takes a building block approach to assembling electronics. Compared with the traditional, more complicated learning method of using a breadboard and various electronic components to assemble a project, Grove simplifies and condenses the learning process significantly. The Grove system consists of a base shield and various modules with standardized connectors. The base shield allows for easy connection of any microprocessor input or output from the Grove modules, and every Grove module addresses a single function, such as a simple button or a more complex heart rate sensor. Each one comes with clear documentation and demo code to help you get started quickly.

Required Hardware

  • IoT Gateway that uses Intel® IoT Gateway Technology
  • Arduino 101
  • Grove Shield kit

Assumptions

  • Gateway is running Intel® IoT Gateway Technology version 3.1 or above.
  • Node.js is installed on the gateway (installed by default).
  • Node-RED is installed on the gateway and is running (installed by default).
  • MRAA, UPM, and node-red-contrib-upm node are installed on the IoT Gateway. (You can install these packages by clicking on Packages and then Add Packages from the Intel® IoT Gateway Developer Hub.

Preparing and connecting the Arduino 101* with Grove* Shield

  • Arduino 101 should be connected to the Intel® IoT Gateway via USB.
  • Grove Base Shield should be attached to Arduino 101, and switched to 3V3 VCC.
  • For this example, we'll be using 6 of the sensors from the Grove Shield kit. Please connect them as follows:
    • LED to D2
    • Push Button to D3
    • Touch Sensor to D6
    • Temp Sensor to A0
    • Light Sensor to A1
    • Rotary Sensor to A2

Connecting the Arduino 101

Plug in an Arduino 101 board and reboot your gateway. The Firmata* sketch should now be flashed onto the board, and you are now ready.

Using Node-RED*

The Node-RED* browser interface can be reached via http://ipaddressofthegateway:1880. When it first comes up it will look something like this:

Along the left side of the Node-RED screen you'll see a series of nodes. These are the building blocks for creating a Node-RED application on the Intel® IoT Gateway. We'll use several nodes in this application:

Drag and drop nodes onto the canvas and arrange them as shown below. For some of the nodes, we'll need multiple copies. Use your mouse to connect wires between the nodes as shown below:

When nodes are first placed on the canvas, they are in a default state, and need to be configured before they'll work. Nodes are configured by double-clicking them and setting parameters in their configuration panels.

Double-click each node on the canvas and set its parameters as shown in the table below. In some cases, the Name field is left blank to use the default name of the node. Pin numbers correspond to the Grove Base Shield jack where the sensor or actuator is connected.

Verify your settings and wiring connections, then click the Deploy button to deploy your changes, making them active on the gateway. After deploying the flow, you should see a data display towards the top of the Intel® IoT Gateway Developer Hub screen with live values for Rotary, Light and Button. Turning the rotary knob and covering the light sensor should make the numbers change up and down, and pressing the button should turn on the LED, sound the buzzer, and energize the relay.

Congratulations! You can now use Node-Red to read and control sensors attached to the Arduino 101 from your gateway!

References

Connecting Intel® IoT Gateways to IBM Watson*

$
0
0

This guide will walk you through adding the IoT Cloud repository to your Intel® IoT Gateway and adding support for IBM Watson* so you can begin developing applications for this platform in your programming language of choice.

Prerequisites

  • Intel® IoT Gateway Technology running IDP 3.1 or above with internet access
  • A development device (such as a laptop) on the same network as the Intel® IoT Gateway
  • Terminal access to the Intel® IoT Gateway from your development device

Please see the following documentation for setting up your Intel® IoT Gateway: Getting Started with Intel® IoT Gateways with Intel® IoT Developer Kit 3.5

Adding the IoT Cloud repository to your Intel® IoT Gateway

  1. Access the console on your gateway either using a monitor and keyboard connected directly or SSH
  2. Add the GPG key for the cloud repository using the following command:
    rpm --import http://iotdk.intel.com/misc/iot_pub.key
  3. On your development device, open a web browser and load the IoT Gateway Developer Hub interface by entering the IP address of your gateway in the address bar.
    Tip: You can find your gateway’s IP address using the ‘ifconfig’ command
  4. Login to the IoT Gateway Developer Hub interface using the credentials root:root
  5. Add the IoT Cloud repository.
  6. Go to the Packages section and click the Add Repo + button.
  7. Populate the fields with the following information, then click Add Repository:
    Name: IoT_Cloud
    URL:http://iotdk.intel.com/repos/iot-cloud/wrlinux7/rcpl13
  8. Finally, click the Update Repositories button to update the package list.

Adding IBM Watson* support to your Intel® IoT Gateway

  1. Click the Add Packages + button to bring up the list of packages you can install.
  2. Search for cloud ibm using the search box at the top of the package window.
  3. Click the ‘Install’ button next to the packagegroup-cloud-ibm entry.

Connecting to IBM Watson with Node-RED*

  1. After installing the IBM* cloud package, the Node-RED* service needs to be restarted so it can pick up the newly installed nodes. Run the following command from the gateway’s console:
    systemctl restart node-red-experience
  2. Load the Node-RED interface
  3. Go to the Administration section of the IoT Gateway Developer Hub and click Launch under the Node-RED icon.
  4. In the Node-RED interface click the menu icon on the right of the window and navigate to Import – Examples - ibm watson-iot and select Time Inject.
  5. Add the Time Inject example to the current flow and click the red Deploy button to start running the flow.
  6. Double-click the IBM IoT Device node to open the configuration dialogue.
  7. Click the link button in the configuration dialogue to take you to the IBM Watson Quickstart dashboard for your Quickstart Id.
  8. When the IBM Watson Quickstart dashboard loads you will be able to view the live data being sent from the gateway.

Congratulations! Your gateway is now connected to Watson.

Dig Deeper into the Intel® IoT Developer Kit with IBM Watson* - Sensor to Cloud: Connecting the Intel® NUC and Arduino 101* Board to the IBM Watson* IoT Platform


Troubleshooting Visual Studio 2013 Shell Installation Issues

$
0
0

Starting from Intel® Parallel Studio XE Composer Edition for Fortran Windows* 2016, a Fortran development environment based on Microsoft Visual Studio 2013 Shell is provided in this package.

Prerequisite to install Visual Studio 2013 Shell is described here.

By default, if a supported version of Visual Studio cannot be found on the system, Intel® Visual Fortran 2016 installer will detect it and install Microsoft Visual Studio 2013 Shell* automatically.

However sometimes the automatic installation does not work or causes error like following:

Screenshot for VS2013 Shell Installation Error

To troubleshoot such issues and find the root cause, it is required to manually install Visual Studio 2013 Shell.

Follow below steps to install Visual Studio 2013 Shell manually:

  1. Start Intel® Parallel Studio XE Composer Edition for Fortran Windows* 2016 as normal. In extracting package to folder dialogue box, uncheck “Remove temporarily extracted files after installation” as shown below:

  2. Click “Extract”. 
  3. After extraction finish, click cancel installation.
  4. Go to the extracted folder:

        C:\Program Files (x86)\Intel\Download\parallel_studio_xe_2016_composer_edition_for_fortran_setup\

  5.  Find VS2013 shell setup tool from subfolder:

        installs\cmp_and_libs\1*0\ww_vsshell_2013_isolated

  6.  Try run “vs_isoshell.exe”. 

You may encounter other errors after run "vs_isoshell.exe". Follow the error message reported from Microsoft Visual Studio installer to clean those problems.

Until you see no error reported to install Visual Studio 2013 Shell, you have two choices to follow:

1. Stop installing Visual Studio 2013 Shell manually. Start Intel® Parallel Studio XE Composer Edition for Fortran Windows* 2016 again to install Visual Studio 2013 Shell automatically and integrate with Intel Fortran. The installation should go smoothly this time. 

2. Continue installing Visual Studio 2013 Shell manually. After finish, restart Intel® Parallel Studio XE Composer Edition for Fortran Windows* 2016 to integration with it.

Now you may verify your installation by either command prompts or Visual Studio 2013 Shell graphic development environment.

To start integrated command prompt with Visual Studio 2013, go to Start menu -> Programs -> Intel Parallel Studio XE 2016 -> Compiler and Performance Libraries -> Command Prompt with Intel Compiler 16.0 -> IA-32/Intel64 Visual Studio 2013 environment.

If you have questions about this, please ask in our User Forum or at Intel® Premier Support.

How to Install the Python* Version of Intel® Data Analytics Acceleration Library (Intel® DAAL)

$
0
0

Introduction

Intel® Data Analytics Acceleration Library (Intel® DAAL) is a software solution that offers building blocks covering all the stages of data analytics, from preprocessing to decision making. The beta version of Intel DAAL 2017 provides support for the Python* language.

Installation 

This article gives you three options to install the Python* version of Intel DAAL, or pyDAAL.

  • Anaconda* distribution on Linux*

The easiest way to install pyDAAL on Linux* is to get it through the Anaconda* distribution. For details, review this step-by-step instruction.

  • Intel® Distribution for Python* on Windows*, Linux*, and OS X*

           pyDAAL is also shipped with the Intel® Distribution for Python*. For more information, refer to the product page.

  • Building pyDAAL from the source code

If the options above do not work for you, it is possible to build pyDAAL yourself. The sources are provided in the beta package of Intel DAAL 2017.

  1. Set the DAAL environment variables by running the <DAAL install dir>/daal/bin/daalvars.sh script as appropriate for your target architecture:
    • IA-32 architecture:  daalvars.sh ia32
    • Intel® 64 architecture: daalvars.sh intel64
  2. Go to the directory with the Python* sources of Intel DAAL and run the installation script:

cd <DAAL install dir>/pydaal_sources

<python home>/python setup.py install

The setup.py script builds and installs the pyDAAL package to use Intel DAAL in Python* programs. For details, refer to the Intel DAAL getting started guide available in <DAAL install dir>/documentation/en/ps2017.

Conclusion

The three options above are the most common ways of installing the Python* version of Intel DAAL on your system. Let us know which one you like the most. If you have another preferred method not covered in this article, we would also love to hear about it.

Beyond the Drone Zone

$
0
0
Airborne drones
Ars Electronica Futurelab and Intel collaborate on an aerial display of drones on the 4th of November over Tornesch, Germany, recognized by Guinness World Records as the greatest number of unmanned aerial vehicles to be in flight simultaneously.
Photo credit: Intel

The Internet of Things enables the coordinated operation of multiple devices across diverse environments. Aerial drones provide an exciting demonstration of this capability in action and a number of public displays recently have drawn interest in the opportunities provided—using drones for both commercial and philanthropic endeavors. To further these goals, Intel is investing in both drone hardware and software technology, as well as the establishment of the regulatory framework within which drones will operate in the US.

On the technology side, Intel’s acquisition of the German firm Ascending Technologies strengthens the roadmap for ongoing development of small drones equipped with algorithms to help prevent aerial collisions. Ascending Technologies software complements Intel® RealSense™ image and depth-recognition technology. Collision avoidance is critically important at a time when regulatory rules are being instituted and public awareness is rising.

In early May 2016, Intel CEO Brian Krzanich took charge as leader of the Drone Advisory Council, established by the Federal Aviation Authority (FAA) as a way to provide recommendations in respect to drone technology. Krzanich commented:

“As a technology partner in the UAS ecosystem, our work at Intel has given us relevant insight into issues faced by a wide range of stakeholders. The creation of the Drone Advisory Council is an excellent step forward for all in this industry.”

Intel’s sponsorship of the Drone Zone at the Mobile World Congress in February of this year is another indication of how seriously the company believes in drone technology.  Intel® RealSense™  technology embedded in the drone aircraft brings perceptual computing capabilities to these devices, analyzing sensory input in ways similar to the human eye. Drones have the potential to become winged messengers across the IoT ecosystem, bridging the lightning quick responsiveness of Internet communications with the practical, real-world considerations of moving physical objects from place-to-place or gaining an elevated view of installations, terrain, agricultural operations, or infrastructures. AT&T is also working with Intel in this area to develop business applications for drones, leveraging IoT technology.

And, even more recently, Intel obtained FAA approval to become the first company to enact manual control of multiple drones by one pilot under the Section 333 exemption, lighting up the sky over Palm Springs, CA in an orchestrated aerial display carried out with precision to spectacular effect.

Timothy Amukele
Dr. Timothy Amukele at John Hopkins School of Medicine is exploring the potential of drones transporting diagnostic samples to pathology labs in isolated regions.

As another practical, real-world example, the potential of drones to deliver medical assistance in difficult-to-reach areas was highlighted in the article Drones for Social Good. A pilot project in rural East Africa has been testing the effectiveness of using drones to transport blood samples and perform remote diagnosis of diseases. Initial results look promising.

Among other commercial uses of unmanned aerial vehicles (UAVs in industry parlance) are:

  • Live surveillance and inspection of oil, gas, and renewable energy structures
  • Research surveys in remote regions where travel is difficult or conditions are hazardous
  • Smart-farming applications using multispectral and hyperspectral sensors to map crop yields, detect pests, control irrigation, and ensure better nutrient distribution
  • Overseeing complex construction projects from an airborne perspective
  • Providing emergency relief supplies to people in areas struck by natural disasters, including floods, earthquakes, mudslides, and hurricanes
  • Delivering essential information to insurance companies in a variety of industries for better risk management
  • Delivering critical parts, mechanical devices, electronic equipment, or medications in regions where ground travel is difficult or impossible
  • Locating lost hikers or children separated from families in wilderness areas
  • Helping fight extensive forest fires by supplying vital information to ground crews and supervisors
  • Monitoring sharks in coastal waters to protect swimmers from danger

For the commercial sector to take hold in this space, safety considerations, supporting software, and ongoing innovation will be necessary. Developers can be on the launch pad of a burgeoning area of new business opportunities as IoT takes to the air.

Learn more about how to develop apps using Intel® RealSense™ technology.

Getting Started With Node-RED* and Texas Instruments* SensorTag

$
0
0

Overview

Node-RED* is a tool for wiring together hardware devices, APIs and online services in new and interesting ways. Node-RED provides a browser-based flow editor that makes it easy to wire together flows using the wide range nodes in the palette. Flows can be then deployed to the runtime in a single click. The lightweight run-time is built on Node.js*, taking full advantage of its event-driven, nonblocking model. This makes it ideal to run at the edge of the network. The Texas Instruments* multi-standard SensorTag, based on the SimpleLink* ultra-low power CC2650 wireless MCU, supports development for Bluetooth* Smart, 6LoWPAN and ZigBee*. This SensorTag has a unique feature that allows developers to change between different 2.4 GHz technologies by simply loading new software images directly from the SensorTag app over-the-air. In this example, we’ll be communicating to the SensorTag via Bluetooth* Low Energy. The SensorTag includes the following sensors: Infrared and Ambient Temperature, Ambient Light, Humidity, Barometric Pressure, 9-axis motion tracking, and Magnet.

  • IoT Gateway that uses Intel® IoT Gateway Technology
  • Texas Instruments SimpleLink Multi-Standard SensorTag Development Kit

Assumptions

  • Intel® IoT Gateway Technology version 3.1 or above.
  • Node.js is installed on the IoT Gateway (installed by default).
  • Node-RED node "node-red-node-sensortag" is installed on the IoT Gateway.
    • You can install this package by clicking on Packages and then Add Packages from the Intel® IoT Gateways Developer Hub.
  • Node-RED is installed on the IoT Gateway and is running (installed by default).

Enabling Bluetooth* Low Energy on the Intel® IoT Gateways

By default, Bluetooth is enabled, but Bluetooth Low Energy is not. This is easy to turn off via the IoT Gateway administrative web console. You can access the console via https://ipaddressofthegateway.

  1. Log in using your root username and password
  2. Click on the Administration icon and then the, Launch button under LuCI to launch the Intel® IoT Gateways administration console.
  3. Log in using your root username and password.
  4. Select Network from the menu and choose Bluetooth
  5. If it says Disabled next to Bluetooth Status, click on the Disabled button

It should look like this when setup correctly:

enabling bluetooth

Bluetooth* Test

Before we start, let’s make sure the Intel® IoT Gateways can discover the SensorTag device. Ensure a battery is installed in the SensorTag power it on (it goes to sleep if there are no active connections to it). To turn it on, just press the small button. You should see a green LED start flashing. By the way, when a connection is established to the SensorTag, this LED will turn off. Type the following on the IoT gateway console prompt:

hcitool lescan

It should respond with something like this:

LE Scan … B4:99:4C:1E:C0:C0 CC2650 SensorTag

It may also show other Bluetooth devices in range. Press Ctrl-C to stop the scanning tool. If it doesn’t show your SensorTag, make sure the SensorTag is turned on and the LED is flashing and try again.

Using Node-RED*

The Node-RED browser interface can be reached via http://ipaddressofthegateway:1880. When it first comes up it will look something like this:

using Node-RED*

Let’s create a Node-RED flow to get the sensor readings from the SensorTag.

Now, configure the nodes.

  1. Drag the following nodes from the left bar on to Sheet 1:
    • sensorTag
    • Debug
  2. Double click on the sensorTag node and check what sensors you’d like to include. For this example, let’s check them all.
  3. Set the name to sensorTag.
  4. Leave the UUID blank (if you have more than 1 SensorTag in range, you can set this to the MAC address of the SensorTag you want to talk to. For this example, we’ll assume there is only one in range. Leave the other fields as default. For example:

    Edit sensor tags 

  5. Click OK
  6. Now wire the sensorTag node to the Debug node by clicking and dragging between the small box on the right of the sensorTag node to the small box on the left of the Debug node. It should look like this:

  7. Click on the Deploy button on the top right, and Confirm deploy.
  8. Ensure the debug node is turned on. The box extending to the right of the node should be solid/filled in green.
  9. Switch the column on the right from the Info tab to the Debug tab.
  10. The sensor readings show appear in the Debug tab. You may need to press the power button on the SensorTag to turn it on if it’s gone to sleep since we turned it on in the above steps.

Congratulations! You are successfully communicating via BlueTooth low energy to a SensorTag device.

Example flow

Node-RED supports exporting and importing of flows (into source json). Here is an export of the above two flows we created:

[{"id":"f80454e.f07fba8","type":"sensorTag","name":"sensorTag","topic":"sensorTag","uui
d":"","temperature":true,"humidity":true,"pressure":true,"magnetometer":true,"accelerom
eter":true,"gyroscope":true,"keys":true,"luxometer":true,"x":240,"y":266,"z":"ec8b1eb.f
1374e","wires":[["ad11b15b.52ee5"]]},{"id":"ad11b15b.52ee5","type":"debug","name":"","a
ctive":true,"console":"false","complete":"payload","x":543,"y":276,"z":"ec8b1eb.f1374e"
,"wires":[]}]

If you import this, the same nodes and configuration we created manually will automatically appear on the selected Sheet. Import and Export can be found in the Node-RED menu by clicking on the 3 horizontal lines to the right of the Deploy button.

References

For the current version of this tutorial, visit GitHub and do a search.

*Other names and brands may be claimed as the property of others.

Getting Started With Node-­Red* and RFID on Intel® IoT Gateways

$
0
0

Overview

Node-­RED* is a tool for wiring together hardware devices, APIs and online services in new and interesting ways. Node­-RED provides a browse-r­based flow editor that makes it easy to wire together flows using the wide range nodes in the palette. Flows can be then deployed to the runtime in a single click. The lightweight runtime is built on Node.js*, taking full advantage of its event-­driven, nonblocking model. This makes it ideal to run at the edge of the network. The SparkFun* RFID Starter Kit, an all­-in-­one kit that offers everything you need to create an RFID project. The kit includes a USB RFID Reader, ID-­12LA RFID module, and two 125 kHz RFID cards.

Required Hardware

  • Intel® Internet of Things Gateway
  • SparkFun RFID Starter Kit
  • USB Mini­B Cable

Assumptions

  • Intel® IoT Gateway is running the Wind River* Intelligent Device Platform (IDP) version 3.0 or above.
  • Node.js is installed on the Intel IoT Gateway.
  • Node-RED node "node-red-node-serialport" is installed on the Intel® IoT Gateway.
  • Node-RED is installed on the Intel IoT Gateway and is running.

Connecting the RFID Reader

  1. Plug the RFID reader in to the board.
  2. Plug the small end of the USB cable in to the board.
  3. Plug the other end of the USB cable in to a USB port on your Intel® IoT Gateway.

On the console of the gateway, you should see a message saying what serial device was created for the USB interface. It is likely /dev/ttyUSB0. Make a note of what device was created.

Using Node­-RED*

The Node-RED browser interface can be reached via http://ipaddressofthegateway:1880. When it first comes up, it will look something like this:

Let’s create a Node­-RED flow to get the badge readings from the RFID reader.

Drag the following nodes from the left bar on to Sheet 1

  • Serial input
  • debug

Now, configure the nodes"

  1. Double-click on the serial node.
  2. Click on the penicon to add a new serial port.
  3. In the Serial Port field, enter the device you noted above when you plugged the RFID reader in to the Intel® IoT Gateway, likely /dev/ttyUSB0. Set the Baud Rate to 9600, and leave the other fields as default. Example:

  4. Click OK/Update.
  5. Set the name to RFID In. Example:

  6. Click OK.
  7. Now wire the RFID In node to the Debug node by clicking and dragging between the small box on the right of the RFID In node to the small box on the left of the Debug node. It should look like this:
  8. Click on the Deploy button, top right, and Confirm deploy.
  9. Ensure the debug node is turned on. The box extending to the right of the node should be solid/filled in green.
  10. Switch the column on the right from the Info tab to the debug tab.
  11. Scan one of your badges.
    • The badge ID should appear as part of the payload message in the debug tab.
  12. Scan your other badges.
    • The badge ID should appear as part of the payload message in the debug tab.

Congratulations! You are successfully communicating via Serial to a RFID reader device.

Example Flow

Node-RED supports exporting and importing of flows (into source json). Below is a sample export of the above two flows we created. 

If you import this, the same nodes and configuration we created manually will automatically appear on the selected Sheet. Import and Export can be found in the Node-RED menu by clicking on the thee horizontal lines to the right of the Deploy button.

References

Viewing all 3384 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>