Saturday 17 January 2015

Use command line in windows 8/8.1 to create a wifi hotspot.

Hey Guys.

This post is dedicated to the girls in my hostel who asked me how to go about it. So while i was staying at the hostel i found this simple hack very useful to connect all my devices to the Internet, by creating a hotspot on my laptop. This article will save you from installing connectify and other unnecessary software  on your PC.

Steps to be followed:
  1. Click windows button. Type cmd. Command Prompt will open up as a search result. Right Click on Command Prompt and select Run as administrator option.
  2.  A dialog box asking permission to make changes to the computer appears. Click Yes.
  3. To check if your computer supports hotspot feature or not type :
    • netsh wlan show drivers 
  4.  If you see Hosted Network Supported : Yes then your PC supports     hotspot and you can continue.
  5. Now type 
    • netsh wlan set hostednetwork mode=allow ssid=wifiname key=typepasswordhere 
    •  ssid is the name of your hotspot and key is the password for your hotspot
  6. Click Enter.
  7.  If you will get a message saying " The hosted network mode has been set to allow. The SSID of the  hosted network has been successfully changed. The user key passphrase of the hosted network has been successfully changed", you are good to go.
  8. To turn on the hotspot anytime later, all you have to do is enter
    • netsh wlan start hostednetwork
    • you will get a message saying "The Hosted network started"
Thats how easy it is! 






How to Partition your Hard disk in Windows 8/8.1 ?

This post is dedicated to my cousin who asked me how to go about partitioning a hard drive for his newly bought laptop.

The prerequisites to partition a hard-disk is that you ought to be logged in as an administrator and have free space in your hard-disk.


Steps to be followed:
  • Start button -> Control Panel -> System and Security ->Administrative Tools ->Computer Management
  • On the left side of the window you will find Storage. Click on Disk Management under Storage. A new window will open up.
  • Right click on a free unallocated-drive on your hard-disk and click new simple volume.
  • Click Next.
  • You can either select the default size or type the size of he volume you wish to create. It is in megabytes (MB) and not gigabytes(GB). 
  • Click Next.
  • A format partition dialog box appears. Click next if you wish to format with the default settings, else click on do not format option.
  • Click Finish after reviewing your choices


Thats how simple it is. :)

Friday 16 January 2015

My yet-another-bucket list

Hey Guys :)

I have recently shifted my base to Bangalore, India for a six months period. I am here for my undergraduate final year project work. I will be working as a research intern at SERC Dept, Indian Institute of Science, Bangalore.

While i am at it, I devised this list of few things i wish to do during my stay here.

List of fun stuff:
  • Visit the Bangalore Palace.
  • Go cycling to Cubbon Park for starters, and then aim for Nandi Hills.
  • Become a member of the best state central library in India a.k.a Seshadsri Iyer Memorial Library in Cubbon Park if permitted, else just visit!
  • Have appam and stew/omelette at Koshy's.
  • Have masala dosa and filter coffee at MTR.
  • Have filter coffee in Brahmin's Coffee Bar, Basavanagudi.
  • Learn swimming. ( No postponing this time! )
  • Volunteer/Donate at a blood bank or hospital. 
  • Start a weekend club with friends. 
  • Discover a new interest, any interest. 
  • Have dosa at 99 varieties dosa shop and visit vv puram food street.
  • Go parasailing at Jaguar.
  • Play Paintball and laser tag.
  • Go on an adventurous trek.
  • Dress up and go for a fancy sunday buffet with friends.
Goals:
  • Take the GRE and TOEFL
  • Update github
  • Resume work on the winter school project ( link to report )
  • Use LATEX instead of MS Word
  • Complete my website
  • Work around Scikit-learn, Caffe etc
  • Do some fun weekend projects in machine learning
  • Learn Django framework
  • Learn Ruby on Rails

Do let me know if any of you wish to join me. :) Lets do this!


Links for further reading of Intel Xeon Phi Coprocessor

The following links and documents contain good examples and guidelines for a novice when programming for the Intel Xeon Phi.

http://software.intel.com/sites/default/files/article/335818/intel-xeon-phi-coprocessor-quick-start-developers-guide.pdf


http://software.intel.com/en-us/articles/building-a-native-application-for-intel-xeon-phi-coprocessors


http://www.drdobbs.com/parallel/programming-intels-xeon-phi-a-jumpstart/240144160


http://www.prace-project.eu/IMG/pdf/Best-Practice-Guide-Intel-Xeon-Phi.pdf


http://software.intel.com/sites/default/files/article/366893/offload-runtime-for-the-intelr-xeon-phitm-coprocessor.pdf


http://research.colfaxinternational.com/file.axd?file=2013%2F5%2FColfax_Static_Libraries_Xeon_Phi.pdf


https://hpcforge.org/plugins/mediawiki/wiki/pracewp8/images/6/68/XeonPhi.pdf


