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

Turn on/off Intel(R) Edison Arduino on board LED via Bluetooth SPP by using the IoT dev kit

$
0
0

        Introduction

     This article explains how to set up IoT developer kit and enable Bluetooth SPP and make the Yocto application which getting data from buffer of the pipe which used by BT-DBUS API and control the GPIO to turn on / off LED in the Intel(R) Edison. As you do follow the step by step guide below, you may easily have set-up of the Intel(R) Edision Developer environment with Bluetooth as well as can understand well the Intel(R) Edison hardware and software.

This article based on 2 articles and 1 Intel Edison getting started example.

  • Connecting the Intel® Edison board to your Android* Phone with Serial Port Profile (SPP)

https://software.intel.com/en-us/articles/connecting-the-intel-edison-board-to-your-android-phone-with-serial-port-profile-spp\

  • Communicate to Arduino code with your Android* Phone by Bluetooth Serial Port Profile (SPP) on Intel® Edison

https://software.intel.com/en-us/blogs/2015/05/19/communicate-to-arduino-code-with-your-android-phone-by-bluetooth-serial-port

  • Blinking an LED with the Eclipse* IDE on the Intel® Edison board

https://software.intel.com/en-us/blinking-led-with-eclipse-ide-on-intel-edison-board

 

<fig. The structure of system with an application>

Prerequisite

  • Hardware
    • Laptop (Windows 7 or 8.1 is preferred)
    • Android Smartphone or Tablet with Android BT app (Bluetooth SPP tools pro)
    • Intel(R) Edison Arduino board
  • Install IoT Dev Kit (IDE -> Eclipse*) - If you don't have Intel Edison yet.

(1)        Go to the https://software.intel.com/iot/downloads

(2)        Please select Eclipse and Windows.

(3)        Unzip the iotdk-ide.win.7z

(4)        Run the devkit-launcher.bat (You may need to download JRE-64bit.)

(5)        Eclipse should be launched.

Step by step guide

1.Connect and assemble

More details: https://software.intel.com/en-us/assembling-intel-edison-board-with-arduino-expansion-board

2.Install Device Driver

https://software.intel.com/iot/hardware/edison/downloads

Windows Standalone Driver 1.2.1 (8.97 MB, .exe)

You need to check the installed device driver in your host PC with connected Intel(R) Edison.

3. Connect to your Intel® Edison board using Ethernet over USB

Please refer: https://software.intel.com/en-us/connecting-to-intel-edison-board-using-ethernet-over-usb

  • Create Target Connection (Ignore lib and target image update warning, if any.)

(1)   Run the devkit-launcher.bat

(2)   Select the ‘Create Target Connection’

(3)   Enter connection name: Edison / IP address: 192.168.2.15

(4)   Go to ‘Target SSH Connections’ and right click and select ‘Connect’

(5)   Wait a minute till connection.

(6)   You can launch terminal by right click in the ‘Target SSH Connections’

(7)   Login ID is ‘root’ , if needed.

 

4. Blinking an LED with the Eclipse* IDE on the Intel® Edison board

Please refer: https://software.intel.com/en-us/blinking-led-with-eclipse-ide-on-intel-edison-board

5. Enable Edison Bluetooth and SPP

 

(1)   Change Bluetooth device name

root@edison:~# rfkill list

root@edison:~# rfkill unblock Bluetooth

root@edison:~#bluetoothctl

[bluetooth]# scan on

[bluetooth]# discoverable on

[bluetooth]# exit

root@edison:~#vi /var/lib/bluetooth/XX:XX:XX:XX:XX:XX/settings

Add the line: Alias=MyName-edison

      

root@edison:~#shutdown –r now

 

(2)  Upload Python script of SPP test-profile via DBUS API

Run FTP client in the host PC with Host: 192.168.2.15 / Protocol: SFTP (SSH FTP).

Upload “SPP-pipe-out.py”.

(3) Add test-profile for SPP

root@edison:~# vi /etc/dbus-1/system.d/bluetooth.conf

If the bluetooth.conf file  doesn’t have the line <allow send_interface="org.bluez.Profile1"/>, add this line and save the file.

root@edison:~#shutdown –r now

(4)  Turning on and BT pairing (in the terminals)

root@edison:~# python SPP-pipe-out.py &

root@edison:~#rfkill unblock bluetooth

root@edison:~#bluetoothctl

[bluetooth]# show                 ← to make sure of the Serial Port Profile

[bluetooth]# scan on

[bluetooth]# pair 40:E2:30:21:64:18     ← enter the MAC of your android device

In Android device, select ‘pair’ in the pop-up.

[bluetooth]# discoverable on             ← to connect it in the Android

[bluetooth]# trust 40:E2:30:21:64:18     ← enter the MAC of your android device

 

(5) Run BT app in the Android device and connect by SPP

In Android device, run “bluetooth spp pro” → scan → select your edison → connect → CMD line mode

 

6. Intel(R) Edison BT SPP application

(1) Copy 2 files to your eclipse workspace ‘on board LED blinking C++’ application’s source folder. (e.g. \workspace\ble-spp-led-test1\src)

                          Intel_Edison_BT_SPP.cpp

                          Intel_Edison_BT_SPP.hpp 

(2) Press F5 (Refresh) in the Project Explorer of eclipse.

(3) Add and modify codes in your main() of  'LED blinking C++ applications' by referring the ble-spp-test.cpp.

                          ble-spp-test.cpp

 

7. Turn on / off on board LED via BT SPP from the Android device.

 

(1) Turn on and BT pairing / Run BT app → see the procedure “5. Enable Edison Bluetooth and SPP (4) and (5)” above.

(2) Build and run the BT SPP application in the eclipse. (Please make sure the connection of Edison in the Target SSH Connections of eclipse.)

(3) Send ‘on’ or ‘off’ in the BT SPP Pro of Android device and check the on board LED.

       

     

8. Terms 

SPPSerial Port Profile
DBUS    An inter-process communication protocol
GPIOGeneral purpose input/output

9. References

Intel(R) Edison Bluetooth Guide Document.

Connecting the Intel® Edison board to your Android* Phone with Serial Port Profile (SPP)

https://software.intel.com/en-us/articles/connecting-the-intel-edison-board-to-your-android-phone-with-serial-port-profile-spp\

Communicate to Arduino code with your Android* Phone by Bluetooth Serial Port Profile (SPP) on Intel® Edison

https://software.intel.com/en-us/blogs/2015/05/19/communicate-to-arduino-code-with-your-android-phone-by-bluetooth-serial-port

Blinking an LED with the Eclipse* IDE on the Intel® Edison board

https://software.intel.com/en-us/blinking-led-with-eclipse-ide-on-intel-edison-board

 


Intel® Hardware Accelerated Execution Manager

$
0
0

The Intel Hardware Accelerated Execution Manager (Intel® HAXM) is a hardware-assisted virtualization engine (hypervisor) that uses Intel Virtualization Technology (Intel® VT) to speed up Android app emulation on a host machine. In combination with Android x86 emulator images provided by Intel and the official Android SDK Manager, HAXM allows for faster Android emulation on Intel VT enabled systems.

Intel HAXM is a feature of Intel® Integrated Native Developer Experience (Intel® INDE)

The following platforms are supported by the Intel HAXM:

Microsoft Windows*
Windows 8 and 8.1 (32/64-bit), Windows 7 (32/64-bit), Windows Vista* (32/64-bit)

Installation Guide & System Requirements - Windows

haxm-windows_r05.zip (1.1.4)
Also a feature Intel® Integrated Native Developer Experience (Intel® INDE)
Description:
System Driver
(July. 17, 2015)
Size: 1.7MB
Checksums:
(MD5)
1d1e3a9108ce5557382242627e31e2b7
(SHA-1)
23b66faca8b0e08c50711cfb49ed7bfcd7cf677b

Mac OS* X
Mac OS X* 10.8 (64-bit) or 10.9 (64-bit) or 10.10 (64-bit)

Installation Guide & System Requirements - Mac OS X

haxm-macosx_r05.zip (1.1.4)
Also a feature Intel® Integrated Native Developer Experience (Intel® INDE)
Description:
System Driver
(July. 17, 2015)
Size: 225KB
Checksums:
(MD5)
1ab23a17934b6e198a0d60f074596c0a
(SHA-1)
9a2c7727e7b4ec753379beaa824a3d0edaea9962
 
 
 

Next-gen applications showcased by Intel® RealSense™ App Challenge

$
0
0

By Marc Saltzman

Imagine one day you’re being rehabilitated after an orthopedic procedure, perhaps to repair a repetitive strain injury in your wrist. Instead of wearing sensors to monitor your progress – which are cumbersome, expensive and limited – you simply move your fingers in front of what looks like a webcam and the physician or physiotherapist gleans a more accurate reading.

Or on a more recreational note, envision yourself sitting down to play a game in front of your laptop, desktop or tablet. No controller? No problem. With hands outstretched, you perform minute gestures in the air to manipulate onscreen content – be it dangling your fingers to make it rain, punching forward to break through rocks or extending a forefinger to draw an object in the virtual sand.

Both of these scenarios summarize the grand prize-winning entries in the Intel® RealSense™ App Challenge, the third annual call to developers to create next-generation experiences using an Intel® RealSense™ 3D Camera and the Intel® RealSense™ Software Development Kit (SDK) for Windows*.

“Orthosense” by David Schnare, and the game “Seed” by Alexandre Ribeiro da Silva, took top spots out of the thousands of entries from 37 countries -- up from 19 last year. With an incentive like a cash prize pool of $465,000 awarded to 21 of the winners, developers were challenged to blur the lines between human and computer interaction with a camera similar to the one already embedded in many of today’s devices, including the HP Envy* laptop and Lenovo B50 All-in-One desktop.

Utilizing a best-in-class three-dimensional depth sensor, Intel® RealSense™ technology enables new ways to interact, including 22-point hand and finger tracking and gesture recognition, facial detection and tracking, speech recognition, and even background subtraction to create a kind of green screen – without needing a green screen.

Think of it as Kinect* on steroids.

“As rapidly and profoundly as technology continues to advance, one thing remains constant: the need for more human and intuitive ways to interact with it,” says Scott Steinberg, a leading analyst, futurist, and author of Make Change Work for You. “Whether scanning in favorite objects, like children’s toys, and reprinting them on demand at grandma’s house, navigating through 3D models of homes or tradeshow floors with the wave of a hand, or using gesture controls to flip through your music collection, it’s only natural for software and hardware developers alike to look to technology solutions such as this that provide more user-friendly and accessible controls.”

In the same way Microsoft's Kinect made it possible to engage with video games, films and TV shows with the flick of a wrist, Intel RealSense technology takes it to the next level for a variety of business, health, social, family and communications-related applications, adds Steinberg.

Dean Takahashi, lead writer for GamesBeat at VentureBeat, says he’s glad to see Intel “is seeding developers to make creative demos that take gaming in a new direction,” and the company is “walking a fine line between making a cool technology that has precise controls and delivering a solution that is affordable to everyone.”

Winners of the Intel RealSense App Challenge submitted entries in one of five categories: Collaboration, Open Innovation, Learning, Interact Naturally, and Gaming.

To learn more, please visit the Winner’s Showcase website.

A brief look at some highlights:

Orthosense

A collaborative effort between the UK and Canada, Orthosense uses Intel RealSense technology to identify, calculate and record hand and wrist range movements for orthopedic specialists and surgeons. The goal is to measure range of movement of patients as they rehabilitate from hand and wrist problems. With greater accuracy, comfort and speed, both patient and practitioner receive objective data to measure progress.

“Orthosense algorithms provided the positions of the joints and calculated the exact angle of any given joints at any given time,” explains Kinetisense Inc. chief officer David Schnare. “No need to use plain-old tools or expensive wearable equipment [as] the patient simply places their hand in front of the sensor and all the necessary calculations are performed with remarkable accuracy and speed.”

“The best part,” Schnare continues, “is the fact the range of motion identification is performed in less than half a second. The patient simply places their hand in front of the sensor and all the necessary calculations are performed with remarkable accuracy and speed.”

Schnare says the company’s goal is to take advantage of “the affordable Intel RealSense camera to produce affordable human movement analysis software that’s widely adopted by practitioners.”

