Skip to content

Commit

Permalink
add part of conversion functions
Browse files Browse the repository at this point in the history
  • Loading branch information
Red-Li committed Jan 5, 2015
1 parent 03d65f2 commit 17b6e6c
Show file tree
Hide file tree
Showing 3 changed files with 836 additions and 31 deletions.
66 changes: 35 additions & 31 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,54 +1,58 @@
C++ wrapper for Intel Integrated Performance Primitives(IPP)
===========

==========
Naming Standard
-------------


==========
Support Features
-------------

* Automatic tranlate C++ navitve type to Ipp types
* Automatic tranlate C++ navitve type to Ipp types

> std::is_same(ipp::get<int8_t>::type, Ipp8s);
> std::is_same(ipp::get<char>::type, Ipp8s); //int8_t and char are not always the same
> std::is_same(ipp::get<uint8_t>::type, Ipp8u);
> std::is_same(ipp::get<std::complex<float> >::type, Ipp32fc);
> std::is_same(ipp::get<int8_t>::type, Ipp8s);
> std::is_same(ipp::get<char>::type, Ipp8s); //int8_t and char are not always the same
> std::is_same(ipp::get<uint8_t>::type, Ipp8u);
> std::is_same(ipp::get<std::complex<float> >::type, Ipp32fc);
* Automatic function dispath depend on parameter type
* Automatic function dispath depend on parameter type

> uint8_t *buf1 = ipp::malloc<uint8_t>(1024);
> uint8_t *buf2 = ipp::malloc<uint8_t>(1024);
> ipp::and_const(buf1, uint8_t(0x3), buf2, 1023); //same as ippsAndC_8u(...)
> uint8_t *buf1 = ipp::malloc<uint8_t>(1024);
> uint8_t *buf2 = ipp::malloc<uint8_t>(1024);
> ipp::and_const(buf1, uint8_t(0x3), buf2, 1023); //same as ippsAndC_8u(...)
> unsigned int *buf1 = ipp::malloc<unsigned int>(1024);
> unsigned int *buf2 = ipp::malloc<unsigned int>(1024);
> ipp::and_const(buf1, unsigned int(0x3), buf2, 1023); //same as ippsAndC_32u(...)
> unsigned int *buf1 = ipp::malloc<unsigned int>(1024);
> unsigned int *buf2 = ipp::malloc<unsigned int>(1024);
> ipp::and_const(buf1, unsigned int(0x3), buf2, 1023); //same as ippsAndC_32u(...)
* Extend some original IPP function to support more types
* Extend some original IPP function to support more types

> int8_t *buf1 = ipp::malloc<int8_t>(1024);
> int8_t *buf2 = ipp::malloc<int8_t>(1024);
> ipp::and_const(buf1, int8_t(0x3), buf2, 1023); //actually, ippsAndC_8s(...) is not supported
* Re-write some context based IPP function as C++ class to make it easy to use
* Re-write some context based IPP function as C++ class to make it easy to use

> ipp::rand_gauss<float> gas(0, 0.1, 0);
> float *buf = ipp::malloc<float>(1024);
> gas.generate(buf, 1024);
> ipp::rand_gauss<float> gas(0, 0.1, 0);
> float *buf = ipp::malloc<float>(1024);
> gas.generate(buf, 1024);

==============
Tutorial
--------

This is a header only C++ library and the only dependence is Intel Integrated Performance Primitives(IPP)

* Build Test
> mkdir build && cd build
> export IPPROOT=/root/directory/of/intel/ipp/direcotry
> cmake ..
> ...

* CMake
> export IPPROOT=/root/directory/of/intel/ipp/direcotry
This is a header only C++ library and the only dependence is Intel Integrated Performance Primitives(IPP)

- Build Test

> mkdir build && cd build
> export IPPROOT=/root/directory/of/intel/ipp/direcotry
> cmake ..
> .....

- CMake

> export IPPROOT=/root/directory/of/intel/ipp/direcotry
> include(IPPPlus)

Loading

0 comments on commit 17b6e6c

Please sign in to comment.