http://software.intel.com/en-us/articles/getting-started-with-openmp
 
http://d3f8ykwhia686p.cloudfront.net/1live/intel/An_Introduction_to_Vectorization_with_Intel_Compiler_021712.pdf

Friday 9 January 2015

The Poweful Intel Xeon Phi Coprocessor


Hey Guys.

As a part of my new assignment, I have begun reading about the all new and powerful Intel Xeon Phi co-processor and its capabilities.

Here are a few questions i stumbled upon while learning about High Performance Computing (HPC) and the all new Intel Xeon Phi Co-processor

1. What is High Performance Computing (HPC) ? 

High-performance computing (HPC) is the use of super computers and parallel processing techniques for solving complex computational problems. High-performance computing evolved due to meet increasing demands for processing speed.

HPC brings together several technologies such as
  • computer architecture
  •  algorithms
  •  programs 
  •  electronics, 
  • and system software 
under a single canopy to solve advanced problems effectively and quickly. HPC systems have the ability to deliver sustained performance through the concurrent use of computing resources.The terms high-performance computing and supercomputing are sometimes used interchangeably.

2. What is a co-processor? 

A coprocessor is a computer processor used to supplement the functions of the primary processor (the CPU). Operations performed by the coprocessor may be floating point arithmetic, graphics, signal processing, string processing, encryption or I/O Interfacing with peripheral devices. By offloading processor-intensive tasks from the main processor, coprocessors can accelerate system performance.

A coprocessor may not be a general-purpose processor in its own right. Coprocessors cannot fetch instructions from memory, execute program flow control instructions, do input/output operations, manage memory, and so on. The coprocessor requires the host (main) processor to fetch the coprocessor instructions and handle all other operations aside from the coprocessor functions.

3. What is the Xeon Phi coprocessor?

Intel Xeon Phi coprocessors are PCI Express form factor add-in cards that work synergistically with Intel® Xeon® processors to enable dramatic performance gains for highly parallel code—up to 1.2 double-precision teraFLOPS (floating point operations per second) per coprocessor.

Intel Xeon Phi cores are Pentium cores and works as coprocessor to host processor. Due to the fact that it is based on Pentium core allowed developers to port many of the tools and development environment from Intel® Xeon®
based processor to the Xeon Phi coprocessor. The Xeon Phi runs on a Micro OS
based on Linux kernel rather than the driver based model often used for PCI express based attached cards like Graphics cards on a system.

4. What are the execution models in the Intel Xeon Phi coprocessor?

There are various execution models that can be used to design and execute an application on Intel® Xeon Phi coprocessor in association with the host processor. The programming models supported for the coprocessor may vary
between the Windows OS and Linux OS used on the host system.


The most common execution models are:
  • Offload Execution Mode
  • Coprocessor Native Execution Mode
  • Symmetric Mode


Intel Xeon Phi Execution Modes

























5. What is the Offload execution mode?

The Offload execution model is also known as heterogeneous programming mode, here the host system offloads part or all of the computation from one or multiple processes or threads running on host. The application starts execution on the host. As the computation proceeds it can decide to send data to the coprocessor and let that work on it and the host and the coprocessor may or may not work in parallel. This is the common execution model in other coprocessor operating environment.


6. What is the Coprocessor native execution mode?

Intel Xeon Phi hosts a Linux micro OS in it and can appear as another machine connected to the host like another node in a cluster. This execution environment allows the users to view the coprocessor as another compute node. In order to run natively, an application has to be cross compiled for Xeon Phi operating environment. Intel® Composer XE provides simple switch to generate cross compiled code.   


 7. What is the symmetric execution mode?

In this case the application processes run on both the host and the Intel Xeon Phi coprocessor. They usually communicate through some sort of message passing interface like MPI. This execution environment treats Xeon Phi card as another node in a cluster in a heterogeneous cluster environment.  





References:

https://software.intel.com/en-us/mic-developer





Parallel Processing Basic Terminology


Hey Everyone. So today i was revising my basics in parallel computing. In this post, i will be sharing with you some of the basic terminologies related to parallel processing.






Parallel Computer

It is defined as the multiple processor computer capable of parallel processing

Parallel Processing

It is defined as the process of information processing  that emphasis the concurrent manipulation of data elements belonging to one or more processors solving a single problem.Parallel processing is the simultaneous use of more than one CPU or processor core to execute a program or multiple computational threads. Ideally, parallel processing makes programs run faster because there are more engines (CPUs or cores) running it.

Super Computer

It is defined as a general purpose computer capable of solving individual problems a an extremely high computational speed compared to other computer built in the same time period.A supercomputer is a computer at the frontline of contemporary processing capacity – which can happen at trillions of floating point operations per second.

Throughput 

The throughput of a device is the number of results it produces per unit time.

Pipelining