Orthosense was awarded Grand Prize in the Open Innovation category.

Orthosense was awarded Grand Prize in the Open Innovation category

Seed

Grand Prize winner in the Gaming category, Seed challenges players to help guide a floating seed though it’s journey to reforest a devastated land. Fitting, perhaps, as the developer is based in Brazil, which has one of the highest deforestation rates in the world.

Using intuitive gestures in front of the 3D camera, players control the environment to help the seed along, such as removing obstacles and making it rain.

“Intel RealSense technology gives a certain ‘magic’ feeling to the game since the player’s hand movements produce an instant response in the seed,” explains Alexandre Ribeiro, co-founder of AnimaGames. “Using the hand and fingers position detection system, we could develop the game’s core mechanic that works as a ‘guessing game,’ where the player has to think and perform a gesture that matches the required action.”

AnimaGames - Guessing Game

Virtual 3D Video Maker

First place winner in the Collaboration category, Virtual 3D Video Maker – as the name suggests – lets you record yourself as a 3D hologram for a more immersive communication experience. Along with playing it back in front of a number of digitally imported scenes of your choosing, you can also change the camera position over the course of the playback to add an extra dimension to your video blogs, messages or even real-time chats.

“I used both face direction and voice recognition to create a context-based, hands-free interface,” says Lee Bamber, CEO of The Game Creators in North Wales, UK. “I also used the real-time depth data from the camera to create a 3D representation of the user and store this data along with the real-time audio to create a true 3D recording that can be played back from different angles.”

 

About the Author

Marc Saltzman is one of North America's most recognizable and trusted tech experts, specializing in consumer electronics, business technology, interactive entertainment and Internet trends. Marc has authored 15 books since 1996 and currently contributes to nearly 50 high-profile publications in North America, including USA Today, MSN, Yahoo!, Costco Connection, Toronto Star, Movie Entertainment, TheLoop.ca, Telus Talks Business and Rogers Connected. Marc hosts various video segments, including "Gear Guide" (seen at Cineplex movie theaters and sister chains across Canada) and is a regular guest on CNN, CNN International and CTV's Canada AM. Marc also hosts "Tech Talk," a radio show on Montreal’s CJAD 800, part of Bell Media.

Follow Marc on Twitter: @marc_saltzman.

Find everything you need to know about how to develop Intel® RealSense™ applications at the Intel® Developer Zone.

Using Layout Controls in App Designer

$
0
0

Layout controls help you lay out your app. Most layout controls contain other controls, including other Layout controls.

The Intel® XDK App Designer supports a number of UI frameworks, and UI frameworks generally do not support the same set of controls. This topic describes layout controls provided by App Designer that appear for certain UI frameworks. For example, if you selected the jQuery Mobile* framework, these Layout controls are available:

Before You Begin Using Layout Controls

Before you start using App Designer to insert Layout controls into a page, you should be aware that:

  • A default vertical Column control is added to each page.
  • Many controls have integrated labels.
  • You can show or hide guidelines for a page by clicking the Guidelines toolbar button.

Default Vertical Column

Each App Designer page provides a default vertical Column, so you insert controls into it. This is the default layout for any page and no extra layout controls are required to achieve this.

Typically, any control inserted into a vertical Column goes full width to the page/column, so you do not need to provide explicit sizing. For example:

Integrated Labels

Many controls support integrated labels, so you do not need to independently layout and position a separate text or label component.
After inserting a control with a label and customizing the integrated label, they may seem “jagged” when stacked.

The solution for this is very simple. Make a new widths style and configure the alignment of the label. Then apply that same style to the other controls (drag it to each, or select it from the menu on the widths style category).

This action aligns the integrated labels:

Also, most controls with integrated labels let you specify where the label is positioning. Instead of it appearing inline on the left, you can also choose to have its label precede the control on the left or the right.

Show or Hide Guidelines

indicates Guidelines are OFF and indicates that Guidelines are ON

On the main toolbar above App Designer is a small button whose tooltip says “Guidelines”. Click this button to toggle guidelines ON or OFF. For basic layout, when you aren’t using custom layout controls, consider turning the guidelines OFF. There are fewer distractions and the page looks more like it will when viewed by a user.

However, many of the layout controls do not have their own visible representation when inserted into a page. When using these controls, turn the guidelines ON. Here is a screen capture of a Side By Side control inserted between the Beethoven list item and the OK button, with guidelines OFF:


Here it is again, with guidelines ON:


Layout Controls in App Designer

This topic describes these layout controls, primarily for context-sensitive use in the App Designer Contextual Tab: Button Grid, Card, Card Columns, Card Grid, Columns, Header and Footer, Overlay and Popup, Row, and Side By Side. It also describes layout-related Animated Sidebars.

The descriptions below are presented based on their frequency of use.

Layout or Related ControlDescription
Side By SideProvides a simple way of placing two controls next to each other. It also does not force the controls within it to change their width.
ColumnEach page provides a default single vertical column. You must insert a Column inside a Row (you cannot insert it directly into a page), so insert a Row before you can insert any additional Columns.
RowA staple of responsive layout, the Row control serves as the default parent to Columns. When you insert a Row, it provides an initial Column (for free). You can insert a Row almost anywhere, even in a Column (nested).
Header and FooterSome frameworks have their own Header and Footer controls. The ability to insert controls into a Header or Footer control differs with each framework.
Button GridUseful for filling a space with buttons, such as a calculator or movie-playing app. This is not a general layout control, so some controls will not “play well” when put into a button grid.
CardA general control that optionally supports a header, footer, or left or right area. Useful for data-driven presentation, you can insert a Card into a Card Grid or Card Column.
Card GridUsed to layout Cards into a flexbox grid. Flexbox will handle cases where the number of Cards is not evenly divisible by the column count. For a Pinterest presentation, use a Card Column. Useful for data-driven presentation.
Card ColumnsLike a Card Grid, use this to layout Cards. Card Columns layout a Pinterest style column of Cards, unlike the Flexbox layout provided by a Card Grid. Useful for data-driven presentation.
Overlays and PopupsUnlike most controls, these dialog-related controls are not inserted next to other controls on the page. Instead they are added to the page itself, and then made visible by some event.
Animated Sidebars controlsThis is a separate category of layout-related controls. Like Overlay and Popup controls, they are added to the page itself and made visible by some event. They are available for all UI frameworks.

In addition to these Layout controls, App Designer also provides:

Each UI framework provides controls specific to that UI framework (see UI framework links).

Side By Side Control

The Side By Side control is a simple way of placing two controls next to each other. It also does not force the controls within it to change their width, making them more natural. If you want a control to maximize the width it takes on a side, put a ‘Width’ style on it and set its width to 100%.

By default the Side By Side control gives each side 50% of the total parent width. But, if needed, there is a Side By Side Widths style that lets you control the percentage for each side.

It’s a good idea to turn ON guidelines when using the Side By Side control - otherwise it can be hard to see immediately after it is inserted into a document.

Don’t forget that many controls have integrated labels as part of the control, which may preclude the need for this layout control.

Here is the base HTML of the Side By Side control. It is just two divs nested in each other.

<div class="sbs-container widget" data-uib="layout/side_by_side" data-ver="0"><div class="leftContent widget-container"></div><div class="rightContent widget-container"></div></div>

Column Control

The column is the workhorse of layout in App Designer. By default, the page itself is a column. So for a straight up vertical layout, you may not need rows or columns.

A column cannot be inserted directly into a page. Columns are nested inside rows, so you need to insert a Row before you can insert any additional columns. When you insert a row, it comes with an initial Column (for free).

The column has a layout property whose values are Vertical, Wrapping, or Centered (single widget).

When the column is Vertical (the default), then there is an additional Align option which can be used to align the items within it left, center, or right. Note that by default the vertical column forces its children to be the full width of the column, which renders alignment meaningless. However, if the children are not full width (some controls do not support it, or it can be overridden with the width style) then alignment will be respected.

Some center-aligned check boxes

When the column is Wrapping, then the controls within it line up sideways and will wrap as the column width changes. The children can be floated from the left or right.

Some wrapping checkboxes:

The last column alignment option Centered (single widget) only works properly if the column has only one child. If there are multiple children, they will overlap each other. In this screenshot, a background style has been applied to the column to make it easier to see and it has exactly one child:

A column is, by itself, a double nested div, with a single shim span as its last child.

<div class="col" data-uib="layout/col" data-ver="0"><div class="widget-container content-area vertical-col left"><span class="uib_shim"></span></div></div>

Row Control

The Row is the staple of responsive layout. The Row control serves as the default parent to columns. A Row can contain multiple columns, up to a maximum of twelve. Whereas a column can only be inserted into rows, a Row can be inserted almost anywhere, even in a column. So nesting is supported.

Inserting a Column

When dragging a column into a row, be sure to drop it on the column dividers located between the columns. Column dividers are easier to see when Guidelines are ON. Initially, those may be on either side of the row.

Resizing a Column

Those same column dividers (easier to see when Guidelines are ON) can be used to resize columns. As you drag the dividers you’ll see the different widths of the columns. Note that the sum of all the columns always adds to 12.

Row Properties


PropertyDescription
Wrap FromBy default, the columns are always next to one another. But as wrap points are added, then they may stack atop each other as the screen size shrinks. Wrap from determines which side of the Row will be on top as the columns wrap down and stack.
Space Between ColumnsHow much space between the individual columns inside the row. If you want to adjust the spacing outside the row, that keeps it from the viewport or parent, adjust the grid-pad style
Is FormBy default a Row is represented as a simple <div>. But it can optionally be represented as a <form> element. This is for the convenience of users who might be deploying to a web server (rather than an embedded Apache Cordova* app).
Rest of SpaceSome controls, like list views and rows, sport a property called Rest of Space. See Rest of Space Property.



grid-pad Style

Rows are spaced away from the edges of the viewport by an initial grid-pad style that is assigned. Change the padding in that style to make the row be closer or further from the viewport edges.

A Row is just a div (or form) that contains column divs:

<div class="grid grid-pad urow row-height-1" data-uib="layout/row" data-ver="0">
   . . .</div>

Some frameworks have their own header and footer controls. See the documentation for that particular framework to understand any aspects and limitations. Typically, headers and footers have insertion points on their edges where controls can be inserted (the blue vertical bars in the screenshot below). Some headers and footers support many controls, but others can only contain buttons, or only two or three controls.

Button Grid Control

The button grid is useful for filling a space with buttons, such as a calculator or movie playing app. You can drop other controls into the grid as well. If the control has an integrated label, that label will be hidden. This is not a general layout control, so some controls will not “play well” when put into a button grid.


The button grid is a set of trebly nested <divs. (control>row->cell)

<div class="uib-grid widget grid-text grid-height d-margins" data-uib="layout/grid"><div class="uib-grid-row"><div class="uib-grid-cell widget-container">
        . . .</div></div></div>

Card Control

Card is a general control that optionally supports a header, footer, or left or right area. The properties area sports a control where you can determine how the vertical and horizontal controls align to one another.

It also supports a dimension style that lets you determine the size of those sections. The overall height of the Card is, by default, driven by the contents of the Card itself (not the content of the sub-sections).

The background style it supports allows you to scope the background to a given section. So each section can be given its own background CSS by making multiple styles.

Moreover, the Card is easily attached to a service method, making it a great option for making a custom list item. When driven by a service method, the Cards will form a big vertical list by default. However, if the Card is in
a Card Grid or Card Columns control, then you can get a grid or Pinterest* style columns of Cards.

The Card is an outer <div>, surrounding <section> elements and the direct content of the Card.

<div class="widget widget-container content-area vertical-col uib-card d-margins section-dimension-17 cpad-15 header-on-right left-on-header left-on-footer right-on-footer" data-uib="layout/card"><section class="card-header widget-container content-area vertical-col"></section><section class="card-footer widget-container content-area vertical-col"></section><section class="card-left widget-container content-area vertical-col"></section><section class="card-right widget-container content-area vertical-col"></section><p>this text is in the card, not any section</p></div>

Card Grid Control



The Card Grid is used to layout Cards into a flexbox grid. Flexbox will intelligently handle cases where the number of Cards is not evenly divisible by the column count. Also, by applying flex-grow, flex-shrink and flex-basis CSS to the individual cards, you can get cards that are bigger or smaller than their neighbors.

IMPORTANT: Flexbox is not well supported by older mobile browsers and devices, especially on Android*. If you target Android and use the Card Grid control, we recommend that you use the Crosswalk for Android build platform, so your app has a modern webview. See http://caniuse.com/#search=flexbox.

The Card Grid itself doesn’t have many properties. The base number of columns is controlled by the flex-basis style.


To space out cards, apply a margin style to the individual cards. Margins won’t be included by the flex-basis equation, so you may need to bump the number of columns value up.

To insert individual cards into the card grid, simply drag the card into the small rectangular insertion point at the sides of each card


For a data-driven grid:

  • Apply a service method to one of the cards within the card grid.
  • Delete any unused cards.

Here is an example of a card column being used with a movie search service method:


Card Columns Control



Similar to the Card Grid, the Card Column is used to layout cards.
Unlike a Card Grid, Card Column does not use flexbox. Instead, it generates a Pinterest style column of cards. Each Card Column receives an initial CSS Columns style that lets you configure the Card Column control.


For a data-driven grid:

  • Apply a service method to one of the cards within the card grid.
  • Delete any unused cards.

Here is an example of a card column being used with a movie search service method:

Overlay and Popup Controls

Many frameworks support a variety of Overlay or Popup dialog controls. Unlike most controls, these are not inserted next to other controls on the page. Instead they are added to the page itself, and then made visible by some event. Because these controls are not always initially visible when viewing a page, App Designer will place a black button or menu to the right of the document that will activate the control in question.

For example, here is a Popup control for the Bootstrap* framework and the button that will make it visible. Once it is visible you can select it to set properties, or insert other controls inside it.

Animated Sidebar Controls

App Designer provides four animated sidebars you can insert into any page regardless of which UI framework you are using. Like Overlays, the sidebars can be made visible when editing by clicking the black button to the side of the document.

Sidebar Properties


PropertyDescription
StyleThere are three possible styles for a sidebar: overlap, push, and squeeze:
  • An overlapping sidebar is shown on top of the main page content.
  • A sidebar with the push style pushes the current page over, so that the page is slightly off-screen.
  • A sidebar with the squeeze style squeezes the page into whatever visible area remains outside the sidebar.
DurationThe duration property is the number of milliseconds it takes for the sidebar to animate on or off screen.
Overhand WidthBy default the sidebar is completely off-screen when it is not being used, so its overhang is 0. But if the overhang width is set, the sidebar will jut into the page even when not being used.
ThumbWhen using an overhang width, the thumb property can be elected. When set, the space of the overhang will be taken by a thumb <div> that supports an optional background property.
SwipeableIs the sidebar swipeable?



Triggering Sidebars

The sidebars are interactivity targets and can be triggered by any interactive element in the Interactivity pane. Here we see a button being hooked up to a left sidebar.

Once it is hooked up, you will see the Edit Script button active when that interactivity entry is selected.

Clicking it will open the code editor to the event script for that button. Initially the button will be hooked up to the ‘toggle’ method for the sidebar. But other options are available.


Using Absolute Positioning and Rest of Space in App Designer

$
0
0

The Intel® XDK App Designer supports a number of UI frameworks and a number of layout controls, as described in Using Layout Controls in App Designer.

This topic describes:

FeatureDescription
Using Absolute PositioningProvides the ability to position a control absolutely within a row or column-containing widget.
Rest of Space PropertyProvides the ability to reserve remaining space in a row or column between controls that would otherwise be filled.

Using Absolute Positioning

Normally, controls use the position:relative CSS property. This means that controls are positioned next to one another, without overlapping. Any given control's exact position is determined by its preceding neighbors, and it can be moved closer or farther away from them by leveraging margin styles.

But, sometimes you will want to position a control absolutely. App Designer supports this for most controls. There is a simple checkbox at the top of the Controls pane to it turn on and the next control inserted will be inserted with absolute positioning.

Prerequisite: Row or Column

App Designer only supports absolute positioning of controls on a Column. So before attempting to insert a control absolutely, be sure to insert a Row or some other column-containing widget (some tabs or accordions from various frameworks).

Positioning Values

When positioning absolutely, as the control is dragged around the parent, the Absolute Positioning Values control appears to the left of the document and will show the values. Note that it will attempt to set only _two_ values at a time, leaving the other two as ‘auto’. This allows you to place a control relative any corner of the parent. Once placed into a corner, all subsequent drag-positioning will be relative that same corner.

Once placed, an absolutely positioned control receives an absolute-positioning style that can be edited directly, if desired.

Rest of Space Property

Some controls, like list views and rows, provide a property called rest of space. For example, for a Row:

This property helps solve a particular layout challenge that you may sometimes face. With the neighbor-determined relative positioning in a vertical column, it is easy to place any set of controls at the top of a page and manage their placement. Similarly, with a footer, it is easy to put some controls at the bottom of a page.

But what if there is space between the controls at the top and the bottom of the page? In this simple app design there is a Row with a blue background that contains text. The Row is followed by a button (Next).

In this first screen, the Row does not have the rest of space option selected. Its size is determined solely by its content.

But in this second screen, the Row has selected rest of space. Thus the Row takes up all remaining space on the page, but without pushing any other controls off screen or requiring scrolling.

NOTE: To see the effects of the rest of space property, view the running app. In App Designer, nothing happens immediately.


Install of Parallel Studio XE 2015 Composer Edition Update 4 Exits Early

$
0
0

Some users may experience a problem where installing Intel Parallel Studio XE 2015 Composer Edition for Windows Update 4 exits the installer after clicking Next on the first install screen. This is most likely to occur if the system also has Intel VTune Amplifier XE or Intel Advisor XE installed.

The problem will be fixed in Update 5. A workaround is as follows:

  • Save the attached file composer_xe_2015_common.zip and unpack it to your desktop, creating composer_xe_2015_common.js
  • Run the Update 4 installer - uncheck the box for removing the installer files. Note the location where it is unpacking the files, for example, C:\Program Files (x86)\Intel\Download\w_fcompxe_2015.4.221. This will be referred to as <unpack-location> below.
  • Once the installer finishes unpacking the files and shows the initial "splash screen", cancel the install.
  • Copy the composer_xe_2015_common.js file from the ZIP archive to <unpack-location>\config\PreRequisites This will require administrator privilege.
  • Open a command prompt window and "cd <unpack-location>" 
  • Type "setup.exe -nsev"

The install should now complete.

An alternative workaround is to download and run the installer for Update 4 of the Professional or Cluster Edition, if your license provides access to that.

Open Source Downloads

$
0
0

This article makes available third-party libraries, executables and sources that were used in the creation of Intel® Software Development Products or are required for operation of those. Intel provides this software pursuant to their applicable licenses.

 

Required for Operation of Intel® Software Development Products

The following products require additional third-party software for operation.

Intel® Parallel Studio XE 2015 Composer Edition for C++ Windows* and
Intel® System Studio 2015 Composer Edition for Windows*:

The following binutils package is required for operation with Intel® Graphics Technology:
DownloadDownload
Please see Release Notes of the product for detailed instructions on using the binutils package.

The above binutils package is subject to various licenses. Please see the corresponding sources for more information:
DownloadDownload
 

Used within Intel® Software Development Products

The following products contain Intel® Application Debugger, Intel® Many Integrated Core Architecture Debugger and/or Intel® JTAG Debugger tools which are using third party libraries as listed below.

Products and Versions:

Intel® System Studio 2016 Beta

Intel® Composer XE 2015 for Linux*

  • Intel® C++ Composer XE 2015 for Linux*/Intel® Fortran Composer XE 2015 for Linux*
    (Initial Release and higher)

Intel® Composer XE 2013 SP1 for Linux*

  • Intel® C++ Composer XE 2013 SP1 for Linux*/Intel® Fortran Composer XE 2013 SP1 for Linux*
    (Initial Release and higher; 13.0 Intel® Application Debugger)

Intel® Composer XE 2013 for Linux*

  • Intel® C++ Composer XE 2013 for Linux*/Intel® Fortran Composer XE 2013 for Linux*
    (Initial Release and higher; 13.0 Intel® Application Debugger)

Intel® Composer XE 2011 for Linux*

  • Intel® C++ Composer XE 2011 for Linux*/Intel® Fortran Composer XE 2011 for Linux*
    (Update 6 and higher; 12.1 Intel® Application Debugger)
  • Intel® C++ Composer XE 2011 for Linux*/Intel® Fortran Composer XE 2011 for Linux*
    (Initial Release and up to Update 5; 12.0 Intel® Application Debugger)

Intel® Compiler Suite Professional Edition for Linux*

  • Intel® C++ Compiler for Linux* 11.1/Intel® Fortran Compiler for Linux* 11.1
  • Intel® C++ Compiler for Linux* 11.0/Intel® Fortran Compiler for Linux* 11.0
  • Intel® C++ Compiler for Linux* 10.1/Intel® Fortran Compiler for Linux* 10.1

Intel® Embedded Software Development Tool Suite for Intel® Atom™ Processor:

  • Version 2.3 (Initial Release and up to Update 2)
  • Version 2.2 (Initial Release and up to Update 2)
  • Version 2.1
  • Version 2.0

Intel® Application Software Development Tool Suite for Intel® Atom™ Processor:

  • Version 2.2 (Initial Release and up to Update 2)
  • Version 2.1
  • Version 2.0

Intel® C++ Software Development Tool Suite for Linux* OS supporting Mobile Internet Devices (Intel® MID Tools):

  • Version 1.1
  • Version 1.0

Intel AppUp™ SDK Suite for MeeGo*

  • Initial Release (Version 1.0)

Used third-party libraries:
Please see the attachments for a complete list of third-party libraries.

Note: The packages posted here are unmodified copies from the respective distributor/owner and are made available for ease of access. Download or installation of those is not required to operate any of the Intel® Software Development Products. The packages are provided as is, without warranty or support.

How to get working Windows Hello on actual Windows 10 Insider Preview

$
0
0

One of the cool new features announced for the upcoming WIndows10 is Windows Hello.

It's essentially a new way to login in the system with an exclusive face recognition feature that auto log the user when it come in front of its PC.

How it works

This magic feature is based on a magic technology that tag a face and can recognize it back securely.

The recognition is done using two type of camera in cooperation; the first is a classical HD camera and the second is a depth camera (infrared) for 3D an temperature scanning.

The system recognize and match a lot of point describing specific target of the face, the eyes, the lips, the nose etc; describing a precise path different for each person and assigning to this array of points a specific and unique tag.

When the system come in non-logged state it automatically try to recognize the face coming behind it and matching with the one archived for the local Windows Hello, if a match is done it auto log to the corresponding user profile.

On the Windows10 side the game is done by Passport that log you to the system (using the PIN password) only when the biometric device (in this case the camera) acknowledge the recognition of you face; it works essentially in the same manner on all the device with a fingerprint reader embedded. The system already manage also the retina scan login, but you will obviously need a specific retina scan device.

Obviously it doesn't work with photo, or miniature of the face.....

What whe need to get it work

Actually there's only one standalone device certified for Windows hello, the Intel Realsense camera F200.

It's a 3D camera part of a Intel Dev Kit Developed by Intel named Realsense SDK: this SDK is a big set o free library to enable feature like Face recognition, face detection, object tracking, gesture recognition, speech synthesys and speech recognition. You can freely download it from this link.

Otherwise you need a device with a Realsense camera onboard (click here for a full list).

You  only need a device running Windows 10 (the Insider Technical preview also).

How to do it

Connect the camera to you Win 10 device, the system will automatically recognize some new devices

In order to install the new available driver and eventualy update the formware of the camera we need to download and install  the "Intel RealSense Depth Camera Manager (DCM)" software from Intel at this link.

After the download install and run it, follow instruction to update driver and firmware of the camera.

For the next step go to Windows 10 Settings/Accounts/Sign In options and define PIN password.

 

Once defined it close and reopen Settings /Accounts/Sign-in options you'll see also a Windows Hello option!