A pipelined computation is devised into a number of steps called segments or stages. The output of one segment is the input to the next segment which forms the pipe. Pipelining is performed within a CPU.

SpeedUp

The SpeedUp, S(n) is the ratio b/w time needed for the most efficient sequential algorithm (Ts) and that to the time needed to perform the same computations on a machine incorporating pipelining and/or parallelism(Tp)

                                                                 i.e S(n) = Ts/Tp

SpeedUp is also defined as the time required to run a program on a single processor (n=1) to the time required to run the same program on a parallel computer with n identical processors.
                                                           
                                                                i.e S(n) = T(1)/T(n)

Degree of Parallelism

It is defined as the total number of processors required to execute a program

Kinds of Parallelism - Hardware and Software

Hardware parallelism is built into the machine architecture and software parallelism is exploited by the concurrent execution of machine language instructions in a program.

Parallel Run Time T(n)

It is defined as the time required to run a program on a n-processor machine

Clock Rate & Cycles Per Instruction(CPI)

It is the clock rate that drives the central processing unit (CPU). It has a constant cycle time and is measured in nanoseconds, usually. It is represented by the roman letter tow. Clock Rate is defined as the inverse if this cycle time.
   
                                                               i.e clock rate = 1/cycle time

The program time is decided by the Instruction Count (IC) or the no of machine instruction to be executed in the program.

                          CPI( Cycles per Instruction) = CPU Clock cycles for a program/ IC

                          CPU time = CPU Clock Cycles for a program / Clock Cycle Time

                         CPU Time(T) = IC X CPI X Cycle Time 


MIPS rate

The speed of a processor is usually measured in terms of Million Instructions per second (MIPS). MIPS rare is given by:

                 MIPS Rate = Instruction Count (IC) / CPU Time(T)  X (10^6)
                                     = >f / CPI X 10^6

MFLOPS 

MFLOPS stands for Millions of Floating point executions per second and is used as a performance measure. MIPS and MFLOPS are not convertible as they measure different ranges of operations. However, Both are used widely to describe the execution rate and floating point capability of a parallel computer.

Processor (CPU)

A central processing unit (CPU) is the electronic circuitry within a computer that carries out the instructions of a computer program by performing the basic arithmetic, logical, control and input/output (I/O) operations specified by the instructions.

Graphics Processing Unit (GPU)

A graphics processing unit (GPU), also occasionally called visual processing unit (VPU), is a specialized electronic circuit designed to rapidly manipulate and alter memory to accelerate the creation of images in a frame buffer intended for output to a display.

GPUs are used in embedded systems, mobile phones, personal computers, workstations, and game consoles. Modern GPUs are very efficient at manipulating computer graphics and image processing, and their highly parallel structure makes them more effective than general-purpose CPUs for algorithms where processing of large blocks of data is done in parallel. In a personal computer, a GPU can be present on a video card, or it can be on the motherboard—in certain CPUs—on the CPU die.

Multi-Core Processor

A multi-core processor is a single computing component with two or more independent actual central processing units (called "cores"), which are the units that read and execute program instructions.The instructions are ordinary CPU instructions such as add, move data, and branch, but the multiple cores can run multiple instructions at the same time, increasing overall speed for programs amenable to parallel computing.

Coprocessor

A coprocessor is a computer processor used to supplement the functions of the primary processor (the CPU). Operations performed by the coprocessor may be floating point arithmetic, graphics, signal processing, string processing, encryption or I/O Interfacing with peripheral devices. By offloading processor-intensive tasks from the main processor, coprocessors can accelerate system performance. 

A coprocessor may not be a general-purpose processor in its own right. Coprocessors cannot fetch instructions from memory, execute program flow control instructions, do input/output operations, manage memory, and so on. The coprocessor requires the host (main) processor to fetch the coprocessor instructions and handle all other operations aside from the coprocessor functions. In some architectures, the coprocessor is a more general-purpose computer, but carries out only a limited range of functions under the close control of a supervisory processor.

Multi-Processing

Multiprocessing is the use of two or more central processing units (CPUs) within a single computer system.The term also refers to the ability of a system to support more than one processor and/or the ability to allocate tasks between them. A Multiprocessor is a computer system having two or more processing units (multiple processors) each sharing main memory and peripherals, in order to simultaneously process programs.

Microprocessor 

A microprocessor incorporates the functions of a computer's central processing unit (CPU) on a single integrated circuit (IC), or at most a few integrated circuits. All modern CPUs are microprocessors making the micro- prefix redundant. The microprocessor is a multipurpose, programmable device that accepts digital data as input, processes it according to instructions stored in its memory, and provides results as output. It is an example of sequential digital logic, as it has internal memory. Microprocessors operate on numbers and symbols represented in the binary numeral system.The integration of a whole CPU onto a single chip or on a few chips greatly reduced the cost of processing power.