Click on Set Up, press Get Started, the system will ask for you PIN password, enter it and a preview of the image captured from the F200 camera will appear.

Once the operation end succesfully the system will show the message AllSet!

Close the window and try immediately to sign out from actual session.

When the system return to the login page will immediately recognize you (if you are still in front of your PC obviously) and auto login in your profile.

 

Thats it!

Enjoy


Intel® Parallel Studio XE 2016 Composer Edition Fortran - Debug Solutions Release Notes

$
0
0

This page provides the current Release Notes for the Debug Solutions from Intel® Parallel Studio XE 2016 Composer Edition for Fortran Linux*, Windows* and OS X* products.

To get product updates, log in to the Intel® Software Development Products Registration Center.

For questions or technical support, visit Intel® Software Products Support.

For the top-level Release Notes, visit:

Table of Contents:

Change History

This section highlights important from the previous product version and changes in product updates.

Changes since Intel® Parallel Studio XE 2015 Composer Edition

  • Support for additional Fortran intrinsics added to GNU* GDB
  • Improved display of OpenMP* tasks with GNU* GDB

Product Contents

  • Linux*:
    • GNU* Project Debugger (GDB) 7.8:
      Command line for host CPU and Intel® Xeon Phi™ coprocessor, and Eclipse* IDE plugin for offload enabled applications.
  • OS X*:
    • GNU* Project Debugger (GDB) 7.8:
      Command line for CPU only.
  • Windows*:
    • Intel® Debugger Extension for Intel® Many Integrated Core Architecture (Intel® MIC Architecture)
    • Fortran Expression Evaluator (FEE) as extension to debugger of Microsoft Visual Studio*

GNU* GDB

This section summarizes the changes, new features, customizations and known issues related to the GNU* GDB provided with Intel® Parallel Studio XE 2016 Composer Edition.
 

Features

GNU* GDB provided with Intel® Parallel Studio XE 2016 Composer Edition and above is based on GDB 7.8 with additional enhancements provided by Intel. This debugger replaces the Intel® Debugger from previous releases. In addition to features found in GDB 7.8, there are several other new features:
  • Intel® Processor Trace (Intel® PT) support for 5th generation Intel® Core™ Processors:
    (gdb) record btrace pt
  • Support for Intel® Many Integrated Core Architecture (Intel® MIC Architecture)
  • Support for Intel® Transactional Synchronization Extensions (Intel® TSX) (Linux & OSX)
  • Register support for Intel® Memory Protection Extensions (Intel® MPX) and Intel® Advanced Vector Extensions 512 (Intel® AVX-512)
  • Data Race Detection (pdbx):
    Detect and locate data races for applications threaded using POSIX* thread (pthread) or OpenMP* models
  • Branch Trace Store (btrace):
    Record branches taken in the execution flow to backtrack easily after events like crashes, signals, exceptions, etc.
All features are available for Linux*, but only Intel® TSX is supported for OS X*.
 

Using GNU* GDB

GNU* GDB provided with Intel® Parallel Studio XE 2016 Composer Edition comes in different versions:
  • IA-32/Intel® 64 debugger:
    Debug applications natively on IA-32 or Intel® 64 systems with gdb-ia on the command line.
    A standard Eclipse* IDE can be used for this as well if a graphical user interface is desired.
  • Intel® Xeon Phi™ coprocessor debugger (only for Linux*):
    Debug applications remotely on Intel® Xeon Phi™ coprocessor systems. The debugger will run on a host system and a debug agent (gdbserver) on the coprocessor.
    There are two options:
    • Use the command line version of the debugger with gdb-mic.
      This only works for native Intel® Xeon Phi™ coprocessor applications.
      A standard Eclipse* IDE can be used for this as well if a graphical user interface is desired.
    • Use an Eclipse* IDE plugin shipped with Intel® Parallel Studio XE 2016 Composer Edition.
      This works only for offload enabled Intel® Xeon Phi™ coprocessor applications. Instructions on how to use GNU* GDB can be found in the Documentation section.

Documentation

The documentation for the provided GNU* GDB can be found here:
<install-dir>/documentation_2016/en/debugger/gdb-ia/gdb.pdf<install-dir>/documentation_2016/en/debugger/gdb-mic/gdb.pdf<install-dir>/documentation_2016/en/debugger/ps2016/gs_gdb_ps_lin.htm

Known Issues and Changes

Not found: libtinfo.so.5

On some systems, using the GNU* GDB version that is provided by Intel fails due to a missing libtinfo.so.5 (e.g. SLES 11 SP3). If a package for libtinfo is not available, the following workaround can be applied:

$ sudo ln -s <path>/libncurses.so.5.6 <path>/libtinfo.so.5

As <path>, use the location of the system's ncurses library.

Problem using Eclipse* IDE with GDB*

If the GNU* GDB version that is provided by Intel is used within an Eclipse* IDE, you need to setup the environment before starting Eclipse* as described in the compiler documentation. See https://software.intel.com/en-us/articles/intel-c-compiler-160-for-linux-release-notes#doc for more information.

Safely ending offload debug sessions

To avoid issues like orphan processes or stale debugger windows when ending offload applications, manually end the debugging session before the application is reaching its exit code. The following procedure is recommended for terminating a debug session:
  1. Manually stop a debug session before the application reaches the exit-code.
  2. When stopped, press the red stop button in the tool-bar in the Intel® MIC Architecture-side debugger first. This will end the offloaded part of the application.
  3. Next, do the same for the CPU-side debugger.
  4. The link between the two debuggers will be kept alive. The Intel® MIC Architecture-side debugger will stay connected to the debug agent and the application will remain loaded in the CPU-side debugger, including all breakpoints that have been set.
  5. At this point, both debugger windows can safely be closed.

Intel® MIC Architecture-side debugger asserts on setting source directories

Setting source directories in the GNU* GDB might lead to an assertion.
Resolution:
The assertion should not affect debugger operation. To avoid the assertion anyway, don’t use source directory settings. The debugger will prompt you to browse for files it cannot locate automatically.

Debugger and debugged application required to be located on local drive (OS X* only)

In order to use the provided GNU* GDB (gdb-ia), it has to be installed on a local drive. As such, the entire Intel® Parallel Studio XE 2016 package has to be installed locally. Any application that is being debugged needs to be located on a local drive as well. This is a general requirement that’s inherent to GNU GDB with OS X*.

Debugging Fortran applications with Eclipse* IDE plugin for Intel® Xeon Phi™ coprocessor

If the Eclipse* IDE plugin for the Intel® Xeon Phi™ coprocessor is used for debugging Fortran applications, evaluation of arrays in the locals window might be incorrect. The underlying CDT applies the C/C++ syntax with brackets to arrays to retrieve their contents. This does not work for Fortran.
Solution: Use a fully qualified Fortran expression to retrieve the contents of arrays (e.g. with array sections like array(1:10)).
 
This section summarizes new features and changes, usage and known issues related to the Intel® Debugger Extension. This debugger extension only supports code targeting Intel® Many Integrated Core Architecture (Intel® MIC Architecture).
 

Features

  • Support for both native Intel® Xeon Phi™ coprocessor applications and host applications with offload extensions
  • Debug multiple Intel® Xeon Phi™ coprocessors at the same time (with offload extension)

Using the Intel® Debugger Extension

The Intel® Debugger Extension is a plug-in for the Microsoft Visual Studio* IDE. It transparently enables debugging of projects defined by  that IDE. Applications for Intel® Xeon Phi™ coprocessors can be either loaded and executed or attached to. This extension supports debugging of offload enabled code, using:
  • Microsoft Visual Studio* 2012
  • Microsoft Visual Studio* 2013
  • Microsoft Visual Studio* 2015

Documentation

The full documentation for the Intel® Debugger Extension can be found here:
<install-dir>\documentation_2016\en\debugger\ps2016\gs_gdb_ps_win.htm

Known Issues and Limitations

  • Disassembly window cannot be scrolled outside of 1024 bytes from the starting address within an offload section.
  • Handling of exceptions from the Intel® MIC Architecture application is not supported.
  • Starting an Intel® MIC Architecture native application is not supported. You can attach to a currently running application, though.
  • The Thread Window in Microsoft Visual Studio* offers context menu actions to Freeze, Thaw and Rename threads. These context menu actions are not functional when the thread is on an Intel® Xeon Phi™ coprocessor.
  • Setting a breakpoint right before an offload section sets a breakpoint at the first statement of the offload section. This only is true if there is no statement for the host between set breakpoint and offload section. This is normal Microsoft Visual Studio* breakpoint behavior but might become more visible with interweaved code from host and Intel® Xeon Phi™ coprocessor. The superfluous breakpoint for the offload section can be manually disabled (or removed) if desired.
  • Only Intel® 64 applications containing offload sections can be debugged with the Intel® Debugger Extension for Intel® Many Integrated Core Architecture.
  • Stepping out of an offload section does not step back into the host code. It rather continues execution without stopping (unless another event occurs). This is intended behavior.
  • The functionality “Set Next Statement” is not working within an offload section.
  • If breakpoints have been set for an offload section in a project already, starting the debugger might show bound breakpoints without addresses. Those do not have an impact on functionality.
  • For offload sections, using breakpoints with the following conditions of hit counts do not work: “break when the hit count is equal to” and “break when the hit count is a multiple of”.
  • The following options in the Disassembly window do not work within offload sections: “Show Line Numbers”, “Show Symbol Names” and “Show Source Code”
  • Evaluating variables declared outside the offload section shows wrong values.
  • Please consult the Output (Debug) window for detailed reporting. It will name unimplemented features (see above) or provide additional information required to configuration problems in a debugging session. You can open the window in Microsoft Visual Studio* via menu Debug->Windows->Output.
  • When debugging an offload-enabled application and a variable assignment is entered in the Immediate Window, the debugger may hang if assignments read memory locations before writing to them (for example, x=x+1). Please do not use the Immediate Window for changing variable values for offload-enabled applications.
  • Depending on the debugger extensions provided by Intel, the behavior (for example, run control) and output (for example, disassembly) could differ from what is experienced with the Microsoft Visual Studio* debugger. This is because of the different debugging technologies implemented by each and should not have a significant impact to the debugging experience.

Fortran Expression Evaluator (FEE) for debugging Fortran applications with Microsoft Visual Studio*

Fortran Expression Evaluator (FEE) is a plug-in for Microsoft Visual Studio* that is installed with Intel® Visual Fortran Compiler. It extends the standard debugger in Microsoft Visual Studio* IDE by handling Fortran expressions. There is no other change in usability.

Known Issues and Limitations

Debugging might fail when only Microsoft Visual Studio 2013/2015* is installed

For some FEE functionality the Microsoft Visual Studio 2012* libraries are required. One solution is to install Microsoft Visual Studio 2012* in addition to Microsoft Visual Studio 2013/2015*. An alternative is to install the "Visual C++ Redistributable for Visual Studio 2012 Update 4" found here.
If you installed Intel® Parallel Studio XE 2016 on a system without any Microsoft Visual Studio* version available, a Microsoft Visual Studio 2013* Shell (incl. libraries) will be installed. It might be that FEE does not work in that environment. Please install the redistributable package mentioned above in addition to enable FEE. A future update will solve this problem for the installation of the shell.

Debugging mixed language programs with Fortran does not work

To enable debugging Fortran code called from a .NET managed code application in Visual Studio 2012 or later, unset the following configuration:
Menu Tools->Options, under section Debugging->General, clear the "Managed C++ Compatibility Mode" or "Use Managed Compatibility Mode" check box

Debug Options Compatibility Mode

For any managed code application, one must also check the project property Debug > Enable unmanaged code debugging.

Attributions

This product includes software developed at:

GDB – The GNU* Project Debugger

Copyright Free Software Foundation, Inc., 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.

This program is free software; you can redistribute it and/or modify it under the terms and conditions of the GNU General Public License, version 2, as published by the Free Software Foundation.

This program is distributed in the hope it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.

GNU* Free Documentation License

Version 1.3, 3 November 2008

 

Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. <http://fsf.org/>

 

Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.

 

0. PREAMBLE

The purpose of this License is to make a manual, textbook, or other functional and useful document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others.

This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software.

We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.

 

1. APPLICABILITY AND DEFINITIONS

This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law.

A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language.

A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them.

The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none.

The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words.

A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called "Opaque".

Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only.

The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text.

The "publisher" means any person or entity that distributes copies of the Document to the public.

A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as "Acknowledgements", "Dedications", "Endorsements", or "History".) To "Preserve the Title" of such a section when you modify the Document means that it remains a section "Entitled XYZ" according to this definition.

The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License.

 

2. VERBATIM COPYING

You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3.

You may also lend copies, under the same conditions stated above, and you may publicly display copies.

 

3. COPYING IN QUANTITY

If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects.

If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.

If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.

It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.

 

4. MODIFICATIONS

You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:

A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission.

B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement.

C. State on the Title page the name of the publisher of the Modified Version, as the publisher.

D. Preserve all the copyright notices of the Document.

E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.

F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below.

G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice.

H. Include an unaltered copy of this License.

I. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence.

J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission.

K. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein.

L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles.

M. Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version.

N. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section.

O. Preserve any Warranty Disclaimers.

If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles.

You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties—for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard.

You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one.

The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.

 

5. COMBINING DOCUMENTS

You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers.

The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work.

In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements".

 

6. COLLECTIONS OF DOCUMENTS

You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects.

You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.

 

7. AGGREGATION WITH INDEPENDENT WORKS

A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an "aggregate" if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document.

If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate.

 

8. TRANSLATION

Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail.

If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title.

 

9. TERMINATION

You may not copy, modify, sublicense, or distribute the Document except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, or distribute it is void, and will automatically terminate your rights under this License.

 

However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation.

Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice.

Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, receipt of a copy of some or all of the same material does not give you any rights to use it.

 

10. FUTURE REVISIONS OF THIS LICENSE

The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/.

Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation. If the Document specifies that a proxy can decide which future versions of this License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Document.

 

11. RELICENSING

"Massive Multiauthor Collaboration Site" (or "MMC Site") means any World Wide Web server that publishes copyrightable works and also provides prominent facilities for anybody to edit those works. A public wiki that anybody can edit is an example of such a server. A "Massive Multiauthor Collaboration" (or "MMC") contained in the site means any set of copyrightable works thus published on the MMC site.

"CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0 license published by Creative Commons Corporation, a not-for-profit corporation with a principal place of business in San Francisco, California, as well as future copyleft versions of that license published by that same organization.

"Incorporate" means to publish or republish a Document, in whole or in part, as part of another Document.

An MMC is "eligible for relicensing" if it is licensed under this License, and if all works that were first published under this License somewhere other than this MMC, and subsequently incorporated in whole or in part into the MMC, (1) had no cover texts or invariant sections, and (2) were thus incorporated prior to November 1, 2008.

The operator of an MMC Site may republish an MMC contained in the site under CC-BY-SA on the same site at any time before August 1, 2009, provided the MMC is eligible for relicensing.

 

Disclaimer and Legal Information

INFORMATION IN THIS DOCUMENT IS PROVIDED IN CONNECTION WITH INTEL PRODUCTS. NO LICENSE, EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE, TO ANY INTELLECTUAL PROPERTY RIGHTS IS GRANTED BY THIS DOCUMENT. EXCEPT AS PROVIDED IN INTEL'S TERMS AND CONDITIONS OF SALE FOR SUCH PRODUCTS, INTEL ASSUMES NO LIABILITY WHATSOEVER, AND INTEL DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY, RELATING TO SALE AND/OR USE OF INTEL PRODUCTS INCLUDING LIABILITY OR WARRANTIES RELATING TO FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR INFRINGEMENT OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT.
UNLESS OTHERWISE AGREED IN WRITING BY INTEL, THE INTEL PRODUCTS ARE NOT DESIGNED NOR INTENDED FOR ANY APPLICATION IN WHICH THE FAILURE OF THE INTEL PRODUCT COULD CREATE A SITUATION WHERE PERSONAL INJURY OR DEATH MAY OCCUR.
Intel may make changes to specifications and product descriptions at any time, without notice. Designers must not rely on the absence or characteristics of any features or instructions marked "reserved" or "undefined." Intel reserves these for future definition and shall have no responsibility whatsoever for conflicts or incompatibilities arising from future changes to them. The information here is subject to change without notice. Do not finalize a design with this information.
The products described in this document may contain design defects or errors known as errata which may cause the product to deviate from published specifications. Current characterized errata are available on request.
Contact your local Intel sales office or your distributor to obtain the latest specifications and before placing your product order.
Copies of documents which have an order number and are referenced in this document, or other Intel literature, may be obtained by calling 1-800-548-4725, or go to:  http://www.intel.com/design/literature.htm

Intel processor numbers are not a measure of performance. Processor numbers differentiate features within each processor family, not across different processor families. Go to:
http://www.intel.com/products/processor_number/

MPEG-1, MPEG-2, MPEG-4, H.261, H.263, H.264, MP3, DV, VC-1, MJPEG, AC3, AAC, G.711, G.722, G.722.1, G.722.2, AMRWB, Extended AMRWB (AMRWB+), G.167, G.168, G.169, G.723.1, G.726, G.728, G.729, G.729.1, GSM AMR, GSM FR are international standards promoted by ISO, IEC, ITU, ETSI, 3GPP and other organizations. Implementations of these standards, or the standard enabled platforms may require licenses from various entities, including Intel Corporation.

BunnyPeople, Celeron, Celeron Inside, Centrino, Centrino Inside, Cilk, Core Inside, i960, Intel, the Intel logo, Intel AppUp, Intel Atom, Intel Atom Inside, Intel Core, Intel Inside, Intel Inside logo, Intel NetBurst, Intel NetMerge, Intel NetStructure, Intel SingleDriver, Intel SpeedStep, Intel Sponsors of Tomorrow., the Intel Sponsors of Tomorrow. logo, Intel StrataFlash, Intel Viiv, Intel vPro, Intel XScale, InTru, the InTru logo, InTru soundmark, Itanium, Itanium Inside, MCS, MMX, Moblin, Pentium, Pentium Inside, skoool, the skoool logo, Sound Mark, The Journey Inside, vPro Inside, VTune, Xeon, and Xeon Inside are trademarks of Intel Corporation in the U.S. and other countries.

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

Microsoft, Windows, Visual Studio, Visual C++, and the Windows logo are trademarks, or registered trademarks of Microsoft Corporation in the United States and/or other countries.

Java is a registered trademark of Oracle and/or its affiliates.

Copyright (C) 2008–2015, Intel Corporation. All rights reserved.

You Can Join Selected IDF Sessions From Wherever You Are!

$
0
0

IDF Date: Aug 18 - Aug 20, 2015

Can’t attend IDF in person this year?  We have you covered.  Selected software sessions will be webcasted which will give you the opportunity to join our experts live.  See the schedule below and register now:

 

Cross-Platform Mobile App Development With Native Performance Using Intel® Integrated Native Developer Experience

Abstract: With native look and feel, performance and portability across multiple target mobile OS and architectures, Intel® Integrated Native Developer Experience (Intel® INDE)
is a one-stop productivity suite that brings together a great arsenal of application development tools and libraries to expose advanced platform capabilities.
Come to this session to see:
• Intel INDE in action developing Android* and cross-OS apps with rich media experience
• Live demos showcasing apps built with innovative SDKs and tools included in Intel INDE
• How companies such as Open Labs*, Audible Magic* and 23Snaps* are using Intel INDE to develop native applications for multiple platforms that stand out in the marketplace

Register

 

Parallel Programming Pearls: Inspired by Intel® Xeon Phi™ Products

Abstract: This session dives into real-world parallel programming optimization examples, from around the world, through the eyes and wit of enthusiast, author, editor and evangelist James Reinders.
This session will explore:
• Concrete real world examples of how Intel® Xeon Phi™ products extend parallel programming seamlessly from a few cores to many-cores (over 60) with the same programming models
• Examples from the newly released book, “High Performance Parallelism Pearls Volume 2”, will be highlighted with source code for all examples freely available.

Register

 

Intel® XDK HTML5 Cross-Platform Development Environment - Building Cordova Apps with Crosswalk Project

Abstract: Join Paul Fischer as he discusses how the Intel® XDK HTML5 Cross-Platform Development Environment enables developers to create mobile Cordova apps for Android*, iOS* and Windows* phones and tablets. With the Intel® XDK HTML5 Cross-Platform Development Tools and Crosswalk Project runtime, high-performance apps can be easily debugged and profiled in real-time, directly on-device. By providing a complete set of tools to create, build, test and debug mobile apps, the Intel® XDK helps speed the development cycle for HTML5 apps, by enabling developers to quickly and easily create apps for multiple app stores, across diverse devices.

In this session you will hear about:
• Finding performance and memory bottlenecks in Crosswalk Project HTML5 apps
• Improving app quality with real-time on-device debug and test
• Enhancing performance, especially for games and interactive applications
• Taming the Android native Webview problem with a modern Blink Webview

Register

 

Coding for Maximum Utilization of Next Generation Intel® Processors in the IoT Era

Abstract: Join Noah Clemons as he leads a discussion with a variety of Intel® Architecture based system optimization experts from Intel together to address the following:
• System-on-chip complexity – new features on System-on-Chips (SoCs)
• Application of those features to several different IoT domains
• Fastest ways to maximize new SoC features through software
• In-depth system-wide tracing, debugging, performance and power analysis
• Tools eco-system to support the latest and next generation Intel® Architecture based SoCs

Register

Intel® Parallel Computing Center at Georgia Institute of Technology

$
0
0

Principal Investigator:

Srinivas Aluru is a professor in the School of Computational Science and Engineering within the College of Computing at Georgia Institute of Technology. He serves as a co-director of the Georgia Tech Strategic Initiative in Data Engineering and Science. Aluru conducts research in high performance computing, bioinformatics, systems biology, and combinatorial scientific computing. He pioneered the development of parallel methods in computational genomics and systems biology. He is a Fellow of the American Association for the Advancement of Science (AAAS) and the Institute of Electrical and Electronic Engineers (IEEE).

Description:

The Intel® Parallel Computing Center (Intel® PCC) on Big Data in Biosciences and Public Health is focused on developing and optimizing parallel algorithms and software on Intel® Xeon® Processor and Intel® Xeon Phi™ Coprocessor systems for handling high-throughput DNA sequencing data and gene expression data. Advances in high-throughput sequencing technologies permit massively parallel sequencing of DNA at a low cost, leading to the creation of big data sets even in routine investigations by small research laboratories. Rapid analysis of such large-scale data is of critical importance in many applications, and is the foundation of modern genomics. This is currently an area underserved by high performance computing, but has great economic potential and societal prominence.

Research under this Intel® PCC will be focused on two large-scale projects: The first project is a comprehensive effort to identify core index structures and fundamental building blocks for the numerous applications of high-throughput DNA sequencing, develop parallel algorithms for them, and release them as software libraries to enable application parallelization. The Intel® PCC will support development of novel algorithms optimized for the Intel® Xeon Phi™ coprocessors, and development and release of software libraries specifically optimized for Intel® Xeon® processors and Intel® Xeon Phi™ coprocessors. The second project concerns the development of systems biology tools for biological researchers. Under the Intel® PCC, two objectives will be pursued: Large-scale Intel based clusters and supercomputers will be used to build whole-genome networks for important model organisms and make them widely available to researchers. A second objective is to put mid-scale network capabilities in the hands of individual biology researchers. The project will leverage other collaborative projects that support experimental research, allowing direct experimental verification of some of the tools generated under the Intel® PCC.

The work will lead to the release of open source software optimized for Intel® Xeon® processors and Intel® Xeon Phi™ coprocessors in the important areas of computational genomics and systems biology. These will be used in applications with the potential to impact many important fields including viral and microbial genomics, agricultural biotechnology, and precision medicine. The research is expected to inform future Intel architectural designs regarding suitability in the important area of bioinformatics.

Related websites:

www.cc.gatech.edu/~saluru

Intel® XDK FAQs - Cordova

$
0
0
Q1: How do I set app orientation?

If you are using Cordova* 3.X build options (Crosswalk* for Android*, Android*, iOS*, etc.), you can set the orientation under the Projects panel > Select your project > Cordova* 3.X Hybrid Mobile App Settings - Build Settings. Under the Build Settings, you can set the Orientation for your desired mobile platform.  

If you are using the Legacy Hybrid Mobile App Platform build options (Android*, iOS* Ad Hoc, etc.), you can set the orientation under the Build tab > Legacy Hybrid Mobile App Platforms Category- <desired_mobile_platform> - Step 2 Assets tab. 

[iPad] Create a plugin (directory with one file) that only has a config xml that includes the following: 

<config-file target="*-Info.plist" parent="UISupportedInterfaceOrientations~ipad" overwrite="true"><string></string></config-file><config-file target="*-Info.plist" parent="UISupportedInterfaceOrientations~ipad" overwrite="true"><array><string>UIInterfaceOrientationPortrait</string></array></config-file> 

Add the plugin on the build settings page. 

Alternatively, you can use this plugin: https://github.com/yoik/cordova-yoik-screenorientation. You can import it as a third-party Cordova* plugin using the Cordova* registry notation:

  • net.yoik.cordova.plugins.screenorientation (includes latest version at the time of the build)
  • net.yoik.cordova.plugins.screenorientation@1.3.2 (specifies a version)

Or, you can reference it directly from the GitHub repo: 

The second reference provides the git commit referenced here (we do not support pulling from the PhoneGap registry).

Q2: Is it possible to create a background service using Intel XDK?

Background services require the use of specialized Cordova* plugins that need to be created specifically for your needs. Intel XDK does not support development or debug of plugins, only the use of them as "black boxes" with your HTML5 app. Background services can be accomplished using Java on Android or Objective C on iOS. If a plugin that backgrounds the functions required already exists (for example, this plugin for background geo tracking), Intel XDK’s build system will work with it.

Q3: How do I send an email from my App?
You can use the Cordova* email plugin or use web intent - PhoneGap* and Cordova* 3.X.
Q4: How do you create an offline application?
You can use the technique described here by creating an offline.appcache file and then setting it up to store the files that are needed to run the program offline. Note that offline applications need to be built using the Cordova* or Legacy Hybrid build options.
Q5: How do I work with alarms and timed notifications?
Unfortunately, alarms and notifications are advanced subjects that require a background service. This cannot be implemented in HTML5 and can only be done in native code by using a plugin. Background services require the use of specialized Cordova* plugins that need to be created specifically for your needs. Intel XDK does not support the development or debug of plugins, only the use of them as "black boxes" with your HTML5 app. Background services can be accomplished using Java on Android or Objective C on iOS. If a plugin that backgrounds the functions required already exists (for example, this plugin for background geo tracking) the Intel XDK’s build system will work with it. 
Q6: How do I get a reliable device ID? 
You can use the Phonegap/Cordova* Unique Device ID (UUID) plugin for Android*, iOS* and Windows* Phone 8. 
Q7: How do I implement In-App purchasing in my app?
There is a Cordova* plugin for this. A tutorial on its implementation can be found here. There is also a sample in Intel XDK called ‘In App Purchase’ which can be downloaded here.
Q8: How do I install custom fonts on devices?
Fonts can be considered as an asset that is included with your app, not shared among other apps on the device just like images and CSS files that are private to the app and not shared. It is possible to share some files between apps using, for example, the SD card space on an Android* device. If you include the font files as assets in your application then there is no download time to consider. They are part of your app and already exist on the device after installation.
Q9: How do I access the device’s file storage?
You can use HTML5 local storage and this is a good article to get started with. Alternatively, there is a Cordova* file plugin for that.
Q10: Why isn't AppMobi* push notification services working?
This seems to be an issue on AppMobi’s end and can only be addressed by them. PushMobi is only available in the "legacy" container. AppMobi* has not developed a Cordova* plugin, so it cannot be used in the Cordova* build containers. Thus, it is not available with the default build system. We recommend that you consider using the Cordova* push notification plugin instead.
Q11: How do I configure an app to run as a service when it is closed?
If you want a service to run in the background you'll have to write a service, either by creating a custom plugin or writing a separate service using standard Android* development tools. The Cordova* system does not facilitate writing services.
Q12: How do I dynamically play videos in my app?

1) Download the Javascript and CSS files from https://github.com/videojs

2) Add them in the HTML5 header. 

<config-file target="*-Info.plist" parent="UISupportedInterfaceOrientations~ipad" overwrite="true"><string></string></config-file><config-file target="*-Info.plist" parent="UISupportedInterfaceOrientations~ipad" overwrite="true"><array><string>UIInterfaceOrientationPortrait</string></array></config-file> 

 3) Add a panel ‘main1’ that will be playing the video. This panel will be launched when the user clicks on the video in the main panel.

<div class=”panel” id=”main1” data-appbuilder-object=”panel” style=””><video id=”example_video_1” class=”video-js vjs-default-skin” controls=”” preload=”auto” width=”200” poster=”camera.png” data-setup=”{}”><source src=”JAIL.mp4” type=”video/mp4”><p class=”vjs-no-js”>To view this video please enable JavaScript*, and consider upgrading to a web browser that <a href=http://videojs.com/html5-video-support/ target=”_blank”>supports HTML5 video</a></p></video><a onclick=”runVid3()” href=”#” class=”button” data-appbuilder-object=”button”>Back</a></div>

 4) When the user clicks on the video, the click event sets the ‘src’ attribute of the video element to what the user wants to watch. 

Function runVid2(){

      Document.getElementsByTagName(“video”)[0].setAttribute(“src”,”appdes.mp4”);

      $.ui.loadContent(“#main1”,true,false,”pop”);

}

 5) The ‘main1’ panel opens waiting for the user to click the play button.

Note: The video does not play in the emulator and so you will have to test using a real device. The user also has to stop the video using the video controls. Clicking on the back button results in the video playing in the background.

Q13: How do I design my Cordova* built Android* app for tablets?
This page lists a set of guidelines to follow to make your app of tablet quality. If your app fulfills the criteria for tablet app quality, it can be featured in Google* Play's "Designed for tablets" section.
Q14: How do I resolve icon related issues with Cordova* CLI build system?

Ensure icon sizes are properly specified in the intelxdk.config.additions.xml. For example, if you are targeting iOS 6, you need to manually specify the icons sizes that iOS* 6 uses. 

<icon platform="ios" src="images/ios/72x72.icon.png" width="72" height="72" /><icon platform="ios" src="images/ios/57x57.icon.png" width="57" height="57" />

These are not required in the build system and so you will have to include them in the additions file. 

For more information on adding build options using intelxdk.config.additions.xml, visit: /en-us/html5/articles/adding-special-build-options-to-your-xdk-cordova-app-with-the-intelxdk-config-additions-xml-file

Q15: Is there a plugin I can use in my App to share content on social media?

Yes, you can use the PhoneGap Social Sharing plugin for Android*, iOS* and Windows* Phone.

Q16: Iframe does not load in my app. Is there an alternative?
Yes, you can use the inAppBrowser plugin instead.
Q17: Why are intel.xdk.istablet and intel.xdk.isphone not working?
Those properties are quite old and is based on the legacy AppMobi* system. An alternative is to detect the viewport size instead. You can get the user’s screen size using screen.width and screen.height properties (refer to this article for more information) and control the actual view of the webview by using the viewport meta tag (this page has several examples). You can also look through this forum thread for a detailed discussion on the same.
Q18: How do I work with the App Security plugin on Intel XDK?

Select the App Security plugin on the plugins list of the Project tab and build your app as a Cordova Hybrid app. Building it as a Legacy Hybrid app has been known to cause issues when compiled and installed on a device.

Q19: Why does my build fail with Admob plugins? Is there an alternative?

Intel XDK does not support the library project that has been newly introduced in the com.google.playservices@21.0.0 plugin. Admob plugins are dependent on "com.google.playservices", which adds Google* play services jar to project. The "com.google.playservices@19.0.0" is a simple jar file that works quite well but the "com.google.playservices@21.0.0" is using a new feature to include a whole library project. It works if built locally with Cordova CLI, but fails when using Intel XDK.

To keep compatible with Intel XDK, the dependency of admob plugin should be changed to "com.google.playservices@19.0.0".

Q20: Why does the intel.xdk.camera plugin fail? Is there an alternative?
There seem to be some general issues with the camera plugin on iOS*. An alternative is to use the Cordova camera plugin, instead and change the version to 0.3.3.
Q21: How do I resolve Geolocation issues with Cordova?

Give this app a try, it contains lots of useful comments and console log messages. However, use Cordova 0.3.10 version of the geo plugin instead of the Intel XDK geo plugin. Intel XDK buttons on the sample app will not work in a built app because the Intel XDK geo plugin is not included. However, they will partially work in the Emulator and Debug. If you test it on a real device, without the Intel XDK geo plugin selected, you should be able to see what is working and what is not on your device. There is a problem with the Intel XDK geo plugin. It cannot be used in the same build with the Cordova geo plugin. Do not use the Intel XDK geo plugin as it will be discontinued.

Geo fine might not work because of the following reasons:

  1. Your device does not have a GPS chip
  2. It is taking a long time to get a GPS lock (if you are indoors)
  3. The GPS on your device has been disabled in the settings

Geo coarse is the safest bet to quickly get an initial reading. It will get a reading based on a variety of inputs, but is usually not as accurate as geo fine but generally accurate enough to know what town you are located in and your approximate location in that town. Geo coarse will also prime the geo cache so there is something to read when you try to get a geo fine reading. Ensure your code can handle situations where you might not be getting any geo data as there is no guarantee you'll be able to get a geo fine reading at all or in a reasonable period of time. Success with geo fine is highly dependent on a lot of parameters that are typically outside of your control.

Q22: Is there an equivalent Cordova* plugin for intel.xdk.player.playPodcast? If so, how can I use it?

Yes, there is and you can find the one that best fits the bill from the Cordova* plugin registry.

To make this work you will need to do the following:

  • Detect your platform (you can use uaparser.js or you can do it yourself by inspecting the user agent string)
  • Include the plugin only on the Android* platform and use <video> on iOS*.
  • Create conditional code to do what is appropriate for the platform detected 

You can force a plugin to be part of an Android* build by adding it manually into the additions file. To see what the basic directives are to include a plugin manually:

  1. Include it using the "import plugin" dialog, perform a build and inspect the resulting intelxdk.config.android.xml file.
  2. Then remove it from your Project tab settings, copy the directive from that config file and paste it into the intelxdk.config.additions.xml file. Prefix that directive with <!-- +Android* -->. 

More information is available here and this is what an additions file can look like:

<preference name="debuggable" value="true" /><preference name="StatusBarOverlaysWebView" value="false" /><preference name="StatusBarBackgroundColor" value="#000000" /><preference name="StatusBarStyle" value="lightcontent" /><!-- -iOS* --><intelxdk:plugin intelxdk:value="nl.nielsad.cordova.wifiscanner" /><!-- -Windows*8 --><intelxdk:plugin intelxdk:value="nl.nielsad.cordova.wifiscanner" /><!-- -Windows*8 --><intelxdk:plugin intelxdk:value="org.apache.cordova.statusbar" /><!-- -Windows*8 --><intelxdk:plugin intelxdk:value="https://github.com/EddyVerbruggen/Flashlight-PhoneGap-Plugin" />

This sample forces a plugin included with the "import plugin" dialog to be excluded from the platforms shown. You can include it only in the Android* platform by using conditional code and one or more appropriate plugins.

Q23: How do I display a webpage in my app without leaving my app?

The most effective way to do so is by using inAppBrowser.

Q24: Does Cordova* media have callbacks in the emulator?

While Cordova* media objects have proper callbacks when using the debug tab on a device, the emulator doesn't report state changes back to the Media object. This functionality has not been implemented yet. Under emulation, the Media object is implemented by creating an <audio> tag in the program under test. The <audio> tag emits a bunch of events, and these could be captured and turned into status callbacks on the Media object.

Q25: Why does the Cordova version not match between the Projects tab Build Settings, Emulate tab, App Preview and my built app?

This is due to the difficulty in keeping different components in sync and is compounded by the version convention that the Cordova project uses to distinguish build tools (the CLI version) from frameworks (the Cordova version) and plugins.

The CLI version you specify in the Projects tab Build Settings section is the "Cordova CLI" version that the build system will use to build your app. Each version of the Cordova CLI tools come with a set of "pinned" Cordova framework versions, which vary as a function of the target platform. For example, the Cordova CLI 5.0 platformsConfig file is "pinned" to the Android Cordova framework version 4.0.0, the iOS Cordova framework version 3.8.0 and the Windows 8 Cordova framework version 3.8.1 (among other targets). The Cordova CLI 4.1.2 platformsConfig file is "pinned" to Android Cordova 3.6.4, iOS Cordova 3.7.0 and Windows 8 Cordova 3.7.1.

This means that the Cordova framework version you are using "on device" with a built app will not equal the version number that is in the CLI field that you specified in the Build Settings section of the Projects tab when you built your app. Technically, the target-specific Cordova frameworks can be updated [independently] within a given version of CLI tools, but our build system always uses the Cordova framework versions that were "pinned" to the CLI when it was released (that is, the Cordova framework versions specified in the platformsConfig file).

The reason you may see Cordova framework version differences between the Emulate tab, App Preview and your built app is:

  • The Emulate tab has one specific Cordova framework version it is built against. We try to make that version of the Cordova framework match as closely the default Intel XDK version of Cordova CLI.
  • App Preview is released independently of the Intel XDK and, therefore, may support a different version than what you will see reported by the Emulate tab and your built app. Again, we try to release App Preview so it matches the version of the Cordova framework that is the default version of the Intel XDK at the time App Preview is released; but since the various tools are not released in perfect sync, that is not always possible.
  • Your app always uses the Cordova framework version that is determined by the Cordova CLI version you specified in the Projects tab's Build Settings section, when you built your app.
  • BTW: the version of the Cordova framework that is built into Crosswalk is determined by the Crosswalk project, not by the Intel XDK build system. There is some customization the Crosswalk project team must do to the Cordova framework to include Cordova as part of the Crosswalk runtime engine. The Crosswalk project team generally releases each Crosswalk version with the then current version of the Android Cordova framework. Thus, the version of the Android Cordova framework that is included in your Crosswalk build is determined by the version of Crosswalk you choose to build against.

Do these Cordova framework version numbers matter? Not that much. There are some issues that come up that are related to the Cordova framework version, but they tend to be few and far between. The majority of the bugs and compatibility issues you will experience in your app have more to do with the versions and mix of Cordova plugins you choose and the specific webview present on your test devices. See this blog for more details about what a webview is and why the webview matters to your app: When is an HTML5 Web App a WebView App?.

p.s. The "default version" of the CLI that the Intel XDK uses is rarely the most recent version of the Cordova CLI tools distributed by the Cordova project. There is always a lag between Cordova project releases and our ability to incorporate those releases into our build system and the various Intel XDK components. Also, we are unable to implement every release that is made by the Cordova project; thus the reason why we do not support every Cordova release that is available to Cordova CLI users.

Q26: How do I add a third party plugin?
Please follow the instructions on this doc page to add a third-party plugin: Adding Plugins to Your Intel® XDK Cordova* App -- this plugin is not being included as part of your app. You will see it in the build log if it was successfully added to your build.
Q27: How do I make an AJAX call that works in my browser work in my app?
Please follow the instructions in this article: Cordova CLI 4.1.2 Domain Whitelisting with Intel XDK for AJAX and Launching External Apps.
Q28: I get an "intel is not defined" error, but my app works in Test tab, App Preview and Debug tab. What's wrong?

When your app runs in the Test tab, App Preview or the Debug tab the intel.xdk and core Cordova functions are automatically included for easy debug. That is, the plugins required to implement those APIs on a real device are already included in the corresponding debug modules.

When you build your app you must include the plugins that correspond to the APIs you are using in your build settings. This means you must enable the Cordova and/or XDK plugins that correspond to the APIs you are using. Go to the Projects tab and insure that the plugins you need are selected in your project's plugin settings. See Adding Plugins to Your Intel® XDK Cordova* App for additional details.

Q29: How do I target my app for use only on an iPad or only on an iPhone?

There is an undocumented feature in Cordova that should help you (the Cordova project provided this feature but failed to document it for the rest of the world). If you use the appropriate preference in the intelxdk.config.additions.xml file you should get what you need:

<preference name="target-device" value="tablet" />     <!-- Installs on iPad, not on iPhone --><preference name="target-device" value="handset" />    <!-- Installs on iPhone, iPad installs in a zoomed view and doesn’t fill the entire screen --><preference name="target-device" value="universal" />  <!-- Installs on iPhone and iPad correctly -->

If you need info regarding the additions.xml file, see the blank template or this doc file: Adding Intel® XDK Cordova Build Options Using the Additions File.

Q30: Why does my build fail when I try to use the Cordova* Capture Plugin?

The Cordova* Capture plugin has a dependency on the File Plugin. Please make sure you both plugins selected on the projects tab.

Q31: How can I pinch and zoom in my Cordova* app?

For now, using the viewport meta tag is the only option to enable pinch and zoom. However, its behavior is unpredictable in different webviews. Testing a few samples apps has led us to believe that this feature is better on Crosswalk for Android. You can test this by building the Hello Cordova sample app for Android and Crosswalk for Android. Pinch and zoom will work on the latter only though they both have:

.

Please visit the following pages to get a better understanding of when to build with Crosswalk for Android:

http://blogs.intel.com/evangelists/2014/09/02/html5-web-app-webview-app/

https://software.intel.com/en-us/xdk/docs/why-use-crosswalk-for-android-builds

Another device oriented approach is to enable it by turning on Android accessibility gestures.

Q32: How do I make my Android application use the fullscreen so that the status and navigation bars disappear?

The Cordova* fullscreen plugin can be used to do this. For example, in your initialization code, include this function AndroidFullScreen.immersiveMode(null, null);.

You can get this third-party plugin from here https://github.com/mesmotronic/cordova-fullscreen-plugin

Q33: How do I add XXHDPI and XXXHDPI icons to my Android or Crosswalk application?

The Cordova CLI 4.1.2 build system will support this feature, but our 4.1.2 build system (and the 2170 version of the Intel XDK) does not handle the XX and XXX sizes directly. Use this workaround until these sizes are supported directly:

  • copy your XX and XXX icons into your source directory (usually named www)
  • add the following lines to your intelxdk.config.additions.xml file
  • see this Cordova doc page for some more details

Assuming your icons and splash screen images are stored in your source directory (usually named www), add lines similar to these into your intelxdk.config.additions.xml file (the precise name of your png files may be different than what is shown here):

<!-- for adding xxhdpi and xxxhdpi icons on Android --><platform name="android"><icon src="www/xxhdpi.png" density="xxhdpi" /><icon src="www/xxxhdpi.png" density="xxxhdpi" /><splash src="www/splash-port-xhdpi.png" density="port-xhdpi"/><splash src="www/splash-land-xhdpi.png" density="land-xhdpi"/></platform>

The precise names of your PNG files are not important, but the "density" designations are very important and, of course, the respective resolutions of your PNG files must be consistent with Android requirements. Those density parameters specify the respective "res-drawable-*dpi" directories that will be created in your APK for use by the underlying Android OS. NOTE: splash screen references have been added for reference, you do not need to use this technique for splash screens.

You can continue to insert the other icons into your app using the Intel XDK Projects tab.

Q34: Which plugin is the best to use with my app?

We are not able to track all the plugins out there, so we generally cannot give you a "this is better than that" evaluation of plugins. Check the Cordova plugin registry to see which plugins are most popular and check Stack Overflow to see which are best supported; also, check the individual plugin repos to see how well the plugin is supported and how frequently it is updated. Since the Cordova platform and the mobile platforms continue to evolve, those that are well-supported are likely to be those that have good activity in their repo.

Keep in mind that the XDK builds Cordova apps, so whichever plugins you find being supported and working best with other Cordova (or PhoneGap) apps would likely be your "best" choice.

See Adding Plugins to Your Intel® XDK Cordova* App for instructions on how to include third-party plugins with your app.

Back to FAQs Main 

protected attachment test

Intel® Selfie App for Android* Privacy Notice

$
0
0

The providing of your email address is optional. If you choose to receive additional information from Intel your email address will be used to keep you informed on activities that pertain to the Intel® Developer Zone. Your email address may also be used to notify you in the event that you win a prize or giveaway through the use of this application.

To learn more about Intel’s privacy practices, please visit http://www.appsflyer.com/privacy-policy/.
Intel is committed to respecting your privacy.

To learn more about Intel’s privacy practices, please visit http://www.intel.com/privacy.

*Other names and brands may be claimed as the property of others. All product information and prices are not determined and set by Intel but by their owner and may be subject to change without notice.

Optimizing Legacy Molecular Dynamics Software with Directive-based Offload

$
0
0

Directive-based programming models are one solution for exploiting many-core coprocessors to increase simulation rates in molecular dynamics. They offer the potential to reduce code complexity with offload models that can selectively target computations to run on the CPU, the coprocessor, or both. In this paper, we describe modifications to the LAMMPS molecular dynamics code to enable concurrent calculations on a CPU and coprocessor. We demonstrate that standard molecular dynamics algorithms can run efficiently on both the CPU and an x86-based coprocessor using the same subroutines. As a consequence, we demonstrate that code optimizations for the coprocessor also result in speedups on the CPU; in extreme cases up to 4.7X. We provide results for LAMMPS benchmarks and for production molecular dynamics simulations using the Stampede hybrid supercomputer with both Intel® Xeon Phi™ coprocessors and NVIDIA GPUs. The optimizations presented have increased simulation rates by over 2X for organic molecules and over 7X for liquid crystals on Stampede. The optimizations are available as part of the “Intel package” supplied with LAMMPS.

Download complete PDF DownloadDownload


Installing Apache Zeppelin* on Cloudera Distribution of Hadoop*

$
0
0

Data science is not a new discipline. However, with the growth of big data and adoption of big data technologies, the request for better quality data has grown exponentially. Today data science is applied to every facet of life—product validation through fault prediction, genome sequence analysis, personalized medicine through population studies and Patient 360 view, credit card fraud-detection, improvement in customer experience through sentiment analysis and purchase patterns, weather forecast, detecting cyber or terrorist attacks, aircraft maintenance utilizing predictive analytics to repair critical parts before they fail, and many more. Every day, data scientists are detecting patterns in data and providing actionable insights to influence organizational changes.

The data scientist’s work broadly involves acquisition, cleanup, and analysis of data. Being a cross-functional discipline, this work involves communication, collaboration, and interaction with other individuals, internal and possibly external to your organization. This is one reason why the “notebook” features in data analysis tools are gaining popularity. They ease organizing, sharing, and interactively working with long workflows. IPython* Notebook is a great example but is limited to usage of Python* language. Apache Zeppelin* is a new web-based notebook that enables data-driven, interactive data analytics, and visualization with the added bonus of supporting multiple languages, including Python*, Scala*, Spark SQL, Hive*, Shell, and Markdown. Zeppelin also provides Apache Spark* integration by default, making use of Spark’s fast in-memory, distributed, data processing engine to accomplish data science at lightning speed.

In this paper we describe how to install and configure Apache Zeppelin on the Cloudera Distribution of Apache Hadoop*, providing access to Hadoop and Spark.

Download complete PDF DownloadDownload

Better Concurrency and SIMD On The HIROMB‐BOOS­‐Model 3D Ocean Code

$
0
0

By utilizing the strengths of the Intel® Xeon Phi™ coprocessor, the  chapter 3 High Performance Parallelism Pearls authors were able to improve and modernize their code and “achieve great scaling, vectorization, bandwidth utilization and performance/watt”. The authors (Jacob Weismann Poulsen, Karthik Raman and Per Berg) note, “The thinking process and techniques used in this chapter have wide applicability: focus on data locality and then apply threading and vectorization techniques.”. In particular, they write about the advection routine from the HIROMBBOOS­‐Model (HBM)  which was initially underperforming on the Intel Xeon Phi coprocessor. However, they were able to achieve a 3x performance improvement after re-structuring the code which involved changing data structures for better data locality, exploiting the available threads and SIMD lanes for better concurrency at thread and loop level to utilize the maximum available memory bandwidth. To avoid data licensing issues the example code provided in High Performance Parallelism Pearls utilizes the Baffin Bay setup generated from the freely available ETOPO2 data set.

Click to view entire article.

How to use the Intel® Cluster Checker v3 SDK on a cluster using multiple Linux Distributions

$
0
0

Linux based HPC clusters can use different Linux distributions or different versions of a given Linux distribution for different types of nodes in the HPC cluster.

When the Linux distribution on which the connector extension has been built uses a glibc version 2.14 or newer and the Linux distribution where the connector extension is used, i.e. where clck-analyze is executed, uses a glibc version lower than 2.14, clck-analyze is not able to execute the shared library of the connector extension due to a missing symbol.

clck-analyze will show a message like this:

<your check>... not found

and

ldd lib<your check>.so

will show the following message, in addition to other output:

./lib<your check>.so: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ./lib<your check>.so)

The underlying reason is that memcpy is versioned by default as memcpy@GLIBC_2.14 starting in glibc version 2.14.
glibc versions lower than 2.14 will not have memcpy versioned like this.
The previous version, memcpy@GLIBC_2.2.5, is available in all glibc versions.

There are three solutions to this problem.

  1. The preferred solution is to compile the connector extension, i.e. lib<your check>.so, on a Linux distribution using a glibc version lower than 2.14
  2. If case option #1 cannot be used, you can enforce the use of the compatible memcpy@GLIBC_2.2.5 by adding the following code into the header file of your connector extension (as described here http://stackoverflow.com/questions/8823267/linking-against-older-symbol-version-in-a-so-file):
    #if defined(__GNUC__) && defined(__LP64__)  /* only with 64bit gcc, just to be sure */
    #include <features.h>       /* get the glibc version */
    /* only change memcpy when the version is newer than 2.14 */
    #if defined(__GLIBC__) && (__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 14)
    /* enforce mempcy to use the earlier, i.e. compatible, memcpy@GLIBC_2.2.5 */
    __asm__(".symver memcpy,memcpy@GLIBC_2.2.5");
    #endif
    #undef _FEATURES_H  /* reload it ... usually necessary */
    #endif
  3. The third solution is to use a wrapper function. This is also described on the above mentioned web page, but option #2 is simpler and easier to use.

Now you can compile your connector extension on a Linux distribution with a glibc version of 2.14 or newer and use it on a Linux distribution with a glibc version lower than 2.14.

How to use the Intel® Cluster Checker v3 SDK with gcc5

$
0
0

When compiling connector extensions in the Intel® Cluster Checker v3 SDK it is recommended to use an Intel compiler version 15.0 or newer and a gcc/g++ compiler version 4.9.0 or newer, as described in the Intel® Cluster Checker developer's Guide. This explicitly includes gcc version 5.1.0 and newer as well.

Due to changes to the C++ ABI that have been introduced in gcc version 5.1.0, a connector extension, i.e. the lib<your check>.so shared library, built with such a gcc version will not function when called from clck-analyze, even when the libstdc++.so.6 provided by that gcc version is being used.

clck-analyze will show a message like this:

<your check>... not found

and executing

ldd lib<your check>.so

without using the libstdc++.so.6 provided by gcc version 5.1.0 or newer will show the following message, in addition to other output:

./lib<your check>.so: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by ./lib<your check>.so)

In order to be able to use gcc version 5.1.0 or newer with the Intel® Cluster Checker v3 SDK you will have to force gcc/g++ to use a previous ABI version by using -D_GLIBCXX_USE_CXX11_ABI=0  as part of the CXXFLAGS.

Using OpenCL™ 2.0 Read-Write Images

$
0
0

Introduction

Prior to OpenCL™ 2.0, there was no ability to read and write to an image within the same kernel. Images could always be declared as a “CL_MEM_READ_WRITE”, but once the image was passed to the kernel, it had to be either “__read_only” or “__write_only”.

input1 = clCreateImage(
oclobjects.context,
CL_MEM_READ_WRITE|CL_MEM_COPY_HOST_PTR,&format,&desc,&input_data1[0],&err );
SAMPLE_CHECK_ERRORS( err );

Code 1 Image buffer could be created with CL_MEM_READ_WRITE

__kernel void Alpha( __read_write image2d_t inputImage1,
__read_only image2d_t
inputImage2,
uint width,
uint height,
float alpha,
float beta,
int gamma )

Code 2 OpenCL 2.0 introduced the ability to read and write to images in Kernels

The addition, while intuitive, comes with a few caveats that are discussed in the next section.

The value of Read-Write Images

While Image convolution is not as effective with the new Read-Write images functionality, any image processing technique that needs be done in place may benefit from the Read-Write images. One example of a process that could be used effectively is image composition.

In OpenCL 1.2 and earlier, images were qualified with the “__read_only” and __write_only” qualifiers. In the OpenCL 2.0, images can be qualified with a “__read_write” qualifier, and copy the output to the input buffer. This reduces the number of resources that are needed.

Since OpenCL 1.2 images are either read_only or write_image. Performing an in-place modifications of an image requires treating the image as a buffer and operating on the buffer (see cl_khr_image2d_from_buffer: https://software.intel.com/en-us/articles/using-image2d-from-buffer-extension.

The current solution is to treat the images as buffers, and manipulate the buffers. Treating 2d images as buffers many not be a free operation and prevents clamping and filtering abilities available in read_images from being used. As a result, it may be more desirable to use read_write qualified images.

Overview of the Sample

The sample takes two windows bitmap images “input1.bmp” and “input2.bmp” and puts them into an image buffer. These images are then composited based on the value of the alpha, a weight factor in the equation of the calculated pixel, which can be passed in as an option.

Using Alpha value 0.84089642

Figure 1 Using Alpha value 0.84089642

The images have to be either 24/32-bit images. The output is a 24-bit image. The images have to be of the same size. The images were also of the Format ARGB, so when loading that fact was taken into consideration.

Using Alpha value of 0.32453

Figure2. Using Alpha value of 0.32453

The ARGB is converted to RGBA. Changing the value of the beta value causes a significant change in the output.

Using the Sample SDK

The SDK demonstrates how to use image composition with Read write images. Use the following command-line options to control this sample:

Options

Description

-h, --help

Show this text and exit

-p, --platform number-or-string

Select platform, devices of which are used

-t, --type all | cpu | gpu | acc | default | <OpenCL constant for device type>

Select the device by type on which the OpenCL Kernel is executed

-d, --device number-or-string

Select the device on which all stuff is executed

-i, --infile 24/32-bit .bmp file

Base name of the first .bmp file to read. Default is input1.bmp

-j, --infile 24/32-bit .bmp file

Base name of the second .bmp file to read Default is input2.bmp

-o, --outfile 24/32-bit .bmp file

Base name of the output to write to. Default is output.bmp for OCL1.2 and 20_output.bmp for OCL2.0

-a, --alpha floating point value between 0 and 1

Non-zero positive value that determines how much the two images will blend in composition. Default alpha is 0.84089642. Default beta value is 0.15950358.

The sample SDK has a number of default values that allow the application to be able to run without any user input. The user will be able to use their input .bmp files. The files have to be either 24/32 bmp files as well. The alpha value is used to determine how much prominence image one will have over image 2 as such:

calculatedPixel = ((currentPixelImage1 * alpha) + (currentPixeImage2 * beta) + gamma);

The beta value is determined by subtracting the value of the alpha from 1.

float beta = 1 – alpha;

These two values determine the weighted distribution of images 1 to image 2.

The gamma value can be used to brighten each of the pixels. The default value is 0. But user can brighten the overall composited image. 

Example Run of Program

Read Write Image Sample Program running on OCL2.0 Device

Figure 3 Program running on OCL2.0 Device

Limitations of Read-Write Images

Barriers cannot be used with images that require synchronization across different workgroups. Image convolution requires synchronizing all threads. Convolution with respect to images usually involves a mathematical operation on two matrices that results in the creation of a third matrix. An example of an image convolution is using Gaussian blur. Other examples are image sharpening, edge detection, and embossing.

Let’s use Gaussian blur as an example. A Gaussian filter is a low pass filter that removes high frequency values. The implication of this is to reduce detail and eventually cause a blurring like effect. Applying a Gaussian blur is the same as convolving the image with a Gaussian function that is often called the mask. To effectively show the functionality of Read-Write images, a horizontal and vertical blurring had to be done.

In OpenCL 1.2, this would have to be done in two passes. One kernel would be exclusively used for the horizontal blur, and another does the vertical blur. The result of one of the blurs would be used as the input of the next one depending on which was done first.

__kernel void GaussianBlurHorizontalPass( __read_only image2d_t inputImage, __write_only image2d_t outputImage, __constant float* mask, int maskSize)
{
    int2 currentPosition = (int2)(get_global_id(0), get_global_id(1));
    float4 currentPixel = (float4)(0,0,0,0);
    float4 calculatedPixel = (float4)(0,0,0,0);
    for(int maskIndex = -maskSize; maskIndex < maskSize+1; ++maskIndex)
    {
        currentPixel = read_imagef(inputImage, imageSampler, currentPosition + (int2)(maskIndex, 0));
        calculatedPixel += currentPixel * mask[maskSize + maskIndex];
    }
    write_imagef(outputImage, currentPosition, calculatedPixel);
}

__kernel void GaussianBlurVerticalPass( __read_only image2d_t inputImage, __write_only image2d_t outputImage, __constant float* mask, int maskSize)
{
    int2 currentPosition = (int2)(get_global_id(0), get_global_id(1));
    float4 currentPixel = (float4)(0,0,0,0);
    float4 calculatedPixel = (float4)(0,0,0,0); 
    for(int maskIndex = -maskSize; maskIndex < maskSize+1; ++maskIndex)
    {
        currentPixel = read_imagef(inputImage, imageSampler, currentPosition + (int2)(0, maskIndex));
        calculatedPixel += currentPixel * mask[maskSize + maskIndex];
    }
    write_imagef(outputImage, currentPosition, calculatedPixel);
}

Code 3 Gaussian Blur OCL1.2 Kernel

The idea for the OpenCL 2.0 would be to combine these two kernels into one. Use a barrier to force the completion of each of the horizontal or vertical blurs before the next one begins.

__kernel void GaussianBlurDualPass( __read_only image2d_t inputImage, __read_write image2d_t tempRW, __write_only image2d_t outputImage, __constant float* mask, int maskSize)
{
    int2 currentPosition = (int2)(get_global_id(0), get_global_id(1));
    float4 currentPixel = (float4)(0,0,0,0);  
    float4 calculatedPixel = (float4)(0,0,0,0)
    currentPixel = read_imagef(inputImage, currentPosition);
    for(int maskIndex = -maskSize; maskIndex < maskSize+1; ++maskIndex)
    {
        currentPixel = read_imagef(inputImage, currentPosition + (int2)(maskIndex, 0));     
        calculatedPixel += currentPixel * mask[maskSize + maskIndex];
    }
    write_imagef(tempRW, currentPosition, calculatedPixel);

    barrier(CLK_GLOBAL_MEM_FENCE);

    for(int maskIndex = -maskSize; maskIndex < maskSize+1; ++maskIndex)
    {
        currentPixel = read_imagef(tempRW, currentPosition + (int2)(0, maskIndex));
        calculatedPixel += currentPixel * mask[maskSize + maskIndex];
    }
    write_imagef(outputImage, currentPosition, calculatedPixel);
}

Code 4 Gaussian Blur 2.0 Kernel

Barriers were found to be ineffective. Using a barrier does not guarantee that the horizontal blur is completed before the vertical blur begins, assuming you did the horizontal blur first. The implication of this was an inconsistent result in multiple runs. Barriers can be used to synchronize threads within a group. The reason the problem occurs is that edge pixels are read from multiple workgroups, and there is no way to synchronize multiple workgroups. The initial assumption that we can implement a single Gaussian blur using read_write images proved incorrect because the inter-workgroup data dependency cannot be synchronized in OpenCL.

References

Downloads

 

Viewing all 3384 articles
Browse latest View live


Latest Images